Subversion Repositories eFlore/Applications.cel

Rev

Rev 2432 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2432 Rev 2437
1
package org.tela_botanica.client.modeles.dao;
1
package org.tela_botanica.client.modeles.dao;
2
 
2
 
3
import java.util.ArrayList;
3
import java.util.ArrayList;
4
import java.util.HashMap;
4
import java.util.HashMap;
5
import java.util.Iterator;
5
import java.util.Iterator;
6
 
6
 
7
import org.tela_botanica.client.cel2;
7
import org.tela_botanica.client.cel2;
8
import org.tela_botanica.client.interfaces.Rafraichissable;
8
import org.tela_botanica.client.interfaces.Rafraichissable;
9
import org.tela_botanica.client.modeles.objets.Configuration;
9
import org.tela_botanica.client.modeles.objets.Configuration;
10
import org.tela_botanica.client.modeles.objets.ListeChampsEtendus;
10
import org.tela_botanica.client.modeles.objets.ListeChampsEtendus;
11
import org.tela_botanica.client.modeles.objets.ListeGroupesChampsEtendus;
11
import org.tela_botanica.client.modeles.objets.ListeGroupesChampsEtendus;
12
import org.tela_botanica.client.modeles.objets.ListeReferentielPerso;
12
import org.tela_botanica.client.modeles.objets.ListeReferentielPerso;
13
import org.tela_botanica.client.observation.ObservationModele;
13
import org.tela_botanica.client.observation.ObservationModele;
14
 
14
 
15
import com.google.gwt.core.client.Callback;
15
import com.google.gwt.core.client.Callback;
16
import com.google.gwt.http.client.Request;
16
import com.google.gwt.http.client.Request;
17
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
17
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
18
import org.tela_botanica.client.util.Util;
18
import org.tela_botanica.client.util.Util;
19
 
19
 
20
import com.google.gwt.http.client.RequestCallback;
20
import com.google.gwt.http.client.RequestCallback;
21
import com.google.gwt.http.client.RequestException;
21
import com.google.gwt.http.client.RequestException;
22
import com.google.gwt.http.client.Response;
22
import com.google.gwt.http.client.Response;
23
import com.google.gwt.http.client.URL;
23
import com.google.gwt.http.client.URL;
24
import com.google.gwt.json.client.JSONArray;
24
import com.google.gwt.json.client.JSONArray;
25
import com.google.gwt.json.client.JSONObject;
25
import com.google.gwt.json.client.JSONObject;
26
import com.google.gwt.json.client.JSONParser;
26
import com.google.gwt.json.client.JSONParser;
27
import com.google.gwt.json.client.JSONValue;
27
import com.google.gwt.json.client.JSONValue;
28
import com.google.gwt.user.client.Window;
28
import com.google.gwt.user.client.Window;
29
 
29
 
30
public class ListeReferentielChampsEtendusDAO {
30
public class ListeReferentielChampsEtendusDAO {
31
	
31
	
32
	
32
	
33
	public static ListeGroupesChampsEtendus cacheGroupes;
33
	public static ListeGroupesChampsEtendus cacheGroupes;
34
	public static HashMap<String, String> cacheClesLabels;
34
	public static HashMap<String, String> cacheClesLabels;
35
	public static HashMap<String, String> cacheDescription = new HashMap<String, String>();
35
	public static HashMap<String, String> cacheDescription = new HashMap<String, String>();
36
	
36
	
37
	public static String prefixePageChampEtendu = "CE";
37
	public static String prefixePageChampEtendu = "CE";
38
	
38
	
39
	public ListeReferentielChampsEtendusDAO(ObservationModele obs) {
39
	public ListeReferentielChampsEtendusDAO(ObservationModele obs) {
40
		
40
		
41
	}
41
	}
42
	
42
	
43
	public void obtenirListeNomsChampsEtendus(final Rafraichissable r, String recherche) {
43
	public void obtenirListeNomsChampsEtendus(final Rafraichissable r, String recherche) {
44
		    	  	
44
		    	  	
45
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() + 
45
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() + 
46
												"/NomsChampsEtendus/cle"+
46
												"/NomsChampsEtendus/cle"+
47
												"?recherche="+URL.encode(recherche));	
47
												"?recherche="+URL.encode(recherche));	
48
		try {
48
		try {
49
			
49
			
50
			rb.sendRequest(null, new RequestCallback() {
50
			rb.sendRequest(null, new RequestCallback() {
51
				@Override
51
				@Override
52
				public void onResponseReceived(final Request request,
52
				public void onResponseReceived(final Request request,
53
						final Response response) {
53
						final Response response) {
54
 
54
 
55
					ListeChampsEtendus labelCles = new ListeChampsEtendus(response.getText());
55
					ListeChampsEtendus labelCles = new ListeChampsEtendus(response.getText());
56
					r.rafraichir(labelCles, true);				
56
					r.rafraichir(labelCles, true);				
57
				}
57
				}
58
 
58
 
59
				@Override
59
				@Override
60
				public void onError(Request request, Throwable exception) {
60
				public void onError(Request request, Throwable exception) {
61
					// TODO Auto-generated method stub				
61
					// TODO Auto-generated method stub				
62
				}			
62
				}			
63
			});
63
			});
64
			
64
			
65
		} catch (RequestException e) {
65
		} catch (RequestException e) {
66
			
66
			
67
			e.printStackTrace();
67
			e.printStackTrace();
68
		}
68
		}
69
	}
69
	}
