Subversion Repositories eFlore/Applications.coel

Rev

Rev 1513 | 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;
736 aurelien 2
 
1428 cyprien 3
import java.util.HashMap;
4
 
761 jpm 5
import org.tela_botanica.client.Mediateur;
6
import org.tela_botanica.client.RegistreId;
736 aurelien 7
import org.tela_botanica.client.http.JsonRestRequestBuilder;
8
import org.tela_botanica.client.http.JsonRestRequestCallback;
9
import org.tela_botanica.client.interfaces.Rafraichissable;
935 jpm 10
import org.tela_botanica.client.modeles.Information;
1513 jpm 11
import org.tela_botanica.client.modeles.collection.CollectionAPublicationListe;
1319 gduche 12
import org.tela_botanica.client.synchronisation.Reponse;
1235 cyprien 13
import org.tela_botanica.client.util.Debug;
748 jpm 14
import org.tela_botanica.client.util.UtilDAO;
736 aurelien 15
 
761 jpm 16
import com.extjs.gxt.ui.client.Registry;
1319 gduche 17
import com.extjs.gxt.ui.client.widget.Window;
736 aurelien 18
import com.google.gwt.core.client.GWT;
19
import com.google.gwt.http.client.URL;
20
import com.google.gwt.json.client.JSONArray;
21
import com.google.gwt.json.client.JSONObject;
22
import com.google.gwt.json.client.JSONValue;
23
 
24
public class PublicationAPersonneAsyncDao {
25
 
26
	private static final String SERVICE_NOM = "CoelPublicationAPersonne";
27
 
761 jpm 28
	private String utilisateurId = null;
736 aurelien 29
	private Rafraichissable vueARafraichir = null;
30
 
751 jpm 31
	public PublicationAPersonneAsyncDao(Rafraichissable vueARafraichirCourrante) {
1367 cyprien 32
		if (Mediateur.DEBUG) System.out.println("|| PublicationAPersonneAsyncDao > vueARafraichir = "+vueARafraichirCourrante.getClass().toString());
751 jpm 33
		vueARafraichir = vueARafraichirCourrante;
761 jpm 34
		utilisateurId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId();
736 aurelien 35
	}
36
 
1513 jpm 37
	public void selectionner(final boolean paginationProgressive, String publicationId, String personnesId, String roleId, final String recherche, final int start, final int nbElements, final Integer seqId) {
38
 
822 jpm 39
		String[] parametres = {publicationId, personnesId, roleId};
1513 jpm 40
 
1428 cyprien 41
		HashMap<String, String> restrictions = new HashMap<String, String>();
1513 jpm 42
 
43
		if (nbElements != -1)	{
44
			restrictions.put("limit", String.valueOf(nbElements));
45
		}
46
 
47
		restrictions.put("orderby", "cpuap_ordre");
48
 
49
		/** GESTION DE LA REQUETE dans le cas d'une liste paginée progressive **/
50
		if (paginationProgressive) {
51
 
52
			/** DEFINITION DU TUPLE DE DEPART **/
53
			restrictions.put("start", String.valueOf(start));
54
 
55
			/** CONSTRUCTION DE LA REQUETE **/
56
    		final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
57
 
58
    		/** ENVOI DE LA REQUETE **/
59
    		rb.envoyerRequete(null, new JsonRestRequestCallback()
60
    		{
61
    			/** RECEPTION DE LA REPONSE **/
62
    			public void surReponse(JSONValue responseValue)
63
    			{
64
    				/** Dans le cas d'une liste paginée, vueARafraichir est un objet Proxy.
65
    				 * On retourne l'objet JSON au proxy afin que ce soit lui qui le traite **/
66
 
67
					if (seqId != null)	{
68
						if (Mediateur.DEBUG) System.out.println("<-- PublicationAPersonneAsyncDao > Liste paginée, retour au sequenceur");
69
						Reponse reponseRequete = new Reponse(responseValue, seqId);
70
						vueARafraichir.rafraichir(reponseRequete);
71
					}
72
					else	{
73
						if (Mediateur.DEBUG) System.out.println("<-- PublicationAPersonneAsyncDao > Liste paginée, retour à "+vueARafraichir.getClass().toString());
74
						vueARafraichir.rafraichir(responseValue);
75
					}
76
    			}
77
    		});
78
		}
79
		/** GESTION DE LA REQUETE dans le cas d'une liste NON paginée progressive **/
80
		else {
81
 
82
			/** DEFINITION DU TUPLE DE DEPART **/
83
			restrictions.put("start", String.valueOf(start*nbElements));
84
 
85
			final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
86
 
87
			rb.envoyerRequete(null, new JsonRestRequestCallback() {
88
				@Override
89
				public void surReponse(JSONValue responseValue) {
90
 
91
					if (responseValue != null) {
92
 
93
						JSONObject responseObject = responseValue.isObject();
94
						if (responseObject != null) {
95
							// Si la réponse est un tableau, alors c'est une liste de collections qui a été retournée
96
							if (responseObject.get("publicationsAPersonne").isArray() != null) {
97
 
98
								final JSONArray reponse = responseObject.get("publicationsAPersonne").isArray();
99
 
100
								// Transformation du tableau JSON réponse en ListeInstitution
101
								PublicationAPersonneListe publicationsAPersonneListe = new PublicationAPersonneListe(reponse);
102
 
103
								// et on met à jour le demandeur des données
104
								if (seqId != null)	{
105
									if (Mediateur.DEBUG) System.out.println("<-- PublicationAPersonneAsyncDao > Liste non paginée, retour au sequenceur");
106
									Reponse reponseRequete = new Reponse(publicationsAPersonneListe, seqId);
107
									vueARafraichir.rafraichir(reponseRequete);
108
								}
109
								else	{
110
									if (Mediateur.DEBUG) System.out.println("<-- PublicationAPersonneAsyncDao > Liste non paginée, retour au sequenceur");
111
									vueARafraichir.rafraichir(publicationsAPersonneListe);
112
								}
113
							// Si la réponse est un objet, alors c'est une unique collection qui a été retournée
114
							} else if (responseObject.get("publicationsAPersonne").isObject() != null) {
115
 
116
								final JSONObject reponse = responseObject.get("publicationsAPersonne").isObject();
117
								// Transformation du tableau JSON réponse en ListeInstitution
118
								PublicationAPersonne publicationAPersonne = new PublicationAPersonne(reponse);
119
								// et on met à jour le demandeur des données
120
								if (seqId!=null)	{
121
									Reponse reponseRequete = new Reponse(publicationAPersonne, seqId);
122
									vueARafraichir.rafraichir(reponseRequete);
123
								} else {
124
									vueARafraichir.rafraichir(publicationAPersonne);
125
								}
126
							} else {
127
								GWT.log("La réponse n'est pas un objet ou un tableau JSON et vaut : "+responseValue.toString(), null);
128
							}
1319 gduche 129
						}
1513 jpm 130
					} else {
131
						// Dans le cas, où nous demandons toutes les publication et qu'il n'y en a pas, nous retournons un objet vide
132
						PublicationAPersonneListe publicationAPersonneListe = new PublicationAPersonneListe(0);
1319 gduche 133
						if (seqId!=null)	{
1513 jpm 134
							Reponse reponseRequete = new Reponse(publicationAPersonneListe, seqId);
1319 gduche 135
							vueARafraichir.rafraichir(reponseRequete);
136
						} else {
1513 jpm 137
							vueARafraichir.rafraichir(publicationAPersonneListe);
1319 gduche 138
						}
741 aurelien 139
					}
140
				}
1513 jpm 141
			});
142
		}
741 aurelien 143
	}
144
 
1428 cyprien 145
	public void ajouter(String publicationId, String personnesId, String ordreAuteurs, String roleId,  final Integer seqId) {
1561 jpm 146
		String postDonneesEncodees = "cpuap_id_publication="+URL.encodeQueryString(publicationId)
147
			+"&cpuap_id_auteur="+URL.encodeQueryString(personnesId)
148
			+"&cpuap_ordre="+URL.encodeQueryString(ordreAuteurs)
149
			+"&cpuap_id_role="+URL.encodeQueryString(roleId)
150
			+"&cmhl_ce_modifier_par="+utilisateurId;
151
 
751 jpm 152
		final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM);
736 aurelien 153
		rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
154
			@Override
155
			public void surReponse(JSONValue reponseValeur) {
1319 gduche 156
				traiterReponse(reponseValeur, "ajout_publication_a_personne", seqId);
736 aurelien 157
			}
1132 jpm 158
		});
