Subversion Repositories eFlore/Applications.coel

Rev

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

Rev Author Line No. Line
69 jpm 1
package org.tela_botanica.client.modeles;
2
 
3
import java.io.Serializable;
1173 jpm 4
import java.util.Arrays;
385 gduche 5
import java.util.Collection;
248 gduche 6
import java.util.HashMap;
193 jp_milcent 7
import java.util.Iterator;
248 gduche 8
import java.util.LinkedList;
1173 jpm 9
import java.util.List;
306 jp_milcent 10
import java.util.Map;
193 jp_milcent 11
import java.util.Set;
306 jp_milcent 12
import java.util.TreeSet;
69 jpm 13
 
949 jpm 14
import org.tela_botanica.client.util.Debug;
233 jp_milcent 15
import org.tela_botanica.client.util.UtilArray;
1369 cyprien 16
import org.tela_botanica.client.util.UtilString;
233 jp_milcent 17
 
534 gduche 18
import com.extjs.gxt.ui.client.core.FastMap;
69 jpm 19
import com.extjs.gxt.ui.client.data.BaseModelData;
602 jp_milcent 20
import com.google.gwt.core.client.GWT;
385 gduche 21
import com.google.gwt.http.client.URL;
775 jpm 22
import com.google.gwt.json.client.JSONObject;
69 jpm 23
 
193 jp_milcent 24
/**
25
 * @author jpm
26
 *
27
 */
