]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.common/src/org/simantics/db/common/utils/VersionMap.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.common / src / org / simantics / db / common / utils / VersionMap.java
1 package org.simantics.db.common.utils;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.Collection;\r
5 import java.util.List;\r
6 \r
7 import org.simantics.db.ReadGraph;\r
8 import org.simantics.db.Resource;\r
9 import org.simantics.db.common.NamedResource;\r
10 import org.simantics.db.exception.DatabaseException;\r
11 import org.simantics.utils.datastructures.MapList;\r
12 import org.simantics.utils.strings.AlphanumComparator;\r
13 \r
14 public class VersionMap extends MapList<String,NamedResource> {\r
15 \r
16         public NamedResource getNewest(ReadGraph graph, String baseName) {\r
17                 List<NamedResource> versions = getValuesUnsafe(baseName);\r
18                 if(versions == null || versions.isEmpty()) return null;\r
19                 NamedResource result = versions.get(0);\r
20                 for(int i=1;i<versions.size();i++) {\r
21                         NamedResource version = versions.get(i);\r
22                         if(AlphanumComparator.COMPARATOR.compare(version.getName(), result) > 0) result = version;\r
23                 }\r
24                 return result;\r
25         }\r
26         \r
27         public Collection<NamedResource> getOlderOrEqualVersions(ReadGraph graph, Resource artifact) throws DatabaseException {\r
28                 String baseName = Versions.getBaseName(graph, artifact);\r
29                 String version = Versions.getVersion(graph, artifact);\r
30                 List<NamedResource> versions = getValuesUnsafe(baseName);\r
31                 if(versions == null || versions.isEmpty()) return null;\r
32                 ArrayList<NamedResource> result = new ArrayList<NamedResource>();\r
33                 for(NamedResource nr : versions) {\r
34                         if(AlphanumComparator.COMPARATOR.compare(nr.getName(), version) <= 0) result.add(nr);\r
35                 }\r
36                 return result;\r
37         }\r
38 \r
39         public Collection<NamedResource> getNewerOrEqualVersions(ReadGraph graph, Resource artifact) throws DatabaseException {\r
40                 String baseName = Versions.getBaseName(graph, artifact);\r
41                 String version = Versions.getVersion(graph, artifact);\r
42                 List<NamedResource> versions = getValuesUnsafe(baseName);\r
43                 if(versions == null || versions.isEmpty()) return null;\r
44                 ArrayList<NamedResource> result = new ArrayList<NamedResource>();\r
45                 for(NamedResource nr : versions) {\r
46                         if(AlphanumComparator.COMPARATOR.compare(nr.getName(), version) >= 0) result.add(nr);\r
47                 }\r
48                 return result;\r
49         }\r
50         \r
51         public boolean contains(String baseName, String version) {\r
52                 List<NamedResource> versions = getValuesUnsafe(baseName);\r
53                 if(versions == null || versions.isEmpty()) return false;\r
54                 for(NamedResource nr : versions) {\r
55                         if(nr.getName().equals(version)) return true;\r
56                 }\r
57                 return false;\r
58         }\r
59         \r
60 }\r