X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Forg%2Fbiojava%2Fdasobert%2Fdasregistry%2FDasSourceComparator.java;h=0d52fd980a4359da901f494d19596da1dd338aa9;hb=0c0991e85ba4c0536b366abe020eaf84ca6e29a4;hp=c07b32db54494e056ba4cc9955986381efbaec4d;hpb=ac8acb905e84708b759ae1e87eaf6691d9376d57;p=jalview.git diff --git a/src/org/biojava/dasobert/dasregistry/DasSourceComparator.java b/src/org/biojava/dasobert/dasregistry/DasSourceComparator.java index c07b32d..0d52fd9 100755 --- a/src/org/biojava/dasobert/dasregistry/DasSourceComparator.java +++ b/src/org/biojava/dasobert/dasregistry/DasSourceComparator.java @@ -22,119 +22,169 @@ * */ +package org.biojava.dasobert.dasregistry; -package org.biojava.dasobert.dasregistry ; +import java.util.*; -import java.util.Comparator ; -import java.util.Map ; -import java.util.HashMap ; - - -/** a comparator to sort DasSources +/** + * a comparator to sort DasSources + * * @author Andreas Prlic, Thomas Down */ +public abstract class DasSourceComparator implements Comparator +{ -public abstract class DasSourceComparator - implements Comparator -{ + private final String name; - private final String name ; - private static final Map COMPS_BY_NAME; + private static final Map COMPS_BY_NAME; + private static final int TWODAYS = 1000 * 60 * 60 * 24 * 2; - public DasSourceComparator(String str) { - //System.out.println("new dasSourceComparator " + str); - name = str ; + public DasSourceComparator(String str) + { + // System.out.println("new dasSourceComparator " + str); + name = str; + } + + public static final Comparator BY_ID = new DasSourceComparator("id") + { + protected Comparable getField(DasSource ds) + { + return ds.getId(); } - - public static final Comparator BY_ID = new DasSourceComparator("id") { - protected Comparable getField(DasSource ds) { - return ds.getId(); - } - }; - - public static final Comparator BY_NICKNAME = new DasSourceComparator("nickname") { - protected Comparable getField(DasSource ds) { - return ds.getNickname(); - } - }; - public static final Comparator BY_REGISTER_DATE = new DasSourceComparator("registerdate") { - protected Comparable getField(DasSource ds) { - return ds.getRegisterDate(); - } - }; - public static final Comparator BY_LEASE_DATE = new DasSourceComparator("leasedate") { - protected Comparable getField(DasSource ds) { - return ds.getLeaseDate(); - } - }; - public static final Comparator BY_URL = new DasSourceComparator("url") { - protected Comparable getField(DasSource ds) { - return ds.getUrl(); - } - }; - public static final Comparator BY_ADMIN_EMAIL = new DasSourceComparator("adminemail") { - protected Comparable getField(DasSource ds) { - return ds.getAdminemail(); - } - }; - public static final Comparator BY_DESCRIPTION = new DasSourceComparator("description") { - protected Comparable getField(DasSource ds) { - return ds.getDescription(); - } - }; - public static final Comparator BY_CAPABILITIES = new DasSourceComparator("capabilities") { - protected Comparable getField(DasSource ds) { - String[] caps = ds.getCapabilities(); - return caps.length == 0 ? "" : caps[0]; - } - }; - public static final Comparator BY_COORDINATE_SYSTEM = new DasSourceComparator("coordinateSystem") { - protected Comparable getField(DasSource ds) { - DasCoordinateSystem[] dcss = ds.getCoordinateSystem(); - return dcss.length == 0 ? "" : dcss[0].toString(); - } - }; - - static { - COMPS_BY_NAME = new HashMap(); - COMPS_BY_NAME.put(BY_ID.toString(), BY_ID); - COMPS_BY_NAME.put(BY_NICKNAME.toString(), BY_NICKNAME); - COMPS_BY_NAME.put(BY_REGISTER_DATE.toString(), BY_REGISTER_DATE); - COMPS_BY_NAME.put(BY_LEASE_DATE.toString(), BY_LEASE_DATE); - COMPS_BY_NAME.put(BY_URL.toString(), BY_URL); - COMPS_BY_NAME.put(BY_ADMIN_EMAIL.toString(), BY_ADMIN_EMAIL); - COMPS_BY_NAME.put(BY_DESCRIPTION.toString(), BY_DESCRIPTION); - COMPS_BY_NAME.put(BY_CAPABILITIES.toString(), BY_CAPABILITIES); - COMPS_BY_NAME.put(BY_COORDINATE_SYSTEM.toString(), BY_COORDINATE_SYSTEM); + }; + + public static final Comparator BY_NICKNAME = new DasSourceComparator( + "nickname") + { + protected Comparable getField(DasSource ds) + { + return ds.getNickname(); } + }; - - - public static Comparator fromString(String name) { - if (COMPS_BY_NAME.containsKey(name)) { - return (Comparator) COMPS_BY_NAME.get(name); - } else { - throw new IllegalArgumentException("Can't compare by key " + name); - } - } + public static final Comparator BY_STATUS = new DasSourceComparator( + "status") + { + protected Comparable getField(DasSource ds) + { - protected abstract Comparable getField(DasSource ds); + Date now = new Date(); - /** compare two DasSource objects */ - public int compare( Object a, Object b) { - - DasSource x = (DasSource) a ; - DasSource y = (DasSource) b ; - return getField(x).compareTo(getField(y)); + if (ds.getLeaseDate().getTime() < (now.getTime() - TWODAYS)) + return new Integer(0); + return new Integer(1); + } + }; + + public static final Comparator BY_REGISTER_DATE = new DasSourceComparator( + "registerdate") + { + protected Comparable getField(DasSource ds) + { + return ds.getRegisterDate(); } + }; + + public static final Comparator BY_LEASE_DATE = new DasSourceComparator( + "leasedate") + { + protected Comparable getField(DasSource ds) + { + return ds.getLeaseDate(); + } + }; - public String toString() { - return name; + public static final Comparator BY_URL = new DasSourceComparator("url") + { + protected Comparable getField(DasSource ds) + { + return ds.getUrl(); + } + }; + + public static final Comparator BY_ADMIN_EMAIL = new DasSourceComparator( + "adminemail") + { + protected Comparable getField(DasSource ds) + { + return ds.getAdminemail(); } + }; + + public static final Comparator BY_DESCRIPTION = new DasSourceComparator( + "description") + { + protected Comparable getField(DasSource ds) + { + return ds.getDescription(); + } + }; + + public static final Comparator BY_CAPABILITIES = new DasSourceComparator( + "capabilities") + { + protected Comparable getField(DasSource ds) + { + String[] caps = ds.getCapabilities(); + return caps.length == 0 ? "" : caps[0]; + } + }; + + public static final Comparator BY_COORDINATE_SYSTEM = new DasSourceComparator( + "coordinateSystem") + { + protected Comparable getField(DasSource ds) + { + DasCoordinateSystem[] dcss = ds.getCoordinateSystem(); + return dcss.length == 0 ? "" : dcss[0].toString(); + } + }; + + static + { + COMPS_BY_NAME = new HashMap(); + COMPS_BY_NAME.put(BY_ID.toString(), BY_ID); + COMPS_BY_NAME.put(BY_NICKNAME.toString(), BY_NICKNAME); + COMPS_BY_NAME.put(BY_REGISTER_DATE.toString(), BY_REGISTER_DATE); + COMPS_BY_NAME.put(BY_LEASE_DATE.toString(), BY_LEASE_DATE); + COMPS_BY_NAME.put(BY_URL.toString(), BY_URL); + COMPS_BY_NAME.put(BY_ADMIN_EMAIL.toString(), BY_ADMIN_EMAIL); + COMPS_BY_NAME.put(BY_DESCRIPTION.toString(), BY_DESCRIPTION); + COMPS_BY_NAME.put(BY_CAPABILITIES.toString(), BY_CAPABILITIES); + COMPS_BY_NAME + .put(BY_COORDINATE_SYSTEM.toString(), BY_COORDINATE_SYSTEM); + COMPS_BY_NAME.put(BY_STATUS.toString(), BY_STATUS); + + } + + public static Comparator fromString(String name) + { + if (COMPS_BY_NAME.containsKey(name)) + { + return (Comparator) COMPS_BY_NAME.get(name); + } + else + { + throw new IllegalArgumentException("Can't compare by key " + name); + } + } + protected abstract Comparable getField(DasSource ds); -} + /** compare two DasSource objects */ + public int compare(Object a, Object b) + { + DasSource x = (DasSource) a; + DasSource y = (DasSource) b; + return getField(x).compareTo(getField(y)); + } + public String toString() + { + return name; + } + +}