Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 30 | Rev 43 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4 aperonnet 1
package org.tela_botanica.client.modeles;
2
 
12 aperonnet 3
import java.util.HashMap;
4
import java.util.Iterator;
5
import java.util.Set;
6
 
7
import com.google.gwt.json.client.JSONObject;
8
 
9
/**
10
 *
11
 * Classe representant une image du carnet,
12
 * elle ne contient pas d'image à proprement parler mais
36 aperonnet 13
 * plutôt les informations associées ainsi que l'url distante.
14
 * C'est une table de hachage qui contient des paires propriété/valeur
12 aperonnet 15
 *
16
 */
17
public class ImageCarnet extends HashMap {
4 aperonnet 18
 
12 aperonnet 19
 
36 aperonnet 20
	/**
21
	 * Constructeur avec un objet JSON
22
	 * @param image
23
	 */
12 aperonnet 24
	public ImageCarnet(JSONObject image)
25
	{
36 aperonnet 26
		// l'objet JSON est une table de hachage
12 aperonnet 27
		Set im = image.keySet() ;
28
 
36 aperonnet 29
		// on la parcourt pour chaque clé
12 aperonnet 30
		for (Iterator iterator = im.iterator(); iterator.hasNext();) {
31
 
36 aperonnet 32
			// si elle est associée à une valeur, on l'ajoute
12 aperonnet 33
			String key = (String) iterator.next();
34
			if(image.get(key).isString() != null)
35
			{
36
				String valeur = image.get(key).isString().stringValue() ;
37
				this.put(key, valeur) ;
38
			}
16 aperonnet 39
			else
40
			{
36 aperonnet 41
				// sinon on ajoute la clé avec une valeur vide
16 aperonnet 42
				String valeur = " " ;
43
				this.put(key, valeur) ;
44
			}
12 aperonnet 45
 
46
		}
47
 
48
	}
49
 
36 aperonnet 50
	/**
51
	 * Surcharge de toString qui affiche toutes les propriétés de l'image
52
	 */
16 aperonnet 53
	public String toString()
54
	{
55
		String valeur = " ";
56
 
57
		for (Iterator iterator = this.keySet().iterator(); iterator.hasNext();) {
58
 
59
 
60
			String key = (String) iterator.next();
61
			if(this.get(key) != null)
62
			{
63
				valeur += "cle : "+key+" valeur :"+(String)this.get(key)+"\n" ;
64
			}
65
 
66
		}
67
 
68
		return valeur ;
69
	}
70
 
36 aperonnet 71
	/**
72
	 * Pour éviter que l'on traite des valeurs nulles à l'affichage
73
	 * on passe par cette fonction qui retire les charactères nuls qui font planter
74
	 * l'affichage, il ne faut pas utiliser get directement
75
	 * @param cle
76
	 * @return la valeur associée à la clé
77
	 */
12 aperonnet 78
	public String renvoyerValeurCorrecte(String cle)
4 aperonnet 79
	{
12 aperonnet 80
		if(this.containsKey((cle)))
81
		{
82
			String valeur = (String)this.get(cle) ;
30 aperonnet 83
			if(valeur.equals("null") || valeur == null)
12 aperonnet 84
			{
36 aperonnet 85
				return " " ;
30 aperonnet 86
			}
12 aperonnet 87
			else
88
			{
22 aperonnet 89
				char nullChar = '\u0000' ;
90
				String sNull = ""+nullChar ;
91
				valeur = valeur.replaceAll(sNull, "") ;
12 aperonnet 92
				return valeur ;
93
			}
94
		}
95
		else
96
		{
36 aperonnet 97
			return " " ;
12 aperonnet 98
		}
4 aperonnet 99
	}
100
 
36 aperonnet 101
	/**
102
	 * Acesseur pour l'id de l'image
103
	 * @return l'id de l'image
104
	 */
22 aperonnet 105
	public String getId() {
106
 
107
		return renvoyerValeurCorrecte("ci_id_image") ;
108
	}
12 aperonnet 109
 
36 aperonnet 110
	/**
111
	 * Acesseur pour le numero d'ordre de l'image
112
	 * @return l'ordre de l'image
113
	 */
12 aperonnet 114
	public String getOrdre() {
115
 
116
		return renvoyerValeurCorrecte("ci_ordre") ;
117
	}
118
 
36 aperonnet 119
	/**
120
	 * Base de l'url serveur pour les images
121
	 * @return url racine pour les images
122
	 */
12 aperonnet 123
	public String getBaseUrl()
124
	{
16 aperonnet 125
		return "http://162.38.234.9/Documents/images_serveur/" ;
12 aperonnet 126
	}
127
 
36 aperonnet 128
	/**
129
	 * Renvoie le chemin et nom du fichier grand format
130
	 * @return le chemin du fichier grand format
131
	 */
4 aperonnet 132
	public String getUrl() {
12 aperonnet 133
 
134
		return getBaseUrl()+(String)this.get("ci_id_image")+".jpg" ;
4 aperonnet 135
	}
12 aperonnet 136
 
36 aperonnet 137
	/**
138
	 * Renvoie le chemin et nom du fichier petit format
139
	 * @return le chemin du fichier petit format
140
	 */
12 aperonnet 141
	public String getSUrl() {
142
 
143
		return getBaseUrl()+(String)this.get("ci_id_image")+"_S.jpg" ;
144
	}
145
 
36 aperonnet 146
	/**
147
	 * Renvoie le chemin et nom du fichier moyen format
148
	 * @return le chemin du fichier moyen format
149
	 */
12 aperonnet 150
	public String getMUrl() {
151
 
152
		return getBaseUrl()+(String)this.get("ci_id_image")+"_M.jpg" ;
153
	}
154
 
36 aperonnet 155
	/**
156
	 * Renvoie la taille de l'image
157
	 * @return un tableau de deux string contenant la hauteur puis la largeur
158
	 */
159
	public String[] getTailleImage()
160
	{
161
		String[] XY = { renvoyerValeurCorrecte("ci_meta_height") , renvoyerValeurCorrecte("ci_meta_width") } ;
162
		return XY ;
163
	}
164
 
165
	/**
166
	 * Renvoie la date exif associée à l'image
167
	 * @return la date associée à l'image
168
	 */
12 aperonnet 169
	public String getDate() {
170
 
171
		return renvoyerValeurCorrecte("ci_meta_date_time") ;
4 aperonnet 172
	}
173
 
36 aperonnet 174
	/**
175
	 * Renvoie la ville associée à l'image
176
	 * @return la ville iptc
177
	 */
12 aperonnet 178
	public Object getIptcCity() {
179
 
180
		return renvoyerValeurCorrecte("ci_meta_iptc_city") ;
4 aperonnet 181
	}
182
 
36 aperonnet 183
	/**
184
	 * Renvoie le fabricant de l'appareil
185
	 * @return le fabricant
186
	 */
12 aperonnet 187
	public String getMake() {
188
 
189
		return renvoyerValeurCorrecte("ci_meta_make") ;
190
	}
191
 
36 aperonnet 192
	/**
193
	 * Renvoie le modele de l'appareil
194
	 * @return le modele
195
	 */
12 aperonnet 196
	public String getModel() {
197
 
198
		return renvoyerValeurCorrecte("ci_meta_model") ;
199
	}
16 aperonnet 200
 
36 aperonnet 201
	/**
202
	 * Renvoie un tableau nom / valeur de toutes les metadonnées Iptc
203
	 * @return les métadonnées iptc
204
	 */
16 aperonnet 205
	public String[][] getMetadonnesIptc() {
206
 
207
		String[][] metaIptc = new String[12][2] ;
208
		int elem = 0 ;
209
 
210
		for (Iterator it = this.keySet().iterator(); it.hasNext();)
211
		{
212
 
213
			String key = (String)it.next();
214
 
215
				// on filtre le "ci"
216
				String type[] = key.split("_",3) ;
217
 
218
 
219
				// si c'est une metadonnee exif ou iptc
220
				if(type[1].equals("meta"))
221
				{
222
					String[] genre =  type[2].split("_",2) ;
223
					if(genre[0].equals("iptc"))
224
					{
225
						String nom = genre[1] ;
226
						metaIptc[elem][0] = nom ;
227
						metaIptc[elem][1] = renvoyerValeurCorrecte(key) ;
228
						elem++ ;
229
					}
230
 
231
				}
232
 
233
		}
234
 
235
		return metaIptc ;
236
	}
237
 
36 aperonnet 238
	/**
239
	 * Renvoie un tableau nom / valeur de toutes les metadonnées Exif
240
	 * @return les métadonnées Exif
241
	 */
242
	public String[][] getMetadonnesExif() {
16 aperonnet 243
 
244
		String[][] metaExif = new String[31][2] ;
245
		int elem = 0 ;
246
 
247
		for (Iterator it = this.keySet().iterator(); it.hasNext();)
248
		{
249
 
250
			String key = (String)it.next();
251
 
252
				// on filtre le "ci"
253
				String type[] = key.split("_",3) ;
254
 
255
 
256
				// si c'est une metadonnee exif ou iptc
257
				if(type[1].equals("meta"))
258
				{
259
					String[] genre =  type[2].split("_",2) ;
260
					if(genre[0].equals("exif"))
261
					{
262
						String nom = genre[1] ;
263
						metaExif[elem][0] = nom ;
264
						metaExif[elem][1] = renvoyerValeurCorrecte(key) ;
265
						elem++ ;
266
					}
267
 
268
				}
269
 
270
		}
271
 
272
		return metaExif ;
273
 
274
	}
18 aperonnet 275
 
36 aperonnet 276
	/**
277
	 * Renvoie un tableau nom / valeur contenant les infos générales
278
	 * @return les infos générales
279
	 */
280
	public String[][] getInfoGenerales() {
18 aperonnet 281
 
282
		String[][] metaGen = new String[2][2] ;
283
 
284
		metaGen[0][0] = "ci_meta_comment" ;
285
		metaGen[0][1] = (String)this.get("ci_meta_comment") ;
286
 
287
		metaGen[1][0] = "ci_meta_date" ;
288
		metaGen[1][1] = (String)this.get("ci_meta_date") ;
289
 
290
		return metaGen ;
291
	}
292
 
36 aperonnet 293
	/**
294
	 * Renvoie une string contenant les mots clés séparés par des ','
295
	 * @return les mots clés
296
	 */
27 aperonnet 297
	public String getMotsCles() {
298
 
299
		return renvoyerValeurCorrecte("ci_meta_mots_cles") ;
300
	}
301
 
36 aperonnet 302
	/**
303
	 * Met à jour le commenentaire et la date
304
	 * @param commentaires le nouveau commentaire
305
	 * @param date la nouvelle date
306
	 */
18 aperonnet 307
	public void miseAJourInfoGenerales(String commentaires, String date)
308
	{
309
			put("ci_meta_comment",commentaires) ;
310
 
311
			put("ci_meta_date",date) ;
312
	}
36 aperonnet 313
 
314
	/**
315
	 * Met à jour les mots clés
316
	 * @param motsClesEnCours la liste de mots clés séparés par des ','
317
	 */
27 aperonnet 318
	public void mettreAjourMotsCles(String motsClesEnCours) {
319
 
320
		put("ci_meta_mots_cles",motsClesEnCours) ;
321
 
322
	}
4 aperonnet 323
}