comparison backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/TkhParser.java @ 9010:dcbdff96d1a8

Tkh import with day instead of year
author mschaefer
date Wed, 18 Apr 2018 07:42:06 +0200
parents ae76f618d990
children 1f63e9d3b0ec
comparison
equal deleted inserted replaced
9009:6fd0f20b58aa 9010:dcbdff96d1a8
13 import java.io.File; 13 import java.io.File;
14 import java.io.FileInputStream; 14 import java.io.FileInputStream;
15 import java.io.IOException; 15 import java.io.IOException;
16 import java.io.InputStreamReader; 16 import java.io.InputStreamReader;
17 import java.io.LineNumberReader; 17 import java.io.LineNumberReader;
18 import java.text.DateFormat;
19 import java.text.SimpleDateFormat;
18 import java.util.ArrayList; 20 import java.util.ArrayList;
21 import java.util.Date;
19 import java.util.List; 22 import java.util.List;
20 import java.util.regex.Matcher; 23 import java.util.regex.Matcher;
21 import java.util.regex.Pattern; 24 import java.util.regex.Pattern;
22 25
23 import org.apache.log4j.Logger; 26 import org.apache.log4j.Logger;
41 44
42 /***** FIELDS *****/ 45 /***** FIELDS *****/
43 46
44 private static final Logger log = Logger.getLogger(TkhParser.class); 47 private static final Logger log = Logger.getLogger(TkhParser.class);
45 48
46 private static final Pattern META_YEAR = Pattern.compile("^#\\sBezugsjahr:\\s*([12]\\d\\d\\d).*", Pattern.CASE_INSENSITIVE); 49 private static final Pattern META_DATUM = Pattern.compile("^#\\sDatum:\\s*([^;]*).*", Pattern.CASE_INSENSITIVE);
47 50
48 private static final Pattern META_EVALUATOR = Pattern.compile("^#\\sAuswerter:\\s*([^;]*).*", Pattern.CASE_INSENSITIVE); 51 private static final Pattern META_EVALUATOR = Pattern.compile("^#\\sAuswerter:\\s*([^;]*).*", Pattern.CASE_INSENSITIVE);
49 52
50 private static final Pattern META_SOUNDING = Pattern.compile("^#\\sPeilung:\\s*([^;]*).*", Pattern.CASE_INSENSITIVE); 53 private static final Pattern META_SOUNDING = Pattern.compile("^#\\sPeilung:\\s*([^;]*).*", Pattern.CASE_INSENSITIVE);
51 54
52 private static final Pattern META_TYPE = Pattern.compile("^#\\sTyp:\\s*([^;]*).*", Pattern.CASE_INSENSITIVE); 55 private static final Pattern META_TYPE = Pattern.compile("^#\\sTyp:\\s*([^;]*).*", Pattern.CASE_INSENSITIVE);
53 56
54 private static final Pattern COLUMN_TITLE = Pattern.compile("Transportk((.)|(oe))rperh((.)|(oe))he\\s*\\((.+?)\\)\\s*\\[cm\\].*", Pattern.CASE_INSENSITIVE); 57 private static final Pattern COLUMN_TITLE = Pattern.compile("Transportk((.)|(oe))rperh((.)|(oe))he\\s*\\((.+?)\\)\\s*\\[cm\\].*", Pattern.CASE_INSENSITIVE);
58
59 private static final DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
55 60
56 private final TkhSeriesImport tkhGroup; 61 private final TkhSeriesImport tkhGroup;
57 62
58 private final List<TkhColumnParser> colParsers; 63 private final List<TkhColumnParser> colParsers;
59 64
134 colParser.parse(); 139 colParser.parse();
135 } 140 }
136 141
137 @Override 142 @Override
138 protected boolean handleMetaOther() { 143 protected boolean handleMetaOther() {
139 if (handleMetaYear()) 144 if (handleMetaDay())
140 return true; 145 return true;
141 else if (handleMetaType()) 146 else if (handleMetaType())
142 return true; 147 return true;
143 else if (handleMetaSounding()) 148 else if (handleMetaSounding())
144 return true; 149 return true;
146 return true; 151 return true;
147 else 152 else
148 return false; 153 return false;
149 } 154 }
150 155
151 private boolean handleMetaYear() { 156 private boolean handleMetaDay() {
152 final Matcher m = META_YEAR.matcher(this.currentLine); 157 final Matcher m = META_DATUM.matcher(this.currentLine);
153 if (m.matches()) { 158 if (m.matches()) {
154 this.metaPatternsMatched.add(META_YEAR); 159 Date day = null;
155 this.tkhGroup.setYear(Integer.parseInt(m.group(1))); 160 try {
161 if (!m.group(1).isEmpty())
162 day = dateFormat.parse(m.group(1));
163 }
164 catch (final Exception e) {
165 logError("Invalid date in line " + this.in.getLineNumber());
166 }
167 this.metaPatternsMatched.add(META_DATUM);
168 this.tkhGroup.setDay(day);
169 if (day == null)
170 logWarning("No date specified");
156 return true; 171 return true;
157 } 172 }
158 return false; 173 return false;
159 } 174 }
160 175

http://dive4elements.wald.intevation.org