]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.db.common.utils;\r
2 \r
3 import java.util.Collections;\r
4 \r
5 import org.simantics.databoard.Bindings;\r
6 import org.simantics.db.ReadGraph;\r
7 import org.simantics.db.Resource;\r
8 import org.simantics.db.common.NamedResource;\r
9 import org.simantics.db.common.request.ResourceRead;\r
10 import org.simantics.db.exception.DatabaseException;\r
11 import org.simantics.layer0.Layer0;\r
12 import org.simantics.utils.datastructures.MapList;\r
13 \r
14 public class VersionInfoRequest extends ResourceRead<VersionInfo> {\r
15 \r
16         public VersionInfoRequest(Resource resource) {\r
17                 super(resource);\r
18         }\r
19     \r
20         @Override\r
21         public VersionInfo perform(ReadGraph graph) throws DatabaseException {\r
22                 \r
23         Layer0 L0 = Layer0.getInstance(graph);\r
24 \r
25         String baseName = graph.getPossibleRelatedValue(resource, L0.HasName, Bindings.STRING);\r
26         String version = "";\r
27         \r
28         if(baseName != null) {\r
29                 int pos = baseName.lastIndexOf('@');\r
30                 if(pos != -1) {\r
31                         version = baseName.substring(pos+1);\r
32                         baseName = baseName.substring(0, pos);\r
33                 }\r
34         }\r
35         \r
36                 Resource parent = graph.getPossibleObject(resource, L0.PartOf);\r
37                 if(parent != null) {\r
38                         MapList<String,NamedResource> versionMap = graph.syncRequest(new VersionMapRequest(parent));\r
39                         return new VersionInfo(baseName, version, versionMap.getValues(baseName));\r
40                 }\r
41 \r
42                 return new VersionInfo(baseName, version, Collections.singleton(new NamedResource(version, resource)));\r
43                 \r
44         }\r
45 \r
46 }\r