Subversion Repositories eFlore/Applications.cel

Rev

Details | 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;
15
 
16
/**
5 aperonnet 17
 * DAO d'accès à une image, n'est utilisé que pour l'écriture et pas pour la
18
 * lecture des images qui se fait par paquet
19
 *
2 aperonnet 20
 * @author aurelien
5 aperonnet 21
 *
2 aperonnet 22
 */
23
public class ImageAsynchroneDAO {
24
 
5 aperonnet 25
	ImageModele iModele = null;
26
 
27
	public ImageAsynchroneDAO(ImageModele im) {
28
		iModele = im;
2 aperonnet 29
	}
5 aperonnet 30
 
31
	public void setIModele(ImageModele im) {
32
		iModele = im;
2 aperonnet 33
	}
5 aperonnet 34
 
2 aperonnet 35
	/**
36
	 * Met à jour la base de données avec toutes les données d'une image
5 aperonnet 37
	 *
38
	 * @param ic
39
	 *            l'image à mettre à jour
2 aperonnet 40
	 */
5 aperonnet 41
	public void SynchroniserBaseDeDonnees(final ImageCarnet ic) {
42
		String postData = "";
43
 
2 aperonnet 44
		// on construit le post avec toutes les valeur de l'image
5 aperonnet 45
		for (Iterator<String> imgIt = ic.keySet().iterator(); imgIt.hasNext();) {
2 aperonnet 46
 
5 aperonnet 47
			String key = imgIt.next();
48
			String valeur = ic.renvoyerValeurCorrecte(key);
49
			postData += "&" + key + "=" + valeur;
50
 
2 aperonnet 51
		}
52
 
53
		// et on envoie une requête asynchrone
393 aurelien 54
		RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
5 aperonnet 55
				+ "/inventoryImage/" + iModele.getIdentifiant() + "/");
56
 
2 aperonnet 57
		try {
58
			rb.sendRequest(postData, new RequestCallback() {
59
 
1293 aurelien 60
				@Override
2 aperonnet 61
				public void onError(Request request, Throwable exception) {
62
					// TODO Auto-generated method stub
63
				}
64
 
1293 aurelien 65
				@Override
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
 
1293 aurelien 107
				@Override
5 aperonnet 108
				public void onError(Request request, Throwable exception) {
109
					// TODO Auto-generated method stub
110
 
111
				}
112
 
1293 aurelien 113
				@Override
5 aperonnet 114
				public void onResponseReceived(Request request,
115
						Response response) {
116
 
1009 aurelien 117
					// TODO: les messages ne devraient pas être affichés ici
118
					// mais l'architecture par très malléable complique les choses
5 aperonnet 119
					if (response.getText().equals("OK")) {
1009 aurelien 120
						com.google.gwt.user.client.Window
121
						.alert("Les mots clés suivants ont bien été appliqués : "+iModele.renvoyerChaineMotClesTexte(ic));
5 aperonnet 122
						return;
123
					} else {
124
						com.google.gwt.user.client.Window
1009 aurelien 125
								.alert("Problème lors de la mise à jour des données, le serveur a répondu "+response.getText());
5 aperonnet 126
					}
127
				}
128
 
129
			});
130
 
131
		} catch (RequestException e) {
132
			// TODO Auto-generated catch block
133
			e.printStackTrace();
134
		}
2 aperonnet 135
	}
5 aperonnet 136
 
2 aperonnet 137
	/**
138
	 * Supprime une image de la base de données
5 aperonnet 139
	 *
140
	 * @param ic
141
	 *            l'image à supprimer
2 aperonnet 142
	 */
5 aperonnet 143
	public void supprimerBaseDeDonnees(final ImageCarnet ic) {
144
		// le post contient l'action delete pour JREST (qui ne gère pas DELETE
145
		// comme une requête à part entière)
146
		String postData = "";
147
		postData += "&action=DELETE";
148
 
2 aperonnet 149
		// on envoie un post avec l'id de l'image à supprimer
596 aurelien 150
		RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
5 aperonnet 151
				+ "/inventoryImage/"
152
				+ iModele.getIdentifiant()
153
				+ "/"
154
				+ ic.getId());
155
 
2 aperonnet 156
		try {
157
			rb.sendRequest(postData, new RequestCallback() {
158
 
1293 aurelien 159
				@Override
2 aperonnet 160
				public void onError(Request request, Throwable exception) {
161
					// TODO Auto-generated method stub
5 aperonnet 162
 
2 aperonnet 163
				}
5 aperonnet 164
 
1293 aurelien 165
				@Override
5 aperonnet 166
				public void onResponseReceived(Request request,
167
						Response response) {
168
 
169
					if (response.getText().equals("OK")) {
77 jpm 170
 
5 aperonnet 171
						return;
172
					} else {
173
						com.google.gwt.user.client.Window
77 jpm 174
								.alert("Problème lors de la mise à jour des données : "+response.getText());
2 aperonnet 175
					}
176
				}
5 aperonnet 177
 
178
			});
179
 
2 aperonnet 180
		} catch (RequestException e) {
181
			// TODO Auto-generated catch block
182
			e.printStackTrace();
183
		}
184
	}
185
}