Subversion Repositories eFlore/Archives.cel-v1

Rev

Rev 28 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
12 ddelon 1
package org.tela_botanica.client;
2
 
28 ddelon 3
import com.google.gwt.http.client.URL;
4
import com.google.gwt.json.client.JSONArray;
5
import com.google.gwt.json.client.JSONParser;
6
import com.google.gwt.json.client.JSONString;
7
import com.google.gwt.json.client.JSONValue;
8
import com.google.gwt.user.client.HTTPRequest;
9
import com.google.gwt.user.client.ResponseTextHandler;
10
 
12 ddelon 11
public class InventoryItem {
12
 
27 ddelon 13
	// TODO : Singleton ?
12 ddelon 14
 
15
	private String name=null;
16
	private String nomenclaturalNumber=null;
17
	private String location=null;
18
	private String location_id=null;
19
	private String date=null;
29 ddelon 20
	private String lieudit=null;
21
	private String station=null;
12 ddelon 22
	private String comment=null;
13 ddelon 23
	private String ordre=null;
12 ddelon 24
 
28 ddelon 25
	private Mediator mediator = null;
26
	private String serviceBaseUrl = null;
27 ddelon 27
 
12 ddelon 28
 
28 ddelon 29
 
27 ddelon 30
//	 Constructeur
31
 
32
 
33
	// Constructeur sur saisie
34
 
28 ddelon 35
	public InventoryItem(Mediator med) {
12 ddelon 36
 
28 ddelon 37
			mediator=med;
38
 
39
			serviceBaseUrl = mediator.getServiceBaseUrl();
40
 
41
 
27 ddelon 42
	}
43
 
44
 
45
	// Alimentation contenu depuis saisie
46
 
29 ddelon 47
	public void setContent(String name,String nomenclaturalNumber, String location, String location_id, String date, String lieudit, String station, String comment,String ordre) {
27 ddelon 48
 
12 ddelon 49
 
50
		this.name=name;
51
		this.nomenclaturalNumber=nomenclaturalNumber;
52
 
53
	 // Suppresion indication departementale (on pourrait faire mieux !!)
54
		int pos=location.indexOf(" (" );
55
	    if (pos>=0) {
56
	    	this.location=location.substring(0,pos);
57
	    }
58
		else {
59
			 this.location=location;
60
		}
61
 
62
		this.location_id=location_id;
29 ddelon 63
		if (location.compareTo("")==0) this.location_id="";
64
		if (location_id==null) this.location_id="";
12 ddelon 65
		this.date=date;
29 ddelon 66
		this.lieudit=lieudit;
67
		this.station=station;
12 ddelon 68
		this.comment=comment;
13 ddelon 69
		this.ordre=ordre;
12 ddelon 70
 
71
	}
72
 
28 ddelon 73
 
74
	public boolean isValid() {
75
		// TODO : controle date
76
 
77
	    if (name.compareTo("")==0) {
78
	    	return false;
79
	    }
80
	    else {
81
	    	return true;
82
	    }
83
 
84
	}
12 ddelon 85
 
28 ddelon 86
	/**
87
	 *  Lancement de la creation d'une ligne d'inventaire (appele par Mediator.onAddInventoryItem())
88
	 *
89
	 */
90
 
91
 
92
	public void addelement() {
93
 
94
 
95
	if (isValid()) {
96
 
97
 
98
				// Creation d'un nom faisant parti du referentiel : recherche du nom valide correspondant
27 ddelon 99
 
28 ddelon 100
				if (nomenclaturalNumber !=null) {
101
 
102
					HTTPRequest.asyncGet(serviceBaseUrl + "/NameValid/" + nomenclaturalNumber,
103
							new ResponseTextHandler() {
104
 
105
								public void onCompletion(String strcomplete) {
106
 
107
									JSONValue jsonValue = JSONParser.parse(strcomplete);
108
									JSONArray jsonArray;
109
 
110
									if ((jsonArray = jsonValue.isArray()) != null) {
111
										// Nom retenu, Num Nomen nom retenu, Num Taxon,
112
										// Famille
113
										addElement(name, nomenclaturalNumber,
114
												Util.toCelString(((JSONString) jsonArray.get(0))
115
														.toString()),
116
												((JSONString) jsonArray.get(1))
117
														.stringValue(),
118
												((JSONString) jsonArray.get(2))
119
														.stringValue(),
120
												Util.toCelString(((JSONString) jsonArray.get(3))
121
														.toString()),
29 ddelon 122
														location,location_id,date,lieudit,station,comment);
28 ddelon 123
									}
124
								}
125
 
126
							});
127
				}
128
				// Saisie libre
129
				else {
29 ddelon 130
					addElement(name, " ", " ", " ", " ", " ",location,location_id,date,lieudit,station,comment);
28 ddelon 131
				}
132
 
133
		}
134
	else {
135
		// TODO : message d'erreur
136
		return;
12 ddelon 137
	}
28 ddelon 138
	}
139
 
140
 
141
 
142
	/**
143
	 * Ajoute effectif d'un element a l'inventaire (appel interne)
144
	 *
145
	 * @param nom_sel :
146
	 *            nom selectionne
147
	 * @param num_nom_sel :
148
	 *            numero nomenclatural nom selectionne
149
	 * @param nom_ret :
150
	 *            nom retenu
151
	 * @param num_nom_ret :
152
	 *            numero nomenclaturel nom retenu
153
	 * @param num_taxon :
154
	 *            numero taxonomique
155
	 * @param famille :
156
	 *            famille
157
	 */
12 ddelon 158
 
28 ddelon 159
	private void addElement(String nom_sel, String num_nom_sel, String nom_ret,
29 ddelon 160
			String num_nom_ret, String num_taxon, String famille,final String loc, String id_location,String dat, String lieu, String sta, String comment) {
12 ddelon 161
 
162
 
28 ddelon 163
		HTTPRequest.asyncPost(serviceBaseUrl + "/Inventory/", "identifiant="
164
				+ mediator.getUser() + "&nom_sel=" + URL.encodeComponent(nom_sel) + "&num_nom_sel=" + num_nom_sel
165
				+ "&nom_ret=" + URL.encodeComponent(nom_ret) + "&num_nom_ret=" + num_nom_ret
166
				+ "&num_taxon=" + num_taxon + "&famille=" + URL.encodeComponent(famille) + "&location=" + URL.encodeComponent(loc) + "&id_location=" + id_location + "&date_observation=" + dat
29 ddelon 167
				+ "&lieudit="+ URL.encodeComponent(lieu) + "&station="+ URL.encodeComponent(sta) + "&commentaire="+ URL.encodeComponent(comment),
12 ddelon 168
 
28 ddelon 169
		new ResponseTextHandler() {
170
 
171
			public void onCompletion(String str) {
29 ddelon 172
					mediator.onInventoryUpdated(location_id,location,"all");
28 ddelon 173
			}
174
		});
12 ddelon 175
	}
176
 
28 ddelon 177
 
12 ddelon 178
 
28 ddelon 179
	/**
180
	 *  Lancement de la mise a jour d'une ligne d'inventaire (appele par Mediator.onModifyInventoryItem())
181
	 *
182
	 */
183
 
184
	public void updateElement() {
185
 
186
 
187
	if (isValid()) {
188
 
189
 
190
		// Modification d'un nom faisant parti du referentiel : recherche du nom valide correspondant
191
 
192
				if (nomenclaturalNumber !=null) {
193
 
194
					HTTPRequest.asyncGet(serviceBaseUrl + "/NameValid/" + nomenclaturalNumber,
195
							new ResponseTextHandler() {
196
 
197
								public void onCompletion(String strcomplete) {
198
 
199
									JSONValue jsonValue = JSONParser.parse(strcomplete);
200
									JSONArray jsonArray;
201
 
202
									if ((jsonArray = jsonValue.isArray()) != null) {
203
										// Nom retenu, Num Nomen nom retenu, Num Taxon,  Famille
204
										updateElement(ordre,name, nomenclaturalNumber,
205
												Util.toCelString(((JSONString) jsonArray.get(0))
206
														.toString()),
207
												((JSONString) jsonArray.get(1))
208
														.stringValue(),
209
												((JSONString) jsonArray.get(2))
210
														.stringValue(),
211
												Util.toCelString(((JSONString) jsonArray.get(3))
212
														.toString()),
29 ddelon 213
														location,location_id,date,lieudit,station,comment);
28 ddelon 214
									}
215
								}
216
 
217
							});
218
				}
219
				//  Modification d'un nom ne faisant pas parti du referentiel (saisie libre)
220
				else {
29 ddelon 221
					updateElement(ordre,name, " ", " ", " ", " ", " ",location,location_id,date,lieudit,station,comment);
28 ddelon 222
				}
223
 
224
		}
225
	else {
226
		// TODO : message d'erreur
227
		return;
12 ddelon 228
	}
28 ddelon 229
	}
12 ddelon 230
 
28 ddelon 231
 
12 ddelon 232
 
28 ddelon 233
 
12 ddelon 234
 
28 ddelon 235
	/**
236
	 * Modification effective d'un element de l'inventaire (appel interne)
237
	 *
238
	 * @param ordre : numero d'ordre
239
	 * @param nom_sel :
240
	 *            nom selectionne
241
	 * @param num_nom_sel :
242
	 *            numero nomenclatural nom selectionne
243
	 * @param nom_ret :
244
	 *            nom retenu
245
	 * @param num_nom_ret :
246
	 *            numero nomenclaturel nom retenu
247
	 * @param num_taxon :
248
	 *            numero taxonomique
249
	 * @param famille :
250
	 *            famille
251
	 */
12 ddelon 252
 
28 ddelon 253
	private void updateElement(String ordre, String nom_sel, String num_nom_sel, String nom_ret,
29 ddelon 254
			String num_nom_ret, String num_taxon, String famille,final String loc, String id_location,String dat, String lieu, String sta, String comment) {
12 ddelon 255
 
256
 
28 ddelon 257
		HTTPRequest.asyncPost(serviceBaseUrl + "/Inventory/" + mediator.getUser() + "/" +ordre + "/",
258
				 "&nom_sel=" + URL.encodeComponent(nom_sel) + "&num_nom_sel=" + num_nom_sel
259
				+ "&nom_ret=" + URL.encodeComponent(nom_ret) + "&num_nom_ret=" + num_nom_ret
260
				+ "&num_taxon=" + num_taxon + "&famille=" + URL.encodeComponent(famille) + "&location=" + URL.encodeComponent(loc) + "&id_location=" + id_location + "&date_observation=" + dat
29 ddelon 261
				+ "&lieudit="+ URL.encodeComponent(lieu) + "&station="+ URL.encodeComponent(sta) + "&commentaire="+ URL.encodeComponent(comment),
13 ddelon 262
 
28 ddelon 263
		new ResponseTextHandler() {
13 ddelon 264
 
28 ddelon 265
			public void onCompletion(String str) {
29 ddelon 266
				mediator.onInventoryUpdated(location_id,location,"all");
28 ddelon 267
			}
268
		});
13 ddelon 269
	}
12 ddelon 270
 
28 ddelon 271
 
12 ddelon 272
}