Subversion Repositories eFlore/Applications.coel

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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