Subversion Repositories eFlore/Applications.coel

Rev

Rev 1319 | Rev 1367 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1319 Rev 1329
Line 13... Line 13...
13
import org.tela_botanica.client.util.Debug;
13
import org.tela_botanica.client.util.Debug;
14
import org.tela_botanica.client.util.UtilDAO;
14
import org.tela_botanica.client.util.UtilDAO;
15
import com.extjs.gxt.ui.client.Registry;
15
import com.extjs.gxt.ui.client.Registry;
16
import com.google.gwt.core.client.GWT;
16
import com.google.gwt.core.client.GWT;
17
import com.google.gwt.json.client.JSONArray;
17
import com.google.gwt.json.client.JSONArray;
-
 
18
import com.google.gwt.json.client.JSONObject;
18
import com.google.gwt.json.client.JSONValue;
19
import com.google.gwt.json.client.JSONValue;
Line 19... Line 20...
19
 
20
 
20
public class PersonneAsyncDao {
21
public class PersonneAsyncDao {
Line 24... Line 25...
24
	private Rafraichissable vueARafraichir = null;
25
	private Rafraichissable vueARafraichir = null;
Line 25... Line 26...
25
	
26
	
26
	public PersonneAsyncDao(Rafraichissable vue) {
27
	public PersonneAsyncDao(Rafraichissable vue) {
27
		vueARafraichir = vue;
28
		vueARafraichir = vue;
28
		utilisateurId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId();
29
		utilisateurId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId();
-
 
30
	}	
-
 
31
	
-
 
32
	/**
-
 
33
	 * @param paginationProgressive : définit le mode de consultation de la base de données
-
 
34
	 * 			- True :	la consultation des données est progressive, ce qui signifie que la liste est chargée (paginée) au
-
 
35
	 * 						fur et à mesure de la consultation des données par l'utilisateur.
-
 
36
	 * 			- False :	la consultation des données est classique : un seul appel à la base de données est effectué, le retour
-
 
37
	 * 						est renvoyé à l'appelant
-
 
38
	 * 			// FIXME : si la taille de la liste est supérieure à la limite du JREST (150), ce deuxieme mode ne fonctionne pas
-
 
39
	 */	
Line 29... Line 40...
29
	}
40
	public void selectionner(final boolean paginationProgressive, String personneId, String projetId, String nomComplet, final int start, final int nbElements, final Integer seqId) {
30
 
41
 
Line 31... Line 42...
31
	public void selectionner(String personneId, String projetId, String nomComplet, final int pageCourante, final int nbElements, final Integer seqId) {
42
		String nom = (nomComplet == null) ? "%" : nomComplet+"%";		
32
		String[] parametres = {personneId, projetId, nomComplet};
-
 
Line 33... Line 43...
33
		
43
		String[] parametres = {personneId, projetId, nom};
34
		HashMap<String, String> restrictions = new HashMap<String, String>();
44
		
35
		restrictions.put("start", String.valueOf(pageCourante*nbElements));
45
		HashMap<String, String> restrictions = new HashMap<String, String>();
Line -... Line 46...
-
 
46
		
-
 
47
		if (nbElements != -1)	{
-
 
48
			restrictions.put("limit", String.valueOf(nbElements));
-
 
49
		}
-
 
50
		
-
 
51
		/** GESTION DE LA REQUETE dans le cas d'une liste paginée progressive **/
-
 
52
		if (paginationProgressive) {
36
		
53
 
-
 
54
			/** DEFINITION DU TUPLE DE DEPART **/
-
 
55
			restrictions.put("start", String.valueOf(start));
37
		if (nbElements != -1)	{
56
			
38
			restrictions.put("limit", String.valueOf(nbElements));
57
			/** CONSTRUCTION DE LA REQUETE **/
-
 
58
    		final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
39
		}
59
 
-
 
60
    		/** ENVOI DE LA REQUETE **/
40
		
61
    		rb.envoyerRequete(null, new JsonRestRequestCallback()
-
 
62
    		{
-
 
63
    			/** RECEPTION DE LA REPONSE **/
-
 
64
    			public void surReponse(JSONValue responseValue)
-
 
65
    			{
-
 
66
    				/** Dans le cas d'une liste paginée, vueARafraichir est un objet Proxy.
-
 
67
    				 * On retourne l'objet JSON au proxy afin que ce soit lui qui le traite **/
-
 
68
    				vueARafraichir.rafraichir(responseValue);
-
 
69
    			}
41
		final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
70
    		});
-
 
71
		}
-
 
72
		/** GESTION DE LA REQUETE dans le cas d'une liste NON paginée progressive **/
-
 
73
		else {
-
 
74
			
-
 
75
			/** DEFINITION DU TUPLE DE DEPART **/
42
		rb.envoyerRequete(null, new JsonRestRequestCallback() {
76
			restrictions.put("start", String.valueOf(start*nbElements));
Line -... Line 77...
-
 
77
			
-
 
78
			final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
-
 
79
			rb.envoyerRequete(null, new JsonRestRequestCallback() {
-
 
80
				@Override
-
 
81
				public void surReponse(JSONValue responseValue) {
-
 
82
					
43
			@Override
83
					if (responseValue != null) {
44
			public void surReponse(JSONValue responseValue) {
84
						JSONObject reponseObject = responseValue.isObject();
45
				// Si la requête est un succès, réception d'un tableau
85
						
-
 
86
						if (reponseObject.get("personnes").isArray() != null) {
46
				if (responseValue.isArray() != null) {
87
							JSONArray reponse = responseValue.isArray();
47
					final JSONArray reponse = responseValue.isArray();
88
							
-
 
89
							// Transformation du tableau JSON réponse en ListePersonne
-
 
90
							Information info = new Information("liste_personne");
-
 
91
							PersonneListe personnes;
-
 
92
							personnes = new PersonneListe(reponseObject.get("personnes").isArray(), reponseObject.get("nbElements").isNumber(), vueARafraichir);
-
 
93
							personnes.setTaillePage(nbElements);
-
 
94
							personnes.setPageCourante(start);							
-
 
95
							info.setDonnee(0, personnes);
-
 
96
							
-
 
97
							// et on met à jour le demandeur des données
-
 
98
							if (seqId != null)	{
-
 
99
								Reponse reponseRequete = new Reponse(info, seqId);
48
					
100
								vueARafraichir.rafraichir(reponseRequete);
49
					// Transformation du tableau JSON réponse en ListeInstitution
101
							}
50
					Information info = new Information("liste_personne");
-
 
51
					PersonneListe personnes;
-
 
52
					if (reponse.get(0).isArray() != null)	{
-
 
53
						personnes = new PersonneListe(reponse);
-
 
54
					} else {
-
 
55
						personnes = new PersonneListe(reponse.get(1).isArray(), reponse.get(0).isNumber(), vueARafraichir);
-
 
56
					}				
-
 
57
					personnes.setTaillePage(nbElements);
-
 
58
					personnes.setPageCourante(pageCourante);							
-
 
59
					info.setDonnee(0, personnes);
102
							else	{
60
					
-
 
61
					// et on met à jour le demandeur des données
-
 
62
					if (seqId != null)	{
-
 
63
						Reponse reponseRequete = new Reponse(info, seqId);
-
 
64
						vueARafraichir.rafraichir(reponseRequete);
-
 
65
					}
103
								vueARafraichir.rafraichir(info);
66
					else	{
104
							}
67
						vueARafraichir.rafraichir(info);
105
						}
68
					}
106
					} else {
Line 69... Line 107...
69
				} else {
107
						GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas un tableau JSON et vaut : "+responseValue.toString(), null);
70
					GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas un tableau JSON et vaut : "+responseValue.toString(), null);
108
					}
71
				}
109
				}