You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
Version 1
Next »
/* ================================================================
* 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.
*
* ----------------------------------------------------------------
* UsgsTwisTimeSeriesParser.java
* ----------------------------------------------------------------
* (C) Copyright 2003, by WL | Delft Hydraulics
*
* Original Author: pelgrim
* Contributor(s):
*
* Changes:
* --------
* 12/30/13 : 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 org.apache.log4j.Logger;
import java.io.IOException;
import java.util.Arrays;
public class UsgsTwisTimeSeriesParser implements TextParser<TimeSeriesContentHandler> {
private TimeSeriesContentHandler contentHandler;
private LineReader reader;
private static final Logger log = Logger.getLogger(UsgsTwisTimeSeriesParser.class);
@Override
public void parse(LineReader reader, String virtualFileName, TimeSeriesContentHandler contentHandler) throws Exception {
this.contentHandler = contentHandler;
this.contentHandler.addMissingValue("NAN");
this.reader = reader;
parseHeader();
DefaultTimeSeriesHeader header = new DefaultTimeSeriesHeader();
for (String[] buffer; (buffer = this.reader.readLine('/')) != null; ) {
String[] locTime = buffer[0].split(" ");
if (locTime.length != 4) {
log.warn("Skipping line with incorrect format, see debug for more info");
log.debug("Line skipped: " + Arrays.toString(buffer));
continue;
}
header.setLocationId(locTime[1]);
this.contentHandler.setTime(this.contentHandler.getDefaultTimeZone(), "yyMMddHHmm", locTime[2] + locTime[3].substring(2));
for (int i = 2 ; i < buffer.length ; i++) {
String[] parVal = buffer[i].split(" ");
if (parVal.length >= 2) {
header.setParameterId(parVal[0]);
this.contentHandler.setTimeSeriesHeader(header);
this.contentHandler.setValue('.', parVal[1]);
this.contentHandler.applyCurrentFields();
}
//End of parameter-value pairs
if (parVal.length >= 3) {
break;
}
}
}
}
private void parseHeader() throws IOException {
this.reader.skipLines(1);
}
}