Subversion Repositories eFlore/Applications.coel

Rev

Rev 1733 | Rev 1764 | 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.structure;
121 jpm 2
 
1040 gduche 3
import java.util.HashMap;
4
 
770 jpm 5
import org.tela_botanica.client.Mediateur;
121 jpm 6
import org.tela_botanica.client.RegistreId;
770 jpm 7
import org.tela_botanica.client.http.JsonRestRequestBuilder;
8
import org.tela_botanica.client.http.JsonRestRequestCallback;
121 jpm 9
import org.tela_botanica.client.interfaces.Rafraichissable;
935 jpm 10
import org.tela_botanica.client.modeles.Information;
1040 gduche 11
import org.tela_botanica.client.modeles.personne.PersonneListe;
935 jpm 12
import org.tela_botanica.client.modeles.projet.ProjetListe;
1319 gduche 13
import org.tela_botanica.client.synchronisation.Reponse;
770 jpm 14
import org.tela_botanica.client.util.UtilDAO;
121 jpm 15
 
16
import com.extjs.gxt.ui.client.Registry;
133 jpm 17
import com.google.gwt.core.client.GWT;
121 jpm 18
import com.google.gwt.http.client.URL;
19
import com.google.gwt.json.client.JSONArray;
156 jp_milcent 20
import com.google.gwt.json.client.JSONObject;
121 jpm 21
import com.google.gwt.json.client.JSONValue;
1633 aurelien 22
import com.google.gwt.user.client.Window;
121 jpm 23
 
