X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Futil%2FConsistsOfProcess.java;fp=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Futil%2FConsistsOfProcess.java;h=75c75764adb2b5668ef0e8736818cf4718cb6fa9;hp=691f8864c94c7e89630ff3e5de840fa92a41aaac;hb=bdab0adcee131a18290393e1c2fca72de48c10d2;hpb=93622c2baf328a90b122dd749b63676c72c839f5 diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/ConsistsOfProcess.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/ConsistsOfProcess.java index 691f8864c..75c75764a 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/ConsistsOfProcess.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/ConsistsOfProcess.java @@ -35,14 +35,7 @@ class ConsistsOfProcess { public static Pair,Set> walk(ReadGraph graph, ResourceMap status, Collection specs, boolean ignoreVirtual) throws DatabaseException { - Collection entries = new ArrayList<>(specs.size()); - for(SeedSpec r : specs) { - if(SeedSpecType.INTERNAL.equals(r.specType)) - entries.add(new ConsistsOfProcessEntry(null, r.resource, true)); - else - entries.add(new ConsistsOfProcessEntry(null, r.resource, false)); - } - ConsistsOfProcess process = new ConsistsOfProcess(graph, status, entries, ignoreVirtual); + ConsistsOfProcess process = new ConsistsOfProcess(graph, status, specs, ignoreVirtual); return Pair.make(process.result, process.childrenWithNoName); } @@ -50,17 +43,15 @@ class ConsistsOfProcess { static class ConsistsOfProcessEntry { public ConsistsOfProcessEntry parent; public Resource resource; - public boolean internal; public boolean valid = true; public String name = null; - ConsistsOfProcessEntry(ConsistsOfProcessEntry parent, Resource resource, boolean internal) { + ConsistsOfProcessEntry(ConsistsOfProcessEntry parent, Resource resource) { this.parent = parent; this.resource = resource; - this.internal = internal; } } - private ConsistsOfProcess(ReadGraph graph, ResourceMap status, final Collection entries, final boolean ignoreVirtual) throws DatabaseException { + private ConsistsOfProcess(ReadGraph graph, ResourceMap status, final Collection seeds, final boolean ignoreVirtual) throws DatabaseException { final Layer0 L0 = Layer0.getInstance(graph); final DirectQuerySupport dqs = graph.getService(DirectQuerySupport.class); @@ -128,7 +119,7 @@ class ConsistsOfProcess { if(ExtentStatus.EXCLUDED.equals(status.get(child))) return; if(!ignoreVirtual || child.isPersistent()) { - ConsistsOfProcessEntry entry = new ConsistsOfProcessEntry(parent, child, false); + ConsistsOfProcessEntry entry = new ConsistsOfProcessEntry(parent, child); dqs.forEachObjectCompiled(graph, child, entry, structure); dqs.forEachObjectCompiled(graph, child, entry, names); } @@ -150,11 +141,20 @@ class ConsistsOfProcess { @Override public void run(ReadGraph graph) throws DatabaseException { - for(ConsistsOfProcessEntry entry : entries) { - dqs.forEachObjectCompiled(graph, entry.resource, entry, structure); - if(entry.internal) { - // For roots names are not processed - dqs.forEachObjectCompiled(graph, entry.resource, entry, names); + for(SeedSpec seed : seeds) { + + if(status != null) { + ExtentStatus es = status.get(seed.resource); + if(ExtentStatus.EXCLUDED.equals(es)) continue; + if(ExtentStatus.EXTERNAL.equals(es)) continue; + } + + ConsistsOfProcessEntry entry = new ConsistsOfProcessEntry(null, seed.resource); + + dqs.forEachObjectCompiled(graph, seed.resource, entry, structure); + if(SeedSpecType.INTERNAL.equals(seed.specType)) { + // Process names only for internal seeds + dqs.forEachObjectCompiled(graph, seed.resource, entry, names); } } }