Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1996 → Rev 1997

/branches/v1.7-oxygene/src/org/tela_botanica/del/client/services/rest/async/PHPCallback.java
New file
0,0 → 1,94
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() {
}
 
public void setMode(ModeRequete mode) {
this.mode = mode;
}
 
@Override
public 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.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);
 
@Override
public 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);
}
}