24
public class StructureAsyncDao {
268 jp_milcent 25
	private static final String SERVICE_NOM = "CoelStructure";
1762 mathias 26
	public static String tri = null;
264 jp_milcent 27
 
770 jpm 28
	private String utilisateurId = null;
29
	private Rafraichissable vueARafraichir = null;
30
 
31
	public StructureAsyncDao(Rafraichissable vue) {
1367 cyprien 32
		if (Mediateur.DEBUG) System.out.println("|| StructureAsyncDao > vueARafraichir = "+vue.getClass().toString());
770 jpm 33
		vueARafraichir = vue;
34
		utilisateurId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId();
35
	}
1329 cyprien 36
 
37
	/**
38
	 *
39
	 * @param paginationProgressive : définit le mode de consultation de la base de données
40
	 * 			- True :	la consultation des données est progressive, ce qui signifie que la liste est chargée (paginée) au
41
	 * 						fur et à mesure de la consultation des données par l'utilisateur.
42
	 * 			- False :	la consultation des données est classique : un seul appel à la base de données est effectué, le retour
43
	 * 						est renvoyé à l'appelant
44
	 * 			// FIXME : si la taille de la liste est supérieure à la limite du JREST (150), ce deuxieme mode ne fonctionne pas
45
	 */
1691 raphael 46
	public void selectionner(final boolean paginationProgressive, final String projetId, final String structureId, final String nomStructure, final String formatRetour, final int start, final int nbElements, final Integer seqId, final boolean searchCity) {
47
		String[] parametres = {projetId, structureId, nomStructure};
48
 
1040 gduche 49
		HashMap<String, String> restrictions = new HashMap<String, String>();
1468 jpm 50
 
1040 gduche 51
		if (nbElements != -1)	{
52
			restrictions.put("limit", String.valueOf(nbElements));
53
		}
1691 raphael 54
		restrictions.put("searchCity", String.valueOf(searchCity));
1762 mathias 55
 
56
		if(tri != null) {
57
			restrictions.put("orderby", tri);
58
		}
1040 gduche 59
 
1526 jpm 60
		if ((formatRetour != null) && (formatRetour != "")) {
61
			restrictions.put("formatRetour", formatRetour);
62
		}
63
 
1329 cyprien 64
		/** GESTION DE LA REQUETE dans le cas d'une liste paginée progressive **/
65
		if (paginationProgressive) {
66
 
67
			/** DEFINITION DU TUPLE DE DEPART **/
68
			restrictions.put("start", String.valueOf(start));
69
 
70
			/** CONSTRUCTION DE LA REQUETE **/
71
    		final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
1319 gduche 72
 
1329 cyprien 73
    		/** ENVOI DE LA REQUETE **/
74
    		rb.envoyerRequete(null, new JsonRestRequestCallback()
75
    		{
76
    			/** RECEPTION DE LA REPONSE **/
77
    			public void surReponse(JSONValue responseValue)
78
    			{
79
					if (seqId != null)	{
80
						Reponse reponseRequete = new Reponse(responseValue, seqId);
81
						vueARafraichir.rafraichir(reponseRequete);
82
					}
83
 
84
    				/** Dans le cas d'une liste paginée, vueARafraichir est un objet Proxy.
85
    				 * On retourne l'objet JSON au proxy afin que ce soit lui qui le traite **/
86
					else vueARafraichir.rafraichir(responseValue);
87
    			}
88
    		});
89
		}
90
		/** GESTION DE LA REQUETE dans le cas d'une liste NON paginée progressive **/
91
		else {
92
 
93
			/** DEFINITION DU TUPLE DE DEPART **/
94
			restrictions.put("start", String.valueOf(start*nbElements));
95
 
96
			final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
97
 
98
			rb.envoyerRequete(null, new JsonRestRequestCallback() {
99
 
100
				public void surReponse(JSONValue responseValue) {
101
 
102
					if (responseValue != null) {
1319 gduche 103
 
1329 cyprien 104
						Information info = new Information("selection_structure");
105
 
106
						JSONObject responseObject = responseValue.isObject();
107
 
108
						if (responseObject != null) {
109
 
110
							// Si la réponse est un tableau, alors c'est une liste de structure qui a été retournée
111
							if (responseObject.get("structures").isArray() != null) {
112
 
113
								JSONObject reponse = responseObject;
114
								StructureListe structures;
115
								structures = new StructureListe(reponse.get("structures").isArray(), reponse.get("nbElements").isNumber(), vueARafraichir);
116
								structures.setTaillePage(nbElements);
117
								structures.setPageCourante(start);
118
 
119
								info.setDonnee(0, structures);
120
 
121
								if (seqId != null)	{
122
									Reponse reponseRequete = new Reponse(info, seqId);
123
									vueARafraichir.rafraichir(reponseRequete);
124
								}
125
								else vueARafraichir.rafraichir(structures);
126
 
127
							// Si la réponse est un objet, alors c'est une unique structure qui a été retournée
128
							} else if (responseObject.get("structures").isObject() != null) {
129
 
130
								JSONObject reponse = responseObject.get("structures").isObject();
131
								Structure structure = new Structure(reponse);
132
								StructureConservation structureConservation = new StructureConservation(reponse);
133
								StructureValorisation structureValorisation = new StructureValorisation(reponse);
134
 
135
								info.setDonnee(0, structure);
136
								info.setDonnee(1, structureConservation);
137
								info.setDonnee(2, structureValorisation);
138
 
139
								if (seqId != null)	{
140
									Reponse reponseRequete = new Reponse(info, seqId);
141
									vueARafraichir.rafraichir(reponseRequete);
142
								}
143
								else vueARafraichir.rafraichir(info);
144
							}
145
						} else {
146
							GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas un objet ou un talbeau JSON et vaut : "+responseValue.toString(), null);
1040 gduche 147
						}
1329 cyprien 148
					} else {
149
						if (structureId == null) {
150
							// Dans le cas, où nous demandons toutes les institutions et qu'il n'y en a pas, nous retournons un objet vide
151
							StructureListe structures = new StructureListe(0);
152
							vueARafraichir.rafraichir(structures);
1319 gduche 153
						}
770 jpm 154
					}
155
				}
1329 cyprien 156
			});
157
		}
770 jpm 158
	}
159
 
1329 cyprien 160
 
770 jpm 161
	public void ajouter(final Structure str, StructureConservation conservation, StructureValorisation valorisation) {
162
		String postDonneesEncodees = construirePost(null, str, conservation, valorisation);
156 jp_milcent 163
 
770 jpm 164
		final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM);
165
		rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
166
			@Override
167
			public void surReponse(JSONValue responseValue) {
1708 raphael 168
				// Si la requête a impliquées des valeurs autogénérées, l'objet modifié est retourné
169
				JSONObject obj;
170
				if ((obj = responseValue.isObject()) != null) {
171
					if (obj.get("structures").isObject() != null) {
172
						Information info = new Information("ajout_structure");
173
						Structure structure = new Structure(obj.get("structures").isObject());
174
						info.setDonnee(structure);
175
						vueARafraichir.rafraichir(info);
176
					}
177
				}
178
				else if (responseValue.isString() != null) {
770 jpm 179
					Information info = new Information("ajout_structure");
180
					String structureIdOuMessage = responseValue.isString().stringValue();
181
					if (structureIdOuMessage.matches("^[0-9]+$")) {
182
						info.setDonnee(structureIdOuMessage);
156 jp_milcent 183
					} else {
770 jpm 184
						info.setMessage(structureIdOuMessage);
156 jp_milcent 185
					}
770 jpm 186
					vueARafraichir.rafraichir(info);
187
				} else {
188
					GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null);
156 jp_milcent 189
				}
770 jpm 190
			}
