Rev 973 | Rev 1293 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.modeles.dao;
import org.tela_botanica.client.image.ImageModele;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.ListeObservation;
import org.tela_botanica.client.modeles.objets.Observation;
import org.tela_botanica.client.modeles.objets.Utilisateur;
import org.tela_botanica.client.observation.ObservationModele;
import org.tela_botanica.client.util.Util;
import com.google.gwt.core.client.GWT;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.Window;
public class LienImageAsynchroneDAO {
private ImageModele iModele = null ;
private ObservationModele oModele = null ;
private Rafraichissable raf = null ;
public LienImageAsynchroneDAO(ImageModele im) {
iModele = im;
}
public LienImageAsynchroneDAO(ObservationModele om) {
oModele = om;
}
/**
* Setteur pour le modèle
*
* @param im
* le modèle à associer
*/
public void setIModele(ImageModele im) {
iModele = im;
}
public void obtenirLiaisonsImagesObservations(Rafraichissable r,String id)
{
String paramGet = "id_image="+id ;
raf = r ;
// et on envoie ça au serveur
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, Configuration.getServiceBaseUrl()
+ "/inventoryImageLink/" + Utilisateur.getInstance().getIdentifiantUtilisateurConsulte() + "/" + paramGet);
try {
rb.sendRequest(null, new RequestCallback() {
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
public void onResponseReceived(Request request,
Response response) {
final ListeObservation observationData ;
final JSONValue responseValue = JSONParser.parse(response.getText());
JSONArray reponse=null;
// si c'est un tableau
if ((reponse=responseValue.isArray()) != null) {
JSONObject observation;
final int taillemax = reponse.size();
observationData = new ListeObservation(taillemax);
for (int i = 0; i < taillemax; i++) {
if ((observation = reponse.get(i).isObject()) != null) {
Observation obs= new Observation(observation);
observationData.put(obs.getNumeroOrdre(),obs);
}
}
} else {
observationData = new ListeObservation(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
// TODO : ce n'est pas ici qu'on devrait le decider ..
raf.rafraichir(observationData,true);
}
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void obtenirLiaisonsObservationsImages(Rafraichissable r,String idObs, String utilisateur)
{
String paramGet = "id_observation="+idObs ;
raf = r ;
// et on envoie ça au serveur
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, Configuration.getServiceBaseUrl()
+ "/inventoryImageLink/" + utilisateur + "/" + paramGet);
try {
rb.sendRequest(null, new RequestCallback() {
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
public void onResponseReceived(Request request,
Response response) {
String baseUrl = Configuration.getImageBaseUrl() ;
final JSONValue responseValue = JSONParser.parse(response
.getText());
// si c'est un tableau
if (responseValue.isArray() != null) {
final JSONArray reponse = responseValue.isArray();
final int taillemax = reponse.size();
String imgTab[][] = new String[taillemax][3] ;
for(int i = 0 ;i<taillemax ;i++)
{
final JSONObject reponseInt = reponse.get(i).isObject();
String idImg = ((JSONString)reponseInt.get("id_image")).stringValue() ;
String X = ((JSONString)reponseInt.get("hauteur")).stringValue() ;
String Y = ((JSONString)reponseInt.get("largeur")).stringValue() ;
imgTab[i][0] = idImg ;
imgTab[i][1] = X ;
imgTab[i][2] = Y ;
}
raf.rafraichir(imgTab, false) ;
}
else
{
String imgTab[] = new String[0] ;
raf.rafraichir(imgTab, false) ;
}
}
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void lierImageBaseDeDonnees(String idsImages, String idsObs) {
String postData = "";
postData += "id_image="+idsImages ;
postData += "&id_observation="+idsObs ;
postData += "&ce_utilisateur="+Utilisateur.getInstance().getIdentifiantUtilisateurConsulte() ;
// et on envoie ça au serveur
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
+ "/inventoryImageLink/");
try {
rb.sendRequest(postData, new RequestCallback() {
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
public void onResponseReceived(Request request,
Response response) {
iModele.requeteTerminee();
}
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void supprimerLienImageObservation(String idImg, String idObs) {
String postData = "";
postData += "&action=DELETE" ;
String identifiant = "" ;
identifiant = Utilisateur.getInstance().getIdentifiantUtilisateurConsulte();
// et on envoie ça au serveur
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
+ "/inventoryImageLink/"+identifiant+"/"+idImg+"/"+idObs);
try {
rb.sendRequest(postData, new RequestCallback() {
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
public void onResponseReceived(Request request,
Response response) {
// quand la requête est éxecutée on le signale au modèle
// pour qu'il mette à jour les données
// et en notifie le médiateur
iModele.requeteTerminee();
}
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}