]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.common/src/org/simantics/db/common/utils/VersionMapRequest.java
ListUtils.create(g,elements) creates a list without element inverses
[simantics/platform.git] / bundles / org.simantics.db.common / src / org / simantics / db / common / utils / VersionMapRequest.java
1 package org.simantics.db.common.utils;
2
3 import java.util.Map;
4
5 import org.simantics.db.ReadGraph;
6 import org.simantics.db.Resource;
7 import org.simantics.db.common.NamedResource;
8 import org.simantics.db.common.request.ResourceRead;
9 import org.simantics.db.common.uri.UnescapedChildMapOfResource;
10 import org.simantics.db.exception.DatabaseException;
11
12 public class VersionMapRequest extends ResourceRead<VersionMap> {
13
14         public VersionMapRequest(Resource resource) {
15                 super(resource);
16         }
17
18         @Override
19         public VersionMap perform(ReadGraph graph) throws DatabaseException {
20                 VersionMap result = new VersionMap();
21                 Map<String,Resource> childMap = graph.syncRequest(new UnescapedChildMapOfResource(resource));
22                 for(Map.Entry<String,Resource> entry : childMap.entrySet()) {
23                         String s = entry.getKey();
24                         Resource r = entry.getValue();
25                         int pos = s.lastIndexOf('@');
26                         if(pos == -1)  {
27                                 result.add(s, new NamedResource("", r));
28                         } else {
29                                 String base = s.substring(0, pos);
30                                 String version = s.substring(pos+1);
31                                 result.add(base, new NamedResource(version, r));
32                         }
33                 }
34                 return result;
35         }
36
37 }