736 aurelien 159
	}
741 aurelien 160
 
1428 cyprien 161
	public void modifier(String publicationId, String personnesId, String ordreAuteurs, String roleId, final Integer seqId) {
822 jpm 162
		String[] parametres = {publicationId, personnesId, roleId};
751 jpm 163
 
753 aurelien 164
		final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
751 jpm 165
 
1561 jpm 166
		String postDonneesEncodees = "cpuap_id_publication="+URL.encodeQueryString(publicationId)
167
			+"&cpuap_id_auteur="+URL.encodeQueryString(personnesId)
168
			+"&cpuap_id_role="+URL.encodeQueryString(roleId)
169
			+"&cpuap_ordre="+URL.encodeQueryString(ordreAuteurs)
170
			+"&cmhl_ce_modifier_par="+utilisateurId;
751 jpm 171
 
741 aurelien 172
		rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
173
			@Override
174
			public void surReponse(JSONValue reponseValeur) {
1319 gduche 175
				traiterReponse(reponseValeur, "modif_publication_a_personne", seqId);
741 aurelien 176
			}
1132 jpm 177
		});
741 aurelien 178
	}
179
 
901 jpm 180
	public void supprimer(String idPublicationAPersonne) {
181
		String[] parametres = {utilisateurId, idPublicationAPersonne};
1292 cyprien 182
		final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
901 jpm 183
		rb.envoyerRequeteSuppression(new JsonRestRequestCallback() {
184
			@Override
185
			public void surReponse(JSONValue responseValue) {
186
				if (responseValue.isString() != null) {
187
					Information info = new Information("suppression_publication_a_personne");
188
					info.setMessage(responseValue.isString().stringValue());
189
					vueARafraichir.rafraichir(info);
190
				} else {
191
					GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null);
192
				}
193
			}
194
		});
195
	}
196
 
1319 gduche 197
	private void traiterReponse(JSONValue reponseValeur, String type, Integer seqId) {
736 aurelien 198
		Information info = new Information(type);
748 jpm 199
		// Si la requête est un succès, réception d'une chaîne
736 aurelien 200
		if (reponseValeur.isBoolean() != null) {
201
			info.setDonnee(reponseValeur.isBoolean().booleanValue());
202
		} else if (reponseValeur.isString() != null) {
203
			info.setDonnee(reponseValeur.isString().stringValue());
204
		} else {
205
			info.setDeboguage("La réponse n'est pas une chaine JSON.");
206
		}
207
 
1319 gduche 208
		if (seqId != null)	{
209
			Reponse retourRequete = new Reponse(info, seqId);
210
			vueARafraichir.rafraichir(retourRequete);
211
		} else {
212
			vueARafraichir.rafraichir(info);
213
		}
214
 
736 aurelien 215
	}
216
}