Subversion Repositories eFlore/Applications.cel

Rev

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

Rev Author Line No. Line
2 aperonnet 1
package org.tela_botanica.client.modeles;
2
 
3
import java.util.Iterator;
4
 
5
import org.tela_botanica.client.image.ImageModele;
6
import com.google.gwt.http.client.Request;
7
import com.google.gwt.http.client.RequestBuilder;
8
import com.google.gwt.http.client.RequestCallback;
9
import com.google.gwt.http.client.RequestException;
10
import com.google.gwt.http.client.Response;
648 aurelien 11
import com.google.gwt.user.client.Window;
2 aperonnet 12
 
13
/**
5 aperonnet 14
 * DAO d'accès à une image, n'est utilisé que pour l'écriture et pas pour la
15
 * lecture des images qui se fait par paquet
16
 *
2 aperonnet 17
 * @author aurelien
5 aperonnet 18
 *
2 aperonnet 19
 */
20
public class ImageAsynchroneDAO {
21
 
5 aperonnet 22
	ImageModele iModele = null;
23
 
24
	public ImageAsynchroneDAO(ImageModele im) {
25
		iModele = im;
2 aperonnet 26
	}
5 aperonnet 27
 
28
	public void setIModele(ImageModele im) {
29
		iModele = im;
2 aperonnet 30
	}
5 aperonnet 31
 
2 aperonnet 32
	/**
33
	 * Met à jour la base de données avec toutes les données d'une image
5 aperonnet 34
	 *
35
	 * @param ic
36
	 *            l'image à mettre à jour
2 aperonnet 37
	 */
5 aperonnet 38
	public void SynchroniserBaseDeDonnees(final ImageCarnet ic) {
39
		String postData = "";
40
 
2 aperonnet 41
		// on construit le post avec toutes les valeur de l'image
5 aperonnet 42
		for (Iterator<String> imgIt = ic.keySet().iterator(); imgIt.hasNext();) {
2 aperonnet 43
 
5 aperonnet 44
			String key = imgIt.next();
45
			String valeur = ic.renvoyerValeurCorrecte(key);
46
			postData += "&" + key + "=" + valeur;
47
 
2 aperonnet 48
		}
49
 
50
		// et on envoie une requête asynchrone
393 aurelien 51
		RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
5 aperonnet 52
				+ "/inventoryImage/" + iModele.getIdentifiant() + "/");
53
 
2 aperonnet 54
		try {
55
			rb.sendRequest(postData, new RequestCallback() {
56
 
57
				public void onError(Request request, Throwable exception) {
58
					// TODO Auto-generated method stub
5 aperonnet 59
 
2 aperonnet 60
				}
61
 
5 aperonnet 62
				public void onResponseReceived(Request request,
63
						Response response) {
64
 
65
					if (response.getText().equals("OK")) {
66
						return;
67
					} else {
68
						com.google.gwt.user.client.Window
69
								.alert("Problème lors de la mise à jour des données");
2 aperonnet 70
					}
71
				}
5 aperonnet 72
 
73
			});
74
 
2 aperonnet 75
		} catch (RequestException e) {
76
			// TODO Auto-generated catch block
77
			e.printStackTrace();
78
		}
79
	}
5 aperonnet 80
 
2 aperonnet 81
	/**
82
	 * Met à jour la base de données avec les mots clés associés à l'image
5 aperonnet 83
	 *
84
	 * @param ic
85
	 *            l'image à mettre à jour
2 aperonnet 86
	 */
5 aperonnet 87
	public void SynchroniserMotsClesImageBaseDeDonnees(final ImageCarnet ic) {
88
		String postData = "";
2 aperonnet 89
 
5 aperonnet 90
		// on récupère les mots clés de l'image et on fabrique le post
91
		String motsCles = ic.getMotsCles();
92
		String id = ic.getId();
93
		postData += "&ci_id_image=" + id + "&ci_meta_mots_cles=" + motsCles;
2 aperonnet 94
 
5 aperonnet 95
		// on envoie une requête asynchrone
140 aurelien 96
		RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,
97
				Configuration.getServiceBaseUrl()
5 aperonnet 98
				+ "/inventoryImage/" + iModele.getIdentifiant() + "/");
2 aperonnet 99
 
5 aperonnet 100
		try {
101
			rb.sendRequest(postData, new RequestCallback() {
102
 
103
				public void onError(Request request, Throwable exception) {
104
					// TODO Auto-generated method stub
105
 
106
				}
107
 
108
				public void onResponseReceived(Request request,
109
						Response response) {
110
 
1008 aurelien 111
					// TODO: les messages ne devraient pas être affichés ici
112
					// mais l'architecture par très malléable complique les choses
5 aperonnet 113
					if (response.getText().equals("OK")) {
1008 aurelien 114
						com.google.gwt.user.client.Window
115
						.alert("Les mots clés suivants ont bien été appliqués : "+iModele.renvoyerChaineMotClesTexte(ic));
5 aperonnet 116
						return;
117
					} else {
118
						com.google.gwt.user.client.Window
1008 aurelien 119
								.alert("Problème lors de la mise à jour des données, le serveur a répondu "+response.getText());
5 aperonnet 120
					}
121
				}
122
 
123
			});
124
 
125
		} catch (RequestException e) {
126
			// TODO Auto-generated catch block
127
			e.printStackTrace();
128
		}
2 aperonnet 129
	}
5 aperonnet 130
 
2 aperonnet 131
	/**
132
	 * Supprime une image de la base de données
5 aperonnet 133
	 *
134
	 * @param ic
135
	 *            l'image à supprimer
2 aperonnet 136
	 */
5 aperonnet 137
	public void supprimerBaseDeDonnees(final ImageCarnet ic) {
138
		// le post contient l'action delete pour JREST (qui ne gère pas DELETE
139
		// comme une requête à part entière)
140
		String postData = "";
141
		postData += "&action=DELETE";
142
 
2 aperonnet 143
		// on envoie un post avec l'id de l'image à supprimer
596 aurelien 144
		RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
5 aperonnet 145
				+ "/inventoryImage/"
146
				+ iModele.getIdentifiant()
147
				+ "/"
148
				+ ic.getId());
149
 
2 aperonnet 150
		try {
151
			rb.sendRequest(postData, new RequestCallback() {
152
 
153
				public void onError(Request request, Throwable exception) {
154
					// TODO Auto-generated method stub
5 aperonnet 155
 
2 aperonnet 156
				}
5 aperonnet 157
 
158
				public void onResponseReceived(Request request,
159
						Response response) {
160
 
161
					if (response.getText().equals("OK")) {
77 jpm 162
 
5 aperonnet 163
						return;
164
					} else {
165
						com.google.gwt.user.client.Window
77 jpm 166
								.alert("Problème lors de la mise à jour des données : "+response.getText());
2 aperonnet 167
					}
168
				}
5 aperonnet 169
 
170
			});
171
 
2 aperonnet 172
		} catch (RequestException e) {
173
			// TODO Auto-generated catch block
174
			e.printStackTrace();
175
		}
176
	}
177
}