gernotbelger@9439: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@9439: * Software engineering by gernotbelger@9439: * Björnsen Beratende Ingenieure GmbH gernotbelger@9439: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@9439: * gernotbelger@9439: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9439: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9439: * documentation coming with Dive4Elements River for details. gernotbelger@9439: */ gernotbelger@9439: package test.bundu; gernotbelger@9439: gernotbelger@9439: import java.io.IOException; gernotbelger@9439: import java.util.List; gernotbelger@9439: gernotbelger@9439: import org.dive4elements.artifacts.httpclient.exceptions.ConnectionException; gernotbelger@9439: import org.dive4elements.river.client.shared.exceptions.ServerException; gernotbelger@9439: import org.dive4elements.river.client.shared.model.Data; gernotbelger@9439: import org.dive4elements.river.client.shared.model.DataItem; gernotbelger@9439: import org.dive4elements.river.client.shared.model.DefaultDataItem; gernotbelger@9439: import org.dive4elements.river.client.shared.model.IntDataItem; gernotbelger@9439: import org.dive4elements.river.client.shared.model.IntegerArrayData; gernotbelger@9439: import org.dive4elements.river.client.shared.model.StringOptionsData; gernotbelger@9439: gernotbelger@9439: import test.AbstractBerechnungsartenTester.River; gernotbelger@9439: import test.AbstractModuleRunner; gernotbelger@9439: import test.IFilenameMapper; gernotbelger@9439: gernotbelger@9439: /** gernotbelger@9439: * @author Domenico Nardi Tironi gernotbelger@9439: * gernotbelger@9439: */ gernotbelger@9439: class BunduBezugswstRunner extends AbstractModuleRunner { gernotbelger@9439: gernotbelger@9439: private final String fixationChoice; gernotbelger@9439: private final int bezugsjahr; gernotbelger@9439: private final int years_length; gernotbelger@9439: gernotbelger@9439: private final boolean fehlvolumina; gernotbelger@9439: private final String sounding; gernotbelger@9439: gernotbelger@9439: private final String calcChoice; gernotbelger@9439: private final double step; gernotbelger@9439: private final List segments; gernotbelger@9442: private final String qSectorStart; gernotbelger@9442: private final String qSectorEnd; gernotbelger@9439: private final int[] events; gernotbelger@9442: private final String function; gernotbelger@9439: gernotbelger@9439: public BunduBezugswstRunner(final IFilenameMapper file, final double from, final double to, final double step, final River river, final int bezugsjahr, gernotbelger@9442: final String fixationChoice, final String function, final String abflussklasseFrom, final String abflussklasseTo, final int[] events, gernotbelger@9442: final int years_length, final List segments, final String calcChoice, final boolean fehlvolumina, final String sounding) gernotbelger@9439: throws ConnectionException, ServerException { gernotbelger@9439: super(AbstractModuleRunner.Infotype.bundu, test.bundu.BunduBerechnungsartenTester.CalcMode.bundu_bezugswst, file, from, to, river); gernotbelger@9439: this.fixationChoice = fixationChoice; gernotbelger@9442: this.qSectorStart = abflussklasseFrom; gernotbelger@9442: this.qSectorEnd = abflussklasseTo; gernotbelger@9439: this.bezugsjahr = bezugsjahr; gernotbelger@9439: this.years_length = years_length; gernotbelger@9439: this.fehlvolumina = fehlvolumina; gernotbelger@9439: this.sounding = sounding; gernotbelger@9439: this.calcChoice = calcChoice; gernotbelger@9439: this.step = step; gernotbelger@9439: this.segments = segments; gernotbelger@9439: this.events = events; gernotbelger@9442: this.function = function; gernotbelger@9439: } gernotbelger@9439: gernotbelger@9439: @Override gernotbelger@9439: public void runTest(final boolean exportToFile) throws ServerException, IOException { gernotbelger@9439: /* Select River */ gernotbelger@9439: super.selectRiver(); gernotbelger@9439: gernotbelger@9439: /* Select ICalcMode */ gernotbelger@9439: super.selectCalcMode(); gernotbelger@9439: gernotbelger@9439: /* Select Range with step */ gernotbelger@9439: final Data[] temp = super.makeFromToData("ld_from", "ld_to"); gernotbelger@9439: final String stepStr = String.valueOf(this.step); gernotbelger@9439: final Data[] data = super.addItemToExistingData(temp, gernotbelger@9439: new StringOptionsData("ld_step", "ld_step", new DataItem[] { new DefaultDataItem(stepStr, stepStr, stepStr) })); gernotbelger@9439: gernotbelger@9439: super.feedAndGo(data, 0); gernotbelger@9439: gernotbelger@9439: /* bezugsjahr */ gernotbelger@9439: final String bezugsjahr = String.valueOf(this.bezugsjahr); gernotbelger@9439: super.feedAndGoSimpleTextInput("singleyear", bezugsjahr); gernotbelger@9439: gernotbelger@9439: /* fixierungsauswahl - auto oder manuell */ gernotbelger@9439: // AUTO: 0, 3 gernotbelger@9442: final Data q1 = super.getSimpleTextInput("q1", this.qSectorStart); gernotbelger@9442: final Data q2 = super.getSimpleTextInput("q2", this.qSectorEnd); gernotbelger@9439: final Data fixChoice = super.getSimpleTextInput("fix_choice", this.fixationChoice); gernotbelger@9439: gernotbelger@9439: final IntDataItem[] arr = new IntDataItem[this.events.length]; gernotbelger@9439: for (int i = 0; i < this.events.length; i++) { gernotbelger@9439: arr[i] = new IntDataItem("id", "id", this.events[i]); gernotbelger@9439: } gernotbelger@9439: final IntegerArrayData iad = new IntegerArrayData("events", "events", arr); gernotbelger@9439: gernotbelger@9439: super.feedAndGo(new Data[] { q1, q2, iad, fixChoice }, 0); gernotbelger@9439: gernotbelger@9439: // TODO: Automatische ereignisauswahl + Wahl der Abflussklassen im Hintergrund gernotbelger@9439: gernotbelger@9439: /* Länge der Abflusszeitreihe */ gernotbelger@9439: super.feedAndGoSimpleTextInput("year_input_q_series", String.valueOf(this.years_length)); gernotbelger@9439: gernotbelger@9439: /* (W)Q-Input / UD Input */ gernotbelger@9439: gernotbelger@9439: final Data[] wqData = Segment.getDataforFeed("wq_values", this.segments); gernotbelger@9439: final Data[] wqAndMode = super.addItemToExistingData(wqData, gernotbelger@9439: new StringOptionsData("bundu.wst.mode", "bundu.wst.mode", new DataItem[] { new DefaultDataItem("Q", "Q", "Q") })); gernotbelger@9439: gernotbelger@9439: super.feedAndGo(wqAndMode, // gernotbelger@9439: 0);// reachable state index gernotbelger@9439: gernotbelger@9439: /* calc_choice */ gernotbelger@9439: final Data preprocessingData = super.getSimpleTextInput("preprocessing", "false"); gernotbelger@9442: final Data functionData = super.getSimpleTextInput("function", this.function); gernotbelger@9439: final Data calcChoice = super.getSimpleTextInput("calc_choice", this.calcChoice); gernotbelger@9439: super.feedAndGoData(new Data[] { preprocessingData, functionData, calcChoice }); gernotbelger@9439: gernotbelger@9439: // TODO: automaitische Wahl der Berechnungsgrundlagen + Ausreißer (preprocessing) gernotbelger@9439: gernotbelger@9439: /* missing_volume */ gernotbelger@9439: super.feedAndGoSimpleTextInput("missing_volume", String.valueOf(this.fehlvolumina)); gernotbelger@9439: gernotbelger@9439: // TODO: Strecke der FehlVolumina machen gernotbelger@9439: gernotbelger@9439: /* Wahl der Peilungen */ gernotbelger@9439: gernotbelger@9439: super.feedAndGoSimpleTextInput("soundings", this.sounding); gernotbelger@9439: gernotbelger@9439: describeCollection(); gernotbelger@9439: gernotbelger@9439: super.export(exportToFile); gernotbelger@9439: } gernotbelger@9439: gernotbelger@9439: }