Subversion Repositories eFlore/Applications.del

Rev

Rev 941 | Rev 1667 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
939 benjamin 1
package org.tela_botanica.del.client.services.rest.async;
2
 
1517 aurelien 3
import org.tela_botanica.del.client.utils.StringUtils;
4
 
939 benjamin 5
import com.google.gwt.http.client.Request;
6
import com.google.gwt.http.client.RequestCallback;
7
import com.google.gwt.http.client.Response;
1517 aurelien 8
import com.google.gwt.json.client.JSONException;
939 benjamin 9
import com.google.gwt.user.client.Window;
10
 
11
/**
941 benjamin 12
 * Cette classe correspond au retour asynchrone d'un webservice php qui retourne
939 benjamin 13
 * l'objet generique T si l'appel de service est un succcès
14
 *
15
 * @author LIENS
16
 *
17
 * @param <T>
18
 */
19
public abstract class PHPCallback<T> implements RequestCallback {
20
 
21
	public enum ModeRequete {
22
		AJOUT, MODIFICATION, SUPPRESSION, LECTURE
23
	}
24
 
25
	protected ModeRequete mode;
26
 
27
	public PHPCallback() {
28
	}
29
 
30
	public void setMode(ModeRequete mode) {
31
		this.mode = mode;
32
	}
33
 
34
	@Override
35
	public void onResponseReceived(Request request, Response response) {
36
		int statusCode = response.getStatusCode();
37
		int codeAttendu = 500;
38
		switch (mode) {
39
		case AJOUT:
40
			codeAttendu = 201;
41
			break;
42
		case MODIFICATION:
43
			codeAttendu = 200;
44
			break;
45
		case SUPPRESSION:
46
			codeAttendu = 200;
47
			break;
48
		case LECTURE:
49
			codeAttendu = 200;
50
			break;
51
		default:
52
			codeAttendu = 500;
53
			break;
54
		}
55
 
56
		if (statusCode == codeAttendu) {
1517 aurelien 57
			try {
58
				T reponseParsee = parserJSON(response.getText());
59
				surRetour(reponseParsee);
60
			} catch (JSONException e) {
61
				StringUtils.logChaine("Une erreur est survenue, le serveur a répondu : "+response.getText());
62
			}
939 benjamin 63
		} else {
64
			surErreur("Erreur " + statusCode + ": " + response.getText());
65
		}
66
	}
67
 
68
	/**
69
	 * Cette methode permet de pareser le JSON retourné par le webservice pour
70
	 * le transformer en objet métier
71
	 *
72
	 * @param retourService
73
	 * @return
74
	 */
75
	public abstract T parserJSON(String retourService);
76
 
77
	@Override
78
	public void onError(Request request, Throwable exception) {
79
		surErreur(exception.getMessage());
80
	}
81
 
82
	public abstract void surRetour(T objetRetour);
83
 
84
	public void surErreur(String messageErreur) {
85
		Window.alert(messageErreur);
86
	}
87
}