Subversion Repositories eFlore/Applications.cel

Rev

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

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