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=f6121ce19ec6179d824a98ffed7a5493cf4a2a3e;hp=803324613a1501045a4ed7973c9cb70d413df8e5;hb=b000e272429e157638c0384878b07b8dcd758472;hpb=2c71270a02a8d18b780c93d417e9f68fb38b28f7 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 803324613..f6121ce19 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 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2011 Association for Decentralized Information Management + * Copyright (c) 2007, 2019 Association for Decentralized Information Management * in Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -8,6 +8,7 @@ * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation + * Semantum Oy - Reorganization *******************************************************************************/ package org.simantics.issues.ui.handler; @@ -57,12 +58,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 void run(Runnable postValidation) { + public static void run() throws DatabaseException { + Resource model = Simantics.getSession().syncRequest(new PossibleActiveModel(Simantics.getProjectResource())); + if(model != null) + run(model); + } + + public static void run(Resource model) { + run(model, null); + } + + public static void run(Resource model, Runnable postValidation) { final Session session = Simantics.getSession(); @@ -71,20 +85,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 +138,7 @@ public class RunActiveValidations extends AbstractHandler { 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 { @@ -134,7 +146,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) { @@ -151,8 +163,8 @@ public class RunActiveValidations extends AbstractHandler { 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)) + Resource mainContext = l.get(0); + if (!BatchValidations.isLinkedToOtherThan(graph, mainContext, issue)) result.add(mainContext); } } @@ -174,7 +186,7 @@ public class RunActiveValidations extends AbstractHandler { } } catch (OperationCanceledException e) { - throw e; + throw e; } catch (Exception e) { throw new InvocationTargetException(e); } finally {