| 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 |
}
|