X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fui%2Ffunction%2FFunctions.java;h=b6132d20146965e08432bb513c1b3924f3c0322b;hb=e6378bf9c77ffd2d33d81ab882e6a2243506a0a8;hp=0ea5adf7f7638173ba324b27a610bc931c946c33;hpb=55f42e7fcc2f6733082ab8c150efe3a2b54ff22b;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/function/Functions.java b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/function/Functions.java index 0ea5adf7..b6132d20 100644 --- a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/function/Functions.java +++ b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/function/Functions.java @@ -1,9 +1,12 @@ package org.simantics.district.network.ui.function; +import java.util.Collection; 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 java.util.stream.Collectors; import org.eclipse.jface.dialogs.Dialog; @@ -32,6 +35,8 @@ import org.simantics.db.Resource; import org.simantics.db.Session; import org.simantics.db.WriteGraph; import org.simantics.db.common.request.IndexRoot; +import org.simantics.db.common.request.IndexRoots; +import org.simantics.db.common.request.ObjectsWithType; import org.simantics.db.common.request.ReadRequest; import org.simantics.db.common.request.WriteRequest; import org.simantics.db.exception.DatabaseException; @@ -40,14 +45,15 @@ import org.simantics.db.exception.ServiceException; import org.simantics.db.layer0.variable.Variable; import org.simantics.db.layer0.variable.Variables.Role; import org.simantics.db.procedure.Procedure; +import org.simantics.diagram.stubs.DiagramResource; import org.simantics.district.network.ontology.DistrictNetworkResource; import org.simantics.layer0.Layer0; import org.simantics.modeling.ModelingResources; import org.simantics.modeling.ModelingUtils; import org.simantics.modeling.adapters.NewCompositeActionFactory; import org.simantics.modeling.typicals.TypicalUtil; +import org.simantics.operation.Layer0X; import org.simantics.scl.reflection.annotations.SCLValue; -import org.simantics.structural.stubs.StructuralResource2; import org.simantics.ui.workbench.action.DefaultActions; import org.simantics.utils.ui.SWTUtils; import org.slf4j.Logger; @@ -280,9 +286,11 @@ public class Functions { } protected Map getComposites(ReadGraph graph, Resource element) throws DatabaseException { + Resource indexRoot = graph.sync(new IndexRoot(element)); - List composites = ModelingUtils.searchByType(graph, indexRoot, StructuralResource2.getInstance(graph).Composite); - List nonDistrictComposites = composites.stream().filter(comp -> { + List diagrams = ModelingUtils.searchByType(graph, indexRoot, DiagramResource.getInstance(graph).Diagram); + + List nonDistrictComposites = composites.values().stream().filter(comp -> { try { return !graph.isInstanceOf(comp, DistrictNetworkResource.getInstance(graph).Composite); } catch (ServiceException e1) { @@ -297,7 +305,7 @@ public class Functions { String name = graph.getRelatedValue2(mapping, L0.HasName); result.put(name, mapping); } catch (DatabaseException e) { - e.printStackTrace(); + LOGGER.error("Could not read name of " + mapping, e); } }); return result; @@ -428,6 +436,10 @@ public class Functions { graph.claim(diagram, DN.EdgeDefaultMapping, dialog.getDefaultEdgeMapping()); graph.claim(diagram, DN.VertexDefaultMapping, dialog.getDefaultVertexMapping()); graph.claim(diagram, DN.HasSpatialRefSystem, dialog.getCRS()); + + // Generated name prefix from composite name + String compositeName = graph.getRelatedValue2(composite, Layer0.getInstance(graph).HasName, Bindings.STRING); + graph.claimLiteral(diagram, Layer0X.getInstance(graph).HasGeneratedNamePrefix, "N" + compositeName.substring(compositeName.length() - 1, compositeName.length())); } }); DefaultActions.asyncPerformDefaultAction(Simantics.getSession(), composite, false, false, true); @@ -441,4 +453,16 @@ public class Functions { } }); } + + public static Collection getDistrictDiagrams(ReadGraph graph) throws DatabaseException { + Layer0 L0 = Layer0.getInstance(graph); + Collection indexRoots = graph.sync(new ObjectsWithType(Simantics.getProjectResource(), L0.ConsistsOf, L0.IndexRoot)); + DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph); + Set results = new HashSet<>(); + for (Resource indexRoot : indexRoots) { + Collection diagrams = ModelingUtils.searchByType(graph, indexRoot, DN.Diagram); + results.addAll(diagrams); + } + return results; + } }