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;
final Session session = Simantics.getSession();
// 1. query for which composites to run the validation
- final Collection<BatchIssueSource> validations = new ArrayList<BatchIssueSource>();
+ final Collection<BatchIssueSource> 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
Resource model = session.sync(new PossibleActiveModel(Simantics.getProjectResource()));
if(model == null) return;
- Collection<Resource> 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);
// Operation cancelled, ignore.
return;
}
-
+
if(!validations.isEmpty() && !context.contexts.isEmpty())
run(postValidation, validations, context);
}
+ static Collection<BatchIssueSource> toBatchIssueSources(RequestProcessor processor, Collection<Resource> sources, Collection<BatchIssueSource> 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<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 {
@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) {
@Override
public Collection<Resource> perform(ReadGraph graph) throws DatabaseException {
IssueResource ISSUE = IssueResource.getInstance(graph);
- ArrayList<Resource> result = new ArrayList<Resource>();
+ ArrayList<Resource> result = new ArrayList<>();
for (Resource issue : graph.syncRequest(new ManagedIssues(resource))) {
Resource list = graph.getSingleObject(issue, ISSUE.Issue_HasContexts);
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);
}
}