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; } }