Subversion Repositories eFlore/Applications.coel

Rev

Rev 1255 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1255 Rev 1327
1
package org.tela_botanica.client.modeles.personne;
1
package org.tela_botanica.client.modeles.personne;
2
 
2
 
3
import java.util.HashMap;
3
import java.util.HashMap;
4
 
4
 
5
import org.tela_botanica.client.Mediateur;
5
import org.tela_botanica.client.Mediateur;
6
import org.tela_botanica.client.RegistreId;
6
import org.tela_botanica.client.RegistreId;
7
import org.tela_botanica.client.http.JsonRestRequestBuilder;
7
import org.tela_botanica.client.http.JsonRestRequestBuilder;
8
import org.tela_botanica.client.http.JsonRestRequestCallback;
8
import org.tela_botanica.client.http.JsonRestRequestCallback;
9
import org.tela_botanica.client.interfaces.Rafraichissable;
9
import org.tela_botanica.client.interfaces.Rafraichissable;
10
import org.tela_botanica.client.modeles.Information;
10
import org.tela_botanica.client.modeles.Information;
11
import org.tela_botanica.client.util.Debug;
11
import org.tela_botanica.client.util.Debug;
12
import org.tela_botanica.client.util.UtilDAO;
12
import org.tela_botanica.client.util.UtilDAO;
13
import com.extjs.gxt.ui.client.Registry;
13
import com.extjs.gxt.ui.client.Registry;
14
import com.google.gwt.core.client.GWT;
14
import com.google.gwt.core.client.GWT;
15
import com.google.gwt.json.client.JSONArray;
15
import com.google.gwt.json.client.JSONArray;
-
 
16
import com.google.gwt.json.client.JSONObject;
16
import com.google.gwt.json.client.JSONValue;
17
import com.google.gwt.json.client.JSONValue;
17
 
18
 