70
	
70
	
71
	public void obtenirListeValeursChampEtendu(final Rafraichissable r, String cle, String recherche) {
71
	public void obtenirListeValeursChampEtendu(final Rafraichissable r, String cle, String recherche) {
72
	  	
72
	  	
73
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() + 
73
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() + 
74
												"/NomsChampsEtendus/valeur"+
74
												"/NomsChampsEtendus/valeur"+
75
												"?cle="+URL.encode(cle)+"&recherche="+URL.encode(recherche));
75
												"?cle="+URL.encode(cle)+"&recherche="+URL.encode(recherche));
76
		
76
		
77
		try {
77
		try {
78
			
78
			
79
			rb.sendRequest(null, new RequestCallback() {
79
			rb.sendRequest(null, new RequestCallback() {
80
				@Override
80
				@Override
81
				public void onResponseReceived(final Request request,
81
				public void onResponseReceived(final Request request,
82
						final Response response) {
82
						final Response response) {
83
 
83
 
84
 
84
 
85
					ArrayList<String> valeurs = new ArrayList<String>();
85
					ArrayList<String> valeurs = new ArrayList<String>();
86
					final JSONValue responseValue = JSONParser.parse(response.getText());
86
					final JSONValue responseValue = JSONParser.parse(response.getText());
87
					
87
					
88
					JSONArray reponse = null;
88
					JSONArray reponse = null;
89
					if ((reponse = responseValue.isArray()) != null) {
89
					if ((reponse = responseValue.isArray()) != null) {
90
						for(int i = 0; i < reponse.size(); i++) {								
90
						for(int i = 0; i < reponse.size(); i++) {								
91
							valeurs.add(reponse.get(i).isString().stringValue());
91
							valeurs.add(reponse.get(i).isString().stringValue());
92
						}
92
						}
93
					}
93
					}
94
						
94
						
95
					r.rafraichir(valeurs, true);				
95
					r.rafraichir(valeurs, true);				
96
				}
96
				}
97
 
97
 
98
				@Override
98
				@Override
99
				public void onError(Request request, Throwable exception) {
99
				public void onError(Request request, Throwable exception) {
100
					// TODO Auto-generated method stub
100
					// TODO Auto-generated method stub
101
				}			
101
				}			
102
			});
102
			});
103
			
103
			
104
		} catch (RequestException e) {
104
		} catch (RequestException e) {
105
			
105
			
106
			e.printStackTrace();
106
			e.printStackTrace();
107
		}
107
		}
108
	}
108
	}
109
	
109
	
110
	public void obtenirGroupesChampsEtendus(final Rafraichissable r) {
110
	public void obtenirGroupesChampsEtendus(final Rafraichissable r) {
111
		
111
		
112
		if(cacheGroupes == null) {
112
		if(cacheGroupes == null) {
113
			RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() + 
113
			RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() + 
114
					"/CatalogueChampsEtendus/groupes");
114
					"/CatalogueChampsEtendus/groupes");
115
			try {	
115
			try {	
116
				rb.sendRequest(null, new RequestCallback() {	
116
				rb.sendRequest(null, new RequestCallback() {	
117
				@Override
117
				@Override
118
				public void onResponseReceived(final Request request,
118
				public void onResponseReceived(final Request request,
119
				final Response response) {		
119
				final Response response) {		
120
					ListeGroupesChampsEtendus valeurs = new ListeGroupesChampsEtendus(response.getText());
120
					ListeGroupesChampsEtendus valeurs = new ListeGroupesChampsEtendus(response.getText());
121
					cacheGroupes = valeurs;
121
					cacheGroupes = valeurs;
122
					r.rafraichir(valeurs, true);				
122
					r.rafraichir(valeurs, true);				
123
				}
123
				}
124
				
124
				
125
				@Override
125
				@Override
126
				public void onError(Request request, Throwable exception) {
126
				public void onError(Request request, Throwable exception) {
127
					// TODO Auto-generated method stub
127
					// TODO Auto-generated method stub
128
				}	
128
				}	
129
			});
129
			});
130
			
130
			
131
			} catch (RequestException e) {
131
			} catch (RequestException e) {
132
				e.printStackTrace();
132
				e.printStackTrace();
133
			}
133
			}
134
		} else {
134
		} else {
135
			r.rafraichir(cacheGroupes, true);	
135
			r.rafraichir(cacheGroupes, true);	
136
		}
136
		}
