1 package org.simantics.db.common.utils;
\r
3 import java.util.ArrayList;
\r
4 import java.util.Collection;
\r
5 import java.util.List;
\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
14 public class VersionMap extends MapList<String,NamedResource> {
\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
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
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
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