annotate flys-backend/src/main/java/de/intevation/flys/importer/AnnotationsParser.java @ 765:763c4137d6e1

Added classification of annotation types. Needs testing! flys-backend/trunk@2162 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sun, 19 Jun 2011 12:26:12 +0000
parents 8076f6a689d0
children aa9e3da95c31
rev   line source
186
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.importer;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 import java.util.HashMap;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
4 import java.util.TreeSet;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
5 import java.util.List;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6 import java.util.ArrayList;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
7
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8 import java.io.IOException;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 import java.io.File;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10 import java.io.LineNumberReader;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 import java.io.InputStreamReader;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 import java.io.FileInputStream;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13
189
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 186
diff changeset
14 import java.math.BigDecimal;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 186
diff changeset
15
186
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 import org.apache.log4j.Logger;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18 import de.intevation.flys.utils.FileTools;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20 public class AnnotationsParser
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21 {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22 private static Logger log = Logger.getLogger(AnnotationsParser.class);
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24 public static final String ENCODING = "ISO-8859-1";
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26 public static final String [] TO_SCAN = {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27 "Basisdaten",
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 "Streckendaten"
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29 };
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
31 protected HashMap<String, ImportAttribute> attributes;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32 protected HashMap<String, ImportPosition> positions;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33 protected TreeSet<ImportAnnotation> annotations;
765
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
34 protected AnnotationClassifier classifier;
186
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36 public AnnotationsParser() {
765
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
37 this(null);
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
38 }
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
39
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
40 public AnnotationsParser(AnnotationClassifier classifier) {
186
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41 attributes = new HashMap<String, ImportAttribute>();
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
42 positions = new HashMap<String, ImportPosition>();
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
43 annotations = new TreeSet<ImportAnnotation>();
765
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
44 this.classifier = classifier;
186
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
45 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
46
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
47 public void parseFile(File file) throws IOException {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
48 log.info("parsing km file: '" + file + "'");
765
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
49
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
50 ImportAnnotationType defaultIAT = null;
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
51
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
52 if (classifier != null) {
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
53 defaultIAT = classifier.classifyFile(
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
54 file.getName(),
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
55 classifier.getDefaultType());
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
56 }
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
57
186
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
58 LineNumberReader in = null;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
59 try {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
60 in =
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
61 new LineNumberReader(
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
62 new InputStreamReader(
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
63 new FileInputStream(file), ENCODING));
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
64
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
65 String line = null;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
66 while ((line = in.readLine()) != null) {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
67 if ((line = line.trim()).length() == 0
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
68 || line.startsWith("*")) {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
69 continue;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
70 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
71
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
72 String [] parts = line.split("\\s*;\\s*");
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
73
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
74 if (parts.length < 3) {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
75 log.warn("not enough columns in line "
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
76 + in.getLineNumber());
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
77 continue;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
78 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
79
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
80 ImportPosition position = positions.get(parts[0]);
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
81 if (position == null) {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
82 position = new ImportPosition(parts[0]);
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
83 positions.put(parts[0], position);
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
84 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
85
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
86 ImportAttribute attribute = attributes.get(parts[1]);
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
87 if (attribute == null) {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
88 attribute = new ImportAttribute(parts[1]);
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
89 attributes.put(parts[1], attribute);
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
90 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
91
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
92 String [] r = parts[2].replace(",", ".").split("\\s*#\\s*");
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
93
189
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 186
diff changeset
94 BigDecimal from, to;
186
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
95
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
96 try {
189
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 186
diff changeset
97 from = new BigDecimal(r[0]);
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 186
diff changeset
98 to = r.length < 2 ? null : new BigDecimal(r[1]);
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 186
diff changeset
99 if (to != null && from.compareTo(to) > 0) {
464
d37ccb04ab5d Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 189
diff changeset
100 BigDecimal t = from; from = to; to = t;
186
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
101 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
102 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
103 catch (NumberFormatException nfe) {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
104 log.warn("invalid number in line " + in.getLineNumber());
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
105 continue;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
106 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
107
759
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
108 ImportEdge edge = null;
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
109
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
110 if (parts.length == 4) { // Only 'Unterkante'
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
111 try {
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
112 edge = new ImportEdge(
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
113 null,
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
114 new BigDecimal(parts[3].trim().replace(',', '.')));
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
115 }
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
116 catch (NumberFormatException nfe) {
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
117 log.warn("cannot parse 'Unterkante' in line " +
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
118 in.getLineNumber());
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
119 }
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
120 }
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
121 else if (parts.length > 4) { // 'Unterkante' and 'Oberkante'
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
122 String bottom = parts[3].trim().replace(',', '.');
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
123 String top = parts[4].trim().replace(',', '.');
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
124 try {
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
125 BigDecimal b = bottom.length() == 0
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
126 ? null
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
127 : new BigDecimal(bottom);
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
128 BigDecimal t = top.length() == 0
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
129 ? null
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
130 : new BigDecimal(top);
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
131 edge = new ImportEdge(t, b);
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
132 }
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
133 catch (NumberFormatException nfe) {
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
134 log.warn(
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
135 "cannot parse 'Unterkante' or 'Oberkante' in line "
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
136 + in.getLineNumber());
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
137 }
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
138 }
9f2204ed79ed Import edges to database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 464
diff changeset
139
186
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
140 ImportRange range = new ImportRange(from, to);
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
141
765
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
142 ImportAnnotationType type = classifier != null
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
143 ? classifier.classifyDescription(line, defaultIAT)
763c4137d6e1 Added classification of annotation types. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 763
diff changeset
144 : null;
763
8076f6a689d0 First part of flys/issue18
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 759
diff changeset
145
186
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
146 ImportAnnotation annotation = new ImportAnnotation(
763
8076f6a689d0 First part of flys/issue18
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 759
diff changeset
147 attribute, position, range, edge, type);
186
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
148
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
149 if (!annotations.add(annotation)) {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
150 log.debug("duplicated annotation in line "
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
151 + in.getLineNumber());
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
152 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
153 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
154 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
155 finally {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
156 if (in != null) {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
157 in.close();
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
158 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
159 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
160 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
161
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
162 public void parse(File root) throws IOException {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
163
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
164 for (String toScan: TO_SCAN) {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
165 File directory = FileTools.repair(new File(root, toScan));
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
166 if (!directory.isDirectory()) {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
167 log.warn("'" + directory + "' is not a directory.");
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
168 continue;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
169 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
170 File [] files = directory.listFiles();
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
171 if (files == null) {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
172 log.warn("cannot list directory '" + directory + "'");
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
173 continue;
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
174 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
175
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
176 for (File file: files) {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
177 if (file.isFile() && file.canRead()
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
178 && file.getName().toLowerCase().endsWith(".km")) {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
179 parseFile(file);
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
180 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
181 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
182 } // for all directories to scan
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
183 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
184
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
185 public List<ImportAnnotation> getAnnotations() {
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
186 return new ArrayList<ImportAnnotation>(annotations);
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
187 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
188 }
cf8cbcb6a10d Added parser to read *.KM files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
189 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org