annotate gwt-client/src/main/java/org/dive4elements/river/client/client/ui/AbstractEpochPanel.java @ 9224:c3994657c15d

salix workflow little improvments
author gernotbelger
date Wed, 04 Jul 2018 15:26:08 +0200
parents aafae1ab25f0
children 7c3d689294e8
rev   line source
9079
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
2 * Software engineering by
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
5 *
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
9 */
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
10 package org.dive4elements.river.client.client.ui;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
11
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
12 import java.util.ArrayList;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
13 import java.util.List;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
14
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
15 import org.dive4elements.river.client.client.ui.FromToTableHelperPanel.IColumnClickHandler;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
16 import org.dive4elements.river.client.shared.model.Data;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
17 import org.dive4elements.river.client.shared.model.DataItem;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
18 import org.dive4elements.river.client.shared.model.DataList;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
19 import org.dive4elements.river.client.shared.model.DefaultData;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
20 import org.dive4elements.river.client.shared.model.DefaultDataItem;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
21
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
22 import com.smartgwt.client.widgets.Canvas;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
23 import com.smartgwt.client.widgets.Label;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
24 import com.smartgwt.client.widgets.form.fields.TextItem;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
25 import com.smartgwt.client.widgets.grid.ListGrid;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
26 import com.smartgwt.client.widgets.grid.ListGridRecord;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
27 import com.smartgwt.client.widgets.layout.HLayout;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
28 import com.smartgwt.client.widgets.layout.VLayout;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
29
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
30 /**
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
31 * @author Domenico Nardi Tironi
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
32 *
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
33 */
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
34 public abstract class AbstractEpochPanel extends AbstractUIProvider {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
35
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
36 private static final long serialVersionUID = 1L;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
37
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
38 protected enum Type {
9224
c3994657c15d salix workflow little improvments
gernotbelger
parents: 9079
diff changeset
39 single, multi
c3994657c15d salix workflow little improvments
gernotbelger
parents: 9079
diff changeset
40 // Type single: nur eine Epoche kann gesetzt werden; minMax vorbelegt aus Datenquelle
9079
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
41 // Type multi: mehrere epochs können eingegeben werden
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
42 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
43
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
44 private TextItem start;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
45
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
46 private TextItem end;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
47
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
48 private ListGrid elements;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
49
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
50 private List<String> validInputs = new ArrayList<String>();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
51
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
52 private final Type type;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
53
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
54 public AbstractEpochPanel(final Type type) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
55 this.type = type;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
56 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
57
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
58 protected abstract String getDatakey();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
59
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
60 protected abstract Canvas createWidget(final DataList data);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
61
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
62 protected final TextItem createStartInputItem(final String title) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
63 this.start = PanelHelper.createItem(title);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
64 return this.start;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
65 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
66
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
67 protected final TextItem createEndInputItem(final String title) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
68 this.end = PanelHelper.createItem(title);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
69 return this.end;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
70 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
71
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
72 protected final ListGrid createListGrid() {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
73 this.elements = new ListGrid();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
74 this.elements.setShowHeaderContextMenu(false);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
75 this.elements.setCanReorderFields(false);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
76 this.elements.setCanSort(false);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
77 this.elements.setCanEdit(false);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
78 return this.elements;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
79 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
80
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
81 @Override
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
82 public final Canvas createOld(final DataList dataList) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
83 final HLayout layout = new HLayout();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
84 layout.setWidth("400px");
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
85 final VLayout vLayout = new VLayout();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
86 vLayout.setWidth(130);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
87 final Label label = new Label(dataList.getLabel());
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
88 label.setWidth("200px");
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
89 label.setHeight(25);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
90
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
91 final List<Data> items = dataList.getAll();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
92 final Data str = getData(items, getDatakey());
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
93 final DataItem[] strItems = str.getItems();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
94
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
95 final String[] pairs = strItems[0].getLabel().split(";");
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
96 for (final String pair : pairs) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
97 final Label dateLabel = new Label(pair.replace(",", " - "));
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
98 dateLabel.setHeight(20);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
99 vLayout.addMember(dateLabel);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
100 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
101 final Canvas back = getBackButton(dataList.getState());
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
102 layout.addMember(label);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
103 layout.addMember(vLayout);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
104 layout.addMember(back);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
105
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
106 return layout;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
107 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
108
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
109 @Override
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
110 public final Canvas create(final DataList data) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
111 final VLayout layout = new VLayout();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
112 final Canvas submit = getNextButton();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
113 final Canvas widget = createWidget(data);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
114
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
115 layout.addMember(widget);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
116 layout.addMember(submit);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
117
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
118 final IColumnClickHandler fromHandler = createHandler(this.start);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
119 final IColumnClickHandler toHandler = createHandler(this.end);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
120
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
121 final FromToTableHelperPanel helper = new FromToTableHelperPanel(data, getDatakey(), this.MSG, fromHandler, toHandler);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
122 this.validInputs = helper.getKeycolEntries();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
123 final Canvas table = helper.getTable();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
124
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
125 this.helperContainer.addMember(table);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
126
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
127 return layout;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
128 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
129
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
130 private final IColumnClickHandler createHandler(final TextItem field) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
131 final IColumnClickHandler handler = new IColumnClickHandler() {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
132
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
133 @Override
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
134 public void columnClicked(final String value) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
135 field.setValue(value);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
136 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
137 };
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
138 return handler;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
139 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
140
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
141 /*
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
142 * Validate the epoch input. We do this here and not in an overridden
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
143 * validate method as we want to validate before an epoch is added
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
144 * to the list of epochs.
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
145 */
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
146 protected final boolean isValidEpoch(final String y1, final String y2) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
147 // First check that both are integer
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
148 // int iY1;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
149 // int iY2;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
150 final List<String> errors = new ArrayList<String>();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
151 try {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
152 // iY1 =
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
153 Integer.parseInt(y1);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
154 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
155 catch (final NumberFormatException e) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
156 errors.add(this.MSG.wrongFormat() + ": " + y1);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
157 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
158 try {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
159 // iY2 =
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
160 Integer.parseInt(y2);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
161 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
162 catch (final NumberFormatException e) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
163 errors.add(this.MSG.wrongFormat() + ": " + y2);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
164 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
165 if (!errors.isEmpty()) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
166 showErrors(errors);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
167 return false;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
168 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
169 boolean startIsGood = false;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
170 boolean endIsGood = false;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
171 for (final String validYear : this.validInputs) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
172 if (startIsGood || y1.equals(validYear)) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
173 startIsGood = true;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
174 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
175 if (endIsGood || y2.equals(validYear)) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
176 endIsGood = true;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
177 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
178 if (startIsGood && endIsGood) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
179 break;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
180 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
181 /*
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
182 * alternative check if data lies in between
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
183 * int aYear = Integer.parseInt(validYear);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
184 * if (aYear >= iY1 && aYear <= iY2) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
185 * isGood = true;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
186 * break;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
187 * }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
188 */
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
189 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
190 if (!startIsGood) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
191 String tmp = this.MSG.no_data_for_year();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
192 tmp = tmp.replace("$1", y1);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
193 errors.add(tmp);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
194 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
195 if (!endIsGood) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
196 String tmp = this.MSG.no_data_for_year();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
197 tmp = tmp.replace("$1", y2);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
198 errors.add(tmp);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
199 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
200 if (!errors.isEmpty()) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
201 showErrors(errors);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
202 return false;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
203 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
204 return true;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
205 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
206
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
207 @Override
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
208 protected final Data[] getData() {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
209 final List<Data> data = new ArrayList<Data>();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
210 switch (this.type) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
211
9224
c3994657c15d salix workflow little improvments
gernotbelger
parents: 9079
diff changeset
212 case single:
9079
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
213 data.add(buildResult(this.start.getValueAsString(), this.end.getValueAsString()));
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
214
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
215 break;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
216 case multi:
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
217 final ListGridRecord[] lgr = this.elements.getRecords();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
218 if (lgr.length == 0) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
219 return new Data[0];
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
220 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
221 for (final ListGridRecord element : lgr) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
222 data.add(buildResult(element.getAttribute("from"), element.getAttribute("to")));
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
223 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
224 break;
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
225 default:
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
226 throw new IllegalStateException();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
227 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
228 return data.toArray(new Data[data.size()]);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
229 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
230
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
231 private final Data buildResult(final String startStr, final String endStr) {
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
232 final StringBuilder builder = new StringBuilder();
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
233 builder.append(startStr);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
234 builder.append(",");
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
235 builder.append(endStr);
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
236 builder.append(";");
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
237 final DataItem item = new DefaultDataItem(getDatakey(), null, builder.toString());
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
238 return new DefaultData(getDatakey(), null, null, new DataItem[] { item });
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
239 }
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
240
aafae1ab25f0 epoch-panels, single-input-panels
gernotbelger
parents:
diff changeset
241 }

http://dive4elements.wald.intevation.org