/* ================================================================ * 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); } }