191
		});
156 jp_milcent 192
	}
770 jpm 193
 
194
	public void modifier(String structureId, Structure str, StructureConservation conservation, StructureValorisation valorisation) {
195
		String postDonneesEncodees = construirePost(structureId, str, conservation, valorisation);
772 jpm 196
		String[] parametres = {structureId};
197
		final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
198
		rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
199
			@Override
200
			public void surReponse(JSONValue responseValue) {
1673 raphael 201
				// Si la requête a impliquées des valeurs autogénérées, l'objet modifié est retourné
202
				JSONObject obj;
203
				if ((obj = responseValue.isObject()) != null) {
204
					if (obj.get("structures").isObject() != null) {
205
						Structure structure = new Structure(obj.get("structures").isObject());
206
						Information info = new Information("modif_structure");
207
						info.setDonnee(structure);
208
						vueARafraichir.rafraichir(info);
209
					}
210
				}
772 jpm 211
				// Si la requête est un succès, reception d'une chaine
1673 raphael 212
				else if (responseValue.isString() != null) {
772 jpm 213
					Information info = new Information("modif_structure");
214
					info.setMessage(responseValue.isString().stringValue());
215
					vueARafraichir.rafraichir(info);
216
				} else {
217
					GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null);
121 jpm 218
				}
772 jpm 219
			}
220
		});
121 jpm 221
	}
770 jpm 222
 
772 jpm 223
	public void supprimer(String structuresId) {
224
		String[] parametres = {utilisateurId, structuresId};
225
		final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
226
		rb.envoyerRequeteSuppression(new JsonRestRequestCallback() {
227
			@Override
228
			public void surReponse(JSONValue responseValue) {
229
				if (responseValue.isString() != null) {
230
					Information info = new Information("suppression_structure");
231
					info.setMessage(responseValue.isString().stringValue());
232
					vueARafraichir.rafraichir(info);
233
				} else {
234
					GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null);
133 jpm 235
				}
772 jpm 236
			}
237
		});
133 jpm 238
	}
169 jp_milcent 239
 
