Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1367 Rev 1369
1
package org.tela_botanica.client.modeles;
1
package org.tela_botanica.client.modeles;
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.http.JsonRestRequestBuilder;
6
import org.tela_botanica.client.http.JsonRestRequestBuilder;
7
import org.tela_botanica.client.http.JsonRestRequestCallback;
7
import org.tela_botanica.client.http.JsonRestRequestCallback;
8
import org.tela_botanica.client.interfaces.Rafraichissable;
8
import org.tela_botanica.client.interfaces.Rafraichissable;
9
import org.tela_botanica.client.synchronisation.Reponse;
9
import org.tela_botanica.client.synchronisation.Reponse;
10
import org.tela_botanica.client.synchronisation.Sequenceur;
10
import org.tela_botanica.client.synchronisation.Sequenceur;
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
 
13
 
14
import com.google.gwt.json.client.JSONArray;
14
import com.google.gwt.json.client.JSONArray;
15
import com.google.gwt.json.client.JSONBoolean;
15
import com.google.gwt.json.client.JSONBoolean;
16
import com.google.gwt.json.client.JSONNumber;
16
import com.google.gwt.json.client.JSONNumber;
17
import com.google.gwt.json.client.JSONObject;
17
import com.google.gwt.json.client.JSONObject;
18
import com.google.gwt.json.client.JSONString;
18
import com.google.gwt.json.client.JSONString;
19
import com.google.gwt.json.client.JSONValue;
19
import com.google.gwt.json.client.JSONValue;
20
 
20
 
