comparison backend/src/main/java/org/dive4elements/river/importer/parsers/BedHeightParser.java @ 8557:29ab66ce06aa

Abstract parser for bed heights is obsolete.
author "Tom Gottfried <tom@intevation.de>"
date Mon, 16 Feb 2015 09:50:39 +0100
parents d115d0ed6624
children 6d8d7425a6b5
comparison
equal deleted inserted replaced
8556:d115d0ed6624 8557:29ab66ce06aa
30 import java.io.InputStreamReader; 30 import java.io.InputStreamReader;
31 31
32 import org.apache.log4j.Logger; 32 import org.apache.log4j.Logger;
33 33
34 import org.dive4elements.river.importer.ImportBedHeightSingle; 34 import org.dive4elements.river.importer.ImportBedHeightSingle;
35 import org.dive4elements.river.importer.ImportBedHeightSingleValue;
35 import org.dive4elements.river.importer.ImportBedHeightType; 36 import org.dive4elements.river.importer.ImportBedHeightType;
36 import org.dive4elements.river.importer.ImportElevationModel; 37 import org.dive4elements.river.importer.ImportElevationModel;
37 import org.dive4elements.river.importer.ImportLocationSystem; 38 import org.dive4elements.river.importer.ImportLocationSystem;
38 import org.dive4elements.river.importer.ImportRange; 39 import org.dive4elements.river.importer.ImportRange;
39 import org.dive4elements.river.importer.ImportTimeInterval; 40 import org.dive4elements.river.importer.ImportTimeInterval;
41 import org.dive4elements.river.model.BedHeightType; 42 import org.dive4elements.river.model.BedHeightType;
42 import org.dive4elements.river.importer.ImporterSession; 43 import org.dive4elements.river.importer.ImporterSession;
43 import org.dive4elements.river.backend.utils.EpsilonComparator; 44 import org.dive4elements.river.backend.utils.EpsilonComparator;
44 import org.dive4elements.river.backend.utils.DateUtil; 45 import org.dive4elements.river.backend.utils.DateUtil;
45 46
46 public abstract class BedHeightParser { 47 public class BedHeightParser {
47 48
48 private static final Logger log = 49 private static final Logger log =
49 Logger.getLogger(BedHeightParser.class); 50 Logger.getLogger(BedHeightParser.class);
50 51
51 public static final String ENCODING = "ISO-8859-1"; 52 public static final String ENCODING = "ISO-8859-1";
90 91
91 92
92 protected List<ImportBedHeightSingle> bedHeights; 93 protected List<ImportBedHeightSingle> bedHeights;
93 94
94 95
95 protected abstract ImportBedHeightSingle newImportBedHeight(String description); 96 protected ImportBedHeightSingle newImportBedHeight(String description) {
96 97 return new ImportBedHeightSingle(description);
97 /** Handle a line of file that contains data (in contrast to comments, meta). */ 98 }
98 protected abstract void handleDataLine( 99
99 ImportBedHeightSingle importBedHeight,
100 String line
101 );
102 100
103 protected TreeSet<Double> kmExists; 101 protected TreeSet<Double> kmExists;
104 102
105 public BedHeightParser() { 103 public BedHeightParser() {
106 bedHeights = new ArrayList<ImportBedHeightSingle>(); 104 bedHeights = new ArrayList<ImportBedHeightSingle>();
412 return true; 410 return true;
413 } 411 }
414 412
415 return false; 413 return false;
416 } 414 }
415
416 protected void handleDataLine(ImportBedHeightSingle obj, String line) {
417 String[] values = line.split(SEPERATOR_CHAR, -1);
418
419 if (values == null) {
420 log.warn("BSP: Error while parsing data line: '" + line + "'");
421 return;
422 }
423
424 Double km;
425
426 try {
427 km = new Double(nf.parse(values[0]).doubleValue());
428
429 Double key = Double.valueOf(km);
430
431 if (kmExists.contains(key)) {
432 log.warn("duplicate station '" + km + "': -> ignored");
433 return;
434 }
435
436 kmExists.add(key);
437 }
438 catch (ParseException e) {
439 // We expect a lot of ";;;;;;" lines.
440 return;
441 }
442
443 // Handle gaps like "10,0;;;;;".
444 if (values.length <= 2) {
445 // Do not import line without useful data
446 if (values.length < 2) {
447 return;
448 }
449 if (values[1].length() == 0) {
450 return;
451 }
452 }
453
454 Double height = null;
455 if (values[1].length() > 0) {
456 try {
457 height = new Double(nf.parse(values[1]).doubleValue());
458 }
459 catch (ParseException e) {
460 log.warn("BSP: unparseable height " + values[1]);
461 }
462 }
463
464 Double uncertainty = null;
465 if (values[2].length() > 0) {
466 try {
467 uncertainty = new Double(nf.parse(values[2]).doubleValue());
468 }
469 catch (ParseException e) {
470 log.warn("BSP: unparseable uncertainty value " + values[2]);
471 }
472 }
473
474 Double dataGap = null;
475 if (values[3].length() > 0) {
476 try {
477 dataGap = new Double(nf.parse(values[3]).doubleValue());
478 }
479 catch (ParseException e) {
480 log.warn("BSP: unparseable data gap " + values[3]);
481 }
482 }
483
484 Double soundingWidth = null;
485 if (values[4].length() > 0) {
486 try {
487 soundingWidth = new Double(nf.parse(values[4]).doubleValue());
488 }
489 catch (ParseException e) {
490 log.warn("BSP: unparseable sounding width " + values[4]);
491 }
492 }
493
494 ImportBedHeightSingleValue value = new ImportBedHeightSingleValue(
495 (ImportBedHeightSingle) obj,
496 km,
497 height,
498 uncertainty,
499 dataGap,
500 soundingWidth);
501
502 obj.addValue(value);
503 }
417 } 504 }
418 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 505 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org