Subversion Repositories eFlore/Applications.coel

Rev

Rev 1568 | 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
 
783 jpm 112
	public String getIdProjet() {
1568 jpm 113
		return renvoyerValeurCorrecte("ce_projet");
106 aurelien 114
	}
783 jpm 115
	public void setIdProjet(String idProjet) {
1568 jpm 116
		setValeurCorrecte("ce_projet", idProjet);
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() {
155
		String editeurNom = getEditeur();
156
		if (editeurNom.matches("[0-9]+")) {
157
			editeurNom = editeur.getNom();
158
		}
159
		return editeurNom;
160
	}
106 aurelien 161
	public String getEditeur() {
1568 jpm 162
		return getChaineDenormaliseUnique("ce_truk_editeur");
106 aurelien 163
	}
783 jpm 164
	public void setEditeur(String editeur) {
1568 jpm 165
		setChaineDenormaliseUnique("ce_truk_editeur", "AUTRE", editeur);
783 jpm 166
	}
106 aurelien 167
 
799 jpm 168
	public String getAnneeParution() {
1516 jpm 169
		String annee = "";
170
		String dateParution = this.getDateParution();
171
		if (dateParution.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {// AAAA-MM-JJ
172
			annee = dateParution.split("-")[0];
173
		} else if (dateParution.matches("^[0-2][0-9]{3}-[0-2][0-9]{3}$")) {// AAAA-AAAA
174
			annee = dateParution;
175
		} else if (dateParution.matches("^[0-2][0-9]{3}$")) {// AAAA
176
			annee = dateParution;
177
		} else {
178
			annee = "";
179
		}
180
		return annee;
799 jpm 181
	}
1516 jpm 182
	public void setAnneeParution(String annee) {
183
		if (annee.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {// AAAA-MM-JJ
184
			this.setDateParution(annee);
185
		} else if (annee.matches("^[0-2][0-9]{3}-[0-2][0-9]{3}$")) {// AAAA-AAAA
186
			this.setDateParution(annee);
187
		} else if (annee.matches("^[0-2][0-9]{3}$")) {// AAAA
188
			this.setDateParution(annee);
189
		} else {
190
			this.setDateParution("");
191
		}
192
	}
193
	public static boolean etreAnneeParutionValide(String annee) {
194
		boolean valide = false;
195
		if (annee.matches("^[0-2][0-9]{3}$")) {// AAAA
196
			valide = true;
197
		} else if (annee.matches("^[0-2][0-9]{3}-[0-2][0-9]{3}$")) {// AAAA-AAAA
198
			valide = true;
199
		}
200
		return valide;
201
	}
202
 
106 aurelien 203
	public String getDateParution() {
1568 jpm 204
		return renvoyerValeurCorrecte("date_parution");
106 aurelien 205
	}
783 jpm 206
	public void setDateParution(String date) {
1568 jpm 207
		setValeurCorrecte("date_parution", date);
783 jpm 208
	}
106 aurelien 209
 
210
	public String getIndicationNvt() {
1568 jpm 211
		return renvoyerValeurCorrecte("indication_nvt");
106 aurelien 212
	}
783 jpm 213
	public void setIndicationNvt(String nvt) {
1568 jpm 214
		setValeurCorrecte("indication_nvt", nvt);
783 jpm 215
	}
106 aurelien 216
 
217
	public String getFascicule() {
1568 jpm 218
		return renvoyerValeurCorrecte("fascicule");
106 aurelien 219
	}
783 jpm 220
	public void setFascicule(String fascicule) {
1568 jpm 221
		setValeurCorrecte("fascicule", fascicule);
783 jpm 222
	}
106 aurelien 223
 
224
	public String getPages() {
1568 jpm 225
		return renvoyerValeurCorrecte("truk_pages");
106 aurelien 226
	}
783 jpm 227
	public void setPages(String pages) {
1568 jpm 228
		setValeurCorrecte("truk_pages", pages);
783 jpm 229
	}
230 aurelien 230
 
106 aurelien 231
}