137
	}
137
	}
138
	
138
	
139
	public void obtenirCatalogueChampsEtendus(final Rafraichissable r) {
139
	public void obtenirCatalogueChampsEtendus(final Rafraichissable r) {
140
		
140
		
141
		if(cacheClesLabels == null) {
141
		if(cacheClesLabels == null) {
142
			RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() + 
142
			RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() + 
143
					"/CatalogueChampsEtendus/champs");
143
					"/CatalogueChampsEtendus/champs");
144
			try {	
144
			try {	
145
				rb.sendRequest(null, new RequestCallback() {	
145
				rb.sendRequest(null, new RequestCallback() {	
146
				@Override
146
				@Override
147
				public void onResponseReceived(final Request request,
147
				public void onResponseReceived(final Request request,
148
				final Response response) {
148
				final Response response) {
149
					try {						
149
					try {						
150
						JSONValue champsJson = JSONParser.parseStrict(response.getText());
150
						JSONValue champsJson = JSONParser.parseStrict(response.getText());
151
						JSONArray champs = champsJson.isArray();
151
						JSONArray champs = champsJson.isArray();
152
						
152
						
153
						cacheClesLabels = new HashMap<String, String>(champs.size());
153
						cacheClesLabels = new HashMap<String, String>(champs.size());
154
						
154
						
155
						for (int i = 0; i < champs.size(); i++) {
155
						for (int i = 0; i < champs.size(); i++) {
156
							JSONObject champ = champs.get(i).isObject();
156
							JSONObject champ = champs.get(i).isObject();
157
							String cle = champ.get("cle").isString().stringValue();
157
							String cle = champ.get("cle").isString().stringValue();
158
							String label = champ.get("label").isString().stringValue();
158
							String label = champ.get("label").isString().stringValue();
159
							cacheClesLabels.put(cle, label);
159
							cacheClesLabels.put(cle, label);
160
 
160
 
161
							r.rafraichir(cacheClesLabels, true);	
161
							r.rafraichir(cacheClesLabels, true);	
162
						}
162
						}
163
					} catch (Exception e) {
163
					} catch (Exception e) {
164
						// TODO: handle exception
164
						// TODO: handle exception
165
					}			
165
					}			
166
				}
166
				}
167
				
167
				
168
				@Override
168
				@Override
169
				public void onError(Request request, Throwable exception) {
169
				public void onError(Request request, Throwable exception) {
170
					// TODO Auto-generated method stub
170
					// TODO Auto-generated method stub
171
				}	
171
				}	
172
			});
172
			});
173
			
173
			
174
			} catch (RequestException e) {
174
			} catch (RequestException e) {
175
				e.printStackTrace();
175
				e.printStackTrace();
176
			}
176
			}
177
		} else {
177
		} else {
178
			r.rafraichir(cacheClesLabels, true);	
178
			r.rafraichir(cacheClesLabels, true);	
179
		}
179
		}
180
	}
180
	}
181
	
181
	
182
	public static void telechargerDescriptionWikini(final String champ, final Callback<String, String> callback) {
182
	public static void telechargerDescriptionWikini(final String champ, final Callback<String, String> callback) {
183
		String url = Configuration.getWikiDescriptionChampsEtendusRestUrl()+obtenirNomPageChampEtendu(champ)+"?";
183
		String url = Configuration.getWikiDescriptionChampsEtendusRestUrl()+obtenirNomPageChampEtendu(champ)+"?";
184
		String options = Configuration.getWikiDescriptionChampsEtendusUrlOptions();
184
		String options = Configuration.getWikiDescriptionChampsEtendusUrlOptions();
185
 
185
 
186
		if(cacheDescription.containsKey(champ)) {
186
		if(cacheDescription.containsKey(champ)) {
187
			callback.onSuccess(cacheDescription.get(champ));
187
			callback.onSuccess(cacheDescription.get(champ));
188
		}
188
		}
189
		
189
		
190
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET,
190
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET,
191
				url + options);
191
				url + options);
192
		
192
		
