mirror of
https://gitlab.com/oeffi/public-transport-enabler.git
synced 2025-07-08 09:38:48 +00:00
natural ordering for lines
git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@724 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
parent
e0a8ff7c53
commit
e2a9a01ed6
1 changed files with 19 additions and 1 deletions
|
@ -22,19 +22,24 @@ import java.io.Serializable;
|
||||||
/**
|
/**
|
||||||
* @author Andreas Schildbach
|
* @author Andreas Schildbach
|
||||||
*/
|
*/
|
||||||
public final class Line implements Serializable
|
public final class Line implements Serializable, Comparable<Line>
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = -5642533805998375070L;
|
private static final long serialVersionUID = -5642533805998375070L;
|
||||||
|
|
||||||
final public String id;
|
final public String id;
|
||||||
|
final private transient char product; // TODO make true field
|
||||||
final public String label;
|
final public String label;
|
||||||
final public int[] colors;
|
final public int[] colors;
|
||||||
|
|
||||||
|
private static final String PRODUCT_ORDER = "IRSUTBPFC";
|
||||||
|
|
||||||
public Line(final String id, final String label, final int[] colors)
|
public Line(final String id, final String label, final int[] colors)
|
||||||
{
|
{
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.label = label;
|
this.label = label;
|
||||||
this.colors = colors;
|
this.colors = colors;
|
||||||
|
|
||||||
|
product = label.charAt(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -62,4 +67,17 @@ public final class Line implements Serializable
|
||||||
{
|
{
|
||||||
return label.hashCode();
|
return label.hashCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int compareTo(final Line other)
|
||||||
|
{
|
||||||
|
final int productThis = PRODUCT_ORDER.indexOf(this.product);
|
||||||
|
final int productOther = PRODUCT_ORDER.indexOf(other.product);
|
||||||
|
|
||||||
|
final int compareProduct = new Integer(productThis >= 0 ? productThis : Integer.MAX_VALUE).compareTo(productOther >= 0 ? productOther
|
||||||
|
: Integer.MAX_VALUE);
|
||||||
|
if (compareProduct != 0)
|
||||||
|
return compareProduct;
|
||||||
|
|
||||||
|
return label.compareTo(other.label);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue