--- /dev/null
+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