X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network.ui.ontology%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fui%2Fontology%2FDistrictNetworkUIResource.java;fp=org.simantics.district.network.ui.ontology%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fui%2Fontology%2FDistrictNetworkUIResource.java;h=d6ae2f61dbf133026eb55f38edd3ce0d28cbd4c9;hb=e9f74f09e0cedb603c0b4de9e542de8dd64a5ce3;hp=0000000000000000000000000000000000000000;hpb=16ee01dc5a40981c58fd5b478b89552e5814e8bb;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network.ui.ontology/src/org/simantics/district/network/ui/ontology/DistrictNetworkUIResource.java b/org.simantics.district.network.ui.ontology/src/org/simantics/district/network/ui/ontology/DistrictNetworkUIResource.java new file mode 100644 index 00000000..d6ae2f61 --- /dev/null +++ b/org.simantics.district.network.ui.ontology/src/org/simantics/district/network/ui/ontology/DistrictNetworkUIResource.java @@ -0,0 +1,64 @@ +package org.simantics.district.network.ui.ontology; + +import org.simantics.db.RequestProcessor; +import org.simantics.db.Resource; +import org.simantics.db.ReadGraph; +import org.simantics.db.request.Read; +import org.simantics.db.Session; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.service.QueryControl; + +public class DistrictNetworkUIResource { + + public final Resource NetworkProperties; + public final Resource SelectionTab; + public final Resource SelectionTabContribution; + + public static class URIs { + public static final String NetworkProperties = "http://www.simantics.org/DistrictNetworkUI-1.0/NetworkProperties"; + public static final String SelectionTab = "http://www.simantics.org/DistrictNetworkUI-1.0/SelectionTab"; + public static final String SelectionTabContribution = "http://www.simantics.org/DistrictNetworkUI-1.0/SelectionTabContribution"; + } + + public static Resource getResourceOrNull(ReadGraph graph, String uri) { + try { + return graph.getResource(uri); + } catch(DatabaseException e) { + System.err.println(e.getMessage()); + return null; + } + } + + public DistrictNetworkUIResource(ReadGraph graph) { + NetworkProperties = getResourceOrNull(graph, URIs.NetworkProperties); + SelectionTab = getResourceOrNull(graph, URIs.SelectionTab); + SelectionTabContribution = getResourceOrNull(graph, URIs.SelectionTabContribution); + } + + public static DistrictNetworkUIResource getInstance(ReadGraph graph) { + Session session = graph.getSession(); + DistrictNetworkUIResource ret = session.peekService(DistrictNetworkUIResource.class); + if(ret == null) { + QueryControl qc = graph.getService(QueryControl.class); + ret = new DistrictNetworkUIResource(qc.getIndependentGraph(graph)); + session.registerService(DistrictNetworkUIResource.class, ret); + } + return ret; + } + + public static DistrictNetworkUIResource getInstance(RequestProcessor session) throws DatabaseException { + DistrictNetworkUIResource ret = session.peekService(DistrictNetworkUIResource.class); + if(ret == null) { + ret = session.syncRequest(new Read() { + public DistrictNetworkUIResource perform(ReadGraph graph) throws DatabaseException { + QueryControl qc = graph.getService(QueryControl.class); + return new DistrictNetworkUIResource(qc.getIndependentGraph(graph)); + } + }); + session.registerService(DistrictNetworkUIResource.class, ret); + } + return ret; + } + +} +