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