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