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); |
} |
} |