X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.issues.common%2Fsrc%2Forg%2Fsimantics%2Fissues%2Fcommon%2FDependencyTrackerBatchIssueSource.java;h=a87867f89c2c8860bf0e4bca90f0ede7d7fadfb1;hb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;hp=dde1109fde79e303f380c672b3013a7caa49ee89;hpb=24e2b34260f219f0d1644ca7a138894980e25b14;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.issues.common/src/org/simantics/issues/common/DependencyTrackerBatchIssueSource.java b/bundles/org.simantics.issues.common/src/org/simantics/issues/common/DependencyTrackerBatchIssueSource.java index dde1109fd..a87867f89 100644 --- a/bundles/org.simantics.issues.common/src/org/simantics/issues/common/DependencyTrackerBatchIssueSource.java +++ b/bundles/org.simantics.issues.common/src/org/simantics/issues/common/DependencyTrackerBatchIssueSource.java @@ -1,100 +1,100 @@ -package org.simantics.issues.common; - -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.SubMonitor; -import org.simantics.db.Issue; -import org.simantics.db.ReadGraph; -import org.simantics.db.Resource; -import org.simantics.db.common.QueryMemoryWatcher; -import org.simantics.db.common.primitiverequest.IsInheritedFrom; -import org.simantics.db.common.procedure.adapter.TransientCacheAsyncListener; -import org.simantics.db.common.utils.Functions; -import org.simantics.db.common.utils.NameUtils; -import org.simantics.db.exception.DatabaseException; -import org.simantics.db.layer0.util.ModelTransferableGraphSourceRequest.DomainOnlyProcessor; -import org.simantics.db.service.QueryControl; -import org.simantics.issues.ontology.IssueResource; -import org.simantics.layer0.Layer0; - -public class DependencyTrackerBatchIssueSource implements BatchIssueSource { - - final Resource source; - - public DependencyTrackerBatchIssueSource(Resource source) { - this.source = source; - } - - @Override - public Map> run(IProgressMonitor monitor, ReadGraph graph, BatchIssueValidationContext context) throws DatabaseException { - - SubMonitor progress = SubMonitor.convert(monitor); - - Layer0 L0 = Layer0.getInstance(graph); - IssueResource IR = IssueResource.getInstance(graph); - - Resource constraint = graph.getSingleObject(source, IR.Sources_DependencyTracker_HasConstraint); - Resource type = graph.getSingleObject(constraint, L0.HasConstraint_Inverse); - Resource function = graph.getSingleObject(constraint, L0.Constraint_Validator); - - String sourceName = NameUtils.getSafeName(graph, source); - - QueryControl qc = graph.getService(QueryControl.class); - qc.flush(graph); - - progress.subTask(sourceName); - progress.worked(1); - - HashMap> result = new HashMap>(); - - // Allow this process to make 50k queries - QueryMemoryWatcher memory = new QueryMemoryWatcher(graph, 50000, 0.5, 300); - - int number = 0; - - DomainOnlyProcessor domain = context.domain; - - for(int i=0;iinstance())) continue; - } else { - if(!graph.isInstanceOf(r, type)) continue; - } - - @SuppressWarnings("unchecked") - List is = (List)Functions.exec(graph, function, graph, r); - if(is.isEmpty()) - result.put(r, Collections.emptySet()); - else - result.put(r, new HashSet(is)); - - } - - return result; - - } - - @Override - public Resource getResource() { - return source; - } - -} +package org.simantics.issues.common; + +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.SubMonitor; +import org.simantics.db.Issue; +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.common.QueryMemoryWatcher; +import org.simantics.db.common.primitiverequest.IsInheritedFrom; +import org.simantics.db.common.procedure.adapter.TransientCacheAsyncListener; +import org.simantics.db.common.utils.Functions; +import org.simantics.db.common.utils.NameUtils; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.util.ModelTransferableGraphSourceRequest.DomainOnlyProcessor; +import org.simantics.db.service.QueryControl; +import org.simantics.issues.ontology.IssueResource; +import org.simantics.layer0.Layer0; + +public class DependencyTrackerBatchIssueSource implements BatchIssueSource { + + final Resource source; + + public DependencyTrackerBatchIssueSource(Resource source) { + this.source = source; + } + + @Override + public Map> run(IProgressMonitor monitor, ReadGraph graph, BatchIssueValidationContext context) throws DatabaseException { + + SubMonitor progress = SubMonitor.convert(monitor); + + Layer0 L0 = Layer0.getInstance(graph); + IssueResource IR = IssueResource.getInstance(graph); + + Resource constraint = graph.getSingleObject(source, IR.Sources_DependencyTracker_HasConstraint); + Resource type = graph.getSingleObject(constraint, L0.HasConstraint_Inverse); + Resource function = graph.getSingleObject(constraint, L0.Constraint_Validator); + + String sourceName = NameUtils.getSafeName(graph, source); + + QueryControl qc = graph.getService(QueryControl.class); + qc.flush(graph); + + progress.subTask(sourceName); + progress.worked(1); + + HashMap> result = new HashMap>(); + + // Allow this process to make 50k queries + QueryMemoryWatcher memory = new QueryMemoryWatcher(graph, 50000, 0.5, 300); + + int number = 0; + + DomainOnlyProcessor domain = context.domain; + + for(int i=0;iinstance())) continue; + } else { + if(!graph.isInstanceOf(r, type)) continue; + } + + @SuppressWarnings("unchecked") + List is = (List)Functions.exec(graph, function, graph, r); + if(is.isEmpty()) + result.put(r, Collections.emptySet()); + else + result.put(r, new HashSet(is)); + + } + + return result; + + } + + @Override + public Resource getResource() { + return source; + } + +}