69 jpm 28
public abstract class aDonnee extends BaseModelData implements Serializable {
29
 
30
	private static final long serialVersionUID = 3527760464061629791L;
748 jpm 31
 
789 jpm 32
	public static final String TYPE_AUTRE = "AUTRE";
33
	public static final String TYPE_TOTAL = "TOTAL";
34
	public static final String SEPARATEUR_TYPE_VALEUR = "##";
35
	public static final String SEPARATEUR_VALEURS = ";;";
36
	public static final String SEPARATEUR_DONNEES = "||";
875 jpm 37
	public static final String ETAT_AJOUTE = "A";
883 jpm 38
	public static final Object ETAT_MODIFIE = "M";
1042 gduche 39
	public static final String VALEUR_NULL = "NC";
1561 jpm 40
 
1257 gduche 41
	public HashMap<String, String> valeursInitiales = new HashMap<String, String>();
1561 jpm 42
	protected boolean removePrefix = true;
43
 
748 jpm 44
	protected abstract String getPrefixe();
1173 jpm 45
	protected abstract String[] getChampsObligatoires();
748 jpm 46
 
789 jpm 47
	public String getDateModification() {
48
		return (String) renvoyerValeurCorrecte("cmhl_date_modification");
49
	}
50
 
51
	public String getNotes() {
52
		return (String) renvoyerValeurCorrecte("cmhl_notes");
53
	}
54
 
55
	public String getIdModifierPar() {
56
		return (String) renvoyerValeurCorrecte("cmhl_ce_modifier_par");
57
	}
58
 
59
	public String getIdEtat() {
60
		return (String) renvoyerValeurCorrecte("cmhl_ce_etat");
61
	}
62
 
63
	public String getIp() {
64
		return (String) renvoyerValeurCorrecte("cmhl_ip");
65
	}
66
 
775 jpm 67
	protected void initialiserModele(JSONObject jsonObjet) {
68
		// l'objet JSON est une table de hachage
69
		Set<String> im = jsonObjet.keySet();
1173 jpm 70
		valeursInitiales = new HashMap<String, String>();
71
 
775 jpm 72
		// Parcourt pour chaque clé
73
		for (Iterator<String> it = im.iterator(); it.hasNext();) {
74
			// Si elle est associée à une valeur, nous l'ajoutons
75
			String cle = it.next();
1173 jpm 76
			if (cle.startsWith(getPrefixe()+"_") ||cle.matches("^_.+_$")) {
775 jpm 77
				// Suppression de l'abréviation du champ. Inutile dans le contexte d'un objet
78
				String cleObjet = cle.replaceFirst("^"+getPrefixe()+"_", "");
79
				// Sinon, nous ajoutons la clé avec une valeur vide
80
				String valeur = "";
81
				if (jsonObjet.get(cle).isString() != null) {
82
					valeur = jsonObjet.get(cle).isString().stringValue();
83
				}
1173 jpm 84
				valeursInitiales.put(cleObjet, valeur);
775 jpm 85
				this.set(cleObjet, valeur);
1173 jpm 86
			}
775 jpm 87
		}
88
	}
89
 
1173 jpm 90
	public void setValeurInitiale(String cleObjet, String valeur)	{
91
 
92
	}
1561 jpm 93
 
69 jpm 94
	/**
95
	 * Pour éviter que l'on traite des valeurs nulles à l'affichage on passe par
96
	 * cette fonction qui retire les charactères nuls qui font planter
1561 jpm 97
	 * l'affichage, il ne faut pas utiliser get directement.
98
	 * Elle ajoute aussi le préfixe au nom du champ si nécessaire.
69 jpm 99
	 *
1561 jpm 100
	 * @param cle le nom du champ sans le préfixe.
69 jpm 101
	 * @return la valeur associée à la clé
102
	 */
193 jp_milcent 103
	protected String renvoyerValeurCorrecte(String cle) {
188 jp_milcent 104
		String sortie = "";
1561 jpm 105
		cle = (removePrefix) ? cle : getPrefixe()+"_"+cle;
69 jpm 106
		if (this.get(cle) != null) {
891 aurelien 107
			String valeur = ""+this.get(cle);
188 jp_milcent 108
			if (! valeur.equals("null")) {
69 jpm 109
				char nullChar = '\u0000';
110
				String sNull = "" + nullChar;
111
				valeur = valeur.replaceAll(sNull, "");
188 jp_milcent 112
				sortie =  valeur;
69 jpm 113
			}
114
		}
891 aurelien 115
 
188 jp_milcent 116
		return sortie;
69 jpm 117
	}
233 jp_milcent 118
 
193 jp_milcent 119
	/**
1561 jpm 120
	 * Ajoute le préfixe au nom du champ si nécessaire.
121
	 *
122
	 * @param la clé du champ
123
	 * @param la valeur associé à la clé
124
	 */
125
	protected void setValeurCorrecte(String cle, String valeur) {
126
		cle = (removePrefix) ? cle : getPrefixe()+"_"+cle;
127
		set(cle, valeur);
128
	}
129
 
130
	/**
242 jp_milcent 131
	 * Ajoute un nouvel élément avec son type à une chaine dénormalisée.
132
	 * Champ de type "truk" contenant des valeurs séparées par ";;" qui elle même possèdent un type séparé par "##".
133
	 * Si l'élément existe déjà, il ne sera pas ajouté.
193 jp_milcent 134
	 *
135
	 * @param champ le nom du champ dénormalisé
136
	 * @param type le type de la valeur à ajouter
137
	 * @param valeur la valeur à ajouter
138
	 */
242 jp_milcent 139
	protected void ajouterChaineDenormaliseAvecType(String champ, String type, Object valeur) {
193 jp_milcent 140
		if (valeur instanceof String) {
141
			String chaineExistante = renvoyerValeurCorrecte(champ);
1369 cyprien 142
			if (UtilString.isEmpty(chaineExistante)) {
789 jpm 143
				this.set(champ, type+SEPARATEUR_TYPE_VALEUR+valeur);
193 jp_milcent 144
			} else {
242 jp_milcent 145
				// Si la valeur à ajouter n'est pas déjà présente, nous l'ajoutons
789 jpm 146
				if (!chaineExistante.matches("(^|"+SEPARATEUR_VALEURS+")"+type+SEPARATEUR_TYPE_VALEUR+valeur+"("+SEPARATEUR_VALEURS+"|$)")) {
147
					this.set(champ, chaineExistante+";;"+type+SEPARATEUR_TYPE_VALEUR+valeur);
242 jp_milcent 148
				}
193 jp_milcent 149
			}
150
		}
151
	}
119 jpm 152
 
306 jp_milcent 153
	protected void supprimerTypeDansChaineDenormalise(String champ, String type) {
154
		String chaineExistante = renvoyerValeurCorrecte(champ);
1369 cyprien 155
		if (!UtilString.isEmpty(chaineExistante)) {
789 jpm 156
			if (chaineExistante.matches("(?:^|.*"+SEPARATEUR_VALEURS+")"+type+SEPARATEUR_TYPE_VALEUR+".*")) {
157
				chaineExistante = chaineExistante.replaceFirst("(^|.*"+SEPARATEUR_VALEURS+")"+type+SEPARATEUR_TYPE_VALEUR+".*?("+SEPARATEUR_VALEURS+".*|$)", "$1$2");
158
				chaineExistante = chaineExistante.replaceAll("(.*)"+SEPARATEUR_VALEURS+SEPARATEUR_VALEURS+"(.*)", "$1"+SEPARATEUR_VALEURS+"$2");
159
				chaineExistante = chaineExistante.replaceAll("^"+SEPARATEUR_VALEURS+"(.*)", "$1");
160
				chaineExistante = chaineExistante.replaceAll("(.*)"+SEPARATEUR_VALEURS+"$", "$1");
306 jp_milcent 161
				this.set(champ, chaineExistante);
162
			}
163
		}
164
	}
165
 
166
	protected void remplacerTypeDansChaineDenormalise(String champ, String type, Object valeur) {
167
		if (valeur != null && !valeur.equals("")) {
168
			ajouterChaineDenormaliseAvecType(champ, type, valeur);
169
		} else {
170
			supprimerTypeDansChaineDenormalise(champ, type);
171
		}
172
	}
233 jp_milcent 173
	/**
242 jp_milcent 174
	 * Ajoute un nouvel élément sans type à une chaine dénormalisée.
175
	 * Champ de type "truk" contenant seulement des valeurs séparées par ";;".
176
	 * Si l'élément existe déjà, il ne sera pas ajouté.
177
	 *
178
	 * @param champ le nom du champ dénormalisé
179
	 * @param valeur la valeur à ajouter
180
	 */
181
	protected void ajouterChaineDenormalise(String champ, Object valeur) {
182
		if (valeur instanceof String) {
183
			String chaineExistante = renvoyerValeurCorrecte(champ);
1369 cyprien 184
			if (UtilString.isEmpty(chaineExistante)) {
242 jp_milcent 185
				this.set(champ, valeur);
186
			} else {
187
				// Si la valeur à ajouter n'est pas déjà présente, nous l'ajoutons
789 jpm 188
				if (!chaineExistante.matches("(^|"+SEPARATEUR_VALEURS+")"+valeur+"("+SEPARATEUR_VALEURS+"|$)")) {
189
					this.set(champ, chaineExistante+SEPARATEUR_VALEURS+valeur);
242 jp_milcent 190
				}
191
			}
192
		}
193
	}
194
 
195
	/**
233 jp_milcent 196
	 * Permet de constuire correctement une chaine dénormalisée unique (champ de type "ce_truk").
197
	 *
198
	 * @param champ le nom du champ dénormalisé
199
	 * @param type le type de la valeur à ajouter
200
	 * @param valeur la valeur à ajouter
201
	 */
793 jpm 202
	protected void setChaineDenormaliseUnique(String champ, String type, String valeur) {
1369 cyprien 203
		if (valeur == null || UtilString.isEmpty(valeur)) {
608 jp_milcent 204
			this.set(champ, "");
205
		} else if (valeur instanceof String) {
793 jpm 206
			if (((String) valeur).matches("^[0-9]+$")) {
207
				this.set(champ, valeur);
208
			} else {
209
				this.set(champ, type+SEPARATEUR_TYPE_VALEUR+valeur);
210
			}
233 jp_milcent 211
		}
212
	}
213
 
245 jp_milcent 214
	/**
215
	 * Permet de récupérer pour l'affichage une chaine dénormalisée unique (champ de type "ce_truk").
216
	 *
217
	 * @param champ le nom du champ dénormalisé
218
	 */
219
	protected String getChaineDenormaliseUnique(String champ) {
793 jpm 220
		String valeur = renvoyerValeurCorrecte(champ);
245 jp_milcent 221
 
1369 cyprien 222
		if (!UtilString.isEmpty(valeur)) {
793 jpm 223
			valeur = valeur.replaceFirst("^"+TYPE_AUTRE+SEPARATEUR_TYPE_VALEUR, "");
245 jp_milcent 224
		}
225
 
793 jpm 226
		return valeur;
245 jp_milcent 227
	}
228
 
208 jp_milcent 229
	protected String getInfoDenormaliseParType(String chaineExistante, String type) {
230
		String sortie = "";
1369 cyprien 231
		if (!UtilString.isEmpty(chaineExistante)) {
789 jpm 232
			String[] valeurs = chaineExistante.split(SEPARATEUR_VALEURS);
208 jp_milcent 233
			for (int i = 0; i < valeurs.length; i++) {
789 jpm 234
				if (valeurs[i].startsWith(type+SEPARATEUR_TYPE_VALEUR)) {
235
					sortie =  valeurs[i].replaceFirst("^"+type+SEPARATEUR_TYPE_VALEUR, "");
208 jp_milcent 236
				}
237
			}
238
		}
239
		return sortie;
240
	}
241
 
248 gduche 242
 
233 jp_milcent 243
	/**
248 gduche 244
	 * Permet de récupérer une map avec toutes les valeurs de la chaine truk sous la forme clé => valeur
245
	 *
246
	 * @param champ le nom du champ dénormalisé
247
	 * @return map ou liste en fonction du type de chaine truk (list si champ;;champ;; map si type##champ;;)
248
	 */
249
 
250
	public Object getChaineDenormaliseAsMapOrList(String champ)	{
251
 
252
			Object retourObjet = null;
253
 
254
			String valeurChamp = renvoyerValeurCorrecte(champ);
252 gduche 255
 
256
			if ((valeurChamp!=null)&&(!valeurChamp.trim().equals("")))	{
789 jpm 257
				String[] valeurs = valeurChamp.split(SEPARATEUR_VALEURS);
252 gduche 258
 
259
				if (valeurs.length > 0)	{
789 jpm 260
					if (valeurs[0].contains(SEPARATEUR_TYPE_VALEUR))	{
252 gduche 261
						// Les champs sont typés, on en fait une Map
748 jpm 262
						HashMap<String,String> mapValeurs = new HashMap<String,String>();
252 gduche 263
						for (int i = 0; i < valeurs.length; i++)	{
789 jpm 264
							String typeEtValeur[] = valeurs[i].split(SEPARATEUR_TYPE_VALEUR);
265
							mapValeurs.put(typeEtValeur[1], typeEtValeur[0]);
252 gduche 266
						}
267
						retourObjet = mapValeurs;
248 gduche 268
					}
252 gduche 269
					else	{
270
 
271
						//Les champs ne sont pas typés, on en fait une Liste
748 jpm 272
						LinkedList<String> listeValeurs = new LinkedList<String>();
252 gduche 273
						for (int i = 0; i < valeurs.length; i++)	{
274
							if ((valeurs[i]!=null)&&(!valeurs[i].equals("")))	{
275
								listeValeurs.add(valeurs[i]);
276
							}
249 gduche 277
						}
252 gduche 278
						retourObjet = listeValeurs;
248 gduche 279
					}
252 gduche 280
 
248 gduche 281
				}
282
			}
283
 
284
			return retourObjet;
285
 
286
	}
287
 
288
 
289
	/**
233 jp_milcent 290
	 * Permet de modifier correctement une chaine dénormalisée (champ de type "truk").
291
	 * Remplace par la valeur de la première instance du type indiqué dans la chaine dénormalisée.
602 jp_milcent 292
	 * Si aucun type n'est trouvé, nous en ajoutons un avec la nouvelle valeur.
233 jp_milcent 293
	 *
294
	 * @param champ le nom du champ dénormalisé
295
	 * @param type le type de la valeur à modifier
296
	 * @param valeur la valeur pour le type en question
297
	 */
242 jp_milcent 298
	protected void modifierChaineDenormaliseParType(String champ, String type, Object valeur) {
608 jp_milcent 299
		if (valeur == null || valeur.equals("")) {
602 jp_milcent 300
			supprimerTypeDansChaineDenormalise(champ, type);
301
		} else if (valeur instanceof String) {
233 jp_milcent 302
			String chaineExistante = renvoyerValeurCorrecte(champ);
602 jp_milcent 303
 
1369 cyprien 304
			if (UtilString.isEmpty(chaineExistante)) {
789 jpm 305
				this.set(champ, type+SEPARATEUR_TYPE_VALEUR+valeur);
233 jp_milcent 306
			} else {
789 jpm 307
				String[] valeurs = chaineExistante.split(SEPARATEUR_VALEURS);
602 jp_milcent 308
				HashMap<String,String> valeursModifiees = new HashMap<String,String>();
233 jp_milcent 309
				for (int i = 0; i < valeurs.length; i++) {
789 jpm 310
					if (valeurs[i].startsWith(type+SEPARATEUR_TYPE_VALEUR)) {
311
						valeursModifiees.put(type, type+SEPARATEUR_TYPE_VALEUR+valeur);
312
					} else if (i == (valeurs.length -1) && !valeurs[i].startsWith(type+SEPARATEUR_TYPE_VALEUR)) {
313
						valeursModifiees.put(valeurs[i].split(SEPARATEUR_TYPE_VALEUR)[0], valeurs[i]);
314
						valeursModifiees.put(type, type+SEPARATEUR_TYPE_VALEUR+valeur);
602 jp_milcent 315
					} else {
789 jpm 316
						valeursModifiees.put(valeurs[i].split(SEPARATEUR_TYPE_VALEUR)[0], valeurs[i]);
233 jp_milcent 317
					}
318
				}
602 jp_milcent 319
				String[] tableauValeursModifiees = valeursModifiees.values().toArray(new String[valeursModifiees.size()]);
789 jpm 320
				this.set(champ, UtilArray.implode(tableauValeursModifiees, SEPARATEUR_VALEURS));
233 jp_milcent 321
			}
322
		}
323
	}
324
 
208 jp_milcent 325
	protected String getInfoDenormaliseParPosition(String chaineExistante, int position) {
326
		String sortie = "";
1369 cyprien 327
		if (!UtilString.isEmpty(chaineExistante)) {
789 jpm 328
			String[] valeurs = chaineExistante.split(SEPARATEUR_VALEURS);
208 jp_milcent 329
			if (valeurs.length >= position) {
330
				for (int i = 0; i < valeurs.length; i++) {
331
					if (i == (position - 1)) {
789 jpm 332
						if (valeurs[i].contains(SEPARATEUR_TYPE_VALEUR)) {
333
							sortie = valeurs[i].replaceFirst("^[^#]+"+SEPARATEUR_VALEURS, "");
208 jp_milcent 334
						} else {
603 jp_milcent 335
							sortie = valeurs[i];
208 jp_milcent 336
						}
337
						break;
338
					}
339
				}
340
			}
341
		}
342
		return sortie;
343
	}
344
 
233 jp_milcent 345
	/**
346
	 * Permet de modifier correctement une chaine dénormalisée (champ de type "truk").
347
	 * Remplace par la valeur l'instance dont la position a été indiquée.
242 jp_milcent 348
	 * Si la chaine dénormalisée est vide, l'élement est ajouté quelque soit la position indiquée.
349
	 * Si la position est supérieure au nombre d'élément de la chaine dénormalisé, rien n'est modifié.
233 jp_milcent 350
	 *
351
	 * @param champ le nom du champ dénormalisé
352
	 * @param position le type de la valeur à modifier
353
	 * @param valeur la valeur à remplacer à la position indiquée
354
	 */
242 jp_milcent 355
	protected void modifierChaineDenormaliseParPosition(String champ, int position, Object valeur) {
608 jp_milcent 356
		if (valeur == null || valeur.equals("")) {
603 jp_milcent 357
			supprimerChaineDenormaliseParPosition(champ, position);
358
		} else if (valeur instanceof String) {
233 jp_milcent 359
			String chaineExistante = renvoyerValeurCorrecte(champ);
1369 cyprien 360
			if (UtilString.isEmpty(chaineExistante)) {
603 jp_milcent 361
				this.set(champ, valeur);
362
			} else {
789 jpm 363
				String[] valeurs = chaineExistante.split(SEPARATEUR_VALEURS);
603 jp_milcent 364
				if (valeurs.length >= position) {
233 jp_milcent 365
					for (int i = 0; i < valeurs.length; i++) {
366
						if (i == (position - 1)) {
367
							valeurs[i] = (String) valeur;
368
							break;
369
						}
370
					}
789 jpm 371
					this.set(champ, UtilArray.implode(valeurs, SEPARATEUR_VALEURS));
233 jp_milcent 372
				}
373
			}
374
		}
375
	}
376
 
603 jp_milcent 377
	protected void supprimerChaineDenormaliseParPosition(String champ, int position) {
378
		String chaineExistante = renvoyerValeurCorrecte(champ);
1369 cyprien 379
		if (!UtilString.isEmpty(chaineExistante)) {
789 jpm 380
			String[] valeurs = chaineExistante.split(SEPARATEUR_VALEURS);
603 jp_milcent 381
			HashMap<String,String> valeursModifiees = new HashMap<String,String>();
382
			if (valeurs.length >= position) {
383
				for (int i = 0; i < valeurs.length; i++) {
384
					if (i != (position - 1)) {
385
						valeursModifiees.put(""+i, valeurs[i]);
386
					}
387
				}
388
				String[] tableauValeursModifiees = valeursModifiees.values().toArray(new String[valeursModifiees.size()]);
789 jpm 389
				this.set(champ, UtilArray.implode(tableauValeursModifiees, SEPARATEUR_VALEURS));
603 jp_milcent 390
			}
391
		}
392
	}
393
 
193 jp_milcent 394
	/** (non-Javadoc)
395
	 * @see java.lang.Object#toString()
396
	 */
397
	public String toString() {
398
		String sortie = "";
399
 
400
		// Champs du BaseModelData
401
		Set<String> proprietes = this.getProperties().keySet();
306 jp_milcent 402
		TreeSet<String> proprietesTriees = new TreeSet<String>(proprietes);
403
		for (Iterator<String> it = proprietesTriees.iterator(); it.hasNext();) {
193 jp_milcent 404
			String cle = it.next();
306 jp_milcent 405
			if (this.get(cle) != null && !this.get(cle).equals("")) {
949 jpm 406
				sortie += cle+" : "+this.get(cle).toString()+"\n";
202 jp_milcent 407
			}
193 jp_milcent 408
		}
409
 
410
		return sortie;
411
	}
306 jp_milcent 412
 
413
	public Boolean comparer(BaseModelData objetAComparer) {
414
		Boolean retour = true;
415
		Map<String, Object> a = this.getProperties();
416
		Map<String, Object> b = objetAComparer.getProperties();
417
		if (a.size() != b.size()) {
418
			retour = false;
419
		} else {
420
			Set<String> cles = a.keySet();
421
			Iterator<String> it = cles.iterator();
422
			while (it.hasNext()) {
423
				String cle = it.next();
424
				if (a.get(cle) != null && !a.get(cle).equals(b.get(cle))) {
425
					retour = false;
426
					break;
427
				}
428
			}
429
		}
430
		return retour;
431
	}
432
 
433
	public Object cloner(BaseModelData nouvelleInstance) {
434
		Map<String, Object> proprietes = this.getProperties();
435
		Set<String> cles = proprietes.keySet();
436
		for (Iterator<String> it = cles.iterator(); it.hasNext();) {
437
			String cle = it.next();
438
			nouvelleInstance.set(cle, this.get(cle));
439
		}
440
 
441
		return nouvelleInstance;
442
	}
385 gduche 443
 
444
	/**
748 jpm 445
	 * Renvoie une chaîne de caractère formatée et encodée pour POST avec toutes les propriétés du modèle
385 gduche 446
	 * */
748 jpm 447
	public String obtenirChainePOST() {
1292 cyprien 448
 
748 jpm 449
		String post = "";
385 gduche 450
 
748 jpm 451
		FastMap<?> proprietees = (FastMap<?>) getProperties();
452
		Collection<String> cles = proprietees.keySet();
453
		Iterator<String> it = cles.iterator();
385 gduche 454
 
455
		while (it.hasNext())	{
748 jpm 456
			String cle = it.next();
1292 cyprien 457
			//Les Radio Box couplées à la fonction autobind créent des variables gxt.RadioGroup.X, qu'il ne faut pas mettre dans la requête
974 gduche 458
			if (!cle.startsWith("gxt.")&&!cle.matches("^_.+_$"))	{
1173 jpm 459
 
460
				//Si, et seulement si, la valeur diffère de la valeur initiale OU la clé est dans les champs obligatoire
1292 cyprien 461
				if (Arrays.asList(getChampsObligatoires()).contains(getPrefixe() + "_" + cle) || ((valeursInitiales.get(cle) != null && !valeursInitiales.get(cle).equals(get(cle))) || valeursInitiales.get(cle) == null))	{
1173 jpm 462
					post += getPrefixe() + "_" +  cle + "=" + URL.encodeComponent(renvoyerValeurCorrecte(cle));
463
					if (it.hasNext())	{
464
						post += "&";
465
					}
826 gduche 466
				}
385 gduche 467
			}
468
		}
1292 cyprien 469
 
748 jpm 470
		return post;
786 jpm 471
	}
472
 
473
	/**
474
	 * Met à jour l'objet this avec les données de l'objet passé en paramêtre.
475
	 *
476
	 * */
477
	public void mettreAJour(aDonnee nouveau) {
478
		Collection<String> cles = nouveau.getProperties().keySet();
479
		Iterator<String> it = cles.iterator();
480
		while (it.hasNext())	{
481
			String cle = it.next();
482
			if (!this.get(cle).equals(nouveau.get(cle))) {
483
				this.set(cle, nouveau.get(cle));
484
			}
485
		}
486
	}
69 jpm 487
}