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%2FLayer0Utils.java;h=936eb58126f0b30563406cd404e1872889d54759;hp=888e5fe4e312af10d98af326966b6e2ad42e7894;hb=c2c14cfce252493d4fda9f7cf34a981dfe744432;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07 diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/Layer0Utils.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/Layer0Utils.java index 888e5fe4e..936eb5812 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/Layer0Utils.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/Layer0Utils.java @@ -23,6 +23,7 @@ import java.util.Set; import java.util.TreeSet; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.SubMonitor; import org.simantics.databoard.Bindings; import org.simantics.databoard.Datatypes; @@ -105,6 +106,7 @@ import org.simantics.graph.db.TransferableGraphs; import org.simantics.graph.diff.Diff; import org.simantics.graph.diff.TransferableGraphDelta1; import org.simantics.graph.refactoring.GraphRefactoringUtils; +import org.simantics.graph.representation.PrettyPrintTG; import org.simantics.graph.representation.TransferableGraph1; import org.simantics.layer0.Layer0; import org.simantics.operation.Layer0X; @@ -567,16 +569,16 @@ public class Layer0Utils { } - public static void claimAdaptedValue(WriteGraph graph, Resource objectResource, Object value, Binding binding, Datatype datatype) throws DatabaseException { + public static void claimAdaptedValue(WriteGraph graph, Resource objectResource, Object value, Binding binding, Datatype targetDatatype) throws DatabaseException { try { - Datatype source = binding.type(); - if(source.equals(datatype)) { + Datatype sourceDatatype = binding.type(); + if(sourceDatatype.equals(targetDatatype)) { graph.claimValue(objectResource, value, binding); } else { - Binding target = Bindings.getBinding(datatype); - Adapter adapter = Bindings.getAdapter(binding, target); + Binding target = Bindings.getBinding(targetDatatype); + Adapter adapter = Bindings.getTypeAdapter(binding, target); graph.claimValue(objectResource, adapter.adapt(value), target); } @@ -1192,7 +1194,7 @@ public class Layer0Utils { } - private static TransferableGraphSource makeTGSource(ReadGraph graph, Resource r) throws DatabaseException { + public static TransferableGraphSource makeTGSource(ReadGraph graph, Resource r) throws DatabaseException { SimanticsClipboardImpl cp = new SimanticsClipboardImpl(); CopyHandler c1 = graph.adapt(r, CopyHandler.class); @@ -1234,6 +1236,10 @@ public class Layer0Utils { return Layer0.getInstance(graph).String; } + public static void emptyTrashBin() throws ServiceException { + emptyTrashBin(new NullProgressMonitor()); + } + public static void emptyTrashBin(IProgressMonitor monitor) throws ServiceException { emptyTrashBin(monitor, SimanticsInternal.getSession(), SimanticsInternal.getProject()); } @@ -1281,15 +1287,31 @@ public class Layer0Utils { return; mon.subTask("Purging Database"); mon.newChild(1000); - XSupport xs = session.getService(XSupport.class); - xs.purge(); + purgeDatabase(monitor, session); } catch (CancelTransactionException e) { // Ignore. } catch (DatabaseException e) { throw new ServiceException(e); } } - + + public static void purgeDatabase() throws ServiceException { + purgeDatabase(new NullProgressMonitor()); + } + + public static void purgeDatabase(final IProgressMonitor monitor) throws ServiceException { + purgeDatabase(monitor, SimanticsInternal.getSession()); + } + + public static void purgeDatabase(final IProgressMonitor monitor, Session session) throws ServiceException { + try { + XSupport xs = session.getService(XSupport.class); + xs.purge(); + } catch (DatabaseException e) { + throw new ServiceException(e); + } + } + public static Resource getSingleDomainOf(ReadGraph graph, Resource type, Resource target) throws DatabaseException { Resource result = null; for(Resource candidate : getDomainOf(graph, type).values()) { @@ -1328,6 +1350,18 @@ public class Layer0Utils { return null; } + public static Resource getPossiblePredicateByLabel(ReadGraph graph, Resource instance, String predicateName) throws DatabaseException { + Layer0 L0 = Layer0.getInstance(graph); + for(Resource type : graph.getPrincipalTypes(instance)) { + Map domainOf = getDomainOf(graph, type); + for(Resource r : domainOf.values()) { + String label = graph.getPossibleRelatedValue(r, L0.HasLabel, Bindings.STRING); + if(predicateName.equals(label)) + return r; + } + } + return null; + } public static void claimLiteralDataboard(WriteGraph graph, Resource container, Resource property, String valueText) throws DatabaseException { @@ -1345,4 +1379,12 @@ public class Layer0Utils { } + public static String prettyPrintResource(ReadGraph graph, Resource resource, boolean ignoreIdentifiers) throws Exception { + TransferableGraphSource source = makeTGSource(graph, resource); + TransferableGraph1 tg = TransferableGraphs.create(graph, source); + GraphRefactoringUtils.fixOntologyExport(tg); + System.out.println("Printing resoure " + graph.getURI(resource)); + return PrettyPrintTG.print(tg, ignoreIdentifiers); + } + }