193
		try {			
193
		try {			
194
			rb.sendRequest(null, new RequestCallback() {
194
			rb.sendRequest(null, new RequestCallback() {
195
 
195
 
196
				@Override
196
				@Override
197
				public void onResponseReceived(final Request request,
197
				public void onResponseReceived(final Request request,
198
						final Response response) {
198
						final Response response) {
-
 
199
					try {
-
 
200
						
199
					final JSONValue responseValue = JSONParser.parse(response.getText());
201
						final JSONValue responseValue = JSONParser.parse(response.getText());
200
					
202
						
201
					String description = "";
203
						String description = "";
202
					
204
						
203
					JSONObject reponse = responseValue.isObject();
205
						JSONObject reponse = responseValue.isObject();
204
					if(reponse != null && reponse.get("texte") != null && reponse.get("texte").isString() != null) {
206
						if(reponse != null && reponse.get("texte") != null && reponse.get("texte").isString() != null) {
205
						description = reponse.get("texte").isString().stringValue();
207
							description = reponse.get("texte").isString().stringValue();
-
 
208
						}
-
 
209
						
-
 
210
						cacheDescription.put(champ, description);
-
 
211
						callback.onSuccess(description);
-
 
212
					} catch(Exception exception) {
-
 
213
						this.onError(request, exception);
206
					}
214
					}
207
					
-
 
208
					cacheDescription.put(champ, description);
-
 
209
					callback.onSuccess(description);
-
 
210
				}
215
				}
211
 
216
 
212
				@Override
217
				@Override
213
				public void onError(Request request, Throwable exception) {
218
				public void onError(Request request, Throwable exception) {
214
					cacheDescription.put(champ, "");
219
					cacheDescription.put(champ, "");
215
					callback.onFailure("");
220
					callback.onFailure("");
216
				}	
221
				}
217
				
-
 
218
			});
222
			});
219
			
223
			
220
		} catch (RequestException e) {		
224
		} catch (RequestException e) {		
221
			e.printStackTrace();
225
			e.printStackTrace();
222
		}
226
		}
223
	}
227
	}
224
	
228
	
225
	// Pour obliger la page wiki a avoir été créée avant de rediriger, on utilise une requete synchrone
229
	// Pour obliger la page wiki a avoir été créée avant de rediriger, on utilise une requete synchrone
226
	private static native String effectuerRequeteSynchrone(String url, String contenu, String typeRequete)/*-{
230
	private static native String effectuerRequeteSynchrone(String url, String contenu, String typeRequete)/*-{
227
		// tant pis pour les vieux navigateurs, ie6 etc...
231
		// tant pis pour les vieux navigateurs, ie6 etc...
228
		// tous ceux que l'on supporte connaissent XMLHttpRequest
232
		// tous ceux que l'on supporte connaissent XMLHttpRequest
229
    	var xhReq = new XMLHttpRequest();
233
    	var xhReq = new XMLHttpRequest();
230
    	xhReq.open(typeRequete, url, false);
234
    	xhReq.open(typeRequete, url, false);
231
    	
235
    	
232
    	if(typeRequete == "POST") xhReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
236
    	if(typeRequete == "POST") xhReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
233
    	xhReq.send(contenu);
237
    	xhReq.send(contenu);
234
    	
238
    	
235
    	var serverResponse = xhReq.status + xhReq.responseText;
239
    	var serverResponse = xhReq.status + xhReq.responseText;
236
    	return serverResponse;
240
    	return serverResponse;
237
	}-*/; 
241
	}-*/; 
238
	
242
	
239
	public static void creerPageWikini(final String cle) {
243
	public static void creerPageWikini(final String cle) {
240
		String url = Configuration.getWikiDescriptionChampsEtendusRestUrl()+obtenirNomPageChampEtendu(cle)+"?";
244
		String url = Configuration.getWikiDescriptionChampsEtendusRestUrl()+obtenirNomPageChampEtendu(cle)+"?";
241
		String options = Configuration.getWikiDescriptionChampsEtendusUrlOptions();
245
		String options = Configuration.getWikiDescriptionChampsEtendusUrlOptions();
242
		String pageTpl = Configuration.getWikiDescriptionChampsEtendusUrlOptionsPageTpl();
246
		String pageTpl = Configuration.getWikiDescriptionChampsEtendusUrlOptionsPageTpl();
243
		effectuerRequeteSynchrone(url + options + pageTpl, "", "GET");
247
		effectuerRequeteSynchrone(url + options + pageTpl, "", "GET");
244
	}
248
	}
245
	
249
	
246
	public static String obtenirUrlEditionDescriptionWiki(String cle) {
250
	public static String obtenirUrlEditionDescriptionWiki(String cle) {
247
		String url = Configuration.getWikiDescriptionChampsEtendusPageUrl()+obtenirNomPageChampEtendu(cle)+"/edit";
251
		String url = Configuration.getWikiDescriptionChampsEtendusPageUrl()+obtenirNomPageChampEtendu(cle)+"/edit";
248
		return url;
252
		return url;
249
	}
253
	}
250
	
254
	
251
	protected static String obtenirNomPageChampEtendu(String cle) {
255
	protected static String obtenirNomPageChampEtendu(String cle) {
252
		return prefixePageChampEtendu+Util.convertirEnChaMot(cle);
256
		return prefixePageChampEtendu+Util.convertirEnChaMot(cle);
253
	}
257
	}
254
}
258
}