Rev 1317 | Blame | Last modification | View Log | RSS feed
package org.tela_botanica.client.modeles.dao;
import java.util.Iterator;
import org.tela_botanica.client.image.ImageModele;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.ImageCarnet;
import org.tela_botanica.client.modeles.objets.Utilisateur;
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
/**
* DAO d'accès à une image, n'est utilisé que pour l'écriture et pas pour la
* lecture des images qui se fait par paquet
*
* @author aurelien
*
*/
public class ImageAsynchroneDAO {
ImageModele iModele = null;
public ImageAsynchroneDAO(ImageModele im) {
iModele = im;
}
public void setIModele(ImageModele im) {
iModele = im;
}
/**
* Met à jour la base de données avec toutes les données d'une image
*
* @param ic
* l'image à mettre à jour
*/
public void SynchroniserBaseDeDonnees(final ImageCarnet ic) {
String postData = "";
String[][] champsModifiables = ic.obtenirChampsModifiablesImage();
for (int i = 0; i < champsModifiables.length; i++) {
postData += "&"+champsModifiables[i][0]+"="+champsModifiables[i][1];
}
// et on envoie une requête asynchrone
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
+ "/inventoryImage/" + Utilisateur.getInstance().getIdentifiantUtilisateurConsulte()+"/"+ic.getId());
try {
rb.sendRequest(postData, new RequestCallback() {
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
@Override
public void onResponseReceived(Request request,
Response response) {
if (response.getText().equals("OK")) {
return;
} else {
com.google.gwt.user.client.Window
.alert("Problème lors de la mise à jour des données");
}
}
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* Met à jour la base de données avec les mots clés associés à l'image
*
* @param ic
* l'image à mettre à jour
*/
public void SynchroniserMotsClesImageBaseDeDonnees(final ImageCarnet ic) {
String postData = "";
// on récupère les mots clés de l'image et on fabrique le post
String motsCles = ic.getMotsCles();
String id = ic.getId();
postData += "&id_image=" + id + "&id_mot_cle_utilisateur=" + motsCles;
// on envoie une requête asynchrone
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,
Configuration.getServiceBaseUrl()
+ "/inventoryKeyWordImageList/" +Utilisateur.getInstance().getIdentifiantUtilisateurConsulte()+ "/");
try {
rb.sendRequest(postData, new RequestCallback() {
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
@Override
public void onResponseReceived(Request request,
Response response) {
// TODO: les messages ne devraient pas être affichés ici
// mais l'architecture par très malléable complique les choses
if (response.getText().equals("OK")) {
com.google.gwt.user.client.Window
.alert("Les mots clés suivants ont bien été appliqués : "+iModele.renvoyerChaineMotClesTexte(ic));
return;
} else {
com.google.gwt.user.client.Window
.alert("Problème lors de la mise à jour des données, le serveur a répondu "+response.getText());
}
}
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* Supprime une image de la base de données
*
* @param ic
* l'image à supprimer
*/
public void supprimerBaseDeDonnees(final ImageCarnet ic) {
// le post contient l'action delete pour JREST (qui ne gère pas DELETE
// comme une requête à part entière)
String postData = "";
postData += "&action=DELETE";
// on envoie un post avec l'id de l'image à supprimer
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
+ "/inventoryImage/"
+ iModele.getIdentifiant()
+ "/"
+ ic.getId());
try {
rb.sendRequest(postData, new RequestCallback() {
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
@Override
public void onResponseReceived(Request request,
Response response) {
if (response.getText().equals("OK")) {
return;
} else {
com.google.gwt.user.client.Window
.alert("Problème lors de la mise à jour des données : "+response.getText());
}
}
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}