Mercurial > dive4elements > river
annotate backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/ChannelParser.java @ 9653:3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
author | mschaefer |
---|---|
date | Mon, 23 Mar 2020 15:06:26 +0100 |
parents | ae76f618d990 |
children |
rev | line source |
---|---|
8971
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
1 /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
2 * Software engineering by |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
3 * Björnsen Beratende Ingenieure GmbH |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
5 * |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
6 * This file is Free Software under the GNU AGPL (>=v3) |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
8 * documentation coming with Dive4Elements River for details. |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
9 */ |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
10 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
11 package org.dive4elements.river.importer.sinfo.parsers; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
12 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
13 import java.io.File; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
14 import java.util.ArrayList; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
15 import java.util.List; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
16 import java.util.regex.Matcher; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
17 import java.util.regex.Pattern; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
18 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
19 import org.apache.log4j.Logger; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
20 import org.dive4elements.river.importer.Config; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
21 import org.dive4elements.river.importer.ImportRiver; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
22 import org.dive4elements.river.importer.common.AbstractParser; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
23 import org.dive4elements.river.importer.common.ParsingState; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
24 import org.dive4elements.river.importer.sinfo.importitem.ChannelKmLineImport; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
25 import org.dive4elements.river.importer.sinfo.importitem.ChannelSeriesImport; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
26 import org.dive4elements.river.model.sinfo.Channel; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
27 import org.dive4elements.river.model.sinfo.ChannelValue; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
28 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
29 /** |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
30 * Reads and parses a channel size file |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
31 * |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
32 * @author Matthias Schäfer |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
33 * |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
34 */ |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
35 public class ChannelParser extends AbstractParser<Channel, ChannelValue, ChannelKmLineImport, ChannelSeriesImport> { |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
36 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
37 /***** FIELDS *****/ |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
38 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
39 private static final Logger log = Logger.getLogger(ChannelParser.class); |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
40 |
9653
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
41 private static final Pattern IMPORT_FILENAME = Pattern.compile("Fahrrinne.*\\.csv", Pattern.CASE_INSENSITIVE); |
8971
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
42 |
9653
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
43 private static final Pattern META_FIRST = Pattern.compile("^#\\sFahrrinne.*", Pattern.CASE_INSENSITIVE); |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
44 |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
45 private static final Pattern META_YEARS = Pattern.compile("^#\\sZeitraum:\\s*([12]\\d\\d\\d)*\\s*-\\s*([12]\\d\\d\\d)*.*", Pattern.CASE_INSENSITIVE); |
8971
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
46 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
47 private static final Pattern WIDTH_COLUMNTITLE = Pattern.compile("Sollbreite\\s*\\[(.*)\\].*", Pattern.CASE_INSENSITIVE); |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
48 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
49 private static final Pattern DEPTH_COLUMNTITLE = Pattern.compile("Solltiefe\\s*\\[(.*)\\].*", Pattern.CASE_INSENSITIVE); |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
50 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
51 private int widthColIndex; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
52 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
53 private int depthColIndex; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
54 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
55 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
56 /***** CONSTRUCTORS *****/ |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
57 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
58 public ChannelParser(final File importPath, final File rootRelativePath, final ImportRiver river) { |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
59 super(importPath, rootRelativePath, river); |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
60 this.widthColIndex = -1; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
61 this.depthColIndex = -1; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
62 } |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
63 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
64 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
65 /***** METHODS *****/ |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
66 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
67 @Override |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
68 protected Logger getLog() { |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
69 return log; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
70 } |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
71 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
72 /** |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
73 * Whether this import type shall be skipped |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
74 */ |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
75 public static boolean shallSkip() { |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
76 return Config.INSTANCE.skipSInfoChannel(); |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
77 } |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
78 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
79 /** |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
80 * Creates a list of parsers for all channel import files in a directory |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
81 */ |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
82 public static List<ChannelParser> createParsers(final File importDir, final File relativeDir, final ImportRiver river) { |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
83 final List<ChannelParser> parsers = new ArrayList<>(); |
9653
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
84 if (importDir.exists()) |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
85 for (final File file : listFiles(importDir, IMPORT_FILENAME)) |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
86 parsers.add(new ChannelParser(file, new File(relativeDir, file.getName()), river)); |
8971
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
87 return parsers; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
88 } |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
89 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
90 @Override |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
91 protected boolean handleMetaOther() { |
9653
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
92 if (handleMetaFirst()) |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
93 return true; |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
94 else if (handleMetaYears()) |
8971
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
95 return true; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
96 else |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
97 return false; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
98 } |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
99 |
9653
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
100 private boolean handleMetaFirst() { |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
101 final Matcher m = META_FIRST.matcher(this.currentLine); |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
102 if (m.matches()) { |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
103 this.metaPatternsMatched.add(META_FIRST); |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
104 return true; |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
105 } |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
106 return false; |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
107 } |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
108 |
8971
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
109 private boolean handleMetaYears() { |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
110 final Matcher m = META_YEARS.matcher(this.currentLine); |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
111 if (m.matches()) { |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
112 this.metaPatternsMatched.add(META_YEARS); |
9653
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
113 try { |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
114 if (m.group(1) != null) |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
115 this.seriesHeader.setYear_from(Integer.valueOf(m.group(1))); |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
116 else |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
117 throw new NumberFormatException(); |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
118 if (m.group(2) != null) |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
119 this.seriesHeader.setYear_to(Integer.valueOf(m.group(2))); |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
120 else |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
121 throw new NumberFormatException(); |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
122 } |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
123 catch (final Exception e) { |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
124 logLineError("Invalid or missing start and/or end year"); |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
125 this.headerParsingState = ParsingState.STOP; |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
126 } |
8971
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
127 return true; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
128 } |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
129 return false; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
130 } |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
131 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
132 @Override |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
133 protected boolean handleMetaColumnTitles() { |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
134 if (super.handleMetaColumnTitles()) { |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
135 for (int i = 1; i <= this.columnTitles.size() - 1; i++) { |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
136 if (DEPTH_COLUMNTITLE.matcher(this.columnTitles.get(i)).matches()) |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
137 this.depthColIndex = i; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
138 else if (WIDTH_COLUMNTITLE.matcher(this.columnTitles.get(i)).matches()) |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
139 this.widthColIndex = i; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
140 } |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
141 if ((this.widthColIndex < 0) || (this.depthColIndex < 0)) { |
9653
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
142 logLineError("Columns of width and/or depth values could not be identified, missing column title 'Sollbreite...'/'Sollhöhe...'"); |
8971
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
143 this.headerParsingState = ParsingState.STOP; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
144 } |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
145 return true; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
146 } |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
147 else |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
148 return false; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
149 } |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
150 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
151 @Override |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
152 protected ChannelSeriesImport createSeriesImport(final String filename) { |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
153 return new ChannelSeriesImport(filename); |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
154 } |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
155 |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
156 @Override |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
157 protected ChannelKmLineImport createKmLineImport(final Double km, final String[] values) { |
9653
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
158 final Number width = parseDoubleCheckNull(values, this.widthColIndex); |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
159 if ((width == null) || Double.isNaN(width.doubleValue())) { |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
160 logLineError(INVALID_VALUE_ERROR_FORMAT, "width"); |
8971
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
161 return null; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
162 } |
9653
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
163 final Number depth = parseDoubleCheckNull(values, this.depthColIndex); |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
164 if ((depth == null) || Double.isNaN(depth.doubleValue())) { |
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
165 logLineError(INVALID_VALUE_ERROR_FORMAT, "depth"); |
8971
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
166 return null; |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
167 } |
9653
3b3c7513472e
Importer (s/u-info) extensions: support of multiple channel data series, check for non-overlapping year ranges
mschaefer
parents:
8988
diff
changeset
|
168 return new ChannelKmLineImport(km, width.doubleValue(), depth.doubleValue()); |
8971
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
169 } |
50416a0df385
Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
mschaefer
parents:
diff
changeset
|
170 } |