Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/importer/laf/LafImporter.java @ 1097:186d602e031a
Merged branch schema-update into default.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Fri, 14 Oct 2016 18:17:42 +0200 |
parents | 3ec358698b4d |
children | 7683c4162746 |
rev | line source |
---|---|
610
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.lada.importer.laf; |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
2 |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
3 import java.io.ByteArrayInputStream; |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
4 import java.io.IOException; |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
5 import java.io.InputStream; |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
6 import java.nio.charset.StandardCharsets; |
610
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
7 import java.util.HashMap; |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
8 import java.util.List; |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
9 import java.util.Map; |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
10 |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
11 import javax.inject.Inject; |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
12 |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
13 import org.antlr.v4.runtime.ANTLRInputStream; |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
14 import org.antlr.v4.runtime.CommonTokenStream; |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
15 import org.antlr.v4.runtime.tree.ParseTree; |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
16 import org.antlr.v4.runtime.tree.ParseTreeWalker; |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
17 import org.apache.log4j.Logger; |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
18 |
610
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
19 import de.intevation.lada.importer.ImportConfig; |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
20 import de.intevation.lada.importer.ImportFormat; |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
21 import de.intevation.lada.importer.Importer; |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
22 import de.intevation.lada.importer.ReportItem; |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
23 import de.intevation.lada.util.auth.UserInfo; |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
24 |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
25 @ImportConfig(format=ImportFormat.LAF) |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
26 public class LafImporter implements Importer{ |
610
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
27 |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
28 @Inject |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
29 private Logger logger; |
610
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
30 |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
31 @Inject |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
32 private LafObjectMapper mapper; |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
33 |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
34 private Map<String, List<ReportItem>> errors = new HashMap<String, List<ReportItem>>(); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
35 private Map<String, List<ReportItem>> warnings = new HashMap<String, List<ReportItem>>(); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
36 |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
37 public void doImport(String lafString, UserInfo userInfo) { |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
38 errors = new HashMap<String, List<ReportItem>>(); |
610
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
39 warnings = new HashMap<String, List<ReportItem>>(); |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
40 |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
41 InputStream is = new ByteArrayInputStream(lafString.getBytes(StandardCharsets.UTF_8)); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
42 try { |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
43 ANTLRInputStream ais = new ANTLRInputStream(is); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
44 LafLexer lexer = new LafLexer(ais); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
45 CommonTokenStream cts = new CommonTokenStream(lexer); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
46 LafParser parser = new LafParser(cts); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
47 LafErrorListener errorListener = LafErrorListener.INSTANCE; |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
48 parser.addErrorListener(errorListener); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
49 ParseTree tree = parser.probendatei(); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
50 LafObjectListener listener = new LafObjectListener(); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
51 ParseTreeWalker walker = new ParseTreeWalker(); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
52 walker.walk(listener, tree); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
53 logger.debug("Parsed Proben: " + listener.getData().count()); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
54 errors.put("parser", errorListener.getErrors()); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
55 errors.putAll(listener.getErrors()); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
56 mapper.mapObjects(listener.getData()); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
57 } catch (IOException e) { |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
58 // TODO Auto-generated catch block |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
59 e.printStackTrace(); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
60 } |
610
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
61 } |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
62 |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
63 @Override |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
64 public void reset() { |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
65 |
610
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
66 } |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
67 |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
68 @Override |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
69 public Map<String, List<ReportItem>> getWarnings() { |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
70 return this.errors; |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
71 } |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
72 |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
73 @Override |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
74 public Map<String, List<ReportItem>> getErrors() { |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
711
diff
changeset
|
75 return this.warnings; |
610
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
76 } |
374a2e78cec5
Added importer impl for laf file format.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
77 } |