X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Futil%2FTGConfigurer.java;fp=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Futil%2FTGConfigurer.java;h=222a28924ca05ced998d8b834b955609763c8b41;hb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;hp=34af0d1fcbf4d573f8ac7b842e8ecf95596b7125;hpb=24e2b34260f219f0d1644ca7a138894980e25b14;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/TGConfigurer.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/TGConfigurer.java index 34af0d1fc..222a28924 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/TGConfigurer.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/TGConfigurer.java @@ -1,118 +1,118 @@ -package org.simantics.db.layer0.util; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - -import org.simantics.databoard.Bindings; -import org.simantics.db.ReadGraph; -import org.simantics.db.Resource; -import org.simantics.db.common.NamedResource; -import org.simantics.db.common.request.PossibleIndexRoot; -import org.simantics.db.common.utils.CommonDBUtils; -import org.simantics.db.exception.DatabaseException; -import org.simantics.db.layer0.adapter.SubgraphExtent.ExtentStatus; -import org.simantics.db.layer0.util.TransferableGraphConfiguration2.RootSpec; -import org.simantics.layer0.Layer0; - -public class TGConfigurer { - - final private ReadGraph graph; - final Collection roots = new ArrayList(); - final Map preStatus = new HashMap(); - final boolean ignoreVirtualResources; - final boolean validate; - - public TGConfigurer(ReadGraph graph, boolean ignoreVirtualResources, boolean validate) { - this.graph = graph; - this.ignoreVirtualResources = ignoreVirtualResources; - this.validate = validate; - } - - public TGConfigurer(ReadGraph graph, boolean ignoreVirtualResources) { - this(graph, ignoreVirtualResources, true); - } - - public TGConfigurer exclusions(Collection exclusions) { - for(Resource r : exclusions) { - preStatus.put(r, ExtentStatus.EXCLUDED); - } - return this; - } - - public TGConfigurer roots(Collection rs) throws DatabaseException { - Layer0 L0 = Layer0.getInstance(graph); - for(RootSpec root : rs) { - Resource nameResource = graph.getPossibleObject(root.resource, L0.HasName); - if(nameResource != null) preStatus.put(nameResource, ExtentStatus.EXCLUDED); -// String name = graph.getValue(nameResource, Bindings.STRING); - roots.add(new RootSpec(root.resource, root.name, root.internal)); - preStatus.put(root.resource, ExtentStatus.INTERNAL); - } - return this; - } - - public TGConfigurer roots2(Collection rs) throws DatabaseException { - Layer0 L0 = Layer0.getInstance(graph); - for(Resource root : rs) { - Resource nameResource = graph.getPossibleObject(root, L0.HasName); - String name = ""; - if(nameResource != null) { - name = graph.getPossibleValue(nameResource, Bindings.STRING); - if(name == null) name = ""; - preStatus.put(nameResource, ExtentStatus.EXCLUDED); - } - roots.add(new RootSpec(root, name, true)); - preStatus.put(root, ExtentStatus.INTERNAL); - } - return this; - } - - public TGConfigurer roots3(Collection rs) throws DatabaseException { - Layer0 L0 = Layer0.getInstance(graph); - for(NamedResource root : rs) { - Resource nameResource = graph.getPossibleObject(root.getResource(), L0.HasName); -// String name = graph.getValue(nameResource, Bindings.STRING); - roots.add(new RootSpec(root.getResource(), root.getName(), true)); - preStatus.put(root.getResource(), ExtentStatus.INTERNAL); - preStatus.put(nameResource, ExtentStatus.EXCLUDED); - } - return this; - } - - public TransferableGraphConfiguration2 create() throws DatabaseException { - - // Final preparation - - // -Exclude root library if not explicitly included - if (!roots.contains(graph.getRootLibrary())) - preStatus.put(graph.getRootLibrary(), ExtentStatus.EXCLUDED); - - // -Exclude owners if not explicitly defined - Layer0 L0 = Layer0.getInstance(graph); - ArrayList rootList = new ArrayList(); - for (RootSpec root : roots) { - if(root.internal) { - rootList.add(root.resource); - for (Resource owner : graph.getObjects(root.resource, L0.IsOwnedBy)) { - ExtentStatus ownerStatus = preStatus.get(owner); - if(ownerStatus == null) - preStatus.put(owner, ExtentStatus.EXCLUDED); - } - } else { - preStatus.put(root.resource, ExtentStatus.EXTERNAL); - } - } - - Resource owner = CommonDBUtils.getNearestOwner(graph, rootList); - if(owner != null) { - Resource indexRoot = graph.syncRequest(new PossibleIndexRoot(owner)); - return new TransferableGraphConfiguration2(indexRoot, roots, preStatus, ignoreVirtualResources, validate); - } else { - return new TransferableGraphConfiguration2(null, roots, preStatus, ignoreVirtualResources, validate); - } - - } - -} +package org.simantics.db.layer0.util; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.simantics.databoard.Bindings; +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.common.NamedResource; +import org.simantics.db.common.request.PossibleIndexRoot; +import org.simantics.db.common.utils.CommonDBUtils; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.adapter.SubgraphExtent.ExtentStatus; +import org.simantics.db.layer0.util.TransferableGraphConfiguration2.RootSpec; +import org.simantics.layer0.Layer0; + +public class TGConfigurer { + + final private ReadGraph graph; + final Collection roots = new ArrayList(); + final Map preStatus = new HashMap(); + final boolean ignoreVirtualResources; + final boolean validate; + + public TGConfigurer(ReadGraph graph, boolean ignoreVirtualResources, boolean validate) { + this.graph = graph; + this.ignoreVirtualResources = ignoreVirtualResources; + this.validate = validate; + } + + public TGConfigurer(ReadGraph graph, boolean ignoreVirtualResources) { + this(graph, ignoreVirtualResources, true); + } + + public TGConfigurer exclusions(Collection exclusions) { + for(Resource r : exclusions) { + preStatus.put(r, ExtentStatus.EXCLUDED); + } + return this; + } + + public TGConfigurer roots(Collection rs) throws DatabaseException { + Layer0 L0 = Layer0.getInstance(graph); + for(RootSpec root : rs) { + Resource nameResource = graph.getPossibleObject(root.resource, L0.HasName); + if(nameResource != null) preStatus.put(nameResource, ExtentStatus.EXCLUDED); +// String name = graph.getValue(nameResource, Bindings.STRING); + roots.add(new RootSpec(root.resource, root.name, root.internal)); + preStatus.put(root.resource, ExtentStatus.INTERNAL); + } + return this; + } + + public TGConfigurer roots2(Collection rs) throws DatabaseException { + Layer0 L0 = Layer0.getInstance(graph); + for(Resource root : rs) { + Resource nameResource = graph.getPossibleObject(root, L0.HasName); + String name = ""; + if(nameResource != null) { + name = graph.getPossibleValue(nameResource, Bindings.STRING); + if(name == null) name = ""; + preStatus.put(nameResource, ExtentStatus.EXCLUDED); + } + roots.add(new RootSpec(root, name, true)); + preStatus.put(root, ExtentStatus.INTERNAL); + } + return this; + } + + public TGConfigurer roots3(Collection rs) throws DatabaseException { + Layer0 L0 = Layer0.getInstance(graph); + for(NamedResource root : rs) { + Resource nameResource = graph.getPossibleObject(root.getResource(), L0.HasName); +// String name = graph.getValue(nameResource, Bindings.STRING); + roots.add(new RootSpec(root.getResource(), root.getName(), true)); + preStatus.put(root.getResource(), ExtentStatus.INTERNAL); + preStatus.put(nameResource, ExtentStatus.EXCLUDED); + } + return this; + } + + public TransferableGraphConfiguration2 create() throws DatabaseException { + + // Final preparation + + // -Exclude root library if not explicitly included + if (!roots.contains(graph.getRootLibrary())) + preStatus.put(graph.getRootLibrary(), ExtentStatus.EXCLUDED); + + // -Exclude owners if not explicitly defined + Layer0 L0 = Layer0.getInstance(graph); + ArrayList rootList = new ArrayList(); + for (RootSpec root : roots) { + if(root.internal) { + rootList.add(root.resource); + for (Resource owner : graph.getObjects(root.resource, L0.IsOwnedBy)) { + ExtentStatus ownerStatus = preStatus.get(owner); + if(ownerStatus == null) + preStatus.put(owner, ExtentStatus.EXCLUDED); + } + } else { + preStatus.put(root.resource, ExtentStatus.EXTERNAL); + } + } + + Resource owner = CommonDBUtils.getNearestOwner(graph, rootList); + if(owner != null) { + Resource indexRoot = graph.syncRequest(new PossibleIndexRoot(owner)); + return new TransferableGraphConfiguration2(indexRoot, roots, preStatus, ignoreVirtualResources, validate); + } else { + return new TransferableGraphConfiguration2(null, roots, preStatus, ignoreVirtualResources, validate); + } + + } + +}