Subversion Repositories eFlore/Applications.coel

Rev

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