Subversion Repositories eFlore/Applications.coel

Rev

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