18
public class PersonneAsyncDao {
19
public class PersonneAsyncDao {
19
	private static final String SERVICE_NOM = "CoelPersonne";
20
	private static final String SERVICE_NOM = "CoelPersonne";
20
	
21
	
21
	private String utilisateurId = null;
22
	private String utilisateurId = null;
22
	private Rafraichissable vueARafraichir = null;
23
	private Rafraichissable vueARafraichir = null;
23
	
24
	
24
	public PersonneAsyncDao(Rafraichissable vue) {
25
	public PersonneAsyncDao(Rafraichissable vue) {
25
		vueARafraichir = vue;
26
		vueARafraichir = vue;
26
		utilisateurId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId();
27
		utilisateurId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId();
27
	}
28
	}
-
 
29
 
-
 
30
	/**
-
 
31
	 * @param paginationProgressive : définit le mode de consultation de la base de données
-
 
32
	 * 			- True :	la consultation des données est progressive, ce qui signifie que la liste est chargée (paginée) au
-
 
33
	 * 						fur et à mesure de la consultation des données par l'utilisateur.
-
 
34
	 * 			- False :	la consultation des données est classique : un seul appel à la base de données est effectué, le retour
-
 
35
	 * 						est renvoyé à l'appelant
-
 
36
	 * 			// FIXME : si la taille de la liste est supérieure à la limite du JREST (150), ce deuxieme mode ne fonctionne pas
28
 
37
	 */	
-
 
38
	public void selectionner(final boolean paginationProgressive, String personneId, String projetId, String nomComplet, final int start, final int nbElements) {
-
 
39
 
29
	public void selectionner(String personneId, String projetId, String nomComplet, final int pageCourante, final int nbElements) {
40
		String nom = (nomComplet == null) ? "%" : nomComplet+"%";		
30
		String[] parametres = {personneId, projetId, nomComplet};
41
		String[] parametres = {personneId, projetId, nom};
31
		
-
 
32
		HashMap<String, String> restrictions = new HashMap<String, String>();
42
		
33
		restrictions.put("start", String.valueOf(pageCourante*nbElements));
43
		HashMap<String, String> restrictions = new HashMap<String, String>();
34
		
44
		
35
		if (nbElements != -1)	{
45
		if (nbElements != -1)	{
36
			restrictions.put("limit", String.valueOf(nbElements));
46
			restrictions.put("limit", String.valueOf(nbElements));
37
		}
47
		}
-
 
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
			
38
		
55
			/** CONSTRUCTION DE LA REQUETE **/
-
 
56
    		final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
-
 
57
 
39
		final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
58
    		/** ENVOI DE LA REQUETE **/
40
		rb.envoyerRequete(null, new JsonRestRequestCallback() {
59
    		rb.envoyerRequete(null, new JsonRestRequestCallback()
-
 
60
    		{
41
			@Override
61
    			/** RECEPTION DE LA REPONSE **/
-
 
62
    			public void surReponse(JSONValue responseValue)
42
			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
    				vueARafraichir.rafraichir(responseValue);
-
 
67
    			}
-
 
68
    		});
-
 
69
		}
-
 
70
		/** GESTION DE LA REQUETE dans le cas d'une liste NON paginée progressive **/
-
 
71
		else {
43
				// Si la requête est un succès, réception d'un tableau
72
			
-
 
73
			/** DEFINITION DU TUPLE DE DEPART **/
-
 
74
			restrictions.put("start", String.valueOf(start*nbElements));
-
 
75
			
-
 
76
			final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
-
 
77
			rb.envoyerRequete(null, new JsonRestRequestCallback() {
44
				if (responseValue.isArray() != null) {
78
				@Override
-
 
79
				public void surReponse(JSONValue responseValue) {
-
 
80
					
-
 
81
					if (responseValue != null) {
-
 
82
						JSONObject reponseObject = responseValue.isObject();
-
 
83
						
-
 
84
						if (reponseObject.get("personnes").isArray() != null) {
45
					final JSONArray reponse = responseValue.isArray();
85
							JSONArray reponse = responseValue.isArray();
46
					
86
							
47
					// Transformation du tableau JSON réponse en ListeInstitution
87
							// Transformation du tableau JSON réponse en ListePersonne
-
 
88
							Information info = new Information("liste_personne");
48
					Information info = new Information("liste_personne");
89
							PersonneListe personnes;
49
					PersonneListe personnes;
90
							personnes = new PersonneListe(reponseObject.get("personnes").isArray(), reponseObject.get("nbElements").isNumber(), vueARafraichir);
-
 
91
							personnes.setTaillePage(nbElements);
-
 
92
							personnes.setPageCourante(start);							
-
 
93
							info.setDonnee(0, personnes);
-
 
94
							
-
 
95
							// et on met à jour le demandeur des données
50
					if (reponse.get(0).isArray() != null)	{
96
							vueARafraichir.rafraichir(info);
51
						personnes = new PersonneListe(reponse);
97
						}
52
					} else {
98
					} else {
53
						personnes = new PersonneListe(reponse.get(1).isArray(), reponse.get(0).isNumber(), vueARafraichir);
-
 
54
					}				
-
 
55
					personnes.setTaillePage(nbElements);
-
 
56
					personnes.setPageCourante(pageCourante);							
-
 
57
					info.setDonnee(0, personnes);
-
 
58
					
-
 
59
					// et on met à jour le demandeur des données
-
 
60
					vueARafraichir.rafraichir(info);
-
 
61
				} else {
99
						GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas un tableau JSON et vaut : "+responseValue.toString(), null);
62
					GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas un tableau JSON et vaut : "+responseValue.toString(), null);
100
					}
63
				}
101
				}
64
			}
102
			});	
65
		});	
103
		}
66
	}
104
	}
67
	
105
	
68
	public void ajouter(Personne personne) {		
106
	public void ajouter(Personne personne) {		
69
		String postDonneesEncodees = personne.obtenirChainePOST();
107
		String postDonneesEncodees = personne.obtenirChainePOST();
70
		postDonneesEncodees += "&cmhl_ce_modifier_par=" + utilisateurId;		
108
		postDonneesEncodees += "&cmhl_ce_modifier_par=" + utilisateurId;		
71
		final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM);	
109
		final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM);	
