Subversion Repositories eFlore/Applications.cel

Rev

Rev 2033 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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