Subversion Repositories eFlore/Applications.coel

Rev

Rev 245 | Rev 249 | 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);
147
			String[] valeurs = valeurChamp.split(";;");
148
			if (valeurs.length > 0)	{
149
				if (valeurs[0].contains("##"))	{
150
					// Les champs sont typés, on en fait une Map
151
					HashMap mapValeurs = new HashMap();
152
 
153
					for (int i = 0; i < valeurs.length; i++)	{
154
						String typeEtValeur[] = valeurs[i].split("##");
155
						mapValeurs.put(typeEtValeur[0], typeEtValeur[1]);
156
					}
157
 
158
					retourObjet = mapValeurs;
159
				}
160
				else	{
161
 
162
					//Les champs ne sont pas typés, on en fait une Liste
163
					LinkedList listeValeurs = new LinkedList<String>();
164
					for (int i = 0; i < valeurs.length; i++)	{
165
						listeValeurs.add(valeurs[i]);
166
					}
167
					retourObjet = listeValeurs;
168
				}
169
 
170
			}
171
 
172
			return retourObjet;
173
 
174
	}
175
 
176
 
177
	/**
233 jp_milcent 178
	 * Permet de modifier correctement une chaine dénormalisée (champ de type "truk").
179
	 * Remplace par la valeur de la première instance du type indiqué dans la chaine dénormalisée.
180
	 *
181
	 * @param champ le nom du champ dénormalisé
182
	 * @param type le type de la valeur à modifier
183
	 * @param valeur la valeur pour le type en question
184
	 */
242 jp_milcent 185
	protected void modifierChaineDenormaliseParType(String champ, String type, Object valeur) {
233 jp_milcent 186
		if (valeur instanceof String) {
187
			String chaineExistante = renvoyerValeurCorrecte(champ);
188
			if (chaineExistante.equals("")) {
189
				this.set(champ, type+"##"+valeur);
190
			} else {
191
				String[] valeurs = chaineExistante.split(";;");
192
				for (int i = 0; i < valeurs.length; i++) {
193
					if (valeurs[i].startsWith(type+"##") || i == (valeurs.length -1)) {
194
						valeurs[i] = type+"##"+valeur;
195
						break;
196
					}
197
				}
198
				this.set(champ, UtilArray.implode(valeurs, ";;"));
199
			}
200
		}
201
	}
202
 
208 jp_milcent 203
	protected String getInfoDenormaliseParPosition(String chaineExistante, int position) {
204
		String sortie = "";
205
		if (!chaineExistante.equals("")) {
206
			String[] valeurs = chaineExistante.split(";;");
207
			if (valeurs.length >= position) {
208
				for (int i = 0; i < valeurs.length; i++) {
209
					if (i == (position - 1)) {
210
						if (valeurs[i].contains("##")) {
211
							sortie =  valeurs[i].replaceFirst("^[^#]+##", "");
212
						} else {
213
							sortie =  valeurs[i];
214
						}
215
						break;
216
					}
217
				}
218
			}
219
		}
220
		return sortie;
221
	}
222
 
233 jp_milcent 223
	/**
224
	 * Permet de modifier correctement une chaine dénormalisée (champ de type "truk").
225
	 * Remplace par la valeur l'instance dont la position a été indiquée.
242 jp_milcent 226
	 * Si la chaine dénormalisée est vide, l'élement est ajouté quelque soit la position indiquée.
227
	 * Si la position est supérieure au nombre d'élément de la chaine dénormalisé, rien n'est modifié.
233 jp_milcent 228
	 *
229
	 * @param champ le nom du champ dénormalisé
230
	 * @param position le type de la valeur à modifier
231
	 * @param valeur la valeur à remplacer à la position indiquée
232
	 */
242 jp_milcent 233
	protected void modifierChaineDenormaliseParPosition(String champ, int position, Object valeur) {
233 jp_milcent 234
		if (valeur instanceof String) {
235
			String chaineExistante = renvoyerValeurCorrecte(champ);
236
			if (!chaineExistante.equals("")) {
237
				String[] valeurs = chaineExistante.split(";;");
238
				if (valeurs.length == 0) {
239
					this.set(champ, valeur);
240
				} else if (valeurs.length >= position) {
241
					for (int i = 0; i < valeurs.length; i++) {
242
						if (i == (position - 1)) {
243
							valeurs[i] = (String) valeur;
244
							break;
245
						}
246
					}
247
					this.set(champ, UtilArray.implode(valeurs, ";;"));
248
				}
249
			}
250
		}
251
	}
252
 
119 jpm 253
	public String getDateModification() {
254
		return (String) renvoyerValeurCorrecte("cmhl_date_modification");
255
	}
256
 
257
	public String getNotes() {
258
		return (String) renvoyerValeurCorrecte("cmhl_notes");
259
	}
260
 
261
	public String getIdModifierPar() {
262
		return (String) renvoyerValeurCorrecte("cmhl_ce_modifier_par");
263
	}
264
 
265
	public String getIdEtat() {
266
		return (String) renvoyerValeurCorrecte("cmhl_ce_etat");
267
	}
268
 
269
	public String getIp() {
270
		return (String) renvoyerValeurCorrecte("cmhl_ip");
271
	}
193 jp_milcent 272
 
273
	/** (non-Javadoc)
274
	 * @see java.lang.Object#toString()
275
	 */
276
	public String toString() {
277
		String sortie = "";
278
 
279
		// Champs du BaseModelData
280
		Set<String> proprietes = this.getProperties().keySet();
281
		for (Iterator<String> it = proprietes.iterator(); it.hasNext();) {
282
			String cle = it.next();
202 jp_milcent 283
			if (!this.get(cle).equals("")) {
284
				sortie += cle+" : "+this.get(cle)+"\n";
285
			}
193 jp_milcent 286
		}
287
 
288
		return sortie;
289
	}
69 jpm 290
}