Change message type and handling
diff --git a/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/CheckerManager.java b/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/CheckerManager.java
index 6680291..5e66638 100644
--- a/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/CheckerManager.java
+++ b/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/CheckerManager.java
@@ -11,6 +11,7 @@
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EValidator;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.papyrus.views.modelexplorer.ModelExplorerPage;
@@ -24,6 +25,8 @@
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.IPage;
import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.xtext.nodemodel.INode;
+import org.polarsys.chess.service.gui.utils.ReportProblemsUtil;
public class CheckerManager {
@@ -101,21 +104,35 @@
// }
for (CheckerMessage msn : newMessages) {
- if (msn.eObject != null) {
+ if (msn.object != null && msn.object instanceof EObject) {
IMarker marker = msn.file.createMarker(EValidator.MARKER);
marker.setAttribute(CHECKER_NAME, msn.checkerName);
marker.setAttribute(IMarker.MESSAGE, msn.message);
- String location = EcoreUtil.getURI(msn.eObject).toString();
- if (msn.eObject instanceof NamedElement) {
- location = ((NamedElement) msn.eObject).getName();
+ String location = EcoreUtil.getURI((EObject) msn.object).toString();
+ if (msn.object instanceof NamedElement) {
+ location = ((NamedElement) msn.object).getQualifiedName();
}
marker.setAttribute(IMarker.LOCATION, location);
marker.setAttribute(IMarker.SEVERITY, msn.severity);
- marker.setAttribute(EValidator.URI_ATTRIBUTE, EcoreUtil.getURI(msn.eObject).toString());
+ marker.setAttribute(EValidator.URI_ATTRIBUTE, EcoreUtil.getURI((EObject) msn.object).toString());
+ } else if (msn.object != null && msn.object instanceof INode) {
+ try {
+ final INode node = (INode) msn.object;
+ if (msn.severity == 0) {
+ ReportProblemsUtil.reportInfo(msn.file, msn.message, node.getStartLine(),
+ node.getOffset(), node.getEndOffset());
+ } else if (msn.severity == 1) {
+ ReportProblemsUtil.reportWarning(msn.file, msn.message, node.getStartLine(),
+ node.getOffset(), node.getEndOffset());
+ } else if (msn.severity == 2) {
+ ReportProblemsUtil.reportError(msn.file, msn.message, node.getStartLine(),
+ node.getOffset(), node.getEndOffset());
+ }
+ } catch (NullPointerException | CoreException e) {
+ e.printStackTrace();
+ }
}
-
}
-
}
private Set<IFile> extractIFiles(List<CheckerMessage> checkerMessages) {
diff --git a/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/CheckerMessage.java b/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/CheckerMessage.java
index 7b6e35f..c0f5c5e 100644
--- a/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/CheckerMessage.java
+++ b/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/CheckerMessage.java
@@ -9,20 +9,20 @@
protected IFile file;
protected int severity;
protected String message;
- protected EObject eObject;
+ protected Object object;
protected String checkerName;
- public CheckerMessage(String message, int severity ,EObject eObject, String checkerName ) {
- this(WorkspaceSynchronizer.getFile(eObject.eResource()), severity, message, eObject, checkerName);
-
+ public CheckerMessage(String message, int severity ,Object object, String checkerName ) {
+ this((object instanceof EObject) ? WorkspaceSynchronizer.getFile(((EObject) object).eResource()) : null,
+ severity, message, object, checkerName);
}
- public CheckerMessage(IFile file, int severity, String message, EObject eObject, String checkerName) {
+ public CheckerMessage(IFile file, int severity, String message, Object object, String checkerName) {
super();
this.file = file;
this.severity = severity;
this.message = message;
- this.eObject = eObject;
+ this.object = object;
this.checkerName = checkerName;
}
@@ -30,5 +30,4 @@
return message;
}
-
}
\ No newline at end of file