3,6 → 3,7 |
import java.util.Iterator; |
|
import org.tela_botanica.client.image.ImageMediateur; |
import org.tela_botanica.client.image.ImageModele; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
|
import com.google.gwt.json.client.JSONArray; |
28,18 → 29,31 |
*/ |
public class ListeImageAsynchroneDAO { |
|
ImageMediateur iMediateur = null ; |
/** |
* Le modèle associé au DAO |
*/ |
ImageModele iModele = null ; |
|
public void setIMediateur(ImageMediateur im) |
/** |
* Setteur pour le modèle |
* @param im le modèle à associer |
*/ |
public void setIModele(ImageModele im) |
{ |
iMediateur = im ; |
iModele = im ; |
} |
|
/** |
* Envoie une requete au serveur jrest pour obtenir une liste d'images correspondant à des critères demandés |
* @param r le rafraichissable qui a demandé les données |
* @param criteres un tableau contenant les critères de selections |
*/ |
public void ObtenirListeImages(final Rafraichissable r, String[][] criteres) |
{ |
|
String requete = "" ; |
|
// on construit les paramètres du get |
if(criteres != null) |
{ |
for (int i = 0; i < criteres.length; i++) { |
52,12 → 66,16 |
} |
} |
|
// on envoie le get asynchrone |
HTTPRequest.asyncGet("jrest/InventoryImageList/0/"+requete, new ResponseTextHandler() { |
|
// si tout se passe bien on reçoit une réponse JSON |
public void onCompletion(String responseText) { |
|
final ListeImageCarnet photoData ; |
|
final JSONValue responseValue = JSONParser.parse(responseText); |
// si c'est un tableau |
if (responseValue.isArray() != null) { |
|
final JSONArray reponse = responseValue.isArray(); |
65,7 → 83,7 |
final int taillemax = reponse.size(); |
photoData = new ListeImageCarnet(taillemax); |
|
|
// on le parcourt |
for (int j = 0; j < taillemax ; j++) { |
|
JSONObject image = (JSONObject)reponse.get(j) ; |
72,6 → 90,7 |
|
ImageCarnet im = new ImageCarnet(image) ; |
|
// et on en extrait les données pour construire la liste d'image |
photoData.put(im.getOrdre(),im) ; |
|
} |
78,25 → 97,35 |
} |
else |
{ |
// si c'est un objet alors il n'y a qu'une réponse |
if(responseValue.isObject() != null) |
{ |
photoData = new ListeImageCarnet(1); |
ImageCarnet im = new ImageCarnet(responseValue.isObject()) ; |
// on crée une liste de 1 élement auquel on ajoute ce qui a été reçu |
photoData.put(im.getOrdre(),im) ; |
} |
else |
{ |
// sinon on crée une liste vide |
photoData = new ListeImageCarnet(0) ; |
} |
} |
|
// dans tous les cas on transmet la liste crée au rafraichissable en lui demandant de répandre les données car il est |
// le premier à les recevoir |
r.rafraichir(photoData,true); |
} |
}); |
} |
|
/** |
* Met à jour les valeurs d'une liste d'image donnée dans la base de données |
* @param li la liste d'image à synchroniser avec la base |
*/ |
public void SynchroniserBaseDeDonnees(ListeImageCarnet li) |
{ |
// on parcourt toute la liste d'image |
for(Iterator listIt = li.keySet().iterator() ; listIt.hasNext() ;) |
{ |
String postData = "" ; |
103,8 → 132,10 |
|
ImageCarnet enCours = (ImageCarnet)li.get(listIt.next()) ; |
|
// pour chaque image on extrait les informations |
for(Iterator imgIt = enCours.keySet().iterator();imgIt.hasNext();) |
{ |
// qu'on place dans le poste |
String key = (String)imgIt.next() ; |
String valeur = enCours.renvoyerValeurCorrecte(key) ; |
valeur.replaceAll("'", "\'") ; |
112,9 → 143,11 |
|
} |
|
// on fait un post asynchrone et on les envoie à jrest |
HTTPRequest.asyncPost("jrest/inventoryImage/0/", postData, new ResponseTextHandler() { |
public void onCompletion(String responseText) { |
|
//TODO: vérifier mieux le succès del a requête |
|
} |
|
122,23 → 155,31 |
} |
} |
|
/** |
* Supprime des image sur le serveur par rapport à leur identifant |
* @param ids un tableau d'identifiants d'images à supprimer |
*/ |
public void supprimerBaseDeDonnees(String[] ids) |
{ |
String postData = "" ; |
// on fait un delete dans le post (jrest ne gère pas delete comme une action à part entière) |
postData += "&action=DELETE" ; |
|
String uid = "" ; |
|
// on concatène les ids |
for (int i = 0; i < ids.length; i++) { |
|
uid += ids[i]+"," ; |
} |
|
|
HTTPRequest.asyncPost("jrest/inventoryImageList/"+iMediateur.getIdentifiant()+"/"+uid, postData, new ResponseTextHandler() { |
// et on envoie ça au serveur |
HTTPRequest.asyncPost("jrest/inventoryImageList/"+iModele.getIdentifiant()+"/"+uid, postData, new ResponseTextHandler() { |
public void onCompletion(String responseText) { |
|
iMediateur.rafraichirToutesVues() ; |
// quand la requête est éxecutée on le signale au modèle poru qu'il mette à jour les données |
// et en notifie le médiateur |
iModele.requeteTerminee() ; |
} |
|
}) ; |