1 package org.simantics.db.common.utils;
3 import java.util.ArrayList;
4 import java.util.Collection;
7 import org.simantics.db.ReadGraph;
8 import org.simantics.db.Resource;
9 import org.simantics.db.common.NamedResource;
10 import org.simantics.db.exception.DatabaseException;
11 import org.simantics.utils.datastructures.MapList;
12 import org.simantics.utils.strings.AlphanumComparator;
14 public class VersionMap extends MapList<String,NamedResource> {
16 public NamedResource getNewest(ReadGraph graph, String baseName) {
17 List<NamedResource> versions = getValuesUnsafe(baseName);
18 if(versions == null || versions.isEmpty()) return null;
19 NamedResource result = versions.get(0);
20 for(int i=1;i<versions.size();i++) {
21 NamedResource version = versions.get(i);
22 if(AlphanumComparator.COMPARATOR.compare(version.getName(), result) > 0) result = version;
27 public Collection<NamedResource> getOlderOrEqualVersions(ReadGraph graph, Resource artifact) throws DatabaseException {
28 String baseName = Versions.getBaseName(graph, artifact);
29 String version = Versions.getVersion(graph, artifact);
30 List<NamedResource> versions = getValuesUnsafe(baseName);
31 if(versions == null || versions.isEmpty()) return null;
32 ArrayList<NamedResource> result = new ArrayList<NamedResource>();
33 for(NamedResource nr : versions) {
34 if(AlphanumComparator.COMPARATOR.compare(nr.getName(), version) <= 0) result.add(nr);
39 public Collection<NamedResource> getNewerOrEqualVersions(ReadGraph graph, Resource artifact) throws DatabaseException {
40 String baseName = Versions.getBaseName(graph, artifact);
41 String version = Versions.getVersion(graph, artifact);
42 List<NamedResource> versions = getValuesUnsafe(baseName);
43 if(versions == null || versions.isEmpty()) return null;
44 ArrayList<NamedResource> result = new ArrayList<NamedResource>();
45 for(NamedResource nr : versions) {
46 if(AlphanumComparator.COMPARATOR.compare(nr.getName(), version) >= 0) result.add(nr);
51 public boolean contains(String baseName, String version) {
52 List<NamedResource> versions = getValuesUnsafe(baseName);
53 if(versions == null || versions.isEmpty()) return false;
54 for(NamedResource nr : versions) {
55 if(nr.getName().equals(version)) return true;