Subversion Repositories eFlore/Applications.del

Rev

Rev 1517 | Rev 1953 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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