Mercurial > dive4elements > river
diff flys-backend/src/main/java/de/intevation/flys/model/DischargeTable.java @ 4183:1755a1bfe5ce
Merged
author | Christian Lins <christian.lins@intevation.de> |
---|---|
date | Fri, 19 Oct 2012 09:20:52 +0200 |
parents | 67f362883fe4 |
children | 8138a90a674a |
line wrap: on
line diff
--- a/flys-backend/src/main/java/de/intevation/flys/model/DischargeTable.java Tue Oct 16 12:44:15 2012 +0200 +++ b/flys-backend/src/main/java/de/intevation/flys/model/DischargeTable.java Fri Oct 19 09:20:52 2012 +0200 @@ -1,25 +1,25 @@ package de.intevation.flys.model; import java.io.Serializable; +import java.util.Date; +import java.util.List; +import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.GeneratedValue; -import javax.persistence.Column; -import javax.persistence.SequenceGenerator; -import javax.persistence.GenerationType; +import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.OrderBy; -import javax.persistence.JoinColumn; - -import java.util.List; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; @Entity @Table(name = "discharge_tables") public class DischargeTable -implements Serializable +implements Serializable, Comparable<DischargeTable> { private Integer id; private Gauge gauge; @@ -116,5 +116,57 @@ ) { this.dischargeTableValues = dischargeTableValues; } + + @Override + public int compareTo(DischargeTable o) { + if (getKind() == 0 && o.getKind() != 0) { + return 1; + } + + TimeInterval other = o.getTimeInterval(); + + Date otherStartTime = other.getStartTime(); + Date thisStartTime = timeInterval.getStartTime(); + + if (otherStartTime == null) { + return -1; + } + else if (thisStartTime == null) { + return 1; + } + + long otherStart = otherStartTime.getTime(); + long thisStart = thisStartTime.getTime(); + + if (otherStart < thisStart) { + return 1; + } + else if (otherStart > thisStart) { + return -1; + } + + Date otherStopTime = other.getStopTime(); + Date thisStopTime = timeInterval.getStopTime(); + + if (otherStopTime == null) { + return -1; + } + else if (thisStopTime == null) { + return 1; + } + + long otherEnd = otherStopTime.getTime(); + long thisEnd = thisStopTime.getTime(); + + if (otherEnd < thisEnd) { + return 1; + } + else if (otherEnd > thisEnd) { + return -1; + } + else { + return 0; + } + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :