annotate backend/src/main/java/org/dive4elements/river/utils/DateGuesser.java @ 5882:7100059790df

DateGuesser: set times exactly (without parts of import time)
author Tom Gottfried <tom.gottfried@intevation.de>
date Tue, 30 Apr 2013 11:14:58 +0200
parents 4dd33b86dc61
children 4110565baff8
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 *
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
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
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
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
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
9 package org.dive4elements.river.utils;
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.Date;
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 import java.util.Calendar;
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13
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 import java.util.regex.Matcher;
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17 public final class DateGuesser {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18 public static final String [] MONTH = {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 "jan", "feb", "mrz", "apr", "mai", "jun",
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20 "jul", "aug", "sep", "okt", "nov", "dez"
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21 };
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 public static final int guessMonth(String s) {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24 s = s.toLowerCase();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25 for (int i = 0; i < MONTH.length; ++i)
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26 if (MONTH[i].equals(s)) {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27 return i;
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 }
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29 return -1;
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
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32 public static final Pattern YYYY_MM_DD =
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33 Pattern.compile("^(\\d{4})-(\\d{2})-(\\d{2})$");
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35 public static final Pattern DD_MM_YYYY =
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36 Pattern.compile("^(\\d{1,2})\\.(\\d{1,2})\\.(\\d{2,4})$");
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
37
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
38 public static final Pattern MMM_YYYY =
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39 Pattern.compile("^(\\d{0,2})\\.?(\\w{3})\\.?(\\d{2,4})$");
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41 public static final Pattern GARBAGE_YYYY =
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
42 Pattern.compile("^\\D*(\\d{2,4})$");
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
43
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
44 public static final Pattern YYYY_MM_DDThh_mm =
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
45 Pattern.compile("^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})$");
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
46
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
47 public static final Pattern YYYY_MM_DDThh_mm_ss =
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
48 Pattern.compile("^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})$");
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 =
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
51 Pattern.compile("^(\\d{1,2})\\.(\\d{1,2})\\.(\\d{2,4})T(\\d{1,2}):(\\d{2})$");
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
52
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
53 public static final Pattern DD_MM_YYYYThh_mm_ss =
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
54 Pattern.compile("^(\\d{1,2})\\.(\\d{1,2})\\.(\\d{2,4})T(\\d{1,2}):(\\d{2}):(\\d{2})$");
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
55
4763
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
56 public static final Pattern DDMMYY =
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
57 Pattern.compile("^(\\d{1,2})(\\d{1,2})(\\d{1,2})$");
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
58
2357
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
59 private DateGuesser() {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
60 }
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
61
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
62 public static final int calendarMonth(String month) {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
63 return calendarMonth(Integer.parseInt(month));
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
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
66 public static final int calendarMonth(int month) {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
67 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
68 }
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
69
4764
1cfda99c024c DateGuesser: doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4763
diff changeset
70 /**
1cfda99c024c DateGuesser: doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4763
diff changeset
71 * Guess date by trying all different patterns.
1cfda99c024c DateGuesser: doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4763
diff changeset
72 * Throws IllegalArgumentException if not able to guess.
1cfda99c024c DateGuesser: doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4763
diff changeset
73 * @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
74 * @return the parsed Date.
1cfda99c024c DateGuesser: doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4763
diff changeset
75 */
2357
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
76 public static Date guessDate(String s) {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
77 if (s == null || (s = s.trim()).length() == 0) {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
78 throw new IllegalArgumentException();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
79 }
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
80
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
81 Matcher m;
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
82
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
83 m = YYYY_MM_DD.matcher(s);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
84
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
85 if (m.matches()) {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
86 Calendar cal = Calendar.getInstance();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
87 String year = m.group(1);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
88 String month = m.group(2);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
89 String day = m.group(3);
5882
7100059790df DateGuesser: set times exactly (without parts of import time)
Tom Gottfried <tom.gottfried@intevation.de>
parents: 5844
diff changeset
90 cal.clear();
2357
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
91 cal.set(
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
92 Integer.parseInt(year),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
93 calendarMonth(month),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
94 Integer.parseInt(day),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
95 12, 0, 0);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
96 return cal.getTime();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
97 }
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
98
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
99 m = DD_MM_YYYY.matcher(s);
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 if (m.matches()) {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
102 Calendar cal = Calendar.getInstance();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
103 String year = m.group(3);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
104 String month = m.group(2);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
105 String day = m.group(1);
5882
7100059790df DateGuesser: set times exactly (without parts of import time)
Tom Gottfried <tom.gottfried@intevation.de>
parents: 5844
diff changeset
106 cal.clear();
2357
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
107 cal.set(
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
108 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
109 calendarMonth(month),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
110 Integer.parseInt(m.group(1)),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
111 12, 0, 0);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
112 return cal.getTime();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
113 }
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
114
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
115 m = MMM_YYYY.matcher(s);
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 if (m.matches()) {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
118 int month = guessMonth(m.group(2));
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
119 if (month >= 0) {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
120 Calendar cal = Calendar.getInstance();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
121 String year = m.group(3);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
122 String day = m.group(1);
5882
7100059790df DateGuesser: set times exactly (without parts of import time)
Tom Gottfried <tom.gottfried@intevation.de>
parents: 5844
diff changeset
123 cal.clear();
2357
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
124 cal.set(
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
125 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
126 month,
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
127 day.length() == 0 ? 15 : Integer.parseInt(day),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
128 12, 0, 0);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
129 return cal.getTime();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
130 }
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
131 }
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
132
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
133 m = YYYY_MM_DDThh_mm.matcher(s);
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 if (m.matches()) {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
136 Calendar cal = Calendar.getInstance();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
137 String year = m.group(1);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
138 String month = m.group(2);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
139 String day = m.group(3);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
140 String hour = m.group(4);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
141 String minute = m.group(5);
5882
7100059790df DateGuesser: set times exactly (without parts of import time)
Tom Gottfried <tom.gottfried@intevation.de>
parents: 5844
diff changeset
142 cal.clear();
2357
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
143 cal.set(
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
144 Integer.parseInt(year),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
145 calendarMonth(month),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
146 Integer.parseInt(day),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
147 Integer.parseInt(hour),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
148 Integer.parseInt(minute),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
149 0
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
150 );
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
151 return cal.getTime();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
152 }
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
153
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
154 m = YYYY_MM_DDThh_mm_ss.matcher(s);
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 if (m.matches()) {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
157 Calendar cal = Calendar.getInstance();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
158 String year = m.group(1);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
159 String month = m.group(2);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
160 String day = m.group(3);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
161 String hour = m.group(4);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
162 String minute = m.group(5);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
163 String second = m.group(6);
5882
7100059790df DateGuesser: set times exactly (without parts of import time)
Tom Gottfried <tom.gottfried@intevation.de>
parents: 5844
diff changeset
164 cal.clear();
2357
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
165 cal.set(
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
166 Integer.parseInt(year),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
167 calendarMonth(month),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
168 Integer.parseInt(day),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
169 Integer.parseInt(hour),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
170 Integer.parseInt(minute),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
171 Integer.parseInt(second)
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
172 );
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
173 return cal.getTime();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
174 }
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
175
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
176 m = DD_MM_YYYYThh_mm.matcher(s);
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 if (m.matches()) {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
179 Calendar cal = Calendar.getInstance();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
180 String year = m.group(3);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
181 String month = m.group(2);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
182 String day = m.group(1);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
183 String hour = m.group(4);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
184 String minute = m.group(5);
5882
7100059790df DateGuesser: set times exactly (without parts of import time)
Tom Gottfried <tom.gottfried@intevation.de>
parents: 5844
diff changeset
185 cal.clear();
2357
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
186 cal.set(
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
187 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
188 calendarMonth(month),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
189 Integer.parseInt(day),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
190 Integer.parseInt(hour),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
191 Integer.parseInt(minute),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
192 0
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
193 );
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
194 return cal.getTime();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
195 }
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
196
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
197 m = DD_MM_YYYYThh_mm_ss.matcher(s);
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 if (m.matches()) {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
200 Calendar cal = Calendar.getInstance();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
201 String year = m.group(3);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
202 String month = m.group(2);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
203 String day = m.group(1);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
204 String hour = m.group(4);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
205 String minute = m.group(5);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
206 String second = m.group(6);
5882
7100059790df DateGuesser: set times exactly (without parts of import time)
Tom Gottfried <tom.gottfried@intevation.de>
parents: 5844
diff changeset
207 cal.clear();
2357
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
208 cal.set(
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
209 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
210 calendarMonth(month),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
211 Integer.parseInt(day),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
212 Integer.parseInt(hour),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
213 Integer.parseInt(minute),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
214 Integer.parseInt(second)
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
215 );
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
216 return cal.getTime();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
217 }
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
218
4763
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
219 m = DDMMYY.matcher(s);
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
220
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
221 if (m.matches()) {
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
222 Calendar cal = Calendar.getInstance();
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
223 String day = m.group(1);
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
224 String month = m.group(2);
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
225 String yearS = m.group(3);
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
226 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
227
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
228 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
229 year += 2000;
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
230 }
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
231 else {
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
232 year += 1900;
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
233 }
5882
7100059790df DateGuesser: set times exactly (without parts of import time)
Tom Gottfried <tom.gottfried@intevation.de>
parents: 5844
diff changeset
234 cal.clear();
4763
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
235 cal.set(
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
236 year,
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
237 Integer.parseInt(month), // month
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
238 Integer.parseInt(day), // day
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
239 12, 0, 0);
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
240 return cal.getTime();
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
241 }
8195396b23ce DateGuesser: Added and handle DDMMYY pattern.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2357
diff changeset
242
2357
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
243 m = GARBAGE_YYYY.matcher(s);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
244
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
245 if (m.matches()) {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
246 Calendar cal = Calendar.getInstance();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
247 String year = m.group(1);
5882
7100059790df DateGuesser: set times exactly (without parts of import time)
Tom Gottfried <tom.gottfried@intevation.de>
parents: 5844
diff changeset
248 cal.clear();
2357
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
249 cal.set(
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
250 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0),
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
251 5, // month
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
252 15, // day
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
253 12, 0, 0);
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
254 return cal.getTime();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
255 }
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
256
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
257 throw new IllegalArgumentException();
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
258 }
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 public static void main(String [] args) {
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
261 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
262 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
263 }
2e18e12fac11 Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
264 }
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 // end of file

http://dive4elements.wald.intevation.org