X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.issues.ui%2Fsrc%2Forg%2Fsimantics%2Fissues%2Fui%2Fhandler%2FRunActiveValidations.java;h=0ab0ef98cb75b824978d0ca3743ecd2cad225f7e;hp=d2e2572115681744f5f150239cef17ee59f0e2b1;hb=d837e1dc077a32288fccea32a55b4e81717e75a9;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07 diff --git a/bundles/org.simantics.issues.ui/src/org/simantics/issues/ui/handler/RunActiveValidations.java b/bundles/org.simantics.issues.ui/src/org/simantics/issues/ui/handler/RunActiveValidations.java index d2e257211..0ab0ef98c 100644 --- a/bundles/org.simantics.issues.ui/src/org/simantics/issues/ui/handler/RunActiveValidations.java +++ b/bundles/org.simantics.issues.ui/src/org/simantics/issues/ui/handler/RunActiveValidations.java @@ -31,6 +31,7 @@ import org.simantics.Simantics; import org.simantics.SleepingDatabaseJob; import org.simantics.db.Issue; import org.simantics.db.ReadGraph; +import org.simantics.db.RequestProcessor; import org.simantics.db.Resource; import org.simantics.db.Session; import org.simantics.db.common.request.Queries; @@ -66,11 +67,11 @@ public class RunActiveValidations extends AbstractHandler { final Session session = Simantics.getSession(); // 1. query for which composites to run the validation - final Collection validations = new ArrayList(); + final Collection validations = new ArrayList<>(); 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 @@ -79,14 +80,11 @@ public class RunActiveValidations extends AbstractHandler { Resource model = session.sync(new PossibleActiveModel(Simantics.getProjectResource())); if(model == null) return; - Collection activeSources = session.syncRequest(new SelectedModelBatchIssueSources(model)); - for(Resource source : activeSources) { - BatchIssueSource bis = session.syncRequest(Queries.adapt(source, BatchIssueSource.class, true)); - if(bis != null) - validations.add(bis); - } + 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); @@ -111,15 +109,24 @@ public class RunActiveValidations extends AbstractHandler { // Operation cancelled, ignore. return; } - + if(!validations.isEmpty() && !context.contexts.isEmpty()) run(postValidation, validations, context); } + static Collection toBatchIssueSources(RequestProcessor processor, Collection sources, Collection result) throws DatabaseException { + for (Resource source : sources) { + BatchIssueSource bis = processor.syncRequest(Queries.adapt(source, BatchIssueSource.class, true)); + if (bis != null) + result.add(bis); + } + return result; + } + public static void run(Runnable postValidation, final Collection 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 { @@ -127,7 +134,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) { @@ -139,13 +146,13 @@ public class RunActiveValidations extends AbstractHandler { @Override public Collection perform(ReadGraph graph) throws DatabaseException { IssueResource ISSUE = IssueResource.getInstance(graph); - ArrayList result = new ArrayList(); + ArrayList result = new ArrayList<>(); for (Resource issue : graph.syncRequest(new ManagedIssues(resource))) { Resource list = graph.getSingleObject(issue, ISSUE.Issue_HasContexts); List 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); } }