gernotbelger@9313: /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@9313: * Software engineering by gernotbelger@9313: * Björnsen Beratende Ingenieure GmbH gernotbelger@9313: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@9313: * gernotbelger@9313: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9313: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9313: * documentation coming with Dive4Elements River for details. gernotbelger@9313: */ gernotbelger@9313: package org.dive4elements.river.artifacts.bundu.bezugswst; gernotbelger@9313: gernotbelger@9313: import java.util.ArrayList; gernotbelger@9313: import java.util.List; gernotbelger@9313: gernotbelger@9313: import org.dive4elements.artifacts.CallContext; gernotbelger@9330: import org.dive4elements.artifacts.CallMeta; gernotbelger@9313: import org.dive4elements.river.artifacts.bundu.BUNDUArtifact; gernotbelger@9318: import org.dive4elements.river.artifacts.bundu.BunduResultType; gernotbelger@9313: import org.dive4elements.river.artifacts.common.GeneralResultType; gernotbelger@9313: import org.dive4elements.river.artifacts.common.ResultRow; gernotbelger@9313: import org.dive4elements.river.artifacts.model.CalculationResult; gernotbelger@9313: import org.dive4elements.river.artifacts.resources.Resources; gernotbelger@9323: import org.dive4elements.river.artifacts.sinfo.util.BedHeightInfo; gernotbelger@9313: import org.dive4elements.river.artifacts.sinfo.util.CalculationUtils; gernotbelger@9313: import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; gernotbelger@9323: import org.dive4elements.river.artifacts.sinfo.util.WstInfo; gernotbelger@9313: import org.dive4elements.river.model.River; gernotbelger@9313: gernotbelger@9313: class BezugswstCalculation { gernotbelger@9313: gernotbelger@9313: // private static Logger log = Logger.getLogger(FloodDurationCalculation.class); gernotbelger@9313: gernotbelger@9313: private final CallContext context; gernotbelger@9313: gernotbelger@9313: public BezugswstCalculation(final CallContext context) { gernotbelger@9313: this.context = context; gernotbelger@9313: } gernotbelger@9313: gernotbelger@9313: public CalculationResult calculate(final BUNDUArtifact bunduartifact) { gernotbelger@9313: gernotbelger@9313: final String user = CalculationUtils.findArtifactUser(this.context, bunduartifact); gernotbelger@9330: final CallMeta m = this.context.getMeta(); gernotbelger@9313: /* access input data */ gernotbelger@9313: final BunduAccess access = new BunduAccess(bunduartifact); gernotbelger@9313: gernotbelger@9313: final River river = access.getRiver(); gernotbelger@9313: final RiverInfo riverInfo = new RiverInfo(river); gernotbelger@9330: final String calcModeLabel = Resources.getMsg(m, "bundu_bezugswst"); gernotbelger@9313: final BezugswstCalculationResults results = new BezugswstCalculationResults(calcModeLabel, user, riverInfo, access.getRange()); gernotbelger@9313: gernotbelger@9323: // TODO: get wst, sounding for river gernotbelger@9323: final WstInfo wstInfo = null; gernotbelger@9323: final BedHeightInfo sounding = null; gernotbelger@9323: // final int wspYear = waterlevel.getYear(); gernotbelger@9323: // final WstInfo wstInfo = new WstInfo(wspLabel, wspYear, riverInfo.getReferenceGauge()); gernotbelger@9323: final String function = access.getFunction(); gernotbelger@9323: final boolean preprocessing = access.getPreprocessing();// nullpointer dürfen nicht entstehen; Fehler läge woanders gernotbelger@9323: final int startYear = access.getStartYear(); gernotbelger@9323: final int endYear = access.getBezugsJahr(); gernotbelger@9323: final Integer ud = access.getUd(); gernotbelger@9337: final double[] qs = access.getQs();// funktioniert so nicht. gernotbelger@9323: final Double missingVolFrom = access.getMissingVolFrom(); gernotbelger@9323: final Double missingVolTo = access.getMissingVolTo(); gernotbelger@9330: gernotbelger@9313: final List list = new ArrayList<>(); gernotbelger@9313: final ResultRow row = ResultRow.create(); gernotbelger@9313: row.putValue(GeneralResultType.station, 666.666); gernotbelger@9318: row.putValue(BunduResultType.bezugswst, 22.15); gernotbelger@9313: row.putValue(GeneralResultType.dischargeQwithUnit, 77.666); gernotbelger@9318: row.putValue(GeneralResultType.waterlevelLabel, "GLQ"); gernotbelger@9318: row.putValue(GeneralResultType.gaugeLabel, "Bonn"); gernotbelger@9318: row.putValue(GeneralResultType.location, "keine Lage"); gernotbelger@9313: list.add(row); gernotbelger@9313: gernotbelger@9330: final BezugswstMainCalculationResult result = new BezugswstMainCalculationResult("label? was fürn label?", list, sounding, wstInfo, function, gernotbelger@9330: preprocessing, startYear, endYear, ud, qs, missingVolFrom, missingVolTo); gernotbelger@9313: results.addResult(result, null); gernotbelger@9330: gernotbelger@9330: // missing volume calculation gernotbelger@9330: if (access.getMissingVolFrom() != null) { gernotbelger@9331: /// FIRST RESULT gernotbelger@9330: final List listResult1 = new ArrayList<>(); gernotbelger@9330: final ResultRow rowResult1 = ResultRow.create(); gernotbelger@9330: rowResult1.putValue(BunduResultType.bezugswst, 45.15); gernotbelger@9330: rowResult1.putValue(GeneralResultType.dischargeQwithUnit, 890); gernotbelger@9330: rowResult1.putValue(GeneralResultType.waterlevelLabel, "GLQ"); gernotbelger@9330: rowResult1.putValue(GeneralResultType.gaugeLabel, "Bonn"); gernotbelger@9330: gernotbelger@9330: rowResult1.putValue(BunduResultType.sounding, "NIEDERRHEIN_QP-2002"); gernotbelger@9330: rowResult1.putValue(BunduResultType.channelLowerEdge, 42.65); gernotbelger@9330: rowResult1.putValue(BunduResultType.channelMinDepth, 2.5); gernotbelger@9330: rowResult1.putValue(BunduResultType.hasMissingDepth, Resources.getMsg(m, "true")); gernotbelger@9330: rowResult1.putValue(BunduResultType.missVolume, 2250); gernotbelger@9330: rowResult1.putValue(BunduResultType.missMass, 3897); gernotbelger@9330: rowResult1.putValue(BunduResultType.excavationVolume, 2475); gernotbelger@9330: rowResult1.putValue(BunduResultType.excavationCosts, 999.99); gernotbelger@9330: rowResult1.putValue(BunduResultType.channelWidth, 150); gernotbelger@9330: rowResult1.putValue(BunduResultType.density, 1732); gernotbelger@9330: gernotbelger@9330: rowResult1.putValue(GeneralResultType.location, "Spitzenlage"); gernotbelger@9330: listResult1.add(rowResult1); gernotbelger@9330: gernotbelger@9330: final BezugswstMissVolCalculationResult1 r1 = new BezugswstMissVolCalculationResult1( gernotbelger@9330: Resources.getMsg(m, "bundu.export.csv.title.bezugswst.result1"), listResult1); gernotbelger@9330: results.addResult(r1, null); gernotbelger@9331: gernotbelger@9331: // SECOND RESULT gernotbelger@9331: final List listResult2 = new ArrayList<>(); gernotbelger@9331: final ResultRow rowResult2 = ResultRow.create(); gernotbelger@9331: gernotbelger@9331: rowResult2.putValue(GeneralResultType.station, 890); gernotbelger@9331: final List fieldValues = new ArrayList<>(); gernotbelger@9331: fieldValues.add("444 [m³] / 765 [t]"); gernotbelger@9331: fieldValues.add("4.444 [m³] / 1.765 [t]"); gernotbelger@9331: fieldValues.add("444 [m³] / 765 [t]"); gernotbelger@9331: fieldValues.add(""); gernotbelger@9331: fieldValues.add(""); gernotbelger@9331: fieldValues.add(""); gernotbelger@9331: fieldValues.add(""); gernotbelger@9331: fieldValues.add(""); gernotbelger@9331: fieldValues.add(""); gernotbelger@9331: fieldValues.add("444 [m³] / 765 [t]"); gernotbelger@9331: rowResult2.putValue(BunduResultType.fields, fieldValues); gernotbelger@9331: rowResult2.putValue(BunduResultType.meanBedheight, "9.444 [m³] / 8.765 [t]"); gernotbelger@9331: gernotbelger@9331: listResult2.add(rowResult2); gernotbelger@9331: gernotbelger@9331: final BezugswstMissVolCalculationResult2 r2 = new BezugswstMissVolCalculationResult2( gernotbelger@9331: Resources.getMsg(m, "bundu.export.csv.title.bezugswst.result2"), listResult2); gernotbelger@9331: results.addResult(r2, null); gernotbelger@9331: gernotbelger@9332: // Third RESULT gernotbelger@9332: final List listResult3 = new ArrayList<>(); gernotbelger@9332: final ResultRow rowResult3 = ResultRow.create(); gernotbelger@9332: gernotbelger@9332: rowResult3.putValue(BunduResultType.stationForMiss, "650 - 651"); gernotbelger@9332: rowResult3.putValue(BunduResultType.missVolume, 52950); gernotbelger@9332: rowResult3.putValue(BunduResultType.missMass, 91491); gernotbelger@9332: gernotbelger@9332: listResult3.add(rowResult3); gernotbelger@9332: gernotbelger@9332: final BezugswstMissVolCalculationResult3 r3 = new BezugswstMissVolCalculationResult3( gernotbelger@9332: Resources.getMsg(m, "bundu.export.csv.title.bezugswst.result3"), listResult3); gernotbelger@9332: results.addResult(r3, null); gernotbelger@9332: gernotbelger@9330: } gernotbelger@9330: gernotbelger@9313: return new CalculationResult(results, null);// problems); gernotbelger@9313: } gernotbelger@9313: gernotbelger@9313: /** gernotbelger@9313: * Calculates one W-MSH differences pair. gernotbelger@9313: * gernotbelger@9313: * @param infoProvider gernotbelger@9313: */ gernotbelger@9313: gernotbelger@9313: }