Rev 346 | Rev 772 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.modeles;import org.tela_botanica.client.RegistreId;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.util.UtilDAO;import com.extjs.gxt.ui.client.Registry;import com.extjs.gxt.ui.client.widget.Info;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.JSONBoolean;import com.google.gwt.json.client.JSONParser;import com.google.gwt.json.client.JSONString;import com.google.gwt.json.client.JSONValue;/*** Modele DAO, specifique, permettant la validation, l'acces aux donnees distantes et la présentation des donnees en retour**/public class UtilisateurAsyncDao {private static final String SERVICE_NOM = "CoelUtilisateur";private Utilisateur utilisateur = null;private String urlServiceBase = null;private Rafraichissable vueARafraichir = null;/*** Constructeur* @param retour : méthode appellée en retour d'appel.*/public UtilisateurAsyncDao(Rafraichissable r) {vueARafraichir = r;urlServiceBase = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();utilisateur = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT);}/*** Méthode de classe d'appel du service des gestion d'identification.*/public void getEtatUtilisateur() {// Recherche identifiant utilisateur identifieRequestBuilder rb = new RequestBuilder(RequestBuilder.GET, urlServiceBase+SERVICE_NOM+"/") ;try {rb.sendRequest(null, new RequestCallback() {public void onError(Request request, Throwable exception) {// TODO : ajouter un message d'erreur en cas d'erreur de requête HTTP}public void onResponseReceived(Request request, Response response) {JSONValue jsonValue = JSONParser.parse(response.getText());JSONArray jsonArray;if ((jsonArray = jsonValue.isArray()) != null) {// Identifiant utilisateur ou identifiant de session si non identifiéString login = ((JSONString) jsonArray.get(0)).stringValue();// Drapeau leve si utilisateur deja identifiéboolean identifie = ((JSONBoolean) jsonArray.get(1)).booleanValue();utilisateur.setIdentifie(identifie);utilisateur.setLogin(login);vueARafraichir.rafraichir(utilisateur);}}}) ;} catch (RequestException e) {e.printStackTrace();}}/*** Méthode déconnectant un utilisateur de l'application.* @param identifiant de l'utilisateur à déconnecter.*/public void deconnecterUtilisateur() {RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, urlServiceBase+SERVICE_NOM+"/"+utilisateur.getId()) ;try {rb.sendRequest(null, new RequestCallback() {public void onError(Request request, Throwable exception) {// TODO : ajouter un message d'erreur en cas d'erreur de requête HTTP}public void onResponseReceived(Request request, Response response) {JSONValue jsonValue = JSONParser.parse(response.getText());JSONArray jsonArray;if ((jsonArray = jsonValue.isArray()) != null) {// Identifiant utilisateur ou identifiant de session si non identifiéString id = ((JSONString) jsonArray.get(0)).stringValue();// Drapeau levé si l'utilisateur est déjà identifiéboolean identifie = ((JSONBoolean) jsonArray.get(1)).booleanValue();// Nous réinitialisons l'utilisateurutilisateur = new Utilisateur(id, identifie);GWT.log(utilisateur.toString(), null);vueARafraichir.rafraichir(utilisateur);}}}) ;} catch (RequestException e) {e.printStackTrace();}}/*** Méthode connectant un utilisateur à l'application.* @param Utilisateur l'utilisateur courant.*/public void connecterUtilisateur () {String[] parametres = new String[2];parametres[0] = utilisateur.getLogin();parametres[1] = utilisateur.getMotDePasse();RequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres);try {rb.sendRequest(null, new RequestCallback() {public void onError(Request request, Throwable exception) {GWT.log("Erreur à l'exécution du service " + SERVICE_NOM + " (selection)", exception);Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête.");}public void onErrorHTTP(Request request, Response reponse) {// Gestion des erreurs HTTP renvoyé par Apache ou JRestInformation info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray());GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null);Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString());}public void onResponseReceived(Request request, Response response) {if (response.getStatusCode() != 200) {onErrorHTTP(request, response);} else {JSONValue jsonValue = JSONParser.parse(response.getText());JSONArray jsonArray;if ((jsonArray = jsonValue.isArray()) != null) {if (jsonArray.size() > 0) {// Identifiant de l'utilisateur ou identifiant de session si non identifiéutilisateur.setId(((JSONString) jsonArray.get(0)).stringValue());// Drapeau levé si l'utilisateur est déjà identifiéGWT.log(jsonArray.toString(), null);utilisateur.setIdentifie(((JSONBoolean) jsonArray.get(1)).booleanValue());// Plus de deux valeurs, l'utilisateur est identifié nous récupérons des données supplémentairesif (jsonArray.size() > 2) {// Nom complet de l'utilisateurif (jsonArray.get(2).isString() != null) {utilisateur.setNomComplet(((JSONString) jsonArray.get(2)).stringValue());}// Prénom de l'utilisateurif (jsonArray.get(3).isString() != null) {utilisateur.setPrenom(((JSONString) jsonArray.get(3)).stringValue());}// Nom de l'utilisateurif (jsonArray.get(4).isString() != null) {utilisateur.setNom(((JSONString) jsonArray.get(4)).stringValue());}GWT.log(utilisateur.toString(), null);}vueARafraichir.rafraichir(utilisateur);}}}}}) ;} catch (RequestException e) {e.printStackTrace();}}}