Mercurial > dive4elements > river
annotate backend/src/main/java/org/dive4elements/river/backend/utils/DateGuesser.java @ 9709:b74f817435fe
comment removed
author | dnt_bjoernsen <d.tironi@bjoernsen.de> |
---|---|
date | Wed, 27 Jan 2021 11:47:38 +0100 |
parents | df5c5614e9a7 |
children |
rev | line source |
---|---|
5844
4dd33b86dc61
Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
4dd33b86dc61
Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
3 * |
5992
4c3ccf2b0304
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5895
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5844
4dd33b86dc61
Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5992
4c3ccf2b0304
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5895
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
7 */ |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
8 |
8187
3bb1c62ad732
Moved package org.dive4elements.river.utils to org.dive4elements.river.backend.utils.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5992
diff
changeset
|
9 package org.dive4elements.river.backend.utils; |
5844
4dd33b86dc61
Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
10 |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
11 import java.util.Calendar; |
8969 | 12 import java.util.Date; |
13 import java.util.regex.Matcher; | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
14 import java.util.regex.Pattern; |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
15 |
9055
df5c5614e9a7
New pseudo datetime for year-only values (31.12. instead of 15.6.)
mschaefer
parents:
8969
diff
changeset
|
16 import org.dive4elements.river.model.TimeInterval; |
df5c5614e9a7
New pseudo datetime for year-only values (31.12. instead of 15.6.)
mschaefer
parents:
8969
diff
changeset
|
17 |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
18 public final class DateGuesser { |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
19 public static final String [] MONTH = { |
8969 | 20 "jan", "feb", "mrz", "apr", "mai", "jun", |
21 "jul", "aug", "sep", "okt", "nov", "dez" | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
22 }; |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
23 |
8969 | 24 public static final int guessMonth(final String s) { |
25 final String t = s.toLowerCase(); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
26 for (int i = 0; i < MONTH.length; ++i) |
8969 | 27 if (MONTH[i].equals(t)) { |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 return i; |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
29 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
30 return -1; |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
31 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
32 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
33 public static final Pattern YYYY_MM_DD = |
8969 | 34 Pattern.compile("^(\\d{4})-(\\d{2})-(\\d{2})$"); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
35 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
36 public static final Pattern DD_MM_YYYY = |
8969 | 37 Pattern.compile("^(\\d{1,2})\\.(\\d{1,2})\\.(\\d{2,4})$"); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
38 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
39 public static final Pattern MMM_YYYY = |
8969 | 40 Pattern.compile("^((\\d{1,2})\\.)?(\\w{3})[\\. -]?((\\d\\d)|(\\d{4}))$"); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
41 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
42 public static final Pattern GARBAGE_YYYY = |
8969 | 43 Pattern.compile("^[^\\d=]*((\\d\\d)|([12]\\d{3}))$"); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
44 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
45 public static final Pattern YYYY_MM_DDThh_mm = |
8969 | 46 Pattern.compile("^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})$"); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
47 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
48 public static final Pattern YYYY_MM_DDThh_mm_ss = |
8969 | 49 Pattern.compile( |
50 "^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})$"); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
51 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
52 public static final Pattern DD_MM_YYYYThh_mm = |
8969 | 53 Pattern.compile( |
54 "^(\\d{1,2})\\.(\\d{1,2})\\.(\\d{2,4})T(\\d{1,2}):(\\d{2})$"); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
55 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
56 public static final Pattern DD_MM_YYYYThh_mm_ss = |
8969 | 57 Pattern.compile("^(\\d{1,2})\\.(\\d{1,2})\\.(\\d{2,4})" |
58 + "T(\\d{1,2}):(\\d{2}):(\\d{2})$"); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
59 |
4763
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
60 public static final Pattern DDMMYY = |
8969 | 61 Pattern.compile("^(\\d{2})(\\d{2})(\\d{2})$"); |
4763
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
62 |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
63 private DateGuesser() { |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
64 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
65 |
8969 | 66 public static final int calendarMonth(final String month) { |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
67 return calendarMonth(Integer.parseInt(month)); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
68 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
69 |
8969 | 70 public static final int calendarMonth(final int month) { |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
71 return Math.max(Math.min(month-1, 11), 0); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
72 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
73 |
4764
1cfda99c024c
DateGuesser: doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4763
diff
changeset
|
74 /** |
1cfda99c024c
DateGuesser: doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4763
diff
changeset
|
75 * Guess date by trying all different patterns. |
1cfda99c024c
DateGuesser: doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4763
diff
changeset
|
76 * Throws IllegalArgumentException if not able to guess. |
1cfda99c024c
DateGuesser: doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4763
diff
changeset
|
77 * @param s The date to be guessed (e.g. 11.02.2001). |
1cfda99c024c
DateGuesser: doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4763
diff
changeset
|
78 * @return the parsed Date. |
1cfda99c024c
DateGuesser: doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4763
diff
changeset
|
79 */ |
8969 | 80 public static Date guessDate(final String s) { |
81 if ((s == null) || s.trim().isEmpty()) { | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
82 throw new IllegalArgumentException(); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
83 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
84 |
8969 | 85 final String t = s.trim(); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
86 Matcher m; |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
87 |
8969 | 88 m = YYYY_MM_DD.matcher(t); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
89 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
90 if (m.matches()) { |
8969 | 91 final Calendar cal = Calendar.getInstance(); |
92 final String year = m.group(1); | |
93 final String month = m.group(2); | |
94 final String day = m.group(3); | |
5895
4110565baff8
backend: Fixed DateGuesser for DDMMYY.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5882
diff
changeset
|
95 cal.clear(); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
96 cal.set( |
8969 | 97 Integer.parseInt(year), |
98 calendarMonth(month), | |
99 Integer.parseInt(day), | |
100 12, 0, 0); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
101 return cal.getTime(); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
102 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
103 |
8969 | 104 m = DD_MM_YYYY.matcher(t); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
105 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
106 if (m.matches()) { |
8969 | 107 final Calendar cal = Calendar.getInstance(); |
108 final String year = m.group(3); | |
109 final String month = m.group(2); | |
110 final String day = m.group(1); | |
5895
4110565baff8
backend: Fixed DateGuesser for DDMMYY.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5882
diff
changeset
|
111 cal.clear(); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
112 cal.set( |
8969 | 113 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0), |
114 calendarMonth(month), | |
115 Integer.parseInt(day), | |
116 12, 0, 0); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
117 return cal.getTime(); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
118 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
119 |
8969 | 120 m = MMM_YYYY.matcher(t); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
121 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
122 if (m.matches()) { |
8969 | 123 final int month = guessMonth(m.group(3)); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
124 if (month >= 0) { |
8969 | 125 final Calendar cal = Calendar.getInstance(); |
126 final String year = m.group(4); | |
127 final String day = m.group(1); | |
5895
4110565baff8
backend: Fixed DateGuesser for DDMMYY.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5882
diff
changeset
|
128 cal.clear(); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
129 cal.set( |
8969 | 130 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0), |
131 month, | |
132 ((day == null) || day.isEmpty()) ? 15 : Integer.parseInt(day), | |
133 12, 0, 0); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
134 return cal.getTime(); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
135 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
136 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
137 |
8969 | 138 m = YYYY_MM_DDThh_mm.matcher(t); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
139 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
140 if (m.matches()) { |
8969 | 141 final Calendar cal = Calendar.getInstance(); |
142 final String year = m.group(1); | |
143 final String month = m.group(2); | |
144 final String day = m.group(3); | |
145 final String hour = m.group(4); | |
146 final String minute = m.group(5); | |
5895
4110565baff8
backend: Fixed DateGuesser for DDMMYY.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5882
diff
changeset
|
147 cal.clear(); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
148 cal.set( |
8969 | 149 Integer.parseInt(year), |
150 calendarMonth(month), | |
151 Integer.parseInt(day), | |
152 Integer.parseInt(hour), | |
153 Integer.parseInt(minute), | |
154 0 | |
155 ); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
156 return cal.getTime(); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
157 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
158 |
8969 | 159 m = YYYY_MM_DDThh_mm_ss.matcher(t); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
160 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
161 if (m.matches()) { |
8969 | 162 final Calendar cal = Calendar.getInstance(); |
163 final String year = m.group(1); | |
164 final String month = m.group(2); | |
165 final String day = m.group(3); | |
166 final String hour = m.group(4); | |
167 final String minute = m.group(5); | |
168 final String second = m.group(6); | |
5895
4110565baff8
backend: Fixed DateGuesser for DDMMYY.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5882
diff
changeset
|
169 cal.clear(); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
170 cal.set( |
8969 | 171 Integer.parseInt(year), |
172 calendarMonth(month), | |
173 Integer.parseInt(day), | |
174 Integer.parseInt(hour), | |
175 Integer.parseInt(minute), | |
176 Integer.parseInt(second) | |
177 ); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
178 return cal.getTime(); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
179 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
180 |
8969 | 181 m = DD_MM_YYYYThh_mm.matcher(t); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
182 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
183 if (m.matches()) { |
8969 | 184 final Calendar cal = Calendar.getInstance(); |
185 final String year = m.group(3); | |
186 final String month = m.group(2); | |
187 final String day = m.group(1); | |
188 final String hour = m.group(4); | |
189 final String minute = m.group(5); | |
5895
4110565baff8
backend: Fixed DateGuesser for DDMMYY.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5882
diff
changeset
|
190 cal.clear(); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
191 cal.set( |
8969 | 192 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0), |
193 calendarMonth(month), | |
194 Integer.parseInt(day), | |
195 Integer.parseInt(hour), | |
196 Integer.parseInt(minute), | |
197 0 | |
198 ); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
199 return cal.getTime(); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
200 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
201 |
8969 | 202 m = DD_MM_YYYYThh_mm_ss.matcher(t); |
4763
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
203 |
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
204 if (m.matches()) { |
8969 | 205 final Calendar cal = Calendar.getInstance(); |
206 final String year = m.group(3); | |
207 final String month = m.group(2); | |
208 final String day = m.group(1); | |
209 final String hour = m.group(4); | |
210 final String minute = m.group(5); | |
211 final String second = m.group(6); | |
212 cal.clear(); | |
213 cal.set( | |
214 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0), | |
215 calendarMonth(month), | |
216 Integer.parseInt(day), | |
217 Integer.parseInt(hour), | |
218 Integer.parseInt(minute), | |
219 Integer.parseInt(second) | |
220 ); | |
221 return cal.getTime(); | |
222 } | |
223 | |
224 m = DDMMYY.matcher(t); | |
225 | |
226 if (m.matches()) { | |
227 final Calendar cal = Calendar.getInstance(); | |
228 final String day = m.group(1); | |
229 final String month = m.group(2); | |
230 final String yearS = m.group(3); | |
4770
28fa48986ae9
DateGuesser: Take current year modulo 100 if compare it with a two digit year value. Removed auto boxing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4764
diff
changeset
|
231 int year = Integer.parseInt(yearS); |
28fa48986ae9
DateGuesser: Take current year modulo 100 if compare it with a two digit year value. Removed auto boxing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4764
diff
changeset
|
232 |
28fa48986ae9
DateGuesser: Take current year modulo 100 if compare it with a two digit year value. Removed auto boxing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4764
diff
changeset
|
233 if (year <= cal.get(Calendar.YEAR) % 100) { |
4763
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
234 year += 2000; |
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
235 } |
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
236 else { |
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
237 year += 1900; |
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
238 } |
8969 | 239 // TODO Warning: two digit year |
5895
4110565baff8
backend: Fixed DateGuesser for DDMMYY.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5882
diff
changeset
|
240 cal.clear(); |
4763
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
241 cal.set( |
8969 | 242 year, |
243 Integer.parseInt(month), // month | |
244 Integer.parseInt(day), // day | |
245 12, 0, 0); | |
4763
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
246 return cal.getTime(); |
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
247 } |
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
248 |
8969 | 249 m = GARBAGE_YYYY.matcher(t); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
250 |
8969 | 251 if (m.matches() && !t.contains("HQ") && !t.contains("HW")) { |
252 final Calendar cal = Calendar.getInstance(); | |
253 final String year = m.group(1); | |
5895
4110565baff8
backend: Fixed DateGuesser for DDMMYY.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5882
diff
changeset
|
254 cal.clear(); |
9055
df5c5614e9a7
New pseudo datetime for year-only values (31.12. instead of 15.6.)
mschaefer
parents:
8969
diff
changeset
|
255 cal.set(Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0), |
df5c5614e9a7
New pseudo datetime for year-only values (31.12. instead of 15.6.)
mschaefer
parents:
8969
diff
changeset
|
256 TimeInterval.YEAR_ONLY_DATE.get(Calendar.MONTH), |
df5c5614e9a7
New pseudo datetime for year-only values (31.12. instead of 15.6.)
mschaefer
parents:
8969
diff
changeset
|
257 TimeInterval.YEAR_ONLY_DATE.get(Calendar.DAY_OF_MONTH), |
df5c5614e9a7
New pseudo datetime for year-only values (31.12. instead of 15.6.)
mschaefer
parents:
8969
diff
changeset
|
258 TimeInterval.YEAR_ONLY_DATE.get(Calendar.HOUR_OF_DAY), |
df5c5614e9a7
New pseudo datetime for year-only values (31.12. instead of 15.6.)
mschaefer
parents:
8969
diff
changeset
|
259 TimeInterval.YEAR_ONLY_DATE.get(Calendar.MINUTE), |
df5c5614e9a7
New pseudo datetime for year-only values (31.12. instead of 15.6.)
mschaefer
parents:
8969
diff
changeset
|
260 TimeInterval.YEAR_ONLY_DATE.get(Calendar.SECOND)); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
261 return cal.getTime(); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
262 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
263 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
264 throw new IllegalArgumentException(); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
265 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
266 |
8969 | 267 public static void main(final String [] args) { |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
268 for (int i = 0; i < args.length; ++i) { |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
269 System.out.println(args[i] + ": " + guessDate(args[i])); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
270 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
271 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
272 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
273 // end of file |