Subversion Repositories eFlore/Applications.coel

Rev

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