Subversion Repositories eFlore/Applications.coel

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1802 aurelien 1
package org.tela_botanica.client.modeles.collection;
2
 
3
import java.util.HashMap;
4
 
5
import org.tela_botanica.client.Mediateur;
6
import org.tela_botanica.client.RegistreId;
7
import org.tela_botanica.client.http.JsonRestRequestBuilder;
8
import org.tela_botanica.client.http.JsonRestRequestCallback;
9
import org.tela_botanica.client.interfaces.Rafraichissable;
10
import org.tela_botanica.client.modeles.Information;
11
import org.tela_botanica.client.synchronisation.Reponse;
12
import org.tela_botanica.client.util.UtilDAO;
13
 
14
import com.extjs.gxt.ui.client.Registry;
15
import com.google.gwt.core.client.GWT;
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 CollectionAStructureAsyncDao {
22
	private static final String SERVICE_NOM = "CoelCollection";
23
	public static final String PAR_STRUCTURE = "ParIdStructure";
24
 
25
	private Rafraichissable vueARafraichir = null;
26
 
27
	public CollectionAStructureAsyncDao(Rafraichissable vueARafraichirCourrante) {
28
		if (Mediateur.DEBUG) System.out.println("|| CollectionAStructureAsyncDao > vueARafraichir = "+vueARafraichirCourrante.getClass().toString());
29
		vueARafraichir = vueARafraichirCourrante;
30
	}
31
 
32
	public void selectionner(final String structureId, final int start, final int nbElements, final Integer seqId) {
33
 
34
		String[] parametres = {structureId};
35
 
36
		HashMap<String, String> restrictions = new HashMap<String, String>();
37
 
38
		if (nbElements != -1)	{
39
			restrictions.put("limit", String.valueOf(nbElements));
40
		}
41
		/** DEFINITION DU TUPLE DE DEPART **/
42
		restrictions.put("start", String.valueOf(start*nbElements));
43
 
44
		final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM+'/'+PAR_STRUCTURE, parametres, restrictions);
45
 
46
		rb.envoyerRequete(null, new JsonRestRequestCallback() {
47
			@Override
48
			public void surReponse(JSONValue responseValue) {
49
 
50
				Information info = new Information("liste_collection_a_structure");
51
 
52
				if (responseValue != null) {
53
					final JSONArray reponse = responseValue.isArray();
54
					// Si la réponse est un tableau, alors c'est une liste de collections qui a été retournée
55
					if (responseValue.isArray() != null) {
56
						// Transformation du tableau JSON réponse en CollectionAStructureListe
57
						CollectionAStructureListe collections = new CollectionAStructureListe(reponse);
58
						info.setDonnee(0, collections);
59
 
60
						// et on met à jour le demandeur des données
61
						if (seqId != null)	{
62
							if (Mediateur.DEBUG) System.out.println("<-- CollectionAStructureAsyncDao > Liste non paginée, retour au sequenceur");
63
							Reponse reponseRequete = new Reponse(info, seqId);
64
							vueARafraichir.rafraichir(reponseRequete);
65
						}
66
						else	{
67
							if (Mediateur.DEBUG) System.out.println("<-- CollectionAStructureAsyncDao > Liste non paginée, retour au sequenceur");
68
							vueARafraichir.rafraichir(info);
69
						}
70
					// Si la réponse est un objet, alors c'est une unique collection qui a été retournée
71
					} else if (responseValue.isArray() != null) {
72
						GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas un tableau JSON et vaut : "+responseValue.toString(), null);
73
					}
74
				}
75
			}
76
		});
77
	}
78
}