# HG changeset patch # User Felix Wolfsteller # Date 1375083044 -7200 # Node ID 09e70f01ed1e96d46d04fe2f028ec9366944c01d # Parent 29e2a5217307d2d799bac73a754829e4404fbdf1 issue1416: SedimentLoadExporter: Implemented rough output. diff -r 29e2a5217307 -r 09e70f01ed1e artifacts/src/main/java/org/dive4elements/river/exports/minfo/SedimentLoadExporter.java --- a/artifacts/src/main/java/org/dive4elements/river/exports/minfo/SedimentLoadExporter.java Mon Jul 29 09:28:32 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/minfo/SedimentLoadExporter.java Mon Jul 29 09:30:44 2013 +0200 @@ -10,6 +10,7 @@ import java.util.LinkedList; import java.util.List; +import java.util.TreeSet; import java.io.OutputStream; import java.io.IOException; @@ -23,6 +24,8 @@ import org.dive4elements.artifacts.CallContext; import org.dive4elements.river.artifacts.model.CalculationResult; +import org.dive4elements.river.artifacts.model.minfo.SedimentLoad; +import org.dive4elements.river.artifacts.model.minfo.SedimentLoadFraction; import org.dive4elements.river.artifacts.model.minfo.SedimentLoadResult; import org.dive4elements.river.exports.AbstractExporter; @@ -40,9 +43,36 @@ /** Private logger. */ private static Logger logger = Logger.getLogger(SedimentLoadExporter.class); + // i18n keys. + public static final String CSV_KM = + "export.sedimentload_ls.csv.header.km"; + public static final String CSV_YEAR = + "export.sedimentload_ls.csv.header.year"; + + public static final String CSV_COARSE = + "export.sedimentload_ls.csv.header.coarse"; + + public static final String CSV_FINEMIDDLE = + "export.sedimentload_ls.csv.header.finemiddle"; + + public static final String CSV_SAND = + "export.sedimentload_ls.csv.header.sand"; + + public static final String CSV_SUSP_SAND = + "export.sedimentload_ls.csv.header.suspsand"; + + public static final String CSV_SUSP_SEDIMENT = + "export.sedimentload_ls.csv.header.suspsediment"; + + public static final String CSV_TOTAL = + "export.sedimentload_ls.csv.header.total"; + + + /** Collected results. */ private SedimentLoadResult[] results; + /** Empty constructor. */ public SedimentLoadExporter() { } @@ -60,8 +90,33 @@ protected void writeCSVData(CSVWriter writer) throws IOException { writeCSVHeader(writer); + for (SedimentLoadResult result: results) { + SedimentLoad load = result.getLoad(); + // Put load.getName()+load.getDescription()}); somewhere? + for (double km: new TreeSet(load.getKms())) { + SedimentLoadFraction fraction = load.getFraction(km); + writeRecord(writer, km, result.getStartYear(), result.getEndYear(), fraction); + } + } + } + + /** Write a line. */ + private void writeRecord(CSVWriter writer, double km, int fromYear, int toYear, SedimentLoadFraction fraction) { + // year, total, susp sed, susp sandbed suspsand, sand, finemiddle, coarse + String years = (toYear == 0) ? fromYear+"" : fromYear + "-" + toYear; NumberFormat kmf = Formatter.getCalculationKm(context.getMeta()); - /* writer.writeNext(new String[] { */ + NumberFormat valf = Formatter.getFormatter(context.getMeta(), 0, 2); + writer.writeNext(new String[] { + kmf.format(km), + years, + valf.format(fraction.getTotal()), + valf.format(fraction.getSand()), + valf.format(fraction.getFineMiddle()), + valf.format(fraction.getCoarse()), + valf.format(fraction.getSuspSand()), + //valf.format(fraction.getSuspSandBed()), + valf.format(fraction.getSuspSediment()) + }); } /** Writes i18ned header for csv file/stream. */ @@ -70,8 +125,15 @@ List header = new LinkedList(); if (results != null) { - /*header.add(msg(CSV_HEADER_KM, "km")); - header.add(msg(CSV_HEADER_VAL, "m"));*/ + header.add(msg(CSV_KM, "km")); + header.add(msg(CSV_YEAR, "Jahr")); + header.add(msg(CSV_TOTAL, "Gesamt")); + header.add(msg(CSV_SAND, "Sand")); + header.add(msg(CSV_FINEMIDDLE,"Fein")); + header.add(msg(CSV_COARSE, "Grob")); + header.add(msg(CSV_SUSP_SAND, "Su.Sand")); + header.add(msg(CSV_SUSP_SEDIMENT, "Schwebst.")); + //header.add("Susp.Sand Bett"); } writer.writeNext(header.toArray(new String[header.size()])); } @@ -94,6 +156,7 @@ results = (SedimentLoadResult[])d; } + /** Write PDF to outputstream (not implemented yet). */ @Override protected void writePDF(OutputStream out) { logger.warn("Not implemented.");