]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.issues.common/src/org/simantics/issues/common/ComposedValidation.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.issues.common / src / org / simantics / issues / common / ComposedValidation.java
diff --git a/bundles/org.simantics.issues.common/src/org/simantics/issues/common/ComposedValidation.java b/bundles/org.simantics.issues.common/src/org/simantics/issues/common/ComposedValidation.java
new file mode 100644 (file)
index 0000000..346d3e8
--- /dev/null
@@ -0,0 +1,41 @@
+package org.simantics.issues.common;\r
+\r
+import java.util.Map;\r
+import java.util.Set;\r
+\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.core.runtime.NullProgressMonitor;\r
+import org.eclipse.core.runtime.SubMonitor;\r
+import org.simantics.db.Issue;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.common.request.UniqueRead;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.service.QueryControl;\r
+\r
+public class ComposedValidation extends UniqueRead<Map<Resource, Set<Issue>>> {\r
+\r
+       private final IProgressMonitor monitor;\r
+       private final BatchIssueSource source;\r
+       private final BatchIssueValidationContext context;\r
+\r
+       public ComposedValidation(IProgressMonitor monitor, BatchIssueSource source, BatchIssueValidationContext context) {\r
+               this.monitor = monitor != null ? monitor : new NullProgressMonitor();\r
+               this.source = source;\r
+               this.context = context;\r
+       }\r
+\r
+       @Override\r
+       public Map<Resource, Set<Issue>> perform(ReadGraph graph) throws DatabaseException {\r
+\r
+               SubMonitor progress = SubMonitor.convert(monitor);\r
+               progress.setWorkRemaining(context.contexts.size());\r
+               \r
+               QueryControl cc = graph.getService(QueryControl.class);\r
+               cc.flush(graph);\r
+               \r
+               return source.run(progress, graph, context);\r
+\r
+       }\r
+\r
+}
\ No newline at end of file