package org.genedb.db.domain.objects; import java.awt.Color; import java.io.Serializable; import java.util.Comparator; /** * A located feature is a feature that has a specific location * on its source feature. * * @author rh11 */ public abstract class LocatedFeature implements Comparable<LocatedFeature>, Serializable { public abstract String getUniqueName(); public abstract int getFmin(); public abstract int getFmax(); public String getUrl() { return null; } public Color getColor() { return null; } public String getStratumId() { return ""; } /** * The default comparison is by position (see {@link #positionComparator()}) * but this can be overridden by subclasses. */ public int compareTo(LocatedFeature other) { return positionComparator.compare(this, other); } private static final Comparator<LocatedFeature> positionComparator = new Comparator<LocatedFeature>() { public int compare(LocatedFeature a, LocatedFeature b) { if (a.getFmin() != b.getFmin()) return a.getFmin() - b.getFmin(); if (a.getFmax() != b.getFmax()) return b.getFmax() - a.getFmax(); return a.getUniqueName().compareTo(b.getUniqueName()); } }; public static final Comparator<LocatedFeature> positionComparator() { return positionComparator; } }