/*
 * Copyright (c) 2015 - present Facebook, Inc.
 * All rights reserved.
 *
 * This source code is licensed under the BSD style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 */

package utils.matchers;

import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

import utils.InferError;

public class ErrorPattern {

  private final String errorType;

  private final Path errorFile;

  private final String errorMethod;

  public ErrorPattern(String type, String file, String method) {
    errorType = type;
    errorFile = Paths.get(file);
    errorMethod = method;
  }

  String getErrorType() {
    return errorType;
  }

  Path getErrorFile() {
    return errorFile;
  }

  String getErrorMethod() {
    return errorMethod;
  }

  public boolean match(InferError error) {
    return error.matchType(errorType)
        && error.matchMethod(errorMethod)
        && error.matchFile(errorFile);
  }

  public static List<ErrorPattern> createPatterns(String type, String file, String[] methods) {
    List<ErrorPattern> patterns = new ArrayList<>();
    for (String method : methods) {
      patterns.add(new ErrorPattern(type, file, method));
    }
    return patterns;
  }

  @Override
  public String toString() {
    return getErrorType() + " in file: " + getErrorFile() + ", method: " + getErrorMethod();
  }

}