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