view backend/src/main/java/org/dive4elements/river/importer/parsers/BedHeightEpochParser.java @ 5844:4dd33b86dc61

Added header to river backend.
author Sascha L. Teichmann <teichmann@intevation.de>
date Fri, 26 Apr 2013 08:25:41 +0200
parents 5aa05a7a34b7
children 4c3ccf2b0304
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU AGPL (>=v3) 
 * and comes with ABSOLUTELY NO WARRANTY! Check out the
 * documentation coming with Dive4Elements River for details. 
 */

package org.dive4elements.river.importer.parsers;

import java.math.BigDecimal;

import java.text.ParseException;

import org.apache.log4j.Logger;

import org.dive4elements.river.importer.ImportBedHeight;
import org.dive4elements.river.importer.ImportBedHeightEpoch;
import org.dive4elements.river.importer.ImportBedHeightEpochValue;


/** Parses BedHeightEpochs from csv file. */
public class BedHeightEpochParser extends BedHeightParser {

    /** Our own logger. */
    private static final Logger log =
        Logger.getLogger(BedHeightEpochParser.class);


    @Override
    protected ImportBedHeight newImportBedHeight(String description) {
        return new ImportBedHeightEpoch(description);
    }


    /**
     * Handle a non-comment, none-Metadata line of csv file, adding
     * ImportBedHeightEpochValues to the given ImportBedHeight object.
     */
    @Override
    protected void handleDataLine(ImportBedHeight obj, String line) {
        String[] values = line.split(SEPERATOR_CHAR);

        if (values == null || values.length == 0 || values[0].length() == 0) {
            // There might be quite some ";" found.
            //log.warn("Skip invalid data line: " + line);
            return;
        }

        BigDecimal km;

        try {
            km = new BigDecimal(nf.parse(values[0]).doubleValue());
        }
        catch (ParseException e) {
            log.warn("Unparseable number in data row: " + line);
            return;
        }


        // Handle "gap" lines like '255,0;'
        if (values.length < 2) {
            ImportBedHeightEpochValue value = new ImportBedHeightEpochValue(
                km,
                null
            );

            obj.addValue(value);
            return;
        }

        try {
            ImportBedHeightEpochValue value = new ImportBedHeightEpochValue(
                km,
                new BigDecimal(nf.parse(values[1]).doubleValue())
            );

            obj.addValue(value);
        }
        catch (ParseException e) {
            log.warn("Unparseable number in data row: " + line);
        }
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org