annotate gwt-client/src/main/java/org/dive4elements/river/client/client/ui/fixation/BunduFixPeriodPanel.java @ 9267:c7e5285d434f

bundu bezugswst work
author gernotbelger
date Wed, 18 Jul 2018 15:34:53 +0200
parents
children 7337034eb5d5
rev   line source
9267
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
2 * Software engineering by Intevation GmbH
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
3 *
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
7 */
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
8
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
9 package org.dive4elements.river.client.client.ui.fixation;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
10
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
11 import java.util.ArrayList;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
12 import java.util.List;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
13
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
14 import org.dive4elements.river.client.client.FLYSConstants;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
15 import org.dive4elements.river.client.client.ui.PanelHelper;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
16 import org.dive4elements.river.client.client.ui.ValidationHelper;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
17 import org.dive4elements.river.client.shared.model.Data;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
18 import org.dive4elements.river.client.shared.model.DataItem;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
19 import org.dive4elements.river.client.shared.model.DataList;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
20 import org.dive4elements.river.client.shared.model.DefaultData;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
21 import org.dive4elements.river.client.shared.model.DefaultDataItem;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
22 import org.dive4elements.river.client.shared.model.FixingsOverviewInfo;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
23 import org.dive4elements.river.client.shared.model.FixingsOverviewInfo.FixEvent;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
24 import org.dive4elements.river.client.shared.model.IntDataItem;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
25 import org.dive4elements.river.client.shared.model.IntegerArrayData;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
26
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
27 import com.google.gwt.core.client.GWT;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
28 import com.google.gwt.i18n.client.DateTimeFormat;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
29 import com.smartgwt.client.widgets.Canvas;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
30 import com.smartgwt.client.widgets.Label;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
31 import com.smartgwt.client.widgets.form.DynamicForm;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
32 import com.smartgwt.client.widgets.form.fields.TextItem;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
33 import com.smartgwt.client.widgets.layout.HLayout;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
34 import com.smartgwt.client.widgets.layout.VLayout;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
35
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
36 /**
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
37 * This UIProvider creates a panel for location or distance input.
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
38 *
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
39 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
40 */
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
41 public class BunduFixPeriodPanel extends FixationPanel {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
42 private static final long serialVersionUID = 1L;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
43 /** The message class that provides i18n strings. */
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
44 protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
45 private TextItem inputItem;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
46
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
47 long start;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
48 long end;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
49
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
50 private final ArrayList<FixEvent> events = new ArrayList<FixEvent>();
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
51
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
52 protected String getDatakey() {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
53 return "singleyear";
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
54 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
55
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
56 @Override
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
57 public Canvas createWidget(final DataList data) {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
58 instances.put(this.artifact.getUuid(), this);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
59 final VLayout layout = new VLayout();
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
60
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
61 final Label title = new Label(data.get(0).getDescription());
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
62 title.setHeight("25px");
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
63
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
64 final DynamicForm form = new DynamicForm();
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
65 form.setNumCols(4);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
66
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
67 this.inputItem = PanelHelper.createItem("YEAR_INPUT");
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
68 this.inputItem.setShowHint(true);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
69 this.inputItem.setHint(this.MSG.common_input_hint_year());
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
70 this.inputItem.setShowHintInField(true);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
71 this.inputItem.setShowTitle(false);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
72 form.setFields(this.inputItem);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
73
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
74 layout.addMember(title);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
75 layout.addMember(form);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
76
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
77 return layout;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
78 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
79
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
80 @Override
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
81 public Canvas createOld(final DataList dataList) {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
82 final List<Data> items = dataList.getAll();
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
83 final Data years = getData(items, getDatakey());
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
84 final DataItem[] yearsItems = years.getItems();
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
85
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
86 final String v1 = yearsItems[0].getStringValue().replace(" ", ", "); // multi.. single only allowed.. TODO: make createOld expecting single (general
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
87 // refactoring necessary)
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
88
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
89 final Label old = new Label(v1);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
90 final HLayout layout = new HLayout();
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
91 layout.setWidth("400px");
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
92
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
93 final Label label = new Label(dataList.getLabel());
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
94 label.setWidth("200px");
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
95
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
96 final Canvas back = getBackButton(dataList.getState());
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
97
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
98 layout.addMember(label);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
99 layout.addMember(old);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
100 layout.addMember(back);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
101
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
102 return layout;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
103 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
104
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
105 /**
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
106 * This method returns the selected data.
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
107 *
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
108 * @return the selected/inserted data.
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
109 */
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
110 @Override
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
111 public Data[] getData() {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
112 final List<String> errors = this.validate();
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
113 if (errors.size() > 0) {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
114 showErrors(errors); // TODO: do not allow advance state
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
115 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
116 long startMillis = 0;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
117 long endMillis = 0;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
118 final DateTimeFormat df = DateTimeFormat.getFormat("dd.MM.yyyy");
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
119 if (this.inputItem != null && !this.inputItem.getValueAsString().isEmpty()) {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
120 final List<Data> data = new ArrayList<Data>();
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
121 final String bezugsjahr = this.inputItem.getValueAsString().trim();
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
122 final DataItem yearsdata = new DefaultDataItem(getDatakey(), getDatakey(), bezugsjahr);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
123 data.add(new DefaultData(getDatakey(), null, null, new DataItem[] { yearsdata }));
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
124
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
125 // start/end
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
126
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
127 final int bezugsjahrInt = Integer.valueOf(bezugsjahr);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
128
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
129 startMillis = df.parse("01.01." + (bezugsjahrInt - 5)).getTime();
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
130 // ist; radio-auswahl erfolgt aber erst im nächsten schritt
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
131 endMillis = df.parse("31.12." + (bezugsjahrInt + 5)).getTime();
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
132
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
133 // events:
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
134 if (this.events.size() > 0) {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
135 // filter by start/end
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
136 final ArrayList<FixEvent> temp = new ArrayList<FixEvent>();
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
137
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
138 for (final FixEvent e : this.events) {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
139 final long time = df.parse(e.getDate()).getTime();
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
140 if (!(time >= startMillis && time <= endMillis)) {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
141 temp.add(e);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
142 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
143 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
144 this.events.removeAll(temp);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
145
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
146 final IntDataItem[] arr = new IntDataItem[this.events.size()];
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
147 for (int i = 0, E = this.events.size(); i < E; i++) {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
148 try {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
149 final Integer v = new Integer(this.events.get(i).getCId());
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
150 arr[i] = new IntDataItem("id", "id", v.intValue());
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
151 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
152 catch (final NumberFormatException nfe) {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
153 return data.toArray(new Data[data.size()]);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
154 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
155 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
156
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
157 final IntegerArrayData iad = new IntegerArrayData("events_temp", "events_temp", arr);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
158
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
159 data.add(iad);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
160 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
161
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
162 return data.toArray(new Data[data.size()]);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
163 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
164 return new Data[0];
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
165 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
166
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
167 @Override
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
168 public final List<String> validate() {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
169 final List<String> errors = new ArrayList<String>();
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
170 errors.addAll(ValidationHelper.checkForEmpty(this.inputItem, this.MSG));
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
171 try {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
172 final int year = Integer.valueOf(this.inputItem.getValueAsString());
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
173 if (year < 1000 || year > 9999) {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
174 errors.add(this.MSG.wrongFormat() + "(" + this.MSG.common_input_hint_year() + ")");
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
175 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
176 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
177 catch (final NumberFormatException e) {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
178 errors.add(this.MSG.error_invalid_integer());
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
179 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
180 return errors;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
181 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
182
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
183 @Override
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
184 public void setValues(final String cid, final boolean checked) {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
185 // No user interaction, do nothing.
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
186 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
187
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
188 @Override
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
189 public boolean renderCheckboxes() {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
190 // No selection, return false.
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
191 return false;
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
192 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
193
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
194 @Override
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
195 public void success(final FixingsOverviewInfo fixInfo) {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
196 for (final FixEvent fe : fixInfo.getEvents()) {
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
197 this.events.add(fe);
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
198 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
199 }
c7e5285d434f bundu bezugswst work
gernotbelger
parents:
diff changeset
200 }

http://dive4elements.wald.intevation.org