# HG changeset patch # User Ingo Weinzierl # Date 1308318388 0 # Node ID f1b97765788084a3ec6044804daaf58adf5c5ece # Parent bcf1a37223a5ece925f4d3b17c0693d63cb6996c #140 Code cleanup in WQ table. flys-client/trunk@2152 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r bcf1a37223a5 -r f1b977657880 flys-client/ChangeLog --- a/flys-client/ChangeLog Fri Jun 17 13:03:32 2011 +0000 +++ b/flys-client/ChangeLog Fri Jun 17 13:46:28 2011 +0000 @@ -1,3 +1,11 @@ +2011-06-17 Ingo Weinzierl + + flys/issue140 PART 1 (WINFO: WQ-Tabelle in Tabs aufsplitten) + + * src/main/java/de/intevation/flys/client/client/ui/WQInputPanel.java: + Splitted the code to determine min/max kilometer range and rivername + from code to fetch WQ data via RPC. + 2011-06-17 Ingo Weinzierl flys/issue118 (W-INFO: Eingabe Q aus Auswahlunterstützung und Manuell) diff -r bcf1a37223a5 -r f1b977657880 flys-client/src/main/java/de/intevation/flys/client/client/ui/WQInputPanel.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/WQInputPanel.java Fri Jun 17 13:03:32 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/WQInputPanel.java Fri Jun 17 13:46:28 2011 +0000 @@ -10,6 +10,7 @@ import com.smartgwt.client.data.Record; +import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.form.DynamicForm; @@ -1364,54 +1365,98 @@ } - protected void createWQInputTable() { - Config config = Config.getInstance(); - String url = config.getServerUrl(); - String locale = config.getLocale (); - String river = ""; - String value_min = ""; - String value_max = ""; - - ArtifactDescription adescr = artifact.getArtifactDescription(); - DataList[] data = adescr.getOldData(); + /** + * Determines the min and max kilometer value selected in a former state. A + * bit silly, but we need to run over each value of the "old data" to find + * such values because it is not available here. + * + * @param data The DataList which contains the whole data inserted for the + * current artifact. + * + * @return a double array with [min, max]. + */ + protected double[] getMinMaxKM(DataList[] data) { + int num = data != null ? data.length : 0; + double[] mm = new double[] { Double.MAX_VALUE, -Double.MAX_VALUE }; - //TODO: get the information about old data. - if (data != null && data.length > 0) { - for (int i = 0; i < data.length; i++) { - DataList dl = data[i]; - if (dl.getState().equals("state.winfo.river")) { - for (int j = 0; j < dl.size(); j++) { - Data d = dl.get(j); - DataItem[] di = d.getItems(); - if (di != null && di.length == 1) { - river = d.getItems()[0].getStringValue(); - } + for (int i = 0; i < num; i++) { + DataList dl = data[i]; + + if (dl.getState().equals("state.winfo.location_distance")) { + for (int j = 0, n = dl.size(); j < n; j++) { + Data d = dl.get(j); + + String label = d.getLabel(); + if (label.equals("ld_step") || label.equals("ld_mode")) { + continue; } - } - else if (dl.getState().equals("state.winfo.location_distance")){ - for (int j = 0; j < dl.size(); j++) { - Data d = dl.get(j); - DataItem[] di = d.getItems(); - if (di != null && di.length >= 1 && j == 0) { - value_max = d.getItems()[0].getStringValue(); + + for (DataItem item: d.getItems()) { + String itemValue = item.getStringValue(); + + try { + double v = Double.valueOf(itemValue); + + mm[0] = mm[0] < v ? mm[0] : v; + mm[1] = mm[1] > v ? mm[1] : v; } - else if (di != null && - di.length >= 1 && - j == dl.size() - 1) { - value_min = d.getItems()[0].getStringValue(); + catch (NumberFormatException nfe) { + // do nothing } } } } } - double from = Double.valueOf(value_min); - double to = Double.valueOf(value_max); - wqInfoService.getWQInfo(url, locale, river, from, to, + return mm; + } + + + /** + * Returns the name of the selected river. + * + * @param data The DataList with all data. + * + * @return the name of the current river. + */ + protected String getRiverName(DataList[] data) { + if (data != null && data.length > 0) { + for (int i = 0; i < data.length; i++) { + DataList dl = data[i]; + + if (dl.getState().equals("state.winfo.river")) { + for (int j = 0; j < dl.size(); j++) { + Data d = dl.get(j); + DataItem[] di = d.getItems(); + + if (di != null && di.length == 1) { + return d.getItems()[0].getStringValue(); + } + } + } + } + } + + return null; + } + + + protected void createWQInputTable() { + Config config = Config.getInstance(); + String url = config.getServerUrl(); + String locale = config.getLocale (); + + ArtifactDescription adescr = artifact.getArtifactDescription(); + DataList[] data = adescr.getOldData(); + + double[] mm = getMinMaxKM(data); + String river = getRiverName(data); + + wqInfoService.getWQInfo(url, locale, river, mm[0], mm[1], new AsyncCallback() { public void onFailure(Throwable caught) { GWT.log("Could not recieve wq informations."); - GWT.log(caught.getMessage()); + SC.warn(caught.getMessage()); } public void onSuccess(WQInfoObject[] wqi) {