Subversion Repositories eFlore/Applications.coel

Rev

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