package nl.wldelft.fews.system.plugin.dataExport; import nl.wldelft.util.io.LineWriter; import nl.wldelft.util.io.TextSerializer; import nl.wldelft.util.timeseries.TimeSeriesContent; import nl.wldelft.util.timeseries.TimeSeriesHeader; import java.io.IOException; public class RamTimeSeriesSerializer implements TextSerializer<TimeSeriesContent> { private LineWriter writer = null; private TimeSeriesContent content = null; @Override public void serialize(TimeSeriesContent content, LineWriter writer, String virtualFileName) throws Exception { this.writer = writer; this.content = content; content.setMissingValue(content.getDefaultMissingValue()); writeLevelEvents(); writeFlowEvents(); writeFooter(); } private void writeLevelEvents() throws IOException { //Loop over all timesteps and over all series, pick the level series for (int i = 0, n = content.getContentTimeCount(); i < n; i++) { content.setContentTimeIndex(i); //Write first line with parameter name writer.writeLine("[Water Levels]"); writer.writeLine("Date=" + content.getTime(content.getDefaultTimeZone(), "dd.MM.yyyy HH.mm")); writer.writeLine("Variable=WaterLevel"); writer.writeLine("\"Station\"" + ',' + "\"Level\""); //Get values of every timeseries for current time. for (int j = 0, m = content.getTimeSeriesCount(); j < m; j++) { content.setTimeSeriesIndex(j); TimeSeriesHeader header = content.getTimeSeriesHeader(); if (!header.getParameterId().equals("Level")) continue; if (content.isValueMissing()) continue; writer.writeLine('\"' + header.getLocationId() + "\"," + content.getValue('.')); } writer.newLine(); } writer.newLine(); } private void writeFlowEvents() throws IOException { //Loop over all timesteps and over all series, pick the flow series for (int i = 0, n = content.getContentTimeCount(); i < n; i++) { content.setContentTimeIndex(i); //Write first line with parameter name writer.writeLine("[Flows]"); writer.writeLine("Date=" + content.getTime(content.getDefaultTimeZone(), "dd.MM.yyyy HH.mm")); writer.writeLine("Variable=Flow"); writer.writeLine("\"Station\"" + ',' + "\"Flow\""); //Get values of every timeseries for current time. for (int j = 0, m = content.getTimeSeriesCount(); j < m; j++) { content.setTimeSeriesIndex(j); TimeSeriesHeader header = content.getTimeSeriesHeader(); if (!header.getParameterId().equals("Flow")) continue; if (content.isValueMissing()) continue; writer.writeLine('\"' + header.getLocationId() + "\"," + content.getValue('.')); } writer.newLine(); } writer.newLine(); } private void writeFooter() throws IOException { writer.writeLine("[Stuwen]"); writer.writeLine("StuwProgrammaS285 = -1"); writer.newLine(); writer.writeLine("[Haringvlietsluizen]"); writer.writeLine("SluisProgrammaLPH84 = -1"); writer.newLine(); writer.writeLine("[Dispersie]"); writer.writeLine("DispersieBerekend = -1"); writer.writeLine("DispersieWaarde = 100"); } }