X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.issues.ui%2Fsrc%2Forg%2Fsimantics%2Fissues%2Fui%2Fhandler%2FRunActiveValidations.java;h=803324613a1501045a4ed7973c9cb70d413df8e5;hb=7ae35034910a88da49082b2aacffc4a4d3b53583;hp=d2e2572115681744f5f150239cef17ee59f0e2b1;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git 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..803324613 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,7 +67,7 @@ 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 { @@ -79,12 +80,9 @@ 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); context.contexts = Collections.singletonList(model); @@ -111,12 +109,21 @@ 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"); @@ -139,7 +146,7 @@ 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);