Subversion Repositories eFlore/Applications.del

Rev

Rev 941 | Go to most recent revision | Details | Last modification | View Log | RSS feed

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