Subversion Repositories eFlore/Applications.coel

Rev

Rev 385 | Rev 534 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 385 Rev 471
1
package org.tela_botanica.client.modeles;
1
package org.tela_botanica.client.modeles;
2
 
2
 
3
import java.io.Serializable;
3
import java.io.Serializable;
4
import java.util.Collection;
4
import java.util.Collection;
5
import java.util.Collections;
5
import java.util.Collections;
6
import java.util.HashMap;
6
import java.util.HashMap;
7
import java.util.Iterator;
7
import java.util.Iterator;
8
import java.util.LinkedList;
8
import java.util.LinkedList;
9
import java.util.List;
9
import java.util.List;
10
import java.util.Map;
10
import java.util.Map;
11
import java.util.Set;
11
import java.util.Set;
12
import java.util.TreeSet;
12
import java.util.TreeSet;
13
 
13
 
14
import org.tela_botanica.client.util.UtilArray;
14
import org.tela_botanica.client.util.UtilArray;
15
 
15
 
16
import com.extjs.gxt.ui.client.data.BaseModelData;
16
import com.extjs.gxt.ui.client.data.BaseModelData;
17
import com.google.gwt.http.client.URL;
17
import com.google.gwt.http.client.URL;
18
 
18
 
19
/**
19
/**
20
 * @author jpm
20
 * @author jpm
21
 *
21
 *
22
 */
22
 */
