]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.graph.compiler/src/org/simantics/graph/compiler/internal/validation/ReportCollisions.java
Merge commit '2a46c55'
[simantics/platform.git] / bundles / org.simantics.graph.compiler / src / org / simantics / graph / compiler / internal / validation / ReportCollisions.java
index e7346e94570c92edd76c0e46e4df56b2b87935d0..277ddc7b16cdb876d1bcef7760467a2e08519430 100644 (file)
@@ -2,22 +2,34 @@ package org.simantics.graph.compiler.internal.validation;
 \r
 import java.util.Collection;\r
 \r
+import org.simantics.graph.compiler.GraphCompilerPreferences;\r
 import org.simantics.graph.compiler.internal.store.LocationStore;\r
 import org.simantics.graph.compiler.internal.templates.TemplateDefinitionStore;\r
+import org.simantics.graph.query.Res;\r
 import org.simantics.graph.store.GraphStore;\r
+import org.simantics.graph.store.StatementCollision;\r
 import org.simantics.ltk.Problem;\r
 \r
 public class ReportCollisions implements Runnable {\r
+    GraphCompilerPreferences preferences;\r
        Collection<Problem> problems;\r
        GraphStore store;\r
 \r
        public ReportCollisions(\r
-                       Collection<Problem> problems,\r
+                       GraphCompilerPreferences preferences, Collection<Problem> problems,\r
                        GraphStore store) {\r
+           this.preferences = preferences;\r
                this.problems = problems;\r
                this.store = store;\r
        }\r
        \r
+       private static String abbreviateURI(Res res) {\r
+           if(res == null)\r
+               return "null";\r
+           String uri = res.toString();\r
+           return uri.replace("http://www.simantics.org/", "");\r
+       }\r
+       \r
        @Override\r
        public void run() {\r
                LocationStore locations = store.getStore(LocationStore.class);\r
@@ -32,7 +44,16 @@ public class ReportCollisions implements Runnable {
                for(int c : store.getStore(TemplateDefinitionStore.class).getCollisions().toArray())\r
                        problems.add(new Problem(\r
                                        locations.getLocation(c), \r
-                                       "Two tempalate definitions are given for the same resource."));\r
+                                       "Two template definitions are given for the same resource."));\r
+               if(preferences.validate)\r
+                   for(StatementCollision collision : store.statements.getCollisions()) {\r
+                       problems.add(new Problem(\r
+                               locations.getLocation(collision.subject), \r
+                               "The same statement is defined " + collision.count + " times: " +\r
+                                       abbreviateURI(store.idToRes(collision.subject)) + ", " +\r
+                                       abbreviateURI(store.idToRes(collision.predicate)) + ", " +\r
+                                       abbreviateURI(store.idToRes(collision.object))));\r
+                   }\r
        }\r
        \r
 }\r