package nl.wldelft.fews.system.plugin.dataImport;

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.IOException;

/**
 * Parser for Scottish and Southern Electric (SSE) gauged data
 * column 1 : Location Id
 * column 2 : Value
 * column 3 : Date/Time
 * column 4:  Parameter / Unit 
 */
public class SseTimeSeriesParser implements TextParser<TimeSeriesContentHandler> {
    @Override
    public void parse(LineReader reader, String virtualFileName, TimeSeriesContentHandler contentHandler) throws IOException {
        reader.setCommentLinePrefix('*');

        DefaultTimeSeriesHeader timeSeriesHeader = new DefaultTimeSeriesHeader();

        for (String[] buffer = new String[4]; reader.readLine(',', buffer) != -1;) {
            timeSeriesHeader.setLocationId(buffer[0]);
            contentHandler.setValue('.', buffer[1]);
            contentHandler.setTime(contentHandler.getDefaultTimeZone(), "dd/MM/yyyy HH:mm:ss", buffer[2]);
            timeSeriesHeader.setParameterId(buffer[3]);
            timeSeriesHeader.setUnit(buffer[3]);
            contentHandler.setTimeSeriesHeader(timeSeriesHeader);
            contentHandler.applyCurrentFields();
        }
    }
}
  • No labels