Subversion Repositories eFlore/Applications.cel

Rev

Go to most recent revision | 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;
1918 aurelien 11
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
2 aperonnet 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
 
1317 aurelien 44
		String[][] champsModifiables = ic.obtenirChampsModifiablesImage();
45
		for (int i = 0; i < champsModifiables.length; i++) {
46
			postData += "&"+champsModifiables[i][0]+"="+champsModifiables[i][1];
2 aperonnet 47
		}
48
 
49
		// et on envoie une requête asynchrone
1918 aurelien 50
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
1317 aurelien 51
				+ "/inventoryImage/" + Utilisateur.getInstance().getIdentifiantUtilisateurConsulte()+"/"+ic.getId());
5 aperonnet 52
 
2 aperonnet 53
		try {
54
			rb.sendRequest(postData, new RequestCallback() {
55
 
1293 aurelien 56
				@Override
2 aperonnet 57
				public void onError(Request request, Throwable exception) {
58
					// TODO Auto-generated method stub
59
				}
60
 
1293 aurelien 61
				@Override
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();
971 aurelien 93
		postData += "&id_image=" + id + "&id_mot_cle_utilisateur=" + motsCles;
2 aperonnet 94
 
5 aperonnet 95
		// on envoie une requête asynchrone
1918 aurelien 96
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,
140 aurelien 97
				Configuration.getServiceBaseUrl()
971 aurelien 98
				+ "/inventoryKeyWordImageList/" +Utilisateur.getInstance().getIdentifiantUtilisateurConsulte()+ "/");
2 aperonnet 99
 
5 aperonnet 100
		try {
101
			rb.sendRequest(postData, new RequestCallback() {
102
 
1293 aurelien 103
				@Override
5 aperonnet 104
				public void onError(Request request, Throwable exception) {
105
					// TODO Auto-generated method stub
106
 
107
				}
108
 
1293 aurelien 109
				@Override
5 aperonnet 110
				public void onResponseReceived(Request request,
111
						Response response) {
112
 
1009 aurelien 113
					// TODO: les messages ne devraient pas être affichés ici
114
					// mais l'architecture par très malléable complique les choses
5 aperonnet 115
					if (response.getText().equals("OK")) {
1009 aurelien 116
						com.google.gwt.user.client.Window
117
						.alert("Les mots clés suivants ont bien été appliqués : "+iModele.renvoyerChaineMotClesTexte(ic));
5 aperonnet 118
						return;
119
					} else {
120
						com.google.gwt.user.client.Window
1009 aurelien 121
								.alert("Problème lors de la mise à jour des données, le serveur a répondu "+response.getText());
5 aperonnet 122
					}
123
				}
124
 
125
			});
126
 
127
		} catch (RequestException e) {
128
			// TODO Auto-generated catch block
129
			e.printStackTrace();
130
		}
2 aperonnet 131
	}
5 aperonnet 132
 
2 aperonnet 133
	/**
134
	 * Supprime une image de la base de données
5 aperonnet 135
	 *
136
	 * @param ic
137
	 *            l'image à supprimer
2 aperonnet 138
	 */
5 aperonnet 139
	public void supprimerBaseDeDonnees(final ImageCarnet ic) {
140
		// le post contient l'action delete pour JREST (qui ne gère pas DELETE
141
		// comme une requête à part entière)
142
		String postData = "";
143
		postData += "&action=DELETE";
144
 
2 aperonnet 145
		// on envoie un post avec l'id de l'image à supprimer
1918 aurelien 146
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
5 aperonnet 147
				+ "/inventoryImage/"
148
				+ iModele.getIdentifiant()
149
				+ "/"
150
				+ ic.getId());
151
 
2 aperonnet 152
		try {
153
			rb.sendRequest(postData, new RequestCallback() {
154
 
1293 aurelien 155
				@Override
2 aperonnet 156
				public void onError(Request request, Throwable exception) {
157
					// TODO Auto-generated method stub
5 aperonnet 158
 
2 aperonnet 159
				}
5 aperonnet 160
 
1293 aurelien 161
				@Override
5 aperonnet 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
}