]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.issues.ui/src/org/simantics/issues/ui/handler/RunActiveValidations.java
Playground for Antti.
[simantics/platform.git] / bundles / org.simantics.issues.ui / src / org / simantics / issues / ui / handler / RunActiveValidations.java
index 803324613a1501045a4ed7973c9cb70d413df8e5..94c886582e9326e4474c6a2081a98692bfad4928 100644 (file)
@@ -57,12 +57,25 @@ public class RunActiveValidations extends AbstractHandler {
 
     @Override
     public Object execute(ExecutionEvent event) throws ExecutionException {
-        Runnable postValidation = null;
-        run(postValidation);
+        try {
+            run();
+        } catch (DatabaseException e) {
+            throw new ExecutionException("Error while running active validations", e);
+        }
         return null;
     }
+    
+    public static void run() throws DatabaseException {
+        Resource model = Simantics.getSession().syncRequest(new PossibleActiveModel(Simantics.getProjectResource()));
+        if(model != null)
+            run(null);
+    }
+
+    public static void run(Resource model) {
+        run(model, null);
+    }
 
-    public void run(Runnable postValidation) {
+    public static void run(Resource model, Runnable postValidation) {
 
         final Session session = Simantics.getSession();
 
@@ -71,20 +84,18 @@ public class RunActiveValidations extends AbstractHandler {
         final BatchIssueValidationContext context = new BatchIssueValidationContext();
 
         try {
-            SleepingDatabaseJob dbLock = new SleepingDatabaseJob("Validation Preparation").scheduleAndWaitForRunning();
+            SleepingDatabaseJob dbLock = new SleepingDatabaseJob(Messages.RunActiveValidations_ValidationPreparation).scheduleAndWaitForRunning();
             try {
                 PlatformUI.getWorkbench().getProgressService().run(true, true, new IRunnableWithProgress() {
                     @Override
                     public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
                         try {
-                            Resource model = session.sync(new PossibleActiveModel(Simantics.getProjectResource()));
-                            if(model == null) return;
 
                             toBatchIssueSources(session,
                                     session.syncRequest(new SelectedModelBatchIssueSources(model)),
                                     validations);
 
-                            SubMonitor.convert(monitor, "Preparing resources for validation", 100);
+                            SubMonitor.convert(monitor, Messages.RunActiveValidations_MonitorPreparingResourcesForValidation, 100);
                             context.contexts = Collections.singletonList(model);
                             context.domain = ModelTransferableGraphSourceRequest.getDomainOnly(session, monitor, model);
 
@@ -126,7 +137,7 @@ public class RunActiveValidations extends AbstractHandler {
 
     public static void run(Runnable postValidation, final Collection<BatchIssueSource> validations, final BatchIssueValidationContext context) {
         // Run the validations for the selected composites
-        SleepingDatabaseJob dbLock = new SleepingDatabaseJob("Validation");
+        SleepingDatabaseJob dbLock = new SleepingDatabaseJob(Messages.RunActiveValidations_Validation);
         try {
             dbLock.scheduleAndWaitForRunning();
             try {
@@ -134,7 +145,7 @@ public class RunActiveValidations extends AbstractHandler {
                     @Override
                     public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
                         try {
-                            SubMonitor progress = SubMonitor.convert(monitor, "Validate Model", 100);
+                            SubMonitor progress = SubMonitor.convert(monitor, Messages.RunActiveValidations_ValidateModel, 100);
                             int maxWrittenIssues = IssuePreferenceUtil.getPreferences().maxBatchIssuesToWrite;
                             int writtenIssues = 0;
                             for (BatchIssueSource source : validations) {
@@ -152,7 +163,7 @@ public class RunActiveValidations extends AbstractHandler {
                                             List<Resource> l = ListUtils.toList(graph, list);
                                             if (l.size() > 0) {
                                                 Resource mainContext = l.get(0); 
-                                                if (!graph.hasStatement(mainContext))
+                                                if (!BatchValidations.isLinkedToOtherThan(graph, mainContext, issue))
                                                     result.add(mainContext);
                                             }
                                         }