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.OutOfDetectionRangeFlag;
import nl.wldelft.util.timeseries.TimeSeriesContentHandler;
import java.io.IOException;
/**
* 1 : Monster Id
* 2 : Location Id
* 3 : Location Name
* 4 : X
* 5 : Y
* 6 : Date
* 7 : Time
* 8 : Parameter Name
* 9 : ?
* 10: label
* 11: Value
* 12: Parameter Qualifier
* 13: Unit
* 14: ??
* 15: Parameter Id
*
*/
public class WQCSVTimeSeriesParser implements TextParser<TimeSeriesContentHandler> {
@Override
public void parse(LineReader reader, String virtualFileName, TimeSeriesContentHandler contentHandler) throws IOException {
contentHandler.addMissingValue("");
contentHandler.addMissingValue("n.b.");
contentHandler.addMissingValue("nb");
contentHandler.addMissingValue("n,b,");
reader.setCommentLinePrefix('?');
DefaultTimeSeriesHeader header = new DefaultTimeSeriesHeader();
for (String[] buffer = new String[15]; reader.readLine(';', buffer) != -1;) {
contentHandler.setSampleId(buffer[0]);
header.setLocationId(buffer[1]);
contentHandler.setTime(contentHandler.getDefaultTimeZone(), "dd-MM-yyyy", buffer[5], "HH:mm:ss", buffer[6]);
contentHandler.setOutOfDetectionRangeFlag(getOutOfDetectionRangeFlag(buffer[9]));
contentHandler.setValue(',', buffer[10]);
//header .setQualifierIds(buffer[11]); temporarily deleted
header.setUnit(buffer[12]);
header.setParameterId(buffer[14]);
contentHandler.setTimeSeriesHeader(header);
contentHandler.applyCurrentFields();
}
}
private static OutOfDetectionRangeFlag getOutOfDetectionRangeFlag(String qualityflag) {
if (qualityflag.equals("<")) return OutOfDetectionRangeFlag.BELOW_DETECTION_RANGE;
if (qualityflag.equals(">")) return OutOfDetectionRangeFlag.ABOVE_DETECTION_RANGE;
return OutOfDetectionRangeFlag.INSIDE_DETECTION_RANGE;
}
}
|