Subversion Repositories eFlore/Applications.coel

Rev

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

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