]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.common/src/org/simantics/db/common/utils/VersionInfoRequest.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.common / src / org / simantics / db / common / utils / VersionInfoRequest.java
diff --git a/bundles/org.simantics.db.common/src/org/simantics/db/common/utils/VersionInfoRequest.java b/bundles/org.simantics.db.common/src/org/simantics/db/common/utils/VersionInfoRequest.java
new file mode 100644 (file)
index 0000000..68d976d
--- /dev/null
@@ -0,0 +1,46 @@
+package org.simantics.db.common.utils;\r
+\r
+import java.util.Collections;\r
+\r
+import org.simantics.databoard.Bindings;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.common.NamedResource;\r
+import org.simantics.db.common.request.ResourceRead;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.layer0.Layer0;\r
+import org.simantics.utils.datastructures.MapList;\r
+\r
+public class VersionInfoRequest extends ResourceRead<VersionInfo> {\r
+\r
+       public VersionInfoRequest(Resource resource) {\r
+               super(resource);\r
+       }\r
+    \r
+       @Override\r
+       public VersionInfo perform(ReadGraph graph) throws DatabaseException {\r
+               \r
+       Layer0 L0 = Layer0.getInstance(graph);\r
+\r
+       String baseName = graph.getPossibleRelatedValue(resource, L0.HasName, Bindings.STRING);\r
+       String version = "";\r
+       \r
+       if(baseName != null) {\r
+               int pos = baseName.lastIndexOf('@');\r
+               if(pos != -1) {\r
+                       version = baseName.substring(pos+1);\r
+                       baseName = baseName.substring(0, pos);\r
+               }\r
+       }\r
+       \r
+               Resource parent = graph.getPossibleObject(resource, L0.PartOf);\r
+               if(parent != null) {\r
+                       MapList<String,NamedResource> versionMap = graph.syncRequest(new VersionMapRequest(parent));\r
+                       return new VersionInfo(baseName, version, versionMap.getValues(baseName));\r
+               }\r
+\r
+               return new VersionInfo(baseName, version, Collections.singleton(new NamedResource(version, resource)));\r
+               \r
+       }\r
+\r
+}\r