770 jpm 240
	private String construirePost(String structureId, Structure str, StructureConservation conservation, StructureValorisation valorisation) {
865 jpm 241
		String postDonnees = "cmhl_ce_modifier_par=" + URL.encodeComponent(utilisateurId);
242
 
602 jp_milcent 243
		if (str != null) {
612 jp_milcent 244
			if (structureId != null) {
245
				postDonnees += "&cs_id_structure=" + URL.encodeComponent(structureId);
246
			}
1369 cyprien 247
 
248
			postDonnees += "&cpr_abreviation=" + URL.encodeComponent(str.getAbreviationProjet());
602 jp_milcent 249
			postDonnees += "&cs_ce_projet=" + URL.encodeComponent(str.getIdProjet()) +
250
				"&cs_ce_mere=" + URL.encodeComponent(str.getIdMere()) +
251
				"&cs_guid=" + URL.encodeComponent(str.getGuid()) +
252
				"&cs_truk_identifiant_alternatif=" + URL.encodeComponent(str.getIdAlternatif()) +
253
				"&cs_nom=" + URL.encodeComponent(str.getNom()) +
254
				"&cs_truk_nom_alternatif=" + URL.encodeComponent(str.getNomAlternatif()) +
1173 jpm 255
				"&cs_description=" + URL.encodeComponent(str.getDescription()) +
602 jp_milcent 256
				"&cs_ce_type=" + URL.encodeComponent(str.getType()) +
257
				"&cs_ce_truk_type_prive=" + URL.encodeComponent(str.getTypePrive()) +
258
				"&cs_ce_truk_type_public=" + URL.encodeComponent(str.getTypePublic()) +
259
				"&cs_adresse_01=" + URL.encodeComponent(str.getAdresse()) +
260
				"&cs_adresse_02=" + URL.encodeComponent(str.getAdresseComplement()) +
261
				"&cs_date_fondation=" + URL.encodeComponent(str.getDateFondationFormatMysql()) +
262
				"&cs_code_postal=" + URL.encodeComponent(str.getCodePostal()) +
263
				"&cs_ville=" + URL.encodeComponent(str.getVille()) +
1037 gduche 264
				"&cs_ce_truk_region=" + URL.encodeComponent(str.get("ce_truk_region").toString()) +
602 jp_milcent 265
				"&cs_ce_truk_pays=" + URL.encodeComponent(str.getPays()) +
1173 jpm 266
				"&cs_latitude=" + URL.encodeComponent(str.getLatitude()) +
267
				"&cs_longitude=" + URL.encodeComponent(str.getLongitude()) +
602 jp_milcent 268
				"&cs_truk_telephone=" + URL.encodeComponent(str.getTelephone()) +
269
				"&cs_truk_url=" + URL.encodeComponent(str.getUrl()) +
1685 raphael 270
				"&cs_nbre_personne=" + (str.getNbrePersonne() != null ? str.getNbrePersonne() : "") +
1173 jpm 271
				"&cs_condition_acces=" + URL.encodeComponent(str.getConditionAcces())+
272
				"&cs_condition_usage=" + URL.encodeComponent(str.getConditionUsage())+
1039 gduche 273
				"&cs_courriel=" + URL.encodeComponent(str.getCourriel());
602 jp_milcent 274
		}
275
		if (conservation != null) {
612 jp_milcent 276
			if (structureId != null) {
277
				postDonnees += "&csc_id_structure=" + URL.encodeComponent(structureId);
278
			}
1693 raphael 279
			postDonnees += "&csc_mark_formation=" + (conservation.getFormation() != null ? conservation.getFormation() : "") +
602 jp_milcent 280
				"&csc_formation=" + URL.encodeComponent(conservation.getFormationInfo()) +
1693 raphael 281
				"&csc_mark_formation_interet=" + (conservation.getFormationInteret() != null ? conservation.getFormationInteret() : "") +
602 jp_milcent 282
				"&csc_truk_stockage_local=" + URL.encodeComponent(conservation.getStockageLocal()) +
283
				"&csc_truk_stockage_meuble=" + URL.encodeComponent(conservation.getStockageMeuble()) +
284
				"&csc_truk_stockage_parametre=" + URL.encodeComponent(conservation.getStockageParametre()) +
1695 raphael 285
				"&csc_mark_collection_commune=" + (conservation.getCollectionCommune() != null ? conservation.getCollectionCommune() : "") +
602 jp_milcent 286
				"&csc_truk_collection_autre=" + URL.encodeComponent(conservation.getCollectionAutre()) +
1695 raphael 287
				"&csc_mark_acces_controle=" + (conservation.getAccesControle() != null ? conservation.getAccesControle() : "") +
288
				"&csc_mark_restauration=" + (conservation.getRestauration() != null ? conservation.getRestauration() : "") +
602 jp_milcent 289
				"&csc_truk_restauration_operation=" + URL.encodeComponent(conservation.getRestaurationOperation()) +
290
				"&csc_ce_materiel_conservation=" + URL.encodeComponent(conservation.getMaterielConservation()) +
291
				"&csc_truk_materiel_autre=" + URL.encodeComponent(conservation.getMaterielAutre()) +
1695 raphael 292
				"&csc_mark_traitement=" + (conservation.getTraitement() != null ? conservation.getTraitement() : "") +
602 jp_milcent 293
				"&csc_truk_traitement=" + URL.encodeComponent(conservation.getTraitements()) +
1695 raphael 294
				"&csc_mark_acquisition_collection=" + (conservation.getAcquisitionCollection() != null ? conservation.getAcquisitionCollection() : "") +
295
				"&csc_mark_acquisition_echantillon=" + (conservation.getAcquisitionEchantillon() != null ? conservation.getAcquisitionEchantillon() : "") +
602 jp_milcent 296
				"&csc_mark_acquisition_traitement=" + URL.encodeComponent(conservation.getAcquisitionTraitement()) +
297
				"&csc_truk_acquisition_traitement_poison=" + URL.encodeComponent(conservation.getAcquisitionTraitementPoison()) +
298
				"&csc_truk_acquisition_traitement_insecte=" + URL.encodeComponent(conservation.getAcquisitionTraitementInsecte());
299
		}
300
		if (valorisation != null) {
612 jp_milcent 301
			if (structureId != null) {
632 jp_milcent 302
				postDonnees += "&csv_id_structure=" + URL.encodeComponent(structureId);
612 jp_milcent 303
			}
1733 raphael 304
			postDonnees += "&csv_mark_action=" + (valorisation.getAction() != null ? valorisation.getAction() : "") +
305
			    "&csv_truk_action=" + URL.encodeComponent(valorisation.getActionInfo()) +
306
			    "&csv_publication=" + URL.encodeComponent(valorisation.getPublication()) +
307
			    "&csv_collection_autre=" + URL.encodeComponent(valorisation.getCollectionAutre()) +
308
			    "&csv_mark_action_future=" + (valorisation.getActionFuture() != null ? valorisation.getActionFuture() : "") +
309
			    "&csv_action_future=" + URL.encodeComponent(valorisation.getActionFutureInfo()) +
310
			    "&csv_mark_recherche=" + (valorisation.getRecherche() != null ? valorisation.getRecherche() : "") +
311
			    "&csv_truk_recherche_provenance=" + URL.encodeComponent(valorisation.getRechercheProvenance()) +
312
			    "&csv_truk_recherche_type=" + URL.encodeComponent(valorisation.getRechercheType()) +
313
			    "&csv_mark_acces_ss_motif=" + (valorisation.getAccesSansMotif() != null ? valorisation.getAccesSansMotif() : "") +
314
			    "&csv_acces_ss_motif=" + URL.encodeComponent(valorisation.getAccesSansMotifInfo()) +
315
			    "&csv_mark_visite_avec_motif=" + (valorisation.getVisiteAvecMotif() != null ? valorisation.getVisiteAvecMotif() : "") +
316
			    "&csv_visite_avec_motif=" + URL.encodeComponent(valorisation.getVisiteAvecMotifInfo());
602 jp_milcent 317
		}
318
		return postDonnees;
319
	}
1673 raphael 320
}