Subversion Repositories eFlore/Applications.cel

Rev

Rev 2621 | 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;
21 david 2
 
2621 aurelien 3
import org.tela_botanica.client.i18n.Msg;
21 david 4
import org.tela_botanica.client.interfaces.Rafraichissable;
989 aurelien 5
import org.tela_botanica.client.modeles.objets.Configuration;
6
import org.tela_botanica.client.modeles.objets.Observation;
21 david 7
import org.tela_botanica.client.observation.ObservationModele;
1549 aurelien 8
import org.tela_botanica.client.util.Util;
2846 mathias 9
import org.tela_botanica.client.util.Analytics;
21 david 10
 
11
import com.google.gwt.http.client.Request;
1918 aurelien 12
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
21 david 13
import com.google.gwt.http.client.RequestCallback;
14
import com.google.gwt.http.client.RequestException;
15
import com.google.gwt.http.client.Response;
16
import com.google.gwt.http.client.URL;
17
 
116 aurelien 18
 
21 david 19
/**
20
 * DAO d'accès a une observation
21
 *
22
 * @author aurelien
23
 *
24
 */
25
public class ObservationAsynchroneDAO {
26
 
27
	/**
28
	 * Le modele associé au DAO
29
	 */
30
	private ObservationModele oModele = null;
31
 
32
	public ObservationAsynchroneDAO(ObservationModele obs) {
33
		oModele = obs;
34
	}
35
 
36
	/**
37
	 * Setteur pour le modèle
38
	 *
39
	 * @param obs
40
	 *            le modèle à associer
41
	 */
42
	public void setoModele(ObservationModele obs) {
43
		oModele = obs;
44
	}
45
 
46
	/**
2846 mathias 47
	 * Envoie une requete au serveur pour ajouter une observation
21 david 48
	 *
49
	 * @param motcle
2846 mathias 50
	 *	le mot-clé à ajouter avec son parent et son identifiant
21 david 51
	 */
2846 mathias 52
	public void ajouter(final Rafraichissable r, final String utilisateur, final Observation obs) {
122 aurelien 53
 
1918 aurelien 54
			RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,Configuration.getServiceBaseUrl()+ "/Inventory/") ;
1549 aurelien 55
			rb.setHeader("Content-type", "application/x-www-form-urlencoded");
963 aurelien 56
			String postData = "ce_utilisateur="
259 aurelien 57
				+ utilisateur
58
				+"&nom_sel="+URL.encodeComponent(obs.getNomSaisi())
963 aurelien 59
				+"&nom_sel_nn="+obs.getNumeroNomenclaturalSaisi()
60
				+"&zone_geo="+URL.encodeComponent(obs.getLocalite())
2568 aurelien 61
				+"&pays="+ (obs.getPays() != null ? obs.getPays() : "")
963 aurelien 62
				+"&ce_zone_geo="+obs.getIdentifiantLocalite()
259 aurelien 63
				+"&date_observation=" +  obs.getDate()
64
				+"&lieudit="+ URL.encodeComponent(obs.getLieudit())
65
				+"&station="+URL.encodeComponent(obs.getStation())
66
				+"&milieu="+URL.encodeComponent(obs.getMilieu())
411 aurelien 67
				+"&commentaire="+obs.getCommentaire()
963 aurelien 68
				+"&latitude="+URL.encodeComponent(""+obs.getLatitude())
1488 aurelien 69
				+"&longitude="+URL.encodeComponent(""+obs.getLongitude())
1572 aurelien 70
				+"&altitude="+URL.encodeComponent(""+obs.getAltitude())
1488 aurelien 71
				+"&abondance="+URL.encodeComponent(""+obs.getAbondance())
1542 aurelien 72
				+"&certitude="+URL.encodeComponent(""+obs.getCertitude())
73
				+"&phenologie="+URL.encodeComponent(""+obs.getPhenologie())
2157 mathias 74
				+"&nom_referentiel="+URL.encodeComponent(""+obs.getCodeCourtReferentielTaxo())
1572 aurelien 75
				+"&obs_etendue="+URL.encodeComponent(""+Util.convertirChampsEtendusEnChaineRequete(obs.getChampsEtendus()));
32 jpm 76
			try {
77
 
78
				rb.sendRequest(postData, new RequestCallback() {
21 david 79
 
1293 aurelien 80
					@Override
32 jpm 81
					public void onError(Request request, Throwable exception) {
1628 raphael 82
							// TODO Auto-generated method stub
83
 
32 jpm 84
					}
21 david 85
 
1293 aurelien 86
					@Override
32 jpm 87
					public void onResponseReceived(Request request,
88
							Response response) {
1628 raphael 89
							if(response.getStatusCode() >= 400) {
90
									com.google.gwt.user.client.Window.alert(response.getText());
91
							}
2846 mathias 92
							// stats
93
							Analytics.evenement("observation", "creation", "{\"utilisateur\": \"" + utilisateur + "\", \"nom_sci\": \"" + obs.getNomSaisi() + "\", \"referentiel\": \"" + obs.getCodeCourtReferentielTaxo() + "\"}");
94
 
1628 raphael 95
							r.rafraichir(obs,true);
1293 aurelien 96
					}
32 jpm 97
				}) ;
98
 
99
			} catch (RequestException e) {
100
 
21 david 101
		}
32 jpm 102
	}
74 david 103
 
