diff --git a/de.prob.units/src/de/prob/units/problems/IncorrectUnitDefinitionMarker.java b/de.prob.units/src/de/prob/units/problems/IncorrectUnitDefinitionMarker.java new file mode 100644 index 0000000000000000000000000000000000000000..d7f4e0e209b07a5e6672438eb9fb9ead979ee746 --- /dev/null +++ b/de.prob.units/src/de/prob/units/problems/IncorrectUnitDefinitionMarker.java @@ -0,0 +1,35 @@ +package de.prob.units.problems; + +import org.eclipse.core.resources.IMarker; +import org.rodinp.core.IRodinProblem; + +import de.prob.units.Activator; + +public class IncorrectUnitDefinitionMarker implements IRodinProblem { + + private final String message; + private final int severity = IMarker.SEVERITY_ERROR; + public static final String ERROR_CODE = Activator.PLUGIN_ID + "." + + "incorrectUnitDefinition"; + + public IncorrectUnitDefinitionMarker(String cstOrVar) { + this.message = "Incorrect Unit Definition on Constant/Variable " + + cstOrVar; + } + + @Override + public String getErrorCode() { + return ERROR_CODE; + } + + @Override + public String getLocalizedMessage(Object[] arg0) { + return message; + } + + @Override + public int getSeverity() { + return severity; + } + +} diff --git a/de.prob.units/src/de/prob/units/problems/MultipleUnitsInferredMarker.java b/de.prob.units/src/de/prob/units/problems/MultipleUnitsInferredMarker.java index 571d91aaaba3071d01ff7a8a3f86fd4daf7e24b3..3daaa97a0666685bec7b28970fa324f98cafe30c 100644 --- a/de.prob.units/src/de/prob/units/problems/MultipleUnitsInferredMarker.java +++ b/de.prob.units/src/de/prob/units/problems/MultipleUnitsInferredMarker.java @@ -1,19 +1,21 @@ package de.prob.units.problems; +import org.eclipse.core.resources.IMarker; import org.rodinp.core.IRodinProblem; import de.prob.units.Activator; public class MultipleUnitsInferredMarker implements IRodinProblem { - private String message; - private int severity; + private final String message; + private final int severity = IMarker.SEVERITY_ERROR; + public static final String ERROR_CODE = Activator.PLUGIN_ID + "." + "multipleUnitsInferred"; - public MultipleUnitsInferredMarker(int severity, String message) { - this.severity = severity; - this.message = message; + public MultipleUnitsInferredMarker(String cstOrVar) { + this.message = "Multiple Units inferred for Constant/Variable " + + cstOrVar; } @Override diff --git a/de.prob.units/src/de/prob/units/problems/NoUnitInferredMarker.java b/de.prob.units/src/de/prob/units/problems/NoUnitInferredMarker.java new file mode 100644 index 0000000000000000000000000000000000000000..8f011edccb79b26e67cd59da893354aa5d6a2830 --- /dev/null +++ b/de.prob.units/src/de/prob/units/problems/NoUnitInferredMarker.java @@ -0,0 +1,34 @@ +package de.prob.units.problems; + +import org.eclipse.core.resources.IMarker; +import org.rodinp.core.IRodinProblem; + +import de.prob.units.Activator; + +public class NoUnitInferredMarker implements IRodinProblem { + + private final String message; + private final int severity = IMarker.SEVERITY_WARNING; + public static final String ERROR_CODE = Activator.PLUGIN_ID + "." + + "multipleUnitsInferred"; + + public NoUnitInferredMarker(String cstOrVar) { + this.message = "No Units inferred for Constant/Variable " + cstOrVar; + } + + @Override + public String getErrorCode() { + return ERROR_CODE; + } + + @Override + public String getLocalizedMessage(Object[] arg0) { + return message; + } + + @Override + public int getSeverity() { + return severity; + } + +} diff --git a/de.prob.units/src/de/prob/units/ui/StartUnitAnalysisHandler.java b/de.prob.units/src/de/prob/units/ui/StartUnitAnalysisHandler.java index 441f24e67722f27c8152fd80a71729879eab11e6..549a56f902eea225bcde5ba825cc6b74d69111e7 100644 --- a/de.prob.units/src/de/prob/units/ui/StartUnitAnalysisHandler.java +++ b/de.prob.units/src/de/prob/units/ui/StartUnitAnalysisHandler.java @@ -59,7 +59,9 @@ import de.prob.prolog.term.ListPrologTerm; import de.prob.prolog.term.PrologTerm; import de.prob.units.pragmas.InferredUnitPragmaAttribute; import de.prob.units.pragmas.UnitPragmaAttribute; +import de.prob.units.problems.IncorrectUnitDefinitionMarker; import de.prob.units.problems.MultipleUnitsInferredMarker; +import de.prob.units.problems.NoUnitInferredMarker; public class StartUnitAnalysisHandler extends AbstractHandler implements IHandler { @@ -168,6 +170,14 @@ public class StartUnitAnalysisHandler extends AbstractHandler implements .equals(MultipleUnitsInferredMarker.ERROR_CODE)) { iMarker.delete(); } + if (iMarker.getAttribute(RodinMarkerUtil.ERROR_CODE, "") + .equals(IncorrectUnitDefinitionMarker.ERROR_CODE)) { + iMarker.delete(); + } + if (iMarker.getAttribute(RodinMarkerUtil.ERROR_CODE, "") + .equals(NoUnitInferredMarker.ERROR_CODE)) { + iMarker.delete(); + } } } catch (CoreException e1) { @@ -256,18 +266,12 @@ public class StartUnitAnalysisHandler extends AbstractHandler implements if (variables.get(variableName).startsWith("multiple")) { var.createProblemMarker( InferredUnitPragmaAttribute.ATTRIBUTE, - new MultipleUnitsInferredMarker( - IMarker.SEVERITY_ERROR, - "Multiple Units inferred for Variable " - + variableName)); + new MultipleUnitsInferredMarker(variableName)); } if (variables.get(variableName).equals("unknown")) { var.createProblemMarker( InferredUnitPragmaAttribute.ATTRIBUTE, - new MultipleUnitsInferredMarker( - IMarker.SEVERITY_WARNING, - "No Units inferred for Variable " - + variableName)); + new NoUnitInferredMarker(variableName)); } } @@ -278,10 +282,7 @@ public class StartUnitAnalysisHandler extends AbstractHandler implements .getAttributeValue(UnitPragmaAttribute.ATTRIBUTE))) { var.createProblemMarker( InferredUnitPragmaAttribute.ATTRIBUTE, - new MultipleUnitsInferredMarker( - IMarker.SEVERITY_ERROR, - "Incorrect Unit Definition on Variable " - + variableName)); + new IncorrectUnitDefinitionMarker(variableName)); } } } @@ -306,18 +307,12 @@ public class StartUnitAnalysisHandler extends AbstractHandler implements if (variables.get(constantName).equals("error")) { cst.createProblemMarker( InferredUnitPragmaAttribute.ATTRIBUTE, - new MultipleUnitsInferredMarker( - IMarker.SEVERITY_ERROR, - "Multiple Units inferred for Constant " - + constantName)); + new MultipleUnitsInferredMarker(constantName)); } if (variables.get(constantName).equals("unknown")) { cst.createProblemMarker( InferredUnitPragmaAttribute.ATTRIBUTE, - new MultipleUnitsInferredMarker( - IMarker.SEVERITY_WARNING, - "No Units inferred for Constant " - + constantName)); + new IncorrectUnitDefinitionMarker(constantName)); } } @@ -328,10 +323,7 @@ public class StartUnitAnalysisHandler extends AbstractHandler implements .getAttributeValue(UnitPragmaAttribute.ATTRIBUTE))) { cst.createProblemMarker( InferredUnitPragmaAttribute.ATTRIBUTE, - new MultipleUnitsInferredMarker( - IMarker.SEVERITY_ERROR, - "Incorrect Unit Definition on Constant " - + constantName)); + new MultipleUnitsInferredMarker(constantName)); } } }