Mercurial > dive4elements > river
annotate backend/src/main/java/org/dive4elements/river/backend/utils/DateGuesser.java @ 8969:fe81eb39080c
Avoid guessing year 1950 for HQ50 etc.
author | mschaefer |
---|---|
date | Tue, 03 Apr 2018 09:54:26 +0200 |
parents | 5e38e2924c07 |
children | df5c5614e9a7 |
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 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
16 public final class DateGuesser { |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
17 public static final String [] MONTH = { |
8969 | 18 "jan", "feb", "mrz", "apr", "mai", "jun", |
19 "jul", "aug", "sep", "okt", "nov", "dez" | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
20 }; |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
21 |
8969 | 22 public static final int guessMonth(final String s) { |
23 final String t = s.toLowerCase(); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
24 for (int i = 0; i < MONTH.length; ++i) |
8969 | 25 if (MONTH[i].equals(t)) { |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
26 return i; |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
27 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 return -1; |
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 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
31 public static final Pattern YYYY_MM_DD = |
8969 | 32 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
|
33 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
34 public static final Pattern DD_MM_YYYY = |
8969 | 35 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
|
36 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
37 public static final Pattern MMM_YYYY = |
8969 | 38 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
|
39 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
40 public static final Pattern GARBAGE_YYYY = |
8969 | 41 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
|
42 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
43 public static final Pattern YYYY_MM_DDThh_mm = |
8969 | 44 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
|
45 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
46 public static final Pattern YYYY_MM_DDThh_mm_ss = |
8969 | 47 Pattern.compile( |
48 "^(\\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
|
49 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
50 public static final Pattern DD_MM_YYYYThh_mm = |
8969 | 51 Pattern.compile( |
52 "^(\\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
|
53 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
54 public static final Pattern DD_MM_YYYYThh_mm_ss = |
8969 | 55 Pattern.compile("^(\\d{1,2})\\.(\\d{1,2})\\.(\\d{2,4})" |
56 + "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
|
57 |
4763
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
58 public static final Pattern DDMMYY = |
8969 | 59 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
|
60 |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
61 private DateGuesser() { |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
62 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
63 |
8969 | 64 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
|
65 return calendarMonth(Integer.parseInt(month)); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
66 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
67 |
8969 | 68 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
|
69 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
|
70 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
71 |
4764
1cfda99c024c
DateGuesser: doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4763
diff
changeset
|
72 /** |
1cfda99c024c
DateGuesser: doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4763
diff
changeset
|
73 * Guess date by trying all different patterns. |
1cfda99c024c
DateGuesser: doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4763
diff
changeset
|
74 * Throws IllegalArgumentException if not able to guess. |
1cfda99c024c
DateGuesser: doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4763
diff
changeset
|
75 * @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
|
76 * @return the parsed Date. |
1cfda99c024c
DateGuesser: doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4763
diff
changeset
|
77 */ |
8969 | 78 public static Date guessDate(final String s) { |
79 if ((s == null) || s.trim().isEmpty()) { | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
80 throw new IllegalArgumentException(); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
81 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
82 |
8969 | 83 final String t = s.trim(); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
84 Matcher m; |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
85 |
8969 | 86 m = YYYY_MM_DD.matcher(t); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
87 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
88 if (m.matches()) { |
8969 | 89 final Calendar cal = Calendar.getInstance(); |
90 final String year = m.group(1); | |
91 final String month = m.group(2); | |
92 final String day = m.group(3); | |
5895
4110565baff8
backend: Fixed DateGuesser for DDMMYY.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5882
diff
changeset
|
93 cal.clear(); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
94 cal.set( |
8969 | 95 Integer.parseInt(year), |
96 calendarMonth(month), | |
97 Integer.parseInt(day), | |
98 12, 0, 0); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
99 return cal.getTime(); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
100 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
101 |
8969 | 102 m = DD_MM_YYYY.matcher(t); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
103 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
104 if (m.matches()) { |
8969 | 105 final Calendar cal = Calendar.getInstance(); |
106 final String year = m.group(3); | |
107 final String month = m.group(2); | |
108 final String day = m.group(1); | |
5895
4110565baff8
backend: Fixed DateGuesser for DDMMYY.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5882
diff
changeset
|
109 cal.clear(); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
110 cal.set( |
8969 | 111 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0), |
112 calendarMonth(month), | |
113 Integer.parseInt(day), | |
114 12, 0, 0); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
115 return cal.getTime(); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
116 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
117 |
8969 | 118 m = MMM_YYYY.matcher(t); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
119 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
120 if (m.matches()) { |
8969 | 121 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
|
122 if (month >= 0) { |
8969 | 123 final Calendar cal = Calendar.getInstance(); |
124 final String year = m.group(4); | |
125 final String day = m.group(1); | |
5895
4110565baff8
backend: Fixed DateGuesser for DDMMYY.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5882
diff
changeset
|
126 cal.clear(); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
127 cal.set( |
8969 | 128 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0), |
129 month, | |
130 ((day == null) || day.isEmpty()) ? 15 : Integer.parseInt(day), | |
131 12, 0, 0); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
132 return cal.getTime(); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
133 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
134 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
135 |
8969 | 136 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
|
137 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
138 if (m.matches()) { |
8969 | 139 final Calendar cal = Calendar.getInstance(); |
140 final String year = m.group(1); | |
141 final String month = m.group(2); | |
142 final String day = m.group(3); | |
143 final String hour = m.group(4); | |
144 final String minute = m.group(5); | |
5895
4110565baff8
backend: Fixed DateGuesser for DDMMYY.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5882
diff
changeset
|
145 cal.clear(); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
146 cal.set( |
8969 | 147 Integer.parseInt(year), |
148 calendarMonth(month), | |
149 Integer.parseInt(day), | |
150 Integer.parseInt(hour), | |
151 Integer.parseInt(minute), | |
152 0 | |
153 ); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
154 return cal.getTime(); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
155 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
156 |
8969 | 157 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
|
158 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
159 if (m.matches()) { |
8969 | 160 final Calendar cal = Calendar.getInstance(); |
161 final String year = m.group(1); | |
162 final String month = m.group(2); | |
163 final String day = m.group(3); | |
164 final String hour = m.group(4); | |
165 final String minute = m.group(5); | |
166 final String second = m.group(6); | |
5895
4110565baff8
backend: Fixed DateGuesser for DDMMYY.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5882
diff
changeset
|
167 cal.clear(); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
168 cal.set( |
8969 | 169 Integer.parseInt(year), |
170 calendarMonth(month), | |
171 Integer.parseInt(day), | |
172 Integer.parseInt(hour), | |
173 Integer.parseInt(minute), | |
174 Integer.parseInt(second) | |
175 ); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
176 return cal.getTime(); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
177 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
178 |
8969 | 179 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
|
180 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
181 if (m.matches()) { |
8969 | 182 final Calendar cal = Calendar.getInstance(); |
183 final String year = m.group(3); | |
184 final String month = m.group(2); | |
185 final String day = m.group(1); | |
186 final String hour = m.group(4); | |
187 final String minute = m.group(5); | |
5895
4110565baff8
backend: Fixed DateGuesser for DDMMYY.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5882
diff
changeset
|
188 cal.clear(); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
189 cal.set( |
8969 | 190 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0), |
191 calendarMonth(month), | |
192 Integer.parseInt(day), | |
193 Integer.parseInt(hour), | |
194 Integer.parseInt(minute), | |
195 0 | |
196 ); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
197 return cal.getTime(); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
198 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
199 |
8969 | 200 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
|
201 |
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
202 if (m.matches()) { |
8969 | 203 final Calendar cal = Calendar.getInstance(); |
204 final String year = m.group(3); | |
205 final String month = m.group(2); | |
206 final String day = m.group(1); | |
207 final String hour = m.group(4); | |
208 final String minute = m.group(5); | |
209 final String second = m.group(6); | |
210 cal.clear(); | |
211 cal.set( | |
212 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0), | |
213 calendarMonth(month), | |
214 Integer.parseInt(day), | |
215 Integer.parseInt(hour), | |
216 Integer.parseInt(minute), | |
217 Integer.parseInt(second) | |
218 ); | |
219 return cal.getTime(); | |
220 } | |
221 | |
222 m = DDMMYY.matcher(t); | |
223 | |
224 if (m.matches()) { | |
225 final Calendar cal = Calendar.getInstance(); | |
226 final String day = m.group(1); | |
227 final String month = m.group(2); | |
228 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
|
229 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
|
230 |
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 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
|
232 year += 2000; |
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
233 } |
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
234 else { |
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
235 year += 1900; |
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
236 } |
8969 | 237 // TODO Warning: two digit year |
5895
4110565baff8
backend: Fixed DateGuesser for DDMMYY.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5882
diff
changeset
|
238 cal.clear(); |
4763
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
239 cal.set( |
8969 | 240 year, |
241 Integer.parseInt(month), // month | |
242 Integer.parseInt(day), // day | |
243 12, 0, 0); | |
4763
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
244 return cal.getTime(); |
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
245 } |
8195396b23ce
DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2357
diff
changeset
|
246 |
8969 | 247 m = GARBAGE_YYYY.matcher(t); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
248 |
8969 | 249 if (m.matches() && !t.contains("HQ") && !t.contains("HW")) { |
250 final Calendar cal = Calendar.getInstance(); | |
251 final String year = m.group(1); | |
5895
4110565baff8
backend: Fixed DateGuesser for DDMMYY.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5882
diff
changeset
|
252 cal.clear(); |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
253 cal.set( |
8969 | 254 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0), |
255 5, // month | |
256 15, // day | |
257 12, 0, 0); | |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
258 return cal.getTime(); |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
259 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
260 |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
261 throw new IllegalArgumentException(); |
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 |
8969 | 264 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
|
265 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
|
266 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
|
267 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
268 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
269 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
270 // end of file |