23
public abstract class aDonnee extends BaseModelData implements Serializable {
23
public abstract class aDonnee extends BaseModelData implements Serializable {
24
 
24
 
25
	/**
25
	/**
26
	 * Identifiant pour sérialisé l'objet...
26
	 * Identifiant pour sérialisé l'objet...
27
	 */
27
	 */
28
	private static final long serialVersionUID = 3527760464061629791L;
28
	private static final long serialVersionUID = 3527760464061629791L;
29
 
29
 
30
	/**
30
	/**
31
	 * Pour éviter que l'on traite des valeurs nulles à l'affichage on passe par
31
	 * Pour éviter que l'on traite des valeurs nulles à l'affichage on passe par
32
	 * cette fonction qui retire les charactères nuls qui font planter
32
	 * cette fonction qui retire les charactères nuls qui font planter
33
	 * l'affichage, il ne faut pas utiliser get directement
33
	 * l'affichage, il ne faut pas utiliser get directement
34
	 * 
34
	 * 
35
	 * @param cle
35
	 * @param cle
36
	 * @return la valeur associée à la clé
36
	 * @return la valeur associée à la clé
37
	 */
37
	 */
38
	protected String renvoyerValeurCorrecte(String cle) {
38
	protected String renvoyerValeurCorrecte(String cle) {
39
		String sortie = "";
39
		String sortie = "";
40
		if (this.get(cle) != null) {
40
		if (this.get(cle) != null) {
41
			String valeur = this.get(cle);
41
			String valeur = this.get(cle);
42
			if (! valeur.equals("null")) {
42
			if (! valeur.equals("null")) {
43
				char nullChar = '\u0000';
43
				char nullChar = '\u0000';
44
				String sNull = "" + nullChar;
44
				String sNull = "" + nullChar;
45
				valeur = valeur.replaceAll(sNull, "");
45
				valeur = valeur.replaceAll(sNull, "");
46
				sortie =  valeur;
46
				sortie =  valeur;
47
			}
47
			}
48
		}
48
		}
49
		return sortie;
49
		return sortie;
50
	}
50
	}
51
	
51
	
52
	/**
52
	/**
53
	 * Ajoute un nouvel élément avec son type à une chaine dénormalisée.
53
	 * Ajoute un nouvel élément avec son type à une chaine dénormalisée.
54
	 * Champ de type "truk" contenant des valeurs séparées par ";;" qui elle même possèdent un type séparé par "##".
54
	 * Champ de type "truk" contenant des valeurs séparées par ";;" qui elle même possèdent un type séparé par "##".
55
	 * Si l'élément existe déjà, il ne sera pas ajouté.
55
	 * Si l'élément existe déjà, il ne sera pas ajouté.
56
	 * 
56
	 * 
57
	 * @param champ le nom du champ dénormalisé
57
	 * @param champ le nom du champ dénormalisé
58
	 * @param type le type de la valeur à ajouter
58
	 * @param type le type de la valeur à ajouter
59
	 * @param valeur la valeur à ajouter
59
	 * @param valeur la valeur à ajouter
60
	 */
60
	 */
61
	protected void ajouterChaineDenormaliseAvecType(String champ, String type, Object valeur) {
61
	protected void ajouterChaineDenormaliseAvecType(String champ, String type, Object valeur) {
62
		if (valeur instanceof String) {
62
		if (valeur instanceof String) {
63
			String chaineExistante = renvoyerValeurCorrecte(champ);
63
			String chaineExistante = renvoyerValeurCorrecte(champ);
64
			if (chaineExistante.equals("")) {
64
			if (chaineExistante.equals("")) {
65
				this.set(champ, type+"##"+valeur);
65
				this.set(champ, type+"##"+valeur);
66
			} else {
66
			} else {
67
				// Si la valeur à ajouter n'est pas déjà présente, nous l'ajoutons
67
				// Si la valeur à ajouter n'est pas déjà présente, nous l'ajoutons
68
				if (!chaineExistante.matches("(^|;;)"+type+"##"+valeur+"(;;|$)")) {
68
				if (!chaineExistante.matches("(^|;;)"+type+"##"+valeur+"(;;|$)")) {
69
					this.set(champ, chaineExistante+";;"+type+"##"+valeur);
69
					this.set(champ, chaineExistante+";;"+type+"##"+valeur);
70
				}
70
				}
71
			}
71
			}
72
		}
72
		}
73
	}
73
	}
74
	
74
	
75
	protected void supprimerTypeDansChaineDenormalise(String champ, String type) {
75
	protected void supprimerTypeDansChaineDenormalise(String champ, String type) {
76
		String chaineExistante = renvoyerValeurCorrecte(champ);
76
		String chaineExistante = renvoyerValeurCorrecte(champ);
77
		if (!chaineExistante.equals("")) {
77
		if (!chaineExistante.equals("")) {
78
			// Si la valeur à ajouter n'est pas déjà présente, nous l'ajoutons
78
			// Si la valeur à ajouter n'est pas déjà présente, nous l'ajoutons
79
			if (chaineExistante.matches("(^|;;)"+type+"##")) {
79
			if (chaineExistante.matches("(^|;;)"+type+"##")) {
80
				chaineExistante = chaineExistante.replaceFirst(type+"##", "");
80
				chaineExistante = chaineExistante.replaceFirst(type+"##", "");
81
				chaineExistante = chaineExistante.replaceAll(";;;;", ";;");
81
				chaineExistante = chaineExistante.replaceAll(";;;;", ";;");
82
				chaineExistante = chaineExistante.replaceAll("(^;;|;;$)", "");
82
				chaineExistante = chaineExistante.replaceAll("(^;;|;;$)", "");
83
				this.set(champ, chaineExistante);
83
				this.set(champ, chaineExistante);
84
			}
84
			}
85
		}
85
		}
86
	}
86
	}
87
	
87
	
88
	protected void remplacerTypeDansChaineDenormalise(String champ, String type, Object valeur) {
88
	protected void remplacerTypeDansChaineDenormalise(String champ, String type, Object valeur) {
89
		if (valeur != null && !valeur.equals("")) {
89
		if (valeur != null && !valeur.equals("")) {
90
			ajouterChaineDenormaliseAvecType(champ, type, valeur);
90
			ajouterChaineDenormaliseAvecType(champ, type, valeur);
91
		} else {
91
		} else {
92
			supprimerTypeDansChaineDenormalise(champ, type);
92
			supprimerTypeDansChaineDenormalise(champ, type);
93
		}
93
		}
94
	}
94
	}
95
	/**
95
	/**
96
	 * Ajoute un nouvel élément sans type à une chaine dénormalisée.
96
	 * Ajoute un nouvel élément sans type à une chaine dénormalisée.
97
	 * Champ de type "truk" contenant seulement des valeurs séparées par ";;".
97
	 * Champ de type "truk" contenant seulement des valeurs séparées par ";;".
98
	 * Si l'élément existe déjà, il ne sera pas ajouté.
98
	 * Si l'élément existe déjà, il ne sera pas ajouté.
99
	 * 
99
	 * 
100
	 * @param champ le nom du champ dénormalisé
100
	 * @param champ le nom du champ dénormalisé
101
	 * @param valeur la valeur à ajouter
101
	 * @param valeur la valeur à ajouter
102
	 */
102
	 */
103
	protected void ajouterChaineDenormalise(String champ, Object valeur) {
103
	protected void ajouterChaineDenormalise(String champ, Object valeur) {
104
		if (valeur instanceof String) {
104
		if (valeur instanceof String) {
105
			String chaineExistante = renvoyerValeurCorrecte(champ);
105
			String chaineExistante = renvoyerValeurCorrecte(champ);
106
			if (chaineExistante.equals("")) {
106
			if (chaineExistante.equals("")) {
107
				this.set(champ, valeur);
107
				this.set(champ, valeur);
108
			} else {
108
			} else {
109
				// Si la valeur à ajouter n'est pas déjà présente, nous l'ajoutons
109
				// Si la valeur à ajouter n'est pas déjà présente, nous l'ajoutons
110
				if (!chaineExistante.matches("(^|;;)"+valeur+"(;;|$)")) {
110
				if (!chaineExistante.matches("(^|;;)"+valeur+"(;;|$)")) {
111
					this.set(champ, chaineExistante+";;"+valeur);
111
					this.set(champ, chaineExistante+";;"+valeur);
112
				}
112
				}
113
			}
113
			}
114
		}
114
		}
115
	}
115
	}
116
	
116
	
117
	/**
117
	/**
118
	 * Permet de constuire correctement une chaine dénormalisée unique (champ de type "ce_truk").
118
	 * Permet de constuire correctement une chaine dénormalisée unique (champ de type "ce_truk").
119
	 * 
119
	 * 
120
	 * @param champ le nom du champ dénormalisé
120
	 * @param champ le nom du champ dénormalisé
121
	 * @param type le type de la valeur à ajouter
121
	 * @param type le type de la valeur à ajouter
122
	 * @param valeur la valeur à ajouter
122
	 * @param valeur la valeur à ajouter
123
	 */
123
	 */
124
	protected void setChaineDenormaliseUnique(String champ, String type, Object valeur) {
124
	protected void setChaineDenormaliseUnique(String champ, String type, Object valeur) {
125
		if (valeur instanceof String) {
125
		if (valeur instanceof String) {
126
			this.set(champ, type+"##"+valeur);
126
			this.set(champ, type+"##"+valeur);
127
		}
127
		}
128
	}
128
	}
129
	
129
	
130
	/**
130
	/**
131
	 * Permet de récupérer pour l'affichage une chaine dénormalisée unique (champ de type "ce_truk").
131
	 * Permet de récupérer pour l'affichage une chaine dénormalisée unique (champ de type "ce_truk").
132
	 * 
132
	 * 
133
	 * @param champ le nom du champ dénormalisé
133
	 * @param champ le nom du champ dénormalisé
134
	 */
134
	 */
135
	protected String getChaineDenormaliseUnique(String champ) {
135
	protected String getChaineDenormaliseUnique(String champ) {
136
		String sortie = renvoyerValeurCorrecte(champ);
136
		String sortie = renvoyerValeurCorrecte(champ);
137
		
137
		
138
		if (!sortie.equals("")) {
138
		if (!sortie.equals("")) {
139
			sortie = sortie.replaceFirst("^AUTRE##", "");
139
			sortie = sortie.replaceFirst("^AUTRE##", "");
140
		}
140
		}
141
		
141
		
142
		return sortie;
142
		return sortie;
143
	}
143
	}
144
	
144
	
145
	protected String getInfoDenormaliseParType(String chaineExistante, String type) {
145
	protected String getInfoDenormaliseParType(String chaineExistante, String type) {
146
		String sortie = "";
146
		String sortie = "";
147
		if (!chaineExistante.equals("")) {
147
		if (!chaineExistante.equals("")) {
148
			String[] valeurs = chaineExistante.split(";;");
148
			String[] valeurs = chaineExistante.split(";;");
149
			for (int i = 0; i < valeurs.length; i++) {
149
			for (int i = 0; i < valeurs.length; i++) {
150
				if (valeurs[i].startsWith(type+"##")) {
150
				if (valeurs[i].startsWith(type+"##")) {
151
					sortie =  valeurs[i].replaceFirst("^"+type+"##", "");
151
					sortie =  valeurs[i].replaceFirst("^"+type+"##", "");
152
				}
152
				}
153
			}
153
			}
154
		}
154
		}
155
		return sortie;
155
		return sortie;
156
	}
156
	}
157
	
157
	
158
	
158
	
159
	/**
159
	/**
160
	 * Permet de récupérer une map avec toutes les valeurs de la chaine truk sous la forme clé => valeur
160
	 * Permet de récupérer une map avec toutes les valeurs de la chaine truk sous la forme clé => valeur
161
	 * 
161
	 * 
162
	 * @param champ le nom du champ dénormalisé
162
	 * @param champ le nom du champ dénormalisé
163
	 * @return map ou liste en fonction du type de chaine truk (list si champ;;champ;; map si type##champ;;)
163
	 * @return map ou liste en fonction du type de chaine truk (list si champ;;champ;; map si type##champ;;)
164
	 */
164
	 */
165
	
165
	
166
	public Object getChaineDenormaliseAsMapOrList(String champ)	{
166
	public Object getChaineDenormaliseAsMapOrList(String champ)	{
167
				
167
				
168
			Object retourObjet = null;
168
			Object retourObjet = null;
169
			
169
			
170
			String valeurChamp = renvoyerValeurCorrecte(champ);
170
			String valeurChamp = renvoyerValeurCorrecte(champ);
171
			
171
			
172
			if ((valeurChamp!=null)&&(!valeurChamp.trim().equals("")))	{
172
			if ((valeurChamp!=null)&&(!valeurChamp.trim().equals("")))	{
173
				String[] valeurs = valeurChamp.split(";;");
173
				String[] valeurs = valeurChamp.split(";;");
174
			
174
			
175
				if (valeurs.length > 0)	{
175
				if (valeurs.length > 0)	{
176
					if (valeurs[0].contains("##"))	{
176
					if (valeurs[0].contains("##"))	{
177
						// Les champs sont typés, on en fait une Map
177
						// Les champs sont typés, on en fait une Map
178
						HashMap mapValeurs = new HashMap();
178
						HashMap mapValeurs = new HashMap();
179
						
-
 
180
						for (int i = 0; i < valeurs.length; i++)	{
179
						for (int i = 0; i < valeurs.length; i++)	{
181
							String typeEtValeur[] = valeurs[i].split("##");
180
							String typeEtValeur[] = valeurs[i].split("##");
182
							mapValeurs.put(typeEtValeur[0], typeEtValeur[1]);						
181
							mapValeurs.put(typeEtValeur[1], typeEtValeur[0]);						
183
						}
182
						}
184
						
-
 
185
						retourObjet = mapValeurs;
183
						retourObjet = mapValeurs;
186
					}
184
					}
187
					else	{
185
					else	{
188
						
186
						
189
						//Les champs ne sont pas typés, on en fait une Liste
187
						//Les champs ne sont pas typés, on en fait une Liste
190
						LinkedList listeValeurs = new LinkedList<String>();
188
						LinkedList listeValeurs = new LinkedList<String>();
191
						for (int i = 0; i < valeurs.length; i++)	{
189
						for (int i = 0; i < valeurs.length; i++)	{
192
							if ((valeurs[i]!=null)&&(!valeurs[i].equals("")))	{
190
							if ((valeurs[i]!=null)&&(!valeurs[i].equals("")))	{
193
								listeValeurs.add(valeurs[i]);
191
								listeValeurs.add(valeurs[i]);
194
							}
192
							}
195
						}
193
						}
196
						retourObjet = listeValeurs;
194
						retourObjet = listeValeurs;
197
					}
195
					}
198
					
196
					
199
				}
197
				}
200
			}
198
			}
201
			
199
			
202
			return retourObjet;
200
			return retourObjet;
203
			
201
			
204
	}
202
	}
205
	
203
	
206
	
204
	
207
	/**
205
	/**
208
	 * Permet de modifier correctement une chaine dénormalisée (champ de type "truk").
206
	 * Permet de modifier correctement une chaine dénormalisée (champ de type "truk").
209
	 * Remplace par la valeur de la première instance du type indiqué dans la chaine dénormalisée.
207
	 * Remplace par la valeur de la première instance du type indiqué dans la chaine dénormalisée.
210
	 * 
208
	 * 
211
	 * @param champ le nom du champ dénormalisé
209
	 * @param champ le nom du champ dénormalisé
212
	 * @param type le type de la valeur à modifier
210
	 * @param type le type de la valeur à modifier
213
	 * @param valeur la valeur pour le type en question
211
	 * @param valeur la valeur pour le type en question
214
	 */
212
	 */
215
	protected void modifierChaineDenormaliseParType(String champ, String type, Object valeur) {
213
	protected void modifierChaineDenormaliseParType(String champ, String type, Object valeur) {
216
		if (valeur instanceof String) {
214
		if (valeur instanceof String) {
217
			String chaineExistante = renvoyerValeurCorrecte(champ);
215
			String chaineExistante = renvoyerValeurCorrecte(champ);
218
			if (chaineExistante.equals("")) {
216
			if (chaineExistante.equals("")) {
219
				this.set(champ, type+"##"+valeur);
217
				this.set(champ, type+"##"+valeur);
220
			} else {
218
			} else {
221
				String[] valeurs = chaineExistante.split(";;");
219
				String[] valeurs = chaineExistante.split(";;");
222
				for (int i = 0; i < valeurs.length; i++) {
220
				for (int i = 0; i < valeurs.length; i++) {
223
					if (valeurs[i].startsWith(type+"##") || i == (valeurs.length -1)) {
221
					if (valeurs[i].startsWith(type+"##") || i == (valeurs.length -1)) {
224
						valeurs[i] = type+"##"+valeur;
222
						valeurs[i] = type+"##"+valeur;
225
						break;
223
						break;
226
					}
224
					}
227
				}
225
				}
228
				this.set(champ, UtilArray.implode(valeurs, ";;"));
226
				this.set(champ, UtilArray.implode(valeurs, ";;"));
229
			}
227
			}
230
		}
228
		}
231
	}
229
	}
232
	
230
	
233
	protected String getInfoDenormaliseParPosition(String chaineExistante, int position) {
231
	protected String getInfoDenormaliseParPosition(String chaineExistante, int position) {
234
		String sortie = "";
232
		String sortie = "";
235
		if (!chaineExistante.equals("")) {
233
		if (!chaineExistante.equals("")) {
236
			String[] valeurs = chaineExistante.split(";;");
234
			String[] valeurs = chaineExistante.split(";;");
237
			if (valeurs.length >= position) {
235
			if (valeurs.length >= position) {
238
				for (int i = 0; i < valeurs.length; i++) {
236
				for (int i = 0; i < valeurs.length; i++) {
239
					if (i == (position - 1)) {
237
					if (i == (position - 1)) {
240
						if (valeurs[i].contains("##")) {
238
						if (valeurs[i].contains("##")) {
241
							sortie =  valeurs[i].replaceFirst("^[^#]+##", "");
239
							sortie =  valeurs[i].replaceFirst("^[^#]+##", "");
242
						} else {
240
						} else {
243
							sortie =  valeurs[i];
241
							sortie =  valeurs[i];
244
						}
242
						}
245
						break;
243
						break;
246
					}
244
					}
247
				}
245
				}
248
			}
246
			}
249
		}
247
		}
250
		return sortie;
248
		return sortie;
251
	}
249
	}
252
	
250
	
253
	/**
251
	/**
254
	 * Permet de modifier correctement une chaine dénormalisée (champ de type "truk").
252
	 * Permet de modifier correctement une chaine dénormalisée (champ de type "truk").
255
	 * Remplace par la valeur l'instance dont la position a été indiquée.
253
	 * Remplace par la valeur l'instance dont la position a été indiquée.
256
	 * Si la chaine dénormalisée est vide, l'élement est ajouté quelque soit la position indiquée.
254
	 * Si la chaine dénormalisée est vide, l'élement est ajouté quelque soit la position indiquée.
257
	 * Si la position est supérieure au nombre d'élément de la chaine dénormalisé, rien n'est modifié.
255
	 * Si la position est supérieure au nombre d'élément de la chaine dénormalisé, rien n'est modifié.
258
	 * 
256
	 * 
259
	 * @param champ le nom du champ dénormalisé
257
	 * @param champ le nom du champ dénormalisé
260
	 * @param position le type de la valeur à modifier
258
	 * @param position le type de la valeur à modifier
261
	 * @param valeur la valeur à remplacer à la position indiquée
259
	 * @param valeur la valeur à remplacer à la position indiquée
262
	 */
260
	 */
263
	protected void modifierChaineDenormaliseParPosition(String champ, int position, Object valeur) {
261
	protected void modifierChaineDenormaliseParPosition(String champ, int position, Object valeur) {
264
		if (valeur instanceof String) {
262
		if (valeur instanceof String) {
265
			String chaineExistante = renvoyerValeurCorrecte(champ);
263
			String chaineExistante = renvoyerValeurCorrecte(champ);
266
			if (!chaineExistante.equals("")) {
264
			if (!chaineExistante.equals("")) {
267
				String[] valeurs = chaineExistante.split(";;");
265
				String[] valeurs = chaineExistante.split(";;");
268
				if (valeurs.length == 0) {
266
				if (valeurs.length == 0) {
269
					this.set(champ, valeur);
267
					this.set(champ, valeur);
270
				} else if (valeurs.length >= position) {
268
				} else if (valeurs.length >= position) {
271
					for (int i = 0; i < valeurs.length; i++) {
269
					for (int i = 0; i < valeurs.length; i++) {
272
						if (i == (position - 1)) {
270
						if (i == (position - 1)) {
273
							valeurs[i] = (String) valeur;
271
							valeurs[i] = (String) valeur;
274
							break;
272
							break;
275
						}
273
						}
276
					}
274
					}
277
					this.set(champ, UtilArray.implode(valeurs, ";;"));
275
					this.set(champ, UtilArray.implode(valeurs, ";;"));
278
				}
276
				}
279
			}
277
			}
280
		}
278
		}
281
	}
279
	}
282
	
280
	
283
	public String getDateModification() {
281
	public String getDateModification() {
284
		return (String) renvoyerValeurCorrecte("cmhl_date_modification");
282
		return (String) renvoyerValeurCorrecte("cmhl_date_modification");
285
	}
283
	}
286
	
284
	
287
	public String getNotes() {
285
	public String getNotes() {
288
		return (String) renvoyerValeurCorrecte("cmhl_notes");
286
		return (String) renvoyerValeurCorrecte("cmhl_notes");
289
	}
287
	}
290
	
288
	
291
	public String getIdModifierPar() {
289
	public String getIdModifierPar() {
292
		return (String) renvoyerValeurCorrecte("cmhl_ce_modifier_par");
290
		return (String) renvoyerValeurCorrecte("cmhl_ce_modifier_par");
293
	}
291
	}
294
	
292
	
295
	public String getIdEtat() {
293
	public String getIdEtat() {
296
		return (String) renvoyerValeurCorrecte("cmhl_ce_etat");
294
		return (String) renvoyerValeurCorrecte("cmhl_ce_etat");
297
	}
295
	}
298
	
296
	
299
	public String getIp() {
297
	public String getIp() {
300
		return (String) renvoyerValeurCorrecte("cmhl_ip");
298
		return (String) renvoyerValeurCorrecte("cmhl_ip");
301
	}
299
	}
302
	
300
	
303
	/** (non-Javadoc)
301
	/** (non-Javadoc)
304
	 * @see java.lang.Object#toString()
302
	 * @see java.lang.Object#toString()
305
	 */
303
	 */
306
	public String toString() {
304
	public String toString() {
307
		String sortie = "";
305
		String sortie = "";
308
		
306
		
309
		// Champs du BaseModelData
307
		// Champs du BaseModelData
310
		Set<String> proprietes = this.getProperties().keySet();
308
		Set<String> proprietes = this.getProperties().keySet();
311
		TreeSet<String> proprietesTriees = new TreeSet<String>(proprietes);
309
		TreeSet<String> proprietesTriees = new TreeSet<String>(proprietes);
312
		for (Iterator<String> it = proprietesTriees.iterator(); it.hasNext();) {
310
		for (Iterator<String> it = proprietesTriees.iterator(); it.hasNext();) {
313
			String cle = it.next();
311
			String cle = it.next();
314
			if (this.get(cle) != null && !this.get(cle).equals("")) {
312
			if (this.get(cle) != null && !this.get(cle).equals("")) {
315
				sortie += cle+" : "+this.get(cle)+"\n";
313
				sortie += cle+" : "+this.get(cle)+"\n";
316
			}
314
			}
317
		}
315
		}
318
		
316
		
319
		return sortie;
317
		return sortie;
320
	}
318
	}
321
	
319
	
322
	public Boolean comparer(BaseModelData objetAComparer) {
320
	public Boolean comparer(BaseModelData objetAComparer) {
323
		Boolean retour = true;
321
		Boolean retour = true;
324
		Map<String, Object> a = this.getProperties();
322
		Map<String, Object> a = this.getProperties();
325
		Map<String, Object> b = objetAComparer.getProperties();
323
		Map<String, Object> b = objetAComparer.getProperties();
326
		if (a.size() != b.size()) {
324
		if (a.size() != b.size()) {
327
			retour = false;
325
			retour = false;
328
		} else {
326
		} else {
329
			Set<String> cles = a.keySet();
327
			Set<String> cles = a.keySet();
330
			Iterator<String> it = cles.iterator();
328
			Iterator<String> it = cles.iterator();
331
			while (it.hasNext()) {
329
			while (it.hasNext()) {
332
				String cle = it.next();
330
				String cle = it.next();
333
				if (a.get(cle) != null && !a.get(cle).equals(b.get(cle))) {
331
				if (a.get(cle) != null && !a.get(cle).equals(b.get(cle))) {
334
					retour = false;
332
					retour = false;
335
					break;
333
					break;
336
				}
334
				}
337
			}
335
			}
338
		}
336
		}
339
		
337
		
340
		return retour;
338
		return retour;
341
	}
339
	}
342
	
340
	
343
	public Object cloner(BaseModelData nouvelleInstance) {
341
	public Object cloner(BaseModelData nouvelleInstance) {
344
		Map<String, Object> proprietes = this.getProperties();
342
		Map<String, Object> proprietes = this.getProperties();
345
		Set<String> cles = proprietes.keySet();
343
		Set<String> cles = proprietes.keySet();
346
		for (Iterator<String> it = cles.iterator(); it.hasNext();) {
344
		for (Iterator<String> it = cles.iterator(); it.hasNext();) {
347
			String cle = it.next();
345
			String cle = it.next();
348
			nouvelleInstance.set(cle, this.get(cle));
346
			nouvelleInstance.set(cle, this.get(cle));
349
		}
347
		}
350
		
348
		
351
		return nouvelleInstance;
349
		return nouvelleInstance;
352
	}
350
	}
353
	
351
	
354
	/**
352
	/**
355
	 * Renvoie une chaine de caractère formatée et encodée pour POST avec toutes les propriétés du modèle
353
	 * Renvoie une chaine de caractère formatée et encodée pour POST avec toutes les propriétés du modèle
356
	 * */
354
	 * */
357
	public String obtenirChaineJSON() {
355
	public String obtenirChaineJSON() {
358
		
356
		
359
		String chaineJSON = "";
357
		String chaineJSON = "";
360
		
358
		
361
		HashMap hmProperties = (HashMap) getProperties();
359
		HashMap hmProperties = (HashMap) getProperties();
362
		Collection<String> keys = hmProperties.keySet();
360
		Collection<String> keys = hmProperties.keySet();
363
		Iterator<String> it = keys.iterator();
361
		Iterator<String> it = keys.iterator();
364
		
362
		
365
		while (it.hasNext())	{
363
		while (it.hasNext())	{
366
			String key = it.next();
364
			String key = it.next();
367
			chaineJSON += "cp_" +  key + "=" + hmProperties.get(key);
365
			chaineJSON += "cp_" +  key + "=" + hmProperties.get(key);
368
			if (it.hasNext())	{
366
			if (it.hasNext())	{
369
				chaineJSON += "&";
367
				chaineJSON += "&";
370
			}
368
			}
371
		}
369
		}
372
		
370
		
373
		URL.encode(chaineJSON);
371
		URL.encode(chaineJSON);
374
		return chaineJSON;
372
		return chaineJSON;
375
	} 
373
	} 
376
}
374
}