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 :

http://dive4elements.wald.intevation.org