104
	/**
105
	 * Envoie requete au serveur pour modifier une observations
106
	 *
107
	 * @param motcle
108
	 *            le mots clés à ajouter avec son parent et son identifiant
109
	 */
110
 
2846 mathias 111
	public void modifier(final Rafraichissable r, final String utilisateur, final Observation obs) {
74 david 112
 
1918 aurelien 113
			RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,Configuration.getServiceBaseUrl()+ "/Inventory/" + utilisateur + "/" + obs.getNumeroOrdre()+ "/") ;
1549 aurelien 114
			rb.setHeader("Content-type", "application/x-www-form-urlencoded");
971 aurelien 115
			String postData = "ce_utilisateur="
220 aurelien 116
				+ utilisateur
117
				+ "&nom_sel=" + URL.encodeComponent(obs.getNomSaisi())
963 aurelien 118
				+ "&nom_sel_nn=" + obs.getNumeroNomenclaturalSaisi()
119
				+ "&zone_geo=" + URL.encodeComponent(obs.getLocalite())
2568 aurelien 120
				+"&pays="+ (obs.getPays() != null ? obs.getPays() : "")
963 aurelien 121
				+ "&ce_zone_geo=" + obs.getIdentifiantLocalite()
220 aurelien 122
				+ "&date_observation=" +  obs.getDate()
123
				+ "&lieudit="+ URL.encodeComponent(obs.getLieudit())
124
				+ "&station="+ URL.encodeComponent(obs.getStation())
125
				+"&milieu="+ URL.encodeComponent(obs.getMilieu())
411 aurelien 126
				+"&commentaire="+obs.getCommentaire()
963 aurelien 127
				+"&latitude="+URL.encodeComponent(""+obs.getLatitude())
1488 aurelien 128
				+"&longitude="+URL.encodeComponent(""+obs.getLongitude())
1572 aurelien 129
				+"&altitude="+URL.encodeComponent(""+obs.getAltitude())
1488 aurelien 130
				+"&abondance="+URL.encodeComponent(""+obs.getAbondance())
1542 aurelien 131
				+"&certitude="+URL.encodeComponent(""+obs.getCertitude())
132
				+"&phenologie="+URL.encodeComponent(""+obs.getPhenologie())
2157 mathias 133
				+"&nom_referentiel="+URL.encodeComponent(""+obs.getCodeCourtReferentielTaxo())
1572 aurelien 134
				+"&obs_etendue="+URL.encodeComponent(""+Util.convertirChampsEtendusEnChaineRequete(obs.getChampsEtendus()));
74 david 135
			try {
136
 
137
				rb.sendRequest(postData, new RequestCallback() {
138
 
1293 aurelien 139
					@Override
74 david 140
					public void onError(Request request, Throwable exception) {
141
						// TODO Auto-generated method stub
142
 
143
					}
144
 
1293 aurelien 145
					@Override
74 david 146
					public void onResponseReceived(Request request,
147
							Response response) {
1628 raphael 148
							if(response.getStatusCode() >= 400) {
149
									com.google.gwt.user.client.Window.alert(response.getText());
150
							}
2846 mathias 151
							// stats
152
							Analytics.evenement("observation", "modification", "{\"utilisateur\": \"" + utilisateur + "\", \"nom_sci\": \"" + obs.getNomSaisi() + "\", \"referentiel\": \"" + obs.getCodeCourtReferentielTaxo() + "\"}");
153
 
1628 raphael 154
							r.rafraichir(obs,true);
74 david 155
					}
156
 
157
 
158
				}) ;
159
 
160
			} catch (RequestException e) {
161
 
162
		}
163
 
164
	}
77 jpm 165
 
2846 mathias 166
	public void supprimer(Rafraichissable r, final String identifiant, final String numeroOrdre) {
77 jpm 167
 
168
		String postData = "";
169
		postData += "&action=DELETE";
170
 
171
		// on envoie un post avec l'id de l'image à supprimer
1918 aurelien 172
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,
107 aurelien 173
				Configuration.getServiceBaseUrl()
77 jpm 174
				+ "/inventory/"
175
				+ identifiant
176
				+ "/"
177
				+ numeroOrdre);
178
 
179
		try {
180
			rb.sendRequest(postData, new RequestCallback() {
181
 
1293 aurelien 182
				@Override
77 jpm 183
				public void onError(Request request, Throwable exception) {
184
					// TODO Auto-generated method stub
185
 
186
				}
187
 
1293 aurelien 188
				@Override
2846 mathias 189
				public void onResponseReceived(Request request, Response response) {
77 jpm 190
 
191
					if (response.getText().equals("OK")) {
2846 mathias 192
							// stats
193
							Analytics.evenement("observation", "suppression", "{\"utilisateur\": \"" + identifiant + "\", \"numero_ordre\": \"" + numeroOrdre + "\"}");
77 jpm 194
					} else {
2621 aurelien 195
						com.google.gwt.user.client.Window.alert(Msg.get("probleme-mise-a-jour-donnees"));
77 jpm 196
						return ;
197
					}
198
				}
199
 
200
			});
201
 
202
			r.rafraichir("OK", true) ;
203
 
204
		} catch (RequestException e) {
205
			// TODO Auto-generated catch block
206
			e.printStackTrace();
207
		}
208
 
209
	}
74 david 210
 
1628 raphael 211
}