72
		rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
110
		rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
73
			@Override
111
			@Override
74
			public void surReponse(JSONValue responseValue) {
112
			public void surReponse(JSONValue responseValue) {
75
				if (responseValue.isString() != null) {
113
				if (responseValue.isString() != null) {
76
					Information info = new Information("ajout_personne");
114
					Information info = new Information("ajout_personne");
77
					String structureIdOuMessage = responseValue.isString().stringValue();
115
					String structureIdOuMessage = responseValue.isString().stringValue();
78
					if (structureIdOuMessage.matches("^[0-9]+$")) {
116
					if (structureIdOuMessage.matches("^[0-9]+$")) {
79
						info.setDonnee(structureIdOuMessage);
117
						info.setDonnee(structureIdOuMessage);
80
					} else {
118
					} else {
81
						info.setMessage(structureIdOuMessage);
119
						info.setMessage(structureIdOuMessage);
82
					}
120
					}
83
					vueARafraichir.rafraichir(info);
121
					vueARafraichir.rafraichir(info);
84
				} else {
122
				} else {
85
					GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null);
123
					GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null);
86
				}
124
				}
87
			}
125
			}
88
		});		
126
		});		
89
	}
127
	}
90
	
128
	
91
	public void modifier(Personne personne) {
129
	public void modifier(Personne personne) {
92
		String postDonneesEncodees = personne.obtenirChainePOST();
130
		String postDonneesEncodees = personne.obtenirChainePOST();
93
		postDonneesEncodees += "&cmhl_ce_modifier_par=" + utilisateurId;
131
		postDonneesEncodees += "&cmhl_ce_modifier_par=" + utilisateurId;
94
		GWT.log(postDonneesEncodees, null);
132
		GWT.log(postDonneesEncodees, null);
95
		String[] parametres = {personne.getId()};
133
		String[] parametres = {personne.getId()};
96
		final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
134
		final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
97
		rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
135
		rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
98
			@Override
136
			@Override
99
			public void surReponse(JSONValue responseValue) {
137
			public void surReponse(JSONValue responseValue) {
100
				// Si la requête est un succès, reception d'une chaine
138
				// Si la requête est un succès, reception d'une chaine
101
				if (responseValue.isString() != null) {
139
				if (responseValue.isString() != null) {
102
					Information info = new Information("modification_personne");
140
					Information info = new Information("modification_personne");
103
					info.setMessage(responseValue.isString().stringValue());
141
					info.setMessage(responseValue.isString().stringValue());
104
					vueARafraichir.rafraichir(info);
142
					vueARafraichir.rafraichir(info);
105
				} else {
143
				} else {
106
					GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null);
144
					GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null);
107
				}
145
				}
108
			}
146
			}
109
		});
147
		});
110
	}
148
	}
111
 
149
 
112
	public void supprimer(String personnesId) {		
150
	public void supprimer(String personnesId) {		
113
		String[] parametres = {utilisateurId, personnesId};
151
		String[] parametres = {utilisateurId, personnesId};
114
		final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
152
		final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
115
		rb.envoyerRequeteSuppression(new JsonRestRequestCallback() {
153
		rb.envoyerRequeteSuppression(new JsonRestRequestCallback() {
116
			@Override
154
			@Override
117
			public void surReponse(JSONValue responseValue) {
155
			public void surReponse(JSONValue responseValue) {
118
				if (responseValue.isString() != null) {
156
				if (responseValue.isString() != null) {
119
					Information info = new Information("suppression_personne");
157
					Information info = new Information("suppression_personne");
120
					info.setMessage(responseValue.isString().stringValue());
158
					info.setMessage(responseValue.isString().stringValue());
121
					vueARafraichir.rafraichir(info);
159
					vueARafraichir.rafraichir(info);
122
				} else {
160
				} else {
123
					GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null);
161
					GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null);
124
				}
162
				}
125
			}
163
			}
126
		});
164
		});
127
	}
165
	}
128
	
166
	
129
}
167
}