Subversion Repositories eFlore/Applications.coel

Rev

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