Rev 2077 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.del.client.services.rest.async;import java.util.Arrays;import java.util.List;import org.tela_botanica.del.client.utils.StringUtils;import com.google.gwt.core.shared.GWT;import com.google.gwt.http.client.Request;import com.google.gwt.http.client.RequestCallback;import com.google.gwt.http.client.Response;import com.google.gwt.json.client.JSONException;import com.google.gwt.user.client.Window;/*** Cette classe correspond au retour asynchrone d'un webservice php qui retourne* l'objet generique T si l'appel de service est un succcès** @author LIENS** @param <T>*/public abstract class PHPCallback<T> implements RequestCallback {public enum ModeRequete {AJOUT, MODIFICATION, SUPPRESSION, LECTURE}protected ModeRequete mode;public PHPCallback() {this.mode = ModeRequete.LECTURE;}public void setMode(ModeRequete mode) {this.mode = mode;}@Overridepublic void onResponseReceived(Request request, Response response) {int statusCode = response.getStatusCode();List<Integer> codeAttendu = null;switch (mode) {case AJOUT:codeAttendu = Arrays.asList(200, 201, 204);break;case MODIFICATION:codeAttendu = Arrays.asList(200, 201, 204);break;case SUPPRESSION:codeAttendu = Arrays.asList(200);break;case LECTURE:codeAttendu = Arrays.asList(200);break;default:codeAttendu = Arrays.asList(500);break;}//GWT.log("Codes attendus:"+codeAttendu.toString());//GWT.log("Code:"+statusCode);if (codeAttendu != null && codeAttendu.contains(statusCode)) {//GWT.log("Code: OK");try {T reponseParsee = parserJSON(response.getText());surRetour(reponseParsee);} catch (JSONException e) {StringUtils.logVersConsole("Une erreur est survenue, le serveur a répondu : "+response.getText());}} else {surErreur("Erreur " + statusCode + ": " + response.getText());}}/*** Cette methode permet de pareser le JSON retourné par le webservice pour* le transformer en objet métier** @param retourService* @return*/public abstract T parserJSON(String retourService);@Overridepublic void onError(Request request, Throwable exception) {surErreur(exception.getMessage());}public abstract void surRetour(T objetRetour);public void surErreur(String messageErreur) {GWT.log("Erreur service : "+messageErreur);Window.alert(messageErreur);}}