Subversion Repositories eFlore/Applications.coel

Rev

Rev 1764 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1764 Rev 1896
1
package org.tela_botanica.client.modeles.publication;
1
package org.tela_botanica.client.modeles.publication;
2
 
2
 
3
import java.util.ArrayList;
3
import java.util.ArrayList;
-
 
4
import java.util.HashMap;
4
import java.util.Iterator;
5
import java.util.Iterator;
5
import java.util.Map;
6
import java.util.Map;
6
import java.util.Set;
7
import java.util.Set;
7
 
8
 
8
import org.tela_botanica.client.modeles.aDonnee;
9
import org.tela_botanica.client.modeles.aDonnee;
9
import org.tela_botanica.client.modeles.structure.Structure;
10
import org.tela_botanica.client.modeles.structure.Structure;
-
 
11
import org.tela_botanica.client.util.UtilNombre;
10
import org.tela_botanica.client.util.UtilString;
12
import org.tela_botanica.client.util.UtilString;
11
 
13
 
12
import com.extjs.gxt.ui.client.data.ModelData;
14
import com.extjs.gxt.ui.client.data.ModelData;
13
import com.google.gwt.json.client.JSONObject;
15
import com.google.gwt.json.client.JSONObject;
14
 
16
 
15
public class Publication extends aDonnee {
17
public class Publication extends aDonnee {
16
 
18
 
17
	private static final long serialVersionUID = 4142843068041690126L;
19
	private static final long serialVersionUID = 4142843068041690126L;
18
	public static final String PREFIXE = "cpu";
20
	public static final String PREFIXE = "cpu";
19
	public static String[] champsObligatoires = {"cpu_id_publication"};
21
	public static String[] champsObligatoires = {"cpu_id_publication"};
-
 
22
	
-
 
23
	// Cache de valeurs pour contourner des bugs très compliqué d'affichage
-
 
24
	public static Map<String, String> editeurs = new HashMap<String, String>();
-
 
25
	public static Map<String, Publication> publisSaisiesModifieesCache = new HashMap<String, Publication>();
20
 
26
 
21
	private Structure editeur = null;
27
	private Structure editeur = null;
22
	public ArrayList<String> cles = null;
28
	public ArrayList<String> cles = null;
23
	
29
	
24
	public Publication() {}
30
	public Publication() {}
25
	
31
	
26
	public Publication(boolean removePrefix) {
32
	public Publication(boolean removePrefix) {
27
		this.removePrefix = removePrefix;
33
		this.removePrefix = removePrefix;
28
		cles = new ArrayList<String>();
34
		cles = new ArrayList<String>();
29
		cles.add("id_publication");
35
		cles.add("id_publication");
30
	}
36
	}
31
	
37
	
32
	public Publication(JSONObject publication) {
38
	public Publication(JSONObject publication) {
33
		initialiserModele(publication);
39
		initialiserModele(publication);
34
		editeur = new Structure(publication);
40
		editeur = new Structure(publication);
35
		cles = new ArrayList<String>();
41
		cles = new ArrayList<String>();
36
		cles.add("id_publication");
42
		cles.add("id_publication");
37
	}
43
	}
38
	
44
	
39
	public Publication(ModelData model, boolean removePrefix) {
45
	public Publication(ModelData model, boolean removePrefix) {
40
		this.removePrefix = removePrefix;
46
		this.removePrefix = removePrefix;
-
 
47
		editeur = new Structure(model);
41
		cles = new ArrayList<String>();
48
		cles = new ArrayList<String>();
42
		cles.add("id_publication");
49
		cles.add("id_publication");
43
		
50
		
44
		Map<String, Object> a = model.getProperties();
51
		Map<String, Object> a = model.getProperties();
45
 
52
 
46
		Set<String> cles = a.keySet();
53
		Set<String> cles = a.keySet();
47
		Iterator<String> it = cles.iterator();
54
		Iterator<String> it = cles.iterator();
48
		while (it.hasNext()) {
55
		while (it.hasNext()) {
49
			String cle = it.next();	
56
			String cle = it.next();	
50
			if (a.get(cle) != null) {
57
			if (a.get(cle) != null) {
51
				String cleObjet = "";
58
				String cleObjet = "";
52
				if (removePrefix) {
59
				if (removePrefix) {
53
					cleObjet = cle.replaceFirst("^"+getPrefixe()+"_", "");
60
					cleObjet = cle.replaceFirst("^"+getPrefixe()+"_", "");
54
				}
61
				}
55
				else {
62
				else {
56
					cleObjet = cle;
63
					cleObjet = cle;
57
					String valeur = "";
64
					String valeur = "";
58
					if (a.get(cle) instanceof Integer) {
65
					if (a.get(cle) instanceof Integer) {
59
						valeur = String.valueOf(a.get(cle));
66
						valeur = String.valueOf(a.get(cle));
60
					} else if (a.get(cle) instanceof String) {
67
					} else if (a.get(cle) instanceof String) {
61
						valeur = (String) a.get(cle);
68
						valeur = (String) a.get(cle);
62
					}
69
					}
63
					traiterClesEtrangeres(cle, valeur);
70
					traiterClesEtrangeres(cle, valeur);
64
				}
71
				}
65
				this.set(cleObjet, a.get(cle));
72
				this.set(cleObjet, a.get(cle));
66
			}
73
			}
67
		}
74
		}
68
	}
75
	}
69
	
76
	
70
	// Action
77
	// Action
71
	//--------
78
	//--------
72
	// cette méthode sert dans le cas suivant : le contructeur reçoit un object ModelData
79
	// cette méthode sert dans le cas suivant : le contructeur reçoit un object ModelData
73
	// qui contient cpuap_id_publication mais pas cpu_id_publication ou id_publication. Sans
80
	// qui contient cpuap_id_publication mais pas cpu_id_publication ou id_publication. Sans
74
	// la méthode ci-dessous, on aurait des problèmes. Celle-ci affecte à id_publication la
81
	// la méthode ci-dessous, on aurait des problèmes. Celle-ci affecte à id_publication la
75
	// valeur des clés étrangères rencontrées (cpuap_id_publication, cpuac_id_publication, etc.)
82
	// valeur des clés étrangères rencontrées (cpuap_id_publication, cpuac_id_publication, etc.)
76
	private void traiterClesEtrangeres(String cle, String valeur) {
83
	private void traiterClesEtrangeres(String cle, String valeur) {
77
		// on recupere le nom de la clé de la propriété (sans son prefixe)
84
		// on recupere le nom de la clé de la propriété (sans son prefixe)
78
		String nomSansPrefixe = cle.replaceFirst("^[a-zA-Z]+_", "");
85
		String nomSansPrefixe = cle.replaceFirst("^[a-zA-Z]+_", "");
79
		// on regarde si cette clé est une clé primaire de la table Publication
86
		// on regarde si cette clé est une clé primaire de la table Publication
80
		if (cles.contains(nomSansPrefixe)) {
87
		if (cles.contains(nomSansPrefixe)) {
81
			// si c'est le cas et que la valeur est non nulle
88
			// si c'est le cas et que la valeur est non nulle
82
			if (valeur != null && !UtilString.isEmpty(valeur)) {
89
			if (valeur != null && !UtilString.isEmpty(valeur)) {
83
				// on affecte la valeur de la clés étrangère à la clé primaire
90
				// on affecte la valeur de la clés étrangère à la clé primaire
84
				if (removePrefix) {
91
				if (removePrefix) {
85
					this.set(nomSansPrefixe, valeur);
92
					this.set(nomSansPrefixe, valeur);
86
				} else {
93
				} else {
87
					this.set(getPrefixe()+"_"+nomSansPrefixe, valeur);
94
					this.set(getPrefixe()+"_"+nomSansPrefixe, valeur);
88
				}
95
				}
89
			}
96
			}
90
		}
97
		}
91
	}
98
	}
92
	
99
	
93
	protected String getPrefixe() {
100
	protected String getPrefixe() {
94
		return PREFIXE;
101
		return PREFIXE;
95
	}
102
	}
96
		
103
		
97
	protected String[] getChampsObligatoires()	{
104
	protected String[] getChampsObligatoires()	{
98
		return champsObligatoires;
105
		return champsObligatoires;
99
	}
106
	}
100
	
107
	
101
	public void setStructureEditeur(Structure structure) {
108
	public void setStructureEditeur(Structure structure) {
102
		editeur = structure;
109
		editeur = structure;
103
	}
110
	}
104
	
111
	
105
	public String getId() {
112
	public String getId() {
106
		return renvoyerValeurCorrecte("id_publication");
113
		return renvoyerValeurCorrecte("id_publication");
107
	}
114
	}
108
	public void setId(String idPublication) {
115
	public void setId(String idPublication) {
109
		setValeurCorrecte("id_publication", idPublication);
116
		setValeurCorrecte("id_publication", idPublication);
110
	}
117
	}
111
	
118
	
112
	public String getNomComplet() {
119
	public String getNomComplet() {
113
		return renvoyerValeurCorrecte("fmt_nom_complet");
120
		return renvoyerValeurCorrecte("fmt_nom_complet");
114
	}
121
	}
115
	public void setNomComplet(String nomComplet) {
122
	public void setNomComplet(String nomComplet) {
116
		setValeurCorrecte("fmt_nom_complet", nomComplet);
123
		setValeurCorrecte("fmt_nom_complet", nomComplet);
117
	}
124
	}
118
	
125
	
119
	public String getURI() {
126
	public String getURI() {
120
		return renvoyerValeurCorrecte("uri");
127
		return renvoyerValeurCorrecte("uri");
121
	}
128
	}
122
	public void setUri(String uri) {
129
	public void setUri(String uri) {
123
		setValeurCorrecte("uri", uri);
130
		setValeurCorrecte("uri", uri);
124
	}
131
	}
125
 
132
 
126
	public String getAuteur() {
133
	public String getAuteur() {
127
		return renvoyerValeurCorrecte("fmt_auteur");
134
		return renvoyerValeurCorrecte("fmt_auteur");
128
	}
135
	}
129
	public void setAuteur(String auteurFormate) {
136
	public void setAuteur(String auteurFormate) {
130
		setValeurCorrecte("fmt_auteur", auteurFormate);
137
		setValeurCorrecte("fmt_auteur", auteurFormate);
131
	}
138
	}
132
 
139
 
133
	public String getCollection() {
140
	public String getCollection() {
134
		return renvoyerValeurCorrecte("collection");
141
		return renvoyerValeurCorrecte("collection");
135
	}
142
	}
136
	public void setCollection(String collection) {
143
	public void setCollection(String collection) {
137
		setValeurCorrecte("collection", collection);
144
		setValeurCorrecte("collection", collection);
138
	}
145
	}
139
	
146
	
140
	public String getTitre() {
147
	public String getTitre() {
141
		return renvoyerValeurCorrecte("titre");
148
		return renvoyerValeurCorrecte("titre");
142
	}
149
	}
143
	public void setTitre(String titre) {
150
	public void setTitre(String titre) {
144
		setValeurCorrecte("titre", UtilString.ucFirst(titre));
151
		setValeurCorrecte("titre", UtilString.ucFirst(titre));
145
	}
152
	}
146
 
153
 
147
	public String getNomEditeur() {
154
	public String getNomEditeur() {
-
 
155
		// Pour éviter de planter l'application
-
 
156
		// on tente de prendre l'éditeur où il est disponible
148
		String editeurNom = getEditeur();
157
		String editeurNom = getEditeur();
-
 
158
		if (UtilNombre.estUnNombre(editeurNom) || editeurNom.isEmpty()) {
-
 
159
			if(editeur != null && !editeur.getNom().isEmpty()) {
149
		if (editeurNom.matches("[0-9]+")) {
160
				editeurs.put(editeurNom, editeur.getNom());
150
			editeurNom = editeur.getNom();
161
				editeurNom = editeur.getNom();
-
 
162
			} else {	
-
 
163
				editeurNom = editeurs.get(editeurNom) != null ? editeurs.get(editeurNom) : "";
-
 
164
			}
151
		}
165
		}
-
 
166
		
152
		return editeurNom;
167
		return editeurNom;
153
	}
168
	}
-
 
169
	
154
	public String getEditeur() {
170
	public String getEditeur() {
155
		return getChaineDenormaliseUnique("ce_truk_editeur");
171
		return getChaineDenormaliseUnique("ce_truk_editeur");
156
	}
172
	}
157
	public void setEditeur(String editeur) {
173
	public void setEditeur(String editeur) {
158
		setChaineDenormaliseUnique("ce_truk_editeur", "AUTRE", editeur);
174
		setChaineDenormaliseUnique("ce_truk_editeur", "AUTRE", editeur);
159
	}
175
	}
160
 
176
 
161
	public String getAnneeParution() {
177
	public String getAnneeParution() {
162
		String annee = "";
178
		String annee = "";
163
		String dateParution = this.getDateParution();
179
		String dateParution = this.getDateParution();
164
		if (dateParution.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {// AAAA-MM-JJ
180
		if (dateParution.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {// AAAA-MM-JJ
165
			annee = dateParution.split("-")[0];
181
			annee = dateParution.split("-")[0];
166
		} else if (dateParution.matches("^[0-2][0-9]{3}-[0-2][0-9]{3}$")) {// AAAA-AAAA
182
		} else if (dateParution.matches("^[0-2][0-9]{3}-[0-2][0-9]{3}$")) {// AAAA-AAAA
167
			annee = dateParution;
183
			annee = dateParution;
168
		} else if (dateParution.matches("^[0-2][0-9]{3}$")) {// AAAA
184
		} else if (dateParution.matches("^[0-2][0-9]{3}$")) {// AAAA
169
			annee = dateParution;
185
			annee = dateParution;
170
		} else {
186
		} else {
171
			annee = "";
187
			annee = "";
172
		}
188
		}
173
		return annee;
189
		return annee;
174
	}
190
	}
175
	public void setAnneeParution(String annee) {
191
	public void setAnneeParution(String annee) {
176
		if (annee.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {// AAAA-MM-JJ
192
		if (annee.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {// AAAA-MM-JJ
177
			this.setDateParution(annee);
193
			this.setDateParution(annee);
178
		} else if (annee.matches("^[0-2][0-9]{3}-[0-2][0-9]{3}$")) {// AAAA-AAAA
194
		} else if (annee.matches("^[0-2][0-9]{3}-[0-2][0-9]{3}$")) {// AAAA-AAAA
179
			this.setDateParution(annee);
195
			this.setDateParution(annee);
180
		} else if (annee.matches("^[0-2][0-9]{3}$")) {// AAAA
196
		} else if (annee.matches("^[0-2][0-9]{3}$")) {// AAAA
181
			this.setDateParution(annee);
197
			this.setDateParution(annee);
182
		} else {
198
		} else {
183
			this.setDateParution("");
199
			this.setDateParution("");
184
		}
200
		}
185
	}
201
	}
186
	public static boolean etreAnneeParutionValide(String annee) {
202
	public static boolean etreAnneeParutionValide(String annee) {
187
		boolean valide = false;
203
		boolean valide = false;
188
		if (annee.matches("^[0-2][0-9]{3}$")) {// AAAA
204
		if (annee.matches("^[0-2][0-9]{3}$")) {// AAAA
189
			valide = true;
205
			valide = true;
190
		} else if (annee.matches("^[0-2][0-9]{3}-[0-2][0-9]{3}$")) {// AAAA-AAAA
206
		} else if (annee.matches("^[0-2][0-9]{3}-[0-2][0-9]{3}$")) {// AAAA-AAAA
191
			valide = true;
207
			valide = true;
192
		} 
208
		} 
193
		return valide;
209
		return valide;
194
	}
210
	}
195
	
211
	
196
	public String getDateParution() {
212
	public String getDateParution() {
197
		return renvoyerValeurCorrecte("date_parution");
213
		return renvoyerValeurCorrecte("date_parution");
198
	}
214
	}
199
	public void setDateParution(String date) {
215
	public void setDateParution(String date) {
200
		setValeurCorrecte("date_parution", date);
216
		setValeurCorrecte("date_parution", date);
201
	}
217
	}
202
 
218
 
203
	public String getIndicationNvt() {
219
	public String getIndicationNvt() {
204
		return renvoyerValeurCorrecte("indication_nvt");
220
		return renvoyerValeurCorrecte("indication_nvt");
205
	}
221
	}
206
	public void setIndicationNvt(String nvt) {
222
	public void setIndicationNvt(String nvt) {
207
		setValeurCorrecte("indication_nvt", nvt);
223
		setValeurCorrecte("indication_nvt", nvt);
208
	}
224
	}
209
	
225
	
210
	public String getFascicule() {
226
	public String getFascicule() {
211
		return renvoyerValeurCorrecte("fascicule");
227
		return renvoyerValeurCorrecte("fascicule");
212
	}
228
	}
213
	public void setFascicule(String fascicule) {
229
	public void setFascicule(String fascicule) {
214
		setValeurCorrecte("fascicule", fascicule);
230
		setValeurCorrecte("fascicule", fascicule);
215
	}
231
	}
216
	
232
	
217
	public String getPages() {
233
	public String getPages() {
218
		return renvoyerValeurCorrecte("truk_pages");
234
		return renvoyerValeurCorrecte("truk_pages");
219
	}
235
	}
220
	public void setPages(String pages) {
236
	public void setPages(String pages) {
221
		setValeurCorrecte("truk_pages", pages);
237
		setValeurCorrecte("truk_pages", pages);
222
	}
238
	}
223
	
239
	
224
}
240
}