package org.simantics.db.common.utils; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.common.NamedResource; import org.simantics.db.exception.DatabaseException; import org.simantics.utils.datastructures.MapList; import org.simantics.utils.strings.AlphanumComparator; public class VersionMap extends MapList { public NamedResource getNewest(ReadGraph graph, String baseName) { List versions = getValuesUnsafe(baseName); if(versions == null || versions.isEmpty()) return null; NamedResource result = versions.get(0); for(int i=1;i 0) result = version; } return result; } public Collection getOlderOrEqualVersions(ReadGraph graph, Resource artifact) throws DatabaseException { String baseName = Versions.getBaseName(graph, artifact); String version = Versions.getVersion(graph, artifact); List versions = getValuesUnsafe(baseName); if(versions == null || versions.isEmpty()) return null; ArrayList result = new ArrayList(); for(NamedResource nr : versions) { if(AlphanumComparator.COMPARATOR.compare(nr.getName(), version) <= 0) result.add(nr); } return result; } public Collection getNewerOrEqualVersions(ReadGraph graph, Resource artifact) throws DatabaseException { String baseName = Versions.getBaseName(graph, artifact); String version = Versions.getVersion(graph, artifact); List versions = getValuesUnsafe(baseName); if(versions == null || versions.isEmpty()) return null; ArrayList result = new ArrayList(); for(NamedResource nr : versions) { if(AlphanumComparator.COMPARATOR.compare(nr.getName(), version) >= 0) result.add(nr); } return result; } public boolean contains(String baseName, String version) { List versions = getValuesUnsafe(baseName); if(versions == null || versions.isEmpty()) return false; for(NamedResource nr : versions) { if(nr.getName().equals(version)) return true; } return false; } }