| 31 |
aperonnet |
1 |
package org.tela_botanica.client.modeles;
|
|
|
2 |
|
|
|
3 |
import org.tela_botanica.client.image.ImageMediateur;
|
| 36 |
aperonnet |
4 |
import org.tela_botanica.client.image.ImageModele;
|
| 31 |
aperonnet |
5 |
import org.tela_botanica.client.interfaces.Rafraichissable;
|
|
|
6 |
|
|
|
7 |
import com.google.gwt.json.client.JSONArray;
|
|
|
8 |
import com.google.gwt.json.client.JSONObject;
|
|
|
9 |
import com.google.gwt.json.client.JSONParser;
|
|
|
10 |
import com.google.gwt.json.client.JSONString;
|
|
|
11 |
import com.google.gwt.json.client.JSONValue;
|
|
|
12 |
import com.google.gwt.user.client.HTTPRequest;
|
|
|
13 |
import com.google.gwt.user.client.ResponseTextHandler;
|
|
|
14 |
import com.google.gwt.user.client.Window;
|
| 36 |
aperonnet |
15 |
import com.google.gwt.user.client.ui.Image;
|
| 31 |
aperonnet |
16 |
|
| 36 |
aperonnet |
17 |
/**
|
|
|
18 |
* DAO qui renvoie le nombre d'image associées à différents critères donnés (utile pour la pagination)
|
|
|
19 |
* @author aurelien
|
|
|
20 |
*
|
|
|
21 |
*/
|
| 31 |
aperonnet |
22 |
public class NombreImageAsynchroneDAO {
|
|
|
23 |
|
| 36 |
aperonnet |
24 |
/**
|
|
|
25 |
* Le modèle associé au DAO
|
|
|
26 |
*/
|
|
|
27 |
private ImageModele iModele = null ;
|
| 31 |
aperonnet |
28 |
|
| 36 |
aperonnet |
29 |
/**
|
|
|
30 |
* Setteur pour le modèle
|
|
|
31 |
* @param im le modèlme à associer
|
|
|
32 |
*/
|
|
|
33 |
public void setIModele(ImageModele im)
|
| 31 |
aperonnet |
34 |
{
|
| 36 |
aperonnet |
35 |
iModele = im ;
|
| 31 |
aperonnet |
36 |
}
|
|
|
37 |
|
| 36 |
aperonnet |
38 |
/**
|
|
|
39 |
* Envoie une requete au serveur jrest pour obtenir le nombre d'images correspondant
|
|
|
40 |
* à des critères données en paramètres
|
|
|
41 |
* @param r le rafraichissable qui demande la mise à jour
|
|
|
42 |
* @param criteres un tableau nom/valeur des critères pour les images
|
|
|
43 |
*/
|
| 31 |
aperonnet |
44 |
public void obtenirNombreImages(final Rafraichissable r, String[][] criteres)
|
|
|
45 |
{
|
|
|
46 |
String requete = "" ;
|
|
|
47 |
|
|
|
48 |
if(criteres != null)
|
|
|
49 |
{
|
| 36 |
aperonnet |
50 |
// on construit les paramètres du get avec les critères (&critere1=valeur1&critere2=valeur2 etc...)
|
| 31 |
aperonnet |
51 |
for (int i = 0; i < criteres.length; i++) {
|
|
|
52 |
|
|
|
53 |
if(!criteres[i][0].equals("ci_ordre"))
|
|
|
54 |
{
|
|
|
55 |
if(i != 0)
|
|
|
56 |
{
|
|
|
57 |
requete += "&" ;
|
|
|
58 |
}
|
|
|
59 |
requete += criteres[i][0]+"="+criteres[i][1] ;
|
|
|
60 |
if(i != criteres.length - 1)
|
|
|
61 |
{
|
|
|
62 |
requete += "&" ;
|
|
|
63 |
}
|
|
|
64 |
}
|
|
|
65 |
}
|
|
|
66 |
}
|
|
|
67 |
|
| 36 |
aperonnet |
68 |
// on fait un get asynchrone
|
|
|
69 |
HTTPRequest.asyncGet("jrest/InventoryImageCount/"+iModele.getIdentifiant()+"/"+requete, new ResponseTextHandler() {
|
| 31 |
aperonnet |
70 |
public void onCompletion(String responseText) {
|
|
|
71 |
|
|
|
72 |
final JSONValue responseValue = JSONParser.parse(responseText);
|
|
|
73 |
|
| 36 |
aperonnet |
74 |
// si la requete se passe bien on reçoit un tableau JSON
|
| 31 |
aperonnet |
75 |
if(responseValue.isArray() != null)
|
|
|
76 |
{
|
| 36 |
aperonnet |
77 |
// qui contient une valeur : le nombre d'images correspondant au critères
|
| 31 |
aperonnet |
78 |
JSONValue res = responseValue.isArray().get(0) ;
|
|
|
79 |
JSONString reponseNombre = res.isString() ;
|
|
|
80 |
int maxImages = (int)Integer.parseInt(reponseNombre.stringValue()) ;
|
|
|
81 |
int[] nbImages = {maxImages} ;
|
| 36 |
aperonnet |
82 |
// on le met dans un tableau d'entiers qu'on tranmset au demandeur de la mise à jour
|
| 31 |
aperonnet |
83 |
r.rafraichir(nbImages, true) ;
|
|
|
84 |
}
|
|
|
85 |
|
|
|
86 |
}
|
|
|
87 |
|
|
|
88 |
}) ;
|
|
|
89 |
}
|
|
|
90 |
|
|
|
91 |
}
|