Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markupcode

/* ================================================================
 * Delft FEWS 
 * ================================================================
 *
 * Project Info:  http://www.wldelft.nl/soft/fews/index.html
 * Project Lead:  Karel Heynert (karel.heynert@wldelft.nl)
 *
 * (C) Copyright 2003, by WL | Delft Hydraulics
 *                        P.O. Box 177
 *                        2600 MH  Delft
 *                        The Netherlands
 *                        http://www.wldelft.nl
 *
 * DELFT-FEWS is a sophisticated collection of modules designed 
 * for building a FEWS customised to the specific requirements 
 * of individual agencies. An open modelling approach allows users
 * to add their own modules in an efficient way.
 *
 * ----------------------------------------------------------------
 * TvaDailyWaterviewTimeSeriesParser.java
 * ----------------------------------------------------------------
 * (C) Copyright 2003, by WL | Delft Hydraulics
 *
 * Original Author:  pelgrim
 * Contributor(s):   
 *
 * Changes:
 * --------
 * 17-Apr-14 : Version 1 ();
 * 
 *
 */

package nl.wldelft.timeseriesparsers;

import nl.wldelft.util.io.LineReader;
import nl.wldelft.util.io.TextParser;
import nl.wldelft.util.timeseries.DefaultTimeSeriesHeader;
import nl.wldelft.util.timeseries.TimeSeriesContentHandler;

import java.io.File;

public class TvaDailyWaterViewCsvTimeSeriesParser implements TextParser<TimeSeriesContentHandler> {

    @Override
    public void parse(LineReader reader, String virtualFileName, TimeSeriesContentHandler contentHandler) throws Exception {

        String[] columnHeaders = reader.readLine(',');

        DefaultTimeSeriesHeader header = new DefaultTimeSeriesHeader();

        String locationId = determineLocationId(reader.getVirtualFileName());
        header.setLocationId(locationId);

        for (String[] buffer = new String[columnHeaders.length]; reader.readLine(',', '"', buffer) != -1; ) {
            contentHandler.setTime(contentHandler.getDefaultTimeZone(), "MM-dd-yyyy H:mm:ss", buffer[0] + ' ' + buffer[1]);

            for (int i = 2; i < 41; i++) {
                header.setParameterId(columnHeaders[i]);
                contentHandler.setValue('.', buffer[i]);
                contentHandler.setTimeSeriesHeader(header);
                contentHandler.applyCurrentFields();
            }

            for (int i = 43; i < columnHeaders.length; i++) {
                header.setParameterId(columnHeaders[i]);
                contentHandler.setValue('.', buffer[i]);
                contentHandler.setTimeSeriesHeader(header);
                contentHandler.applyCurrentFields();
            }
        }
    }

    private static String determineLocationId(String path) {
        String fileName = new File(path).getName();
        int beginIndex = fileName.lastIndexOf('.');
        return fileName.substring(beginIndex + 1);
    }
}