changeset 9055:df5c5614e9a7

New pseudo datetime for year-only values (31.12. instead of 15.6.)
author mschaefer
date Fri, 04 May 2018 14:03:47 +0200
parents 95643dffd006
children ddebd4c2fe93
files backend/src/main/java/org/dive4elements/river/backend/utils/DateGuesser.java backend/src/main/java/org/dive4elements/river/model/TimeInterval.java
diffstat 2 files changed, 36 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/backend/utils/DateGuesser.java	Fri May 04 13:36:01 2018 +0200
+++ b/backend/src/main/java/org/dive4elements/river/backend/utils/DateGuesser.java	Fri May 04 14:03:47 2018 +0200
@@ -13,6 +13,8 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.dive4elements.river.model.TimeInterval;
+
 public final class DateGuesser {
     public static final String [] MONTH = {
             "jan", "feb", "mrz", "apr", "mai", "jun",
@@ -250,11 +252,12 @@
             final Calendar cal = Calendar.getInstance();
             final String year = m.group(1);
             cal.clear();
-            cal.set(
-                    Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0),
-                    5,  // month
-                    15, // day
-                    12, 0, 0);
+            cal.set(Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0),
+                    TimeInterval.YEAR_ONLY_DATE.get(Calendar.MONTH),
+                    TimeInterval.YEAR_ONLY_DATE.get(Calendar.DAY_OF_MONTH),
+                    TimeInterval.YEAR_ONLY_DATE.get(Calendar.HOUR_OF_DAY),
+                    TimeInterval.YEAR_ONLY_DATE.get(Calendar.MINUTE),
+                    TimeInterval.YEAR_ONLY_DATE.get(Calendar.SECOND));
             return cal.getTime();
         }
 
--- a/backend/src/main/java/org/dive4elements/river/model/TimeInterval.java	Fri May 04 13:36:01 2018 +0200
+++ b/backend/src/main/java/org/dive4elements/river/model/TimeInterval.java	Fri May 04 14:03:47 2018 +0200
@@ -9,22 +9,33 @@
 package org.dive4elements.river.model;
 
 import java.io.Serializable;
-
+import java.util.Calendar;
 import java.util.Date;
 
+import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
 import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Column;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.GenerationType;
 
 @Entity
 @Table(name = "time_intervals")
 public class TimeInterval
 implements   Serializable
 {
+    /**
+     * Pseudo-date for Date values where only the year field is significant
+     * (in Flys 3.2.1 June-15 12:00 had been used)
+     */
+    public final static Calendar YEAR_ONLY_DATE;
+    static {
+        YEAR_ONLY_DATE = Calendar.getInstance();
+        YEAR_ONLY_DATE.clear();
+        YEAR_ONLY_DATE.set(0, Calendar.DECEMBER, 31, 3, 5, 6);
+    }
+
     private Integer id;
     private Date    startTime;
     private Date    stopTime;
@@ -32,43 +43,43 @@
     public TimeInterval() {
     }
 
-    public TimeInterval(Date startTime, Date stopTime) {
+    public TimeInterval(final Date startTime, final Date stopTime) {
         this.startTime = startTime;
         this.stopTime  = stopTime;
     }
 
     @Id
     @SequenceGenerator(
-        name           = "SEQUENCE_TIME_INTERVALS_ID_SEQ",
-        sequenceName   = "TIME_INTERVALS_ID_SEQ",
-        allocationSize = 1)
+            name           = "SEQUENCE_TIME_INTERVALS_ID_SEQ",
+            sequenceName   = "TIME_INTERVALS_ID_SEQ",
+            allocationSize = 1)
     @GeneratedValue(
-        strategy  = GenerationType.SEQUENCE,
-        generator = "SEQUENCE_TIME_INTERVALS_ID_SEQ")
+            strategy  = GenerationType.SEQUENCE,
+            generator = "SEQUENCE_TIME_INTERVALS_ID_SEQ")
     @Column(name = "id")
     public Integer getId() {
-        return id;
+        return this.id;
     }
 
-    public void setId(Integer id) {
+    public void setId(final Integer id) {
         this.id = id;
     }
 
     @Column(name = "start_time") // FIXME: type mapping needed?
     public Date getStartTime() {
-        return startTime;
+        return this.startTime;
     }
 
-    public void setStartTime(Date startTime) {
+    public void setStartTime(final Date startTime) {
         this.startTime = startTime;
     }
 
     @Column(name = "stop_time") // FIXME: type mapping needed?
     public Date getStopTime() {
-        return stopTime;
+        return this.stopTime;
     }
 
-    public void setStopTime(Date stopTime) {
+    public void setStopTime(final Date stopTime) {
         this.stopTime = stopTime;
     }
 }

http://dive4elements.wald.intevation.org