view backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/TkhColumnParser.java @ 8971:50416a0df385

Importer for the Schifffahrt (S-INFO) and Oekologie (U-INFO) files
author mschaefer
date Tue, 03 Apr 2018 10:18:30 +0200
parents
children bf8a9df86f32
line wrap: on
line source
/* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
 * Software engineering by
 *  Björnsen Beratende Ingenieure GmbH
 *  Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
 *
 * 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.sinfo.parsers;

import java.io.File;

import org.apache.log4j.Logger;
import org.dive4elements.river.importer.ImportRiver;
import org.dive4elements.river.importer.common.AbstractParser;
import org.dive4elements.river.importer.sinfo.importitem.TkhColumnSeriesImport;
import org.dive4elements.river.importer.sinfo.importitem.TkhKmLineImport;
import org.dive4elements.river.importer.sinfo.importitem.TkhSeriesImport;
import org.dive4elements.river.model.sinfo.TkhColumn;
import org.dive4elements.river.model.sinfo.TkhValue;

/**
 * Reads and parses a column of a TKH file
 *
 * @author Matthias Schäfer
 *
 */
public class TkhColumnParser extends AbstractParser<TkhColumn, TkhValue, TkhKmLineImport, TkhColumnSeriesImport> {

    /***** FIELDS *****/

    private static final Logger log = Logger.getLogger(TkhColumnParser.class);

    private final TkhSeriesImport parent;

    private final int colIndex;

    private final String colName;


    /***** CONSTRUCTORS *****/

    public TkhColumnParser(final File importPath, final File rootRelativePath, final ImportRiver river, final TkhSeriesImport parent, final int colIndex,
            final String colName) {
        super(importPath, rootRelativePath, river);
        this.parent = parent;
        this.colIndex = colIndex;
        this.colName = colName;
    }


    /***** METHODS *****/

    @Override
    protected Logger getLog() {
        return log;
    }

    @Override
    protected void logStartInfo() {
        getLog().info(String.format("Start parsing column %d '%s':;'%s'", this.colIndex, this.colName, this.rootRelativePath));
    }

    @Override
    protected boolean handleMetaOther() {
        // Skip any header line
        return true;
    }

    @Override
    protected TkhColumnSeriesImport createSeriesImport(final String filename) {
        return new TkhColumnSeriesImport(filename, this.parent, this.colName, this.rootRelativePath);
    }

    @Override
    protected TkhKmLineImport createKmLineImport(final Double km, final String[] values) {
        // convert from cm to m
        final double tkheight = parseDoubleWithNull(values[this.colIndex]).doubleValue() / 100.0;
        return new TkhKmLineImport(km, tkheight);
    }
}

http://dive4elements.wald.intevation.org