/*******************************************************************************
* Copyright (c) 2013 The PDT Extension Group (https://github.com/pdt-eg)
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
******************************************************************************/
package org.pdtextensions.internal.semanticanalysis.validation;
import org.eclipse.dltk.compiler.problem.IProblemCategory;
import org.eclipse.dltk.compiler.problem.ProblemCategory;
import org.pdtextensions.semanticanalysis.PEXAnalysisPlugin;
import org.pdtextensions.semanticanalysis.validation.IValidatorIdentifier;
import org.pdtextensions.semanticanalysis.validation.Problem;
import org.pdtextensions.semanticanalysis.validation.validator.ImplementationValidator;
import org.pdtextensions.semanticanalysis.validation.validator.UsageValidator;
import org.pdtextensions.semanticanalysis.validation.validator.VariableValidator;
/**
* @author Robert Gruendler <r.gruendler@gmail.com>
* @author Dawid zulus Pakula <zulus@w3des.net>
*/
public enum PEXProblemIdentifier implements IValidatorIdentifier {
INTERFACE_RELATED("methods", Problem.CAT_RESTRICTION, ImplementationValidator.ID), //$NON-NLS-1$
USAGE_RELATED("use", Problem.CAT_POTENTIAL_PROGRAMMING_PROBLEM, UsageValidator.ID), //$NON-NLS-1$
UNRESOVABLE("use", Problem.CAT_IMPORT, UsageValidator.ID), //$NON-NLS-1$
DUPLICATE("duplicate", Problem.CAT_RESTRICTION, UsageValidator.ID),
UNUSED_VARIABLE("unused_variable", Problem.CAT_UNNECESSARY_CODE, VariableValidator.ID),
UNDEFINED_VARIABLE("undefined_variable", Problem.CAT_UNNECESSARY_CODE, VariableValidator.ID),
UNINITIALIZED_VARIABLE("uninitialized_variable", Problem.CAT_POTENTIAL_PROGRAMMING_PROBLEM, VariableValidator.ID); //$NON-NLS-1$
public static final String MARKER_TYPE = "org.pdtextensions.semanticanalysis.problem"; //$NON-NLS-1$
private final String type;
private final String validator;
private final int category;
private PEXProblemIdentifier(String type, int category, String validator) {
this.type = type;
this.validator = validator;
this.category = category;
}
@Override
public String type() {
return type;
}
@Override
public String validator() {
return validator;
}
@Override
public String contributor() {
return PEXAnalysisPlugin.PLUGIN_ID;
}
@Override
public boolean belongsTo(IProblemCategory category) {
if (category == ProblemCategory.IMPORT && this.category == Problem.CAT_IMPORT) {
return true;
}
return false;
}
@Override
public String getMarkerType() {
return MARKER_TYPE;
}
@Override
public int getCategory() {
return category;
}
}