Subversion Repositories eFlore/Applications.cel

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
734 aurelien 1
package org.tela_botanica.client.util;
2 aperonnet 2
 
1542 aurelien 3
import java.util.HashMap;
1549 aurelien 4
import java.util.Iterator;
1542 aurelien 5
import java.util.Map;
6
 
1572 aurelien 7
import org.tela_botanica.client.modeles.objets.ChampEtendu;
989 aurelien 8
import org.tela_botanica.client.modeles.objets.Observation;
642 aurelien 9
 
1549 aurelien 10
import com.google.gwt.http.client.URL;
1572 aurelien 11
import com.google.gwt.json.client.JSONArray;
1282 aurelien 12
import com.google.gwt.json.client.JSONObject;
13
import com.google.gwt.json.client.JSONString;
14
 
2 aperonnet 15
public class Util {
16
 
17
	public Util() {
18
	}
642 aurelien 19
 
1282 aurelien 20
	public static String getValeurJsonOuVide(JSONObject jo, String index) {
21
		return jsonNonNull(jo, index) ? ((JSONString)jo.get(index)).stringValue() : "";
22
	}
23
 
1572 aurelien 24
	public static Map<String, ChampEtendu> getMapValeursOuVide(JSONObject jo, String index) {
25
		Map<String, ChampEtendu> mapValeurs = new HashMap<String, ChampEtendu>();
26
		if(jo.get(index) != null && jo.get(index).isArray() != null) {
27
			JSONArray tabJo = jo.get(index).isArray();
28
			for (int i = 0; i < tabJo.size(); i++) {
29
				JSONObject champJson = tabJo.get(i).isObject();
30
				String cle = champJson.get("cle").isString().stringValue();
31
				String label = champJson.get("label").isString().stringValue();
32
				String valeur = champJson.get("valeur").isString().stringValue();
33
				ChampEtendu champ = new ChampEtendu(cle, label, valeur);
34
				mapValeurs.put(cle, champ);
1542 aurelien 35
			}
1572 aurelien 36
 
1542 aurelien 37
		}
38
		return mapValeurs;
39
	}
40
 
1572 aurelien 41
	public static String convertirChampsEtendusEnChaineRequete(Map<String, ChampEtendu> map) {
42
		String json = "";
43
	    if (map != null && !map.isEmpty()) {
44
	    	JSONArray jsonArr = new JSONArray();
45
	    	int i = 0;
46
	        for (Map.Entry<String, ChampEtendu> entry: map.entrySet()) {
47
	        	jsonArr.set(i, convertirChampEtenduEnJson(entry.getValue()));
48
	        	i++;
49
	        }
50
	        json = jsonArr.toString();
51
	    }
52
	    return json;
1549 aurelien 53
	}
54
 
1572 aurelien 55
	public static JSONObject convertirChampEtenduEnJson(ChampEtendu champEtendu) {
56
		JSONObject jsonObj = new JSONObject();
57
		jsonObj.put("cle", new JSONString(champEtendu.getCle()));
58
		jsonObj.put("label", new JSONString(champEtendu.getLabel()));
59
		jsonObj.put("valeur", new JSONString(champEtendu.getValeur()));
60
        return jsonObj;
61
	}
62
 
1282 aurelien 63
	public static boolean jsonNonNull(JSONObject jo, String index) {
64
		return (jo != null &&
65
				jo.get(index) != null &&
66
				jo.get(index).isNull() == null
67
			   );
68
	}
69
 
642 aurelien 70
	public static String formaterLieu(Observation obs, String modeleLieu) {
71
 
72
		String lieuModele = modeleLieu;
73
 
74
		String commune = obs.getLocalite();
75
		String lieuDit = obs.getLieudit();
76
		String station = obs.getStation();
77
 
78
		String lieuCommuneFormate = "";
79
		String lieuDitFormate = "";
80
		String stationFormatee = "";
81
 
82
		if(commune != null && !commune.contains("000null") && !commune.trim().equals("")) {
83
			String	idLoc =obs.getIdentifiantLocalite().replaceAll(" ","/");
84
			if(idLoc != null && !idLoc.contains("000null") && !idLoc.trim().equals("")) {
85
 
86
				idLoc = idLoc.replaceAll("%","");
87
				idLoc = idLoc.replaceAll("\"","");
88
				idLoc = idLoc.replace('\\',' ');
89
				idLoc = idLoc.trim();
1332 aurelien 90
				if(idLoc.length() > 2) {
91
					idLoc = idLoc.substring(0,2);
92
				}
642 aurelien 93
				lieuCommuneFormate += idLoc+" - ";
94
			}
95
			lieuCommuneFormate += commune;
96
			lieuModele = lieuModele.replaceAll("IDLOCCOMMUNE", lieuCommuneFormate);
97
		} else {
98
 
99
			lieuModele = lieuModele.replaceAll("IDLOCCOMMUNE,", lieuCommuneFormate);
100
		}
101
 
102
		if(lieuDit != null && !lieuDit.contains("000null") && !lieuDit.trim().equals("")) {
103
			lieuDitFormate += lieuDit;
104
			lieuModele = lieuModele.replaceAll("LIEUDIT", lieuDitFormate);
105
		} else {
106
			lieuModele = lieuModele.replaceAll("LIEUDIT,", lieuDitFormate);
107
		}
108
 
109
		if(station != null && !station.contains("000null") && !station.trim().equals("")) {
110
			stationFormatee += station;
111
			lieuModele = lieuModele.replaceAll("STATION", stationFormatee);
112
		} else {
113
			lieuModele = lieuModele.replaceAll("STATION", stationFormatee);
114
		}
115
 
116
		lieuModele = lieuModele.trim();
117
		lieuModele = lieuModele.replaceAll(",$","");
118
		lieuModele = lieuModele.replaceAll(",^$",", ");
119
 
120
		return lieuModele;
121
	}
122
 
1542 aurelien 123
	public static String obtenirDepartementAPartirChaineCommune(String departement, String commune) {
124
 
125
		String dep = "";
126
 
127
		if(departement == null) {
128
			departement = "";
129
		}
130
 
131
		if(departement.equals("000null") || departement.equals("")) {
132
 
133
			String[] depCom = commune.split(" ");
134
			if(depCom.length > 1) {
135
				dep = depCom[1].replace('(', ' ');
136
			} else {
137
				dep = "";
138
			}
139
		} else {
140
			dep = departement;
141
		}
142
 
143
		dep = dep.replace(')', ' ');
144
		dep = dep.trim();
145
		dep = dep.replace('\\',' ');
146
		dep = dep.trim();
147
 
148
		try
149
		{
150
			int nDep = Integer.parseInt(dep);
151
			if(nDep > 0 && nDep < 110) {
152
				departement = dep ;
153
			}
154
 
155
			if(departement.length() == 4) {
156
				departement = "0"+departement;
157
			}
158
 
159
			departement = departement.substring(0,2);
160
		}
161
		catch(NumberFormatException e)
162
		{
163
			departement = "" ;
164
		}
165
 
166
		return departement;
167
	}
168
 
642 aurelien 169
	public static String supprimerNumDepartementChaineLocalite(String chaineLocaliteComplete) {
962 aurelien 170
		return chaineLocaliteComplete.replaceAll(" \\([0-9]*\\)", "");
642 aurelien 171
	}
673 aurelien 172
 
962 aurelien 173
	public static String convertirChaineZoneGeoVersDepartement(String chaineZoneGeo) {
1672 aurelien 174
		return (!chaineZoneGeo.equals("000null") && !chaineZoneGeo.equals("") && chaineZoneGeo.replaceAll("INSEE-C:", "").length() >= 2) ?
175
						chaineZoneGeo.replaceAll("INSEE-C:", "").substring(0, 2) :
176
						chaineZoneGeo;
962 aurelien 177
	}
178
 
179
	public static String convertirChaineZoneGeoVersCodeInsee(String chaineZoneGeo) {
180
		return (!chaineZoneGeo.equals("000null") && !chaineZoneGeo.equals("")) ? chaineZoneGeo.replaceAll("INSEE-C:", ""): chaineZoneGeo;
181
	}
182
 
673 aurelien 183
	/***
184
	 * Fusionne les éléments d'un tableau en une chaîne
185
	 * @param delim : la chaîne de séparation
186
	 * @param args : la tableau
187
	 * @return la chaîne fusionnée
188
	 */
189
	public static String implode(String delim, String[] args){
190
		StringBuffer sb = new StringBuffer();
191
 
192
		int lgArgs = args.length;
193
 
194
		for(int i = 0; i < lgArgs; i++){
195
			if (i > 0) {
196
				sb.append(delim);
197
			}
198
 
199
			sb.append(args[i]);
200
		}
201
 
202
		return sb.toString();
203
	}
204
 
205
	public static boolean filtreValide(String[] filtre) {
206
 
207
		return (filtre.length == 2 &&
208
		filtre[0] != null &&
209
		!filtre[0].equals("") &&
210
		filtre[1] != null &&
211
		!filtre[1].equals(""));
212
	}
213
 
214
	public static String renvoyerMois(int numMois) {
215
 
216
		switch (numMois) {
217
		case 1:
218
			return "janvier" ;
219
		case 2:
220
			return "fevrier" ;
221
		case 3:
222
			return "mars" ;
223
		case 4:
224
			return "avril" ;
225
		case 5:
226
			return "mai" ;
227
		case 6:
228
			return "juin" ;
229
		case 7:
230
			return "juillet" ;
231
		case 8:
232
			return "août" ;
233
		case 9:
234
			return "septembre" ;
235
		case 10:
236
			return "octobre" ;
237
		case 11:
238
			return "novembre" ;
239
		case 12:
240
			return "décembre" ;
241
		default:
242
			return "Inconnu" ;
243
		}
244
	}
245
 
246
	public static String remplacerSautsDeligneMalEncodes(String chaineAvecSautsDeLignesMalEncodes) {
247
 
248
		String chaineAvecSautsDeLignesBienEncodes = chaineAvecSautsDeLignesMalEncodes.replace('\\','%');
249
		chaineAvecSautsDeLignesBienEncodes = chaineAvecSautsDeLignesBienEncodes.replaceAll("%n","%");
250
		chaineAvecSautsDeLignesBienEncodes = chaineAvecSautsDeLignesBienEncodes.replace('%','\n');
251
 
252
		return chaineAvecSautsDeLignesBienEncodes;
253
	}
254
 
255
	public static boolean verifierDateFormatCel(String dateAVerifier) {
256
 
257
		String dateRemplacee = remplacerSeparateursDateFormatCel(dateAVerifier);
258
		String[] tabDate = dateRemplacee.split("/");
259
 
260
		boolean retour = false;
261
 
262
		if(tabDate.length == 3) {
1282 aurelien 263
			//TODO: faire un parsing de date qui fonctionne mieux car
264
			// on peut saisir un 31 novembre par exemple
265
			// mais l'api date de java est mal gérée par gwt
673 aurelien 266
			try {
267
				int jour = Integer.parseInt(tabDate[0]);
268
				int mois = Integer.parseInt(tabDate[1]);
269
				int annee = Integer.parseInt(tabDate[2]);
270
 
1010 aurelien 271
				if(jour <= 31 && mois <= 12 && tabDate[2].length() == 4) {
673 aurelien 272
					retour = true;
273
				}
274
			} catch (Exception e) {
275
 
276
			}
277
		}
278
 
279
		return retour;
280
	}
281
 
282
	public static String remplacerSeparateursDateFormatCel(String date) {
283
 
284
		String dateRemplacee = date.replaceAll("-", "/");
285
 
286
	    return dateRemplacee;
287
	}
1572 aurelien 288
 
289
	public static boolean estZero(String s) {
290
		boolean estZero = false;
291
	    try {
292
	    	Double dou = Double.parseDouble(s);
293
	    	estZero = (dou == 0);
294
	    } catch(NumberFormatException e) {
295
 
296
	    }
297
	    return estZero;
298
	}
299
 
300
	public static String formaterNombre(String s) {
301
		s = s.indexOf(".") < 0 ? s : s.replaceAll("0*$", "").replaceAll("\\.$", "");
302
		return s;
303
	}
2 aperonnet 304
}