Subversion Repositories eFlore/Applications.coel

Rev

Rev 1428 | Rev 1561 | 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) {
761 jpm 146
		String postDonneesEncodees = "cpuap_id_publication="+URL.encodeComponent(publicationId)
901 jpm 147
		+"&cpuap_id_auteur="+URL.encodeComponent(personnesId)
1428 cyprien 148
		+"&cpuap_ordre="+URL.encodeComponent(ordreAuteurs)
822 jpm 149
		+"&cpuap_id_role="+URL.encodeComponent(roleId)
1292 cyprien 150
		+"&cmhl_ce_modifier_par="+utilisateurId;
751 jpm 151
		final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM);
736 aurelien 152
		rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
153
			@Override
154
			public void surReponse(JSONValue reponseValeur) {
1319 gduche 155
				traiterReponse(reponseValeur, "ajout_publication_a_personne", seqId);
736 aurelien 156
			}
1132 jpm 157
		});
736 aurelien 158
	}
741 aurelien 159
 
1428 cyprien 160
	public void modifier(String publicationId, String personnesId, String ordreAuteurs, String roleId, final Integer seqId) {
822 jpm 161
		String[] parametres = {publicationId, personnesId, roleId};
751 jpm 162
 
753 aurelien 163
		final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
751 jpm 164
 
822 jpm 165
		String postDonneesEncodees = "cpuap_id_publication="+URL.encodeComponent(publicationId)
1428 cyprien 166
		+"&cpuap_id_auteur="+URL.encodeComponent(personnesId)
167
		+"&cpuap_id_role="+URL.encodeComponent(roleId)
168
		+"&cpuap_ordre="+URL.encodeComponent(ordreAuteurs)
169
		+"&cmhl_ce_modifier_par="+utilisateurId;
751 jpm 170
 
741 aurelien 171
		rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
172
			@Override
173
			public void surReponse(JSONValue reponseValeur) {
1319 gduche 174
				traiterReponse(reponseValeur, "modif_publication_a_personne", seqId);
741 aurelien 175
			}
1132 jpm 176
		});
741 aurelien 177
	}
178
 
901 jpm 179
	public void supprimer(String idPublicationAPersonne) {
180
		String[] parametres = {utilisateurId, idPublicationAPersonne};
1292 cyprien 181
		final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
901 jpm 182
		rb.envoyerRequeteSuppression(new JsonRestRequestCallback() {
183
			@Override
184
			public void surReponse(JSONValue responseValue) {
185
				if (responseValue.isString() != null) {
186
					Information info = new Information("suppression_publication_a_personne");
187
					info.setMessage(responseValue.isString().stringValue());
188
					vueARafraichir.rafraichir(info);
189
				} else {
190
					GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null);
191
				}
192
			}
193
		});
194
	}
195
 
1319 gduche 196
	private void traiterReponse(JSONValue reponseValeur, String type, Integer seqId) {
736 aurelien 197
		Information info = new Information(type);
748 jpm 198
		// Si la requête est un succès, réception d'une chaîne
736 aurelien 199
		if (reponseValeur.isBoolean() != null) {
200
			info.setDonnee(reponseValeur.isBoolean().booleanValue());
201
		} else if (reponseValeur.isString() != null) {
202
			info.setDonnee(reponseValeur.isString().stringValue());
203
		} else {
204
			info.setDeboguage("La réponse n'est pas une chaine JSON.");
205
		}
206
 
1319 gduche 207
		if (seqId != null)	{
208
			Reponse retourRequete = new Reponse(info, seqId);
209
			vueARafraichir.rafraichir(retourRequete);
210
		} else {
211
			vueARafraichir.rafraichir(info);
212
		}
213
 
736 aurelien 214
	}
215
}