21
public class ValeurListeAsyncDao {
21
public class ValeurListeAsyncDao {
22
	
22
	
23
	private static HashMap<String, Object> ontologieCache = new HashMap<String, Object>();
23
	private static HashMap<String, Object> ontologieCache = new HashMap<String, Object>();
24
	
24
	
25
	private static final String SERVICE_NOM = "CoelValeurListe";
25
	private static final String SERVICE_NOM = "CoelValeurListe";
26
	private Rafraichissable vueARafraichir = null;
26
	private Rafraichissable vueARafraichir = null;
27
	private int cptPage = 0;
27
	private int cptPage = 0;
28
	// FIXME : limiteJREST devrait être récupéré depuis un registre/dictionnaire
28
	// FIXME : limiteJREST devrait être récupéré depuis un registre/dictionnaire
29
	private int limiteJREST = 150;
29
	private int limiteJREST = 150;
30
 
30
 
31
	public ValeurListeAsyncDao(Rafraichissable vueCourante) {
31
	public ValeurListeAsyncDao(Rafraichissable vueCourante) {
32
		vueARafraichir = vueCourante;
32
		vueARafraichir = vueCourante;
33
		if (Mediateur.DEBUG) System.out.println("|| ValeurListeAsyncDao > vueARafraichir = "+vueARafraichir.getClass().toString());
33
		if (Mediateur.DEBUG) System.out.println("|| ValeurListeAsyncDao > vueARafraichir = "+vueARafraichir.getClass().toString());
34
	}
34
	}
35
	
35
	
36
	public static HashMap<String, Object> getOntologieCache() {
36
	public static HashMap<String, Object> getOntologieCache() {
37
		return ontologieCache;
37
		return ontologieCache;
38
	}
38
	}
39
	
39
	
40
	public void obtenirListe(Integer cle, Integer seqId) {
40
	public void obtenirListe(Integer cle, Integer seqId) {
41
		selectionner("id", cle, null, null, false, null, -1, -1, seqId);
41
		selectionner("id", cle, null, null, false, null, -1, -1, seqId);
42
	}
42
	}
43
	
43
	
44
	public void obtenirListe(String type, String identifiantValeur, Integer seqId) {
44
	public void obtenirListe(String type, String identifiantValeur, Integer seqId) {
45
		selectionner(type, null, null, identifiantValeur, false, null, -1, -1, seqId);
45
		selectionner(type, null, null, identifiantValeur, false, null, -1, -1, seqId);
46
	}
46
	}
47
	
47
	
48
	public void obtenirListe(Integer cle, boolean pagination, String recherche, int start, int limit, Integer seqId) {
48
	public void obtenirListe(Integer cle, boolean pagination, String recherche, int start, int limit, Integer seqId) {
49
		selectionner("nom", cle, null, null, pagination, recherche, start, limit, seqId);
49
		selectionner("nom", cle, null, null, pagination, recherche, start, limit, seqId);
50
	}
50
	}
51
	
51
	
52
	public void selectionner(String type, Integer cle, String abv, String idValeur, Integer seqId) {
52
	public void selectionner(String type, Integer cle, String abv, String idValeur, Integer seqId) {
53
		selectionner(type, cle, abv, idValeur, false, null, -1, -1, seqId);
53
		selectionner(type, cle, abv, idValeur, false, null, -1, -1, seqId);
54
	}
54
	}
55
 
55
 
56
	/****************************************************************************************************
56
	/****************************************************************************************************
57
	 ** selectionner(final String type, final Integer cle, final String abv, final String idValeur, final boolean pagination, final String recherche, final int start, final int limit)
57
	 ** selectionner(final String type, final Integer cle, final String abv, final String idValeur, final boolean pagination, final String recherche, final int start, final int limit)
58
	/****************************************************************************************************
58
	/****************************************************************************************************
59
	 * Action :
59
	 * Action :
60
	 * --------
60
	 * --------
61
	 * 		Récupère un nombre défini de Valeurs en s'aidant du nom partiel ou complet d'une valeur. 
61
	 * 		Récupère un nombre défini de Valeurs en s'aidant du nom partiel ou complet d'une valeur. 
62
	 * 		Cette méthode gère deux types de sélection de données :
62
	 * 		Cette méthode gère deux types de sélection de données :
63
	 * 		- la sélection en cache (ontologieCache) --> pagination = FALSE
63
	 * 		- la sélection en cache (ontologieCache) --> pagination = FALSE
64
	 * 		- la sélection "au fur et à mesure" --> pagination = TRUE
64
	 * 		- la sélection "au fur et à mesure" --> pagination = TRUE
65
	 * 
65
	 * 
66
	 * 		Gestion du cache :
66
	 * 		Gestion du cache :
67
	 * 		------------------
67
	 * 		------------------
68
	 * 		- Le cache est utilisé si et seulement si 'pagination' est à FAUX car dans le cas où PAGINATION est
68
	 * 		- Le cache est utilisé si et seulement si 'pagination' est à FAUX car dans le cas où PAGINATION est
69
	 * 			à VRAI, les enregistrements sont chargés au fur et à mesure de la consultation des pages par
69
	 * 			à VRAI, les enregistrements sont chargés au fur et à mesure de la consultation des pages par
70
	 * 			l'utilisateur.
70
	 * 			l'utilisateur.
71
	 * 		- Si la taille de la liste chargée est supérieure au nombre maximum d'enregistrements retourné
71
	 * 		- Si la taille de la liste chargée est supérieure au nombre maximum d'enregistrements retourné
72
	 * 		par le service JREST, alors on charge des blocs de valeurs jusqu'à ce que la totalité de la
72
	 * 		par le service JREST, alors on charge des blocs de valeurs jusqu'à ce que la totalité de la
73
	 * 		liste soit chargée.
73
	 * 		liste soit chargée.
74
	 * 
74
	 * 
75
	 * Description des paramètres :
75
	 * Description des paramètres :
76
	 * ----------------------------
76
	 * ----------------------------
77
	 *  @param 'type' est un paramètre directement destiné au service JREST. Il permet de définir le type
77
	 *  @param 'type' est un paramètre directement destiné au service JREST. Il permet de définir le type
78
	 *  		de requête SQL à exécuter.
78
	 *  		de requête SQL à exécuter.
79
	 *  @param 	'cle' est l'identifiant de la liste de valeurs à récupérer (cas d'un noeud dans l'arbre).
79
	 *  @param 	'cle' est l'identifiant de la liste de valeurs à récupérer (cas d'un noeud dans l'arbre).
80
	 *  @param 	'abv' sert pour la liste des régions. Il représente l'abréviation du nom d'un pays. Ce
80
	 *  @param 	'abv' sert pour la liste des régions. Il représente l'abréviation du nom d'un pays. Ce
81
	 *  		paramètre est concaténé à la clé pour former une clé particulière dont on se sert pour
81
	 *  		paramètre est concaténé à la clé pour former une clé particulière dont on se sert pour
82
	 *  		stocker la liste en cache.
82
	 *  		stocker la liste en cache.
83
	 *  @param	'idValeur' est l'identifiant de la valeur à récupérer (cas d'une feuille dans l'arbre).
83
	 *  @param	'idValeur' est l'identifiant de la valeur à récupérer (cas d'une feuille dans l'arbre).
84
	 *  @param	'pagination' est un booléen qui définit si la requête doit être paginée ou non.
84
	 *  @param	'pagination' est un booléen qui définit si la requête doit être paginée ou non.
85
	 *  @param	'recherche' est une chaîne de caractères représentant tout ou partie du nom d'un projet.
85
	 *  @param	'recherche' est une chaîne de caractères représentant tout ou partie du nom d'un projet.
86
	 *  		Si la chaîne est vide, alors tous les projets sont recherchés.
86
	 *  		Si la chaîne est vide, alors tous les projets sont recherchés.
87
	 *  @param	'start' et 'limit' sont les paramètres indispensables à la pagination. 'start'
87
	 *  @param	'start' et 'limit' sont les paramètres indispensables à la pagination. 'start'
88
	 *  		est le paramètre qui décrit le numéro du tuple de départ et 'limit' le nombre
88
	 *  		est le paramètre qui décrit le numéro du tuple de départ et 'limit' le nombre
89
	 *  		d'éléments à collecter.
89
	 *  		d'éléments à collecter.
90
	 *  
90
	 *  
91
	 *****************************************************************************************************/
91
	 *****************************************************************************************************/
92
	public void selectionner(final String type, final Integer cle, final String abv, final String idValeur, final boolean pagination, final String recherche, final int start, final int limit, final Integer seqId) {		
92
	public void selectionner(final String type, final Integer cle, final String abv, final String idValeur, final boolean pagination, final String recherche, final int start, final int limit, final Integer seqId) {		
93
		/**
93
		/**
94
		 * La cleParent en Integer est insuffisante pour les liste valeurs comme Région qui on plusieurs 
94
		 * La cleParent en Integer est insuffisante pour les liste valeurs comme Région qui on plusieurs 
95
		 * sections sur leur liste (ex : on ne sélectionne que les régions FR.__ puis les régions ES.__ sur la liste 1078 ....
95
		 * sections sur leur liste (ex : on ne sélectionne que les régions FR.__ puis les régions ES.__ sur la liste 1078 ....
96
		 **/
96
		 **/
97
		final String cleParentPourCache = cle + (abv == null ? "" : abv);
97
		final String cleParentPourCache = cle + (abv == null ? "" : abv);
98
		final String cleParent = cle+"";
98
		final String cleParent = cle+"";
99
		
99
		
100
		/** GESTION DU PARAMETRE 'recherche' **/
100
		/** GESTION DU PARAMETRE 'recherche' **/
101
		String nom = "";
101
		String nom = "";
102
		if ( (recherche == null) || (recherche.equals("")) ) nom = "";
102
		if ( (recherche == null) || (recherche.equals("")) ) nom = "";
103
		else {
103
		else {
104
			nom = recherche+"%";
104
			nom = recherche+"%";
105
		}
105
		}
106
 
106
 
107
		/** GESTION DU PARAMETRE 'abréviation' **/
107
		/** GESTION DU PARAMETRE 'abréviation' **/
108
		String abreviation = "";
108
		String abreviation = "";
109
		String paramAbv = "";
109
		String paramAbv = "";
110
		if (type.equals("ab") || type.equals("abv")) {
110
		if (type.equals("ab") || type.equals("abv")) {
111
			int positionPoint = abv.indexOf(".");
111
			int positionPoint = abv.indexOf(".");
112
			if (positionPoint != -1) abreviation = abv.substring(0, positionPoint)+"%";
112
			if (positionPoint != -1) abreviation = abv.substring(0, positionPoint)+"%";
113
			else abreviation=abv+"%";
113
			else abreviation=abv+"%";
114
		}
114
		}
115
		paramAbv = abreviation;
115
		paramAbv = abreviation;
116
 
116
 
117
		/** GESTION DES PARAMETRES à transmettre au JREST **/
117
		/** GESTION DES PARAMETRES à transmettre au JREST **/
118
		String[] parametres = {type, cleParent, paramAbv, idValeur, nom};
118
		String[] parametres = {type, cleParent, paramAbv, idValeur, nom};
119
		HashMap<String, String> restrictions = new HashMap<String, String>();
119
		HashMap<String, String> restrictions = new HashMap<String, String>();
120
 
120
 
121
		/** GESTION DE LA REQUETE dans le cas d'une liste paginée **/
121
		/** GESTION DE LA REQUETE dans le cas d'une liste paginée **/
122
		if (pagination)	{
122
		if (pagination)	{
123
 
123
 
124
			restrictions.put("limit", String.valueOf(limit));
124
			restrictions.put("limit", String.valueOf(limit));
125
			restrictions.put("start", String.valueOf(start));
125
			restrictions.put("start", String.valueOf(start));
126
			restrictions.put("orderby", "cmlv_nom");
126
			restrictions.put("orderby", "cmlv_nom");
127
			
127
			
128
			/** CONSTRUCTION DE LA REQUETE **/
128
			/** CONSTRUCTION DE LA REQUETE **/
129
    		final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
129
    		final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
130
    		
130
    		
131
    		/** ENVOI DE LA REQUETE **/
131
    		/** ENVOI DE LA REQUETE **/
132
    		rb.envoyerRequete(null, new JsonRestRequestCallback()
132
    		rb.envoyerRequete(null, new JsonRestRequestCallback()
133
    		{
133
    		{
134
    			/** RECEPTION DE LA REPONSE **/
134
    			/** RECEPTION DE LA REPONSE **/
135
    			public void surReponse(JSONValue responseValue)
135
    			public void surReponse(JSONValue responseValue)
136
    			{    				
136
    			{    				
137
    				if (vueARafraichir instanceof Sequenceur)	{
137
    				if (vueARafraichir instanceof Sequenceur)	{
138
    					if (Mediateur.DEBUG) System.out.println("<-- ValeurListeAsyncDao > Liste paginée, retour au sequenceur");
138
    					if (Mediateur.DEBUG) System.out.println("<-- ValeurListeAsyncDao > Liste paginée, retour au sequenceur");
139
    					Reponse reponse = new Reponse(responseValue, seqId);
139
    					Reponse reponse = new Reponse(responseValue, seqId);
140
    					vueARafraichir.rafraichir(reponse);
140
    					vueARafraichir.rafraichir(reponse);
141
    					
141
    					
142
    				/** Dans le cas d'une liste paginée, vueARafraichir est un objet Proxy.
142
    				/** Dans le cas d'une liste paginée, vueARafraichir est un objet Proxy.
143
    				 * On retourne l'objet JSON au proxy afin que ce soit lui qui le traite **/
143
    				 * On retourne l'objet JSON au proxy afin que ce soit lui qui le traite **/
144
    				} else {
144
    				} else {
145
    					if (Mediateur.DEBUG) System.out.println("<-- ValeurListeAsyncDao > Liste paginée, retour à "+vueARafraichir.getClass().toString());
145
    					if (Mediateur.DEBUG) System.out.println("<-- ValeurListeAsyncDao > Liste paginée, retour à "+vueARafraichir.getClass().toString());
146
    					vueARafraichir.rafraichir(responseValue);
146
    					vueARafraichir.rafraichir(responseValue);
147
    				}
147
    				}
148
    			}
148
    			}
149
    		});
149
    		});
150
		}
150
		}
151
		/** GESTION DE LA REQUETE dans le cas d'une liste NON paginée **/
151
		/** GESTION DE LA REQUETE dans le cas d'une liste NON paginée **/
152
		else
152
		else
153
		{
153
		{
154
			/** si start est supérieur à zéro, alors cela signifie que l'on doit charger une nouvelle page **/
154
			/** si start est supérieur à zéro, alors cela signifie que l'on doit charger une nouvelle page **/
155
			boolean nextPage = (start > 0);
155
			boolean nextPage = (start > 0);
156
			
156
			
157
			/** définition des contraintes sur la requête SQL **/
157
			/** définition des contraintes sur la requête SQL **/
158
			if (nextPage) {
158
			if (nextPage) {
159
				restrictions.put("start", String.valueOf(start));
159
				restrictions.put("start", String.valueOf(start));
160
				restrictions.put("limit", String.valueOf(limit));
160
				restrictions.put("limit", String.valueOf(limit));
161
				restrictions.put("orderby", "cmlv_nom");
161
				restrictions.put("orderby", "cmlv_nom");
162
			}
162
			}
163
			else {
163
			else {
164
				restrictions.put("orderby", "cmlv_nom");
164
				restrictions.put("orderby", "cmlv_nom");
165
			}
165
			}
166
			
166
			
167
			/** Si l'on est pas dans un processus de récupération d'une liste, alors si le cache contient déjà la liste recherchée **/
167
			/** Si l'on est pas dans un processus de récupération d'une liste, alors si le cache contient déjà la liste recherchée **/
168
			if (!nextPage && ontologieCache.containsKey(cleParentPourCache)) {
168
			if (!nextPage && ontologieCache.containsKey(cleParentPourCache)) {
169
					
169
					
170
				/** on retourne à la vue la liste contenue dans le cache **/				
170
				/** on retourne à la vue la liste contenue dans le cache **/				
171
				if (vueARafraichir instanceof Sequenceur)	{
171
				if (vueARafraichir instanceof Sequenceur)	{
172
					if (Mediateur.DEBUG) System.out.println("<-- ValeurListeAsyncDao > Liste en cache, retour au sequenceur");
172
					if (Mediateur.DEBUG) System.out.println("<-- ValeurListeAsyncDao > Liste en cache, retour au sequenceur");
173
					vueARafraichir = (Sequenceur) vueARafraichir;
173
					vueARafraichir = (Sequenceur) vueARafraichir;
174
					Reponse reponse = new Reponse(ontologieCache.get(cleParentPourCache), seqId);
174
					Reponse reponse = new Reponse(ontologieCache.get(cleParentPourCache), seqId);
175
					vueARafraichir.rafraichir(reponse);
175
					vueARafraichir.rafraichir(reponse);
176
				} else {
176
				} else {
177
					System.out.println("<-- ValeurListeAsyncDao > Liste en cache, retour à "+vueARafraichir.getClass().toString());
177
					if (Mediateur.DEBUG) System.out.println("<-- ValeurListeAsyncDao > Liste en cache, retour à "+vueARafraichir.getClass().toString());
178
					vueARafraichir.rafraichir(ontologieCache.get(cleParentPourCache));
178
					vueARafraichir.rafraichir(ontologieCache.get(cleParentPourCache));
179
				}
179
				}
180
			}
180
			}
181
			/** Si l'on est en train de récupérer une liste (c-a-d que l'on est en train de charger des blocs de données afin de récupérer totalement une liste) **/
181
			/** Si l'on est en train de récupérer une liste (c-a-d que l'on est en train de charger des blocs de données afin de récupérer totalement une liste) **/
182
			else {
182
			else {
183
				
183
				
184
				/** CONSTRUCTION DE LA REQUETE **/
184
				/** CONSTRUCTION DE LA REQUETE **/
185
	    		final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
185
	    		final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
186
	    		
186
	    		
187
	    		/** ENVOI DE LA REQUETE **/
187
	    		/** ENVOI DE LA REQUETE **/
188
	    		rb.envoyerRequete(null, new JsonRestRequestCallback() {
188
	    		rb.envoyerRequete(null, new JsonRestRequestCallback() {
189
	    			
189
	    			
190
	    			/** RECEPTION DE LA REPONSE **/
190
	    			/** RECEPTION DE LA REPONSE **/
191
	    			public void surReponse(JSONValue responseValue) {    	  
191
	    			public void surReponse(JSONValue responseValue) {    	  
192
	    				
192
	    				
193
	    				/** Si la réponse n'est pas vide **/
193
	    				/** Si la réponse n'est pas vide **/
194
	    				if (responseValue.isObject() != null) {
194
	    				if (responseValue.isObject() != null) {
195
	    					
195
	    					
196
	    					/** Récupération des différents paramètres de la réponse JSON **/
196
	    					/** Récupération des différents paramètres de la réponse JSON **/
197
							final JSONObject reponse = responseValue.isObject();
197
							final JSONObject reponse = responseValue.isObject();
198
							JSONString listeId = reponse.get("id").isString();
198
							JSONString listeId = reponse.get("id").isString();
199
							JSONArray listeValeurs = reponse.get("valeurs").isArray();
199
							JSONArray listeValeurs = reponse.get("valeurs").isArray();
200
							JSONNumber nbElements = reponse.get("nbElements").isNumber();
200
							JSONNumber nbElements = reponse.get("nbElements").isNumber();
201
							JSONBoolean getNextPage = reponse.get("getNextPage").isBoolean();
201
							JSONBoolean getNextPage = reponse.get("getNextPage").isBoolean();
202
							
202
							
203
							/** Gestion de l'abreviation (pour la liste des régions) **/
203
							/** Gestion de l'abreviation (pour la liste des régions) **/
204
							String abreviationStr = "";
204
							String abreviationStr = "";
205
							if (reponse.get("abreviation") != null) {
205
							if (reponse.get("abreviation") != null) {
206
								abreviationStr = reponse.get("abreviation").isString().stringValue();
206
								abreviationStr = reponse.get("abreviation").isString().stringValue();
207
								int a = abreviationStr.indexOf("%", 1);
207
								int a = abreviationStr.indexOf("%", 1);
208
								abreviationStr = abreviationStr.substring(1, a);
208
								abreviationStr = abreviationStr.substring(1, a);
209
							}
209
							}
210
							else {
210
							else {
211
								abreviationStr = "";
211
								abreviationStr = "";
212
							}
212
							}
213
 
213
 
214
							/** Si l'on a bien reçu une liste de valeurs **/
214
							/** Si l'on a bien reçu une liste de valeurs **/
215
							if (listeId != null)
215
							if (listeId != null)
216
							{
216
							{
217
								/** Transformation du tableau JSON réponse en ValeurListe **/
217
								/** Transformation du tableau JSON réponse en ValeurListe **/
218
								String id = listeId.stringValue();
218
								String id = listeId.stringValue();
219
								ValeurListe liste = new ValeurListe(new JSONString(id), abreviationStr, listeValeurs, nbElements);
219
								ValeurListe liste = new ValeurListe(new JSONString(id), abreviationStr, listeValeurs, nbElements);
220
 
220
 
221
								/** Si la liste existe deja en cache **/
221
								/** Si la liste existe deja en cache **/
222
								String identifiantCache = (abreviationStr=="") ? id : (id+abreviationStr);
222
								String identifiantCache = (abreviationStr=="") ? id : (id+abreviationStr);
223
								if (ontologieCache.get(id) != null)
223
								if (ontologieCache.get(id) != null)
224
								{
224
								{
225
									/** Alors on concatène la liste existante avec celle qu'on vient de recevoir **/
225
									/** Alors on concatène la liste existante avec celle qu'on vient de recevoir **/
226
									((ValeurListe)ontologieCache.get(identifiantCache)).concatenerListe(liste);
226
									((ValeurListe)ontologieCache.get(identifiantCache)).concatenerListe(liste);
227
								}
227
								}
228
								/** Sinon on l'insère simplement dans le cache **/
228
								/** Sinon on l'insère simplement dans le cache **/
229
								else {
229
								else {
230
									ontologieCache.put(identifiantCache,liste);
230
									ontologieCache.put(identifiantCache,liste);
231
								}
231
								}
232
 
232
 
233
								/** Appel à la méthode qui gère le retour à l'appelant ou la suite du chargement **/
233
								/** Appel à la méthode qui gère le retour à l'appelant ou la suite du chargement **/
234
								chargerListe(getNextPage.booleanValue(), type, liste.getId(), abv, idValeur, pagination, recherche, start, limit, seqId);
234
								chargerListe(getNextPage.booleanValue(), type, liste.getId(), abv, idValeur, pagination, recherche, start, limit, seqId);
235
							}
235
							}
236
	    				}
236
	    				}
237
	    			}
237
	    			}
238
	    		});
238
	    		});
239
	    	}
239
	    	}
240
		}
240
		}
241
	}
241
	}
242
	
242
	
243
	/********************************************************************************************************
243
	/********************************************************************************************************
244
	 * Action :
244
	 * Action :
245
	 * --------
245
	 * --------
246
	 * 		Clotûre le chargement d'une liste de valeurs si le chargement est terminé, ou lance le chargement
246
	 * 		Clotûre le chargement d'une liste de valeurs si le chargement est terminé, ou lance le chargement
247
	 * 		du prochain bloc de données si la liste n'est pas chargée en totalité. 
247
	 * 		du prochain bloc de données si la liste n'est pas chargée en totalité. 
248
	 * 
248
	 * 
249
	 * Paramètres :
249
	 * Paramètres :
250
	 * ------------
250
	 * ------------
251
	 * @param nextPage : est VRAI s'il faut faut continuer de charger la liste car elle n'est pas entièrement chargée et FAUX sinon
251
	 * @param nextPage : est VRAI s'il faut faut continuer de charger la liste car elle n'est pas entièrement chargée et FAUX sinon
252
	 * @param Tous les autres paramètres sont les mêmes que pour la méthode 'selectionner'
252
	 * @param Tous les autres paramètres sont les mêmes que pour la méthode 'selectionner'
253
	 * 
253
	 * 
254
	 *********************************************************************************************************/
254
	 *********************************************************************************************************/
255
	public void chargerListe(boolean nextPage, String type, Integer cle, String abv, String idValeur, boolean pagination, String recherche, int start, int nbElements, final Integer seqId) {
255
	public void chargerListe(boolean nextPage, String type, Integer cle, String abv, String idValeur, boolean pagination, String recherche, int start, int nbElements, final Integer seqId) {
256
		
256
		
257
		/** Si nextpage est VRAI, alors cela signifie que l'on doit relancer une requete pour obtenir
257
		/** Si nextpage est VRAI, alors cela signifie que l'on doit relancer une requete pour obtenir
258
		la page suivante **/
258
		la page suivante **/
259
		if (nextPage) {
259
		if (nextPage) {
260
			cptPage++;
260
			cptPage++;
261
			selectionner(type, cle, abv, idValeur, pagination, recherche, cptPage*limiteJREST, limiteJREST, seqId);
261
			selectionner(type, cle, abv, idValeur, pagination, recherche, cptPage*limiteJREST, limiteJREST, seqId);
262
		}
262
		}
263
		
263
		
264
		/** Sinon cela signifie que le chargement de la liste est terminé et on peut
264
		/** Sinon cela signifie que le chargement de la liste est terminé et on peut
265
		la mettre en cache et retourner la réponse au demandeur **/
265
		la mettre en cache et retourner la réponse au demandeur **/
266
		else {
266
		else {
267
			// recupération de l'idenfiant de la liste
267
			// recupération de l'idenfiant de la liste
268
			String id = String.valueOf(cle);
268
			String id = String.valueOf(cle);
269
			
269
			
270
			// gestion de l'abréviation pour la liste des régions
270
			// gestion de l'abréviation pour la liste des régions
271
			String abreviationStr = "";
271
			String abreviationStr = "";
272
			if (abv != null) {
272
			if (abv != null) {
273
				abreviationStr = abv;
273
				abreviationStr = abv;
274
				int indexPoint = abreviationStr.indexOf(".", 0);
274
				int indexPoint = abreviationStr.indexOf(".", 0);
275
				abreviationStr = abreviationStr.substring(0, indexPoint);
275
				abreviationStr = abreviationStr.substring(0, indexPoint);
276
				id = id+abreviationStr; 
276
				id = id+abreviationStr; 
277
			}
277
			}
278
			
278
			
279
			// réinitialisation du compteur
279
			// réinitialisation du compteur
280
			cptPage = 0;
280
			cptPage = 0;
281
 
281
 
282
			/** On retourne la liste à la vue **/ 		
282
			/** On retourne la liste à la vue **/ 		
283
			if (ontologieCache.get(id) != null) {
283
			if (ontologieCache.get(id) != null) {
284
				if (vueARafraichir instanceof Sequenceur)	{
284
				if (vueARafraichir instanceof Sequenceur)	{
285
					System.out.println("<-- ValeurListeAsyncDao > Liste en cache, retour au sequenceur");
285
					if (Mediateur.DEBUG) System.out.println("<-- ValeurListeAsyncDao > Liste en cache, retour au sequenceur");
286
					vueARafraichir = (Sequenceur) vueARafraichir;
286
					vueARafraichir = (Sequenceur) vueARafraichir;
287
					Reponse reponse = new Reponse(ontologieCache.get(id), seqId);
287
					Reponse reponse = new Reponse(ontologieCache.get(id), seqId);
288
					vueARafraichir.rafraichir(reponse);
288
					vueARafraichir.rafraichir(reponse);
289
				} else {
289
				} else {
290
					System.out.println("<-- ValeurListeAsyncDao > Liste en cache, retour à "+vueARafraichir.getClass().toString());
290
					if (Mediateur.DEBUG) System.out.println("<-- ValeurListeAsyncDao > Liste en cache, retour à "+vueARafraichir.getClass().toString());
291
					vueARafraichir.rafraichir(ontologieCache.get(id));
291
					vueARafraichir.rafraichir(ontologieCache.get(id));
292
				}
292
				}
293
			}
293
			}
294
		}
294
		}
295
	}	
295
	}	
296
}
296
}