Mercurial > dive4elements > river
diff backend/src/main/java/org/dive4elements/river/importer/parsers/SedimentDensityParser.java @ 8989:2693bfaf503d
Fixed several BigDecimal(double) creations by BigDecimal(String) parsing to avoid unnecessary decimal digits
author | mschaefer |
---|---|
date | Mon, 09 Apr 2018 09:07:00 +0200 |
parents | 5e38e2924c07 |
children | c43d8c1a4455 |
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/importer/parsers/SedimentDensityParser.java Sun Apr 08 18:09:32 2018 +0200 +++ b/backend/src/main/java/org/dive4elements/river/importer/parsers/SedimentDensityParser.java Mon Apr 09 09:07:00 2018 +0200 @@ -8,39 +8,34 @@ package org.dive4elements.river.importer.parsers; -import org.dive4elements.river.importer.ImportDepth; -import org.dive4elements.river.importer.ImportSedimentDensity; -import org.dive4elements.river.importer.ImportSedimentDensityValue; - import java.io.File; import java.io.IOException; - import java.math.BigDecimal; - import java.text.NumberFormat; -import java.text.ParseException; - import java.util.ArrayList; import java.util.List; - import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.log4j.Logger; +import org.dive4elements.river.importer.ImportDepth; +import org.dive4elements.river.importer.ImportSedimentDensity; +import org.dive4elements.river.importer.ImportSedimentDensityValue; +import org.dive4elements.river.importer.common.AbstractParser; public class SedimentDensityParser extends LineParser { private static final Logger log = - Logger.getLogger(SedimentDensityParser.class); + Logger.getLogger(SedimentDensityParser.class); public static final NumberFormat nf = - NumberFormat.getInstance(DEFAULT_LOCALE); + NumberFormat.getInstance(DEFAULT_LOCALE); public static final Pattern META_DEPTH = - Pattern.compile("^Tiefe: (\\d++)-(\\d++).*"); + Pattern.compile("^Tiefe: (\\d++)-(\\d++).*"); public static final Pattern META_YEAR = - Pattern.compile("^Jahr: (\\d{4}).*"); + Pattern.compile("^Jahr: (\\d{4}).*"); protected List<ImportSedimentDensity> sedimentDensities; @@ -51,13 +46,13 @@ protected String yearString; public SedimentDensityParser() { - sedimentDensities = new ArrayList<ImportSedimentDensity>(); + this.sedimentDensities = new ArrayList<>(); } @Override - public void parse(File file) throws IOException { - currentDescription = file.getName(); + public void parse(final File file) throws IOException { + this.currentDescription = file.getName(); super.parse(file); } @@ -65,20 +60,20 @@ @Override protected void reset() { - current = new ImportSedimentDensity(currentDescription); + this.current = new ImportSedimentDensity(this.currentDescription); } @Override protected void finish() { - if (current != null) { - sedimentDensities.add(current); + if (this.current != null) { + this.sedimentDensities.add(this.current); } } @Override - protected void handleLine(int lineNum, String line) { + protected void handleLine(final int lineNum, final String line) { if (line.startsWith(START_META_CHAR)) { handleMetaLine(stripMetaLine(line)); } @@ -88,7 +83,7 @@ } - protected void handleMetaLine(String line) { + protected void handleMetaLine(final String line) { if (handleMetaDepth(line)) { return; } @@ -99,27 +94,26 @@ } - protected boolean handleMetaDepth(String line) { - Matcher m = META_DEPTH.matcher(line); + protected boolean handleMetaDepth(final String line) { + final Matcher m = META_DEPTH.matcher(line); if (m.matches()) { - String lo = m.group(1); - String up = m.group(2); + final String lo = m.group(1); + final String up = m.group(2); log.info("Found sediment density depth: " - + lo + " - " + up + " cm"); + + lo + " - " + up + " cm"); try { - ImportDepth depth = new ImportDepth( - new BigDecimal(nf.parse(lo).doubleValue()), - new BigDecimal(nf.parse(up).doubleValue()) - ); + final ImportDepth depth = new ImportDepth( + AbstractParser.parseDecimal(lo), + AbstractParser.parseDecimal(up)); - current.setDepth(depth); + this.current.setDepth(depth); return true; } - catch (ParseException pe) { + catch (final NumberFormatException pe) { log.warn("Unparseable numbers in: '" + line + "'"); } } @@ -130,13 +124,13 @@ return false; } - protected boolean handleMetaYear(String line) { - Matcher m = META_YEAR.matcher(line); + protected boolean handleMetaYear(final String line) { + final Matcher m = META_YEAR.matcher(line); if (m.matches()) { - yearString = m.group(1); + this.yearString = m.group(1); - log.info("Found sediment density year: " + yearString); + log.info("Found sediment density year: " + this.yearString); return true; } @@ -147,8 +141,8 @@ } - protected void handleDataLine(String line) { - String[] vals = line.split(SEPERATOR_CHAR); + protected void handleDataLine(final String line) { + final String[] vals = line.split(SEPERATOR_CHAR); if (vals == null || vals.length < 3) { log.warn("skip invalid data line: '" + line + "'"); @@ -159,13 +153,13 @@ BigDecimal shoreOffset = null; BigDecimal density = null; try { - km = new BigDecimal(nf.parse(vals[0]).doubleValue()); - density = new BigDecimal(nf.parse(vals[2]).doubleValue()); + km = AbstractParser.parseDecimal(vals[0]); + density = AbstractParser.parseDecimal(vals[2]); if (!vals[1].isEmpty()) { - shoreOffset = new BigDecimal(nf.parse(vals[1]).doubleValue()); + shoreOffset = AbstractParser.parseDecimal(vals[1]); } } - catch (ParseException pe) { + catch (final NumberFormatException pe) { log.warn("Unparseable numbers in '" + line + "'"); } @@ -175,26 +169,26 @@ } BigDecimal year = null; - if (yearString != null) { + if (this.yearString != null) { try { - year = new BigDecimal(nf.parse(yearString).doubleValue()); + year = AbstractParser.parseDecimal(this.yearString); } - catch (ParseException pe) { + catch (final NumberFormatException pe) { log.warn("Unparseable year string"); } } - current.addValue(new ImportSedimentDensityValue( - km, - shoreOffset, - density, - year, - currentDescription)); + this.current.addValue(new ImportSedimentDensityValue( + km, + shoreOffset, + density, + year, + this.currentDescription)); } public List<ImportSedimentDensity> getSedimentDensities() { - return sedimentDensities; + return this.sedimentDensities; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :