/* ================================================================ * 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. * * ---------------------------------------------------------------- * TvaHoutlyWaterviewTimeSeriesParser.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; import java.util.HashMap; public class TvaHourlyWaterViewCsvTimeSeriesParser implements TextParser<TimeSeriesContentHandler> { private static final HashMap<Integer, String> PARAMETER_COLUMNS = new HashMap<>(); public TvaHourlyWaterViewCsvTimeSeriesParser() { PARAMETER_COLUMNS.put(0, "HeadElev"); PARAMETER_COLUMNS.put(1, "TailElev"); PARAMETER_COLUMNS.put(2, "TurbDisch"); PARAMETER_COLUMNS.put(6, "Spill"); PARAMETER_COLUMNS.put(7, "PumpCFS"); PARAMETER_COLUMNS.put(8, "PumpMWH"); PARAMETER_COLUMNS.put(11, "GenMWH"); PARAMETER_COLUMNS.put(14, "StationServ"); PARAMETER_COLUMNS.put(34, "GrossGenMWH"); PARAMETER_COLUMNS.put(37, "GrossPumpMWH"); PARAMETER_COLUMNS.put(42, "WVStrtTime"); PARAMETER_COLUMNS.put(43, "RiverDO"); PARAMETER_COLUMNS.put(44, "RiverTemp"); PARAMETER_COLUMNS.put(45, "Wv4"); } @Override public void parse(LineReader reader, String virtualFileName, TimeSeriesContentHandler contentHandler) throws Exception { DefaultTimeSeriesHeader header = new DefaultTimeSeriesHeader(); String fileName = new File(reader.getVirtualFileName()).getName(); String locationId = determineLocationId(fileName); header.setLocationId(locationId); String dateTime = determineDateTime(fileName); String[] buffer = reader.readLine(',', '"'); contentHandler.setTime(contentHandler.getDefaultTimeZone(), "yyyyMMddHH", dateTime); for(Integer i:PARAMETER_COLUMNS.keySet()){ if(buffer[i].isEmpty()) continue; header.setParameterId(PARAMETER_COLUMNS.get(i)); contentHandler.setTimeSeriesHeader(header); contentHandler.setValue('.', buffer[i]); contentHandler.applyCurrentFields(); } } private static String determineDateTime(String virtualFileName) { return virtualFileName.substring(3, 13); } private static String determineLocationId(String fileName) { return fileName.substring(0, 3); } }