Rev 5 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.modeles;import java.util.HashMap;import java.util.Iterator;import java.util.Set;import com.google.gwt.json.client.JSONObject;/**** Classe representant une image du carnet,* elle ne contient pas d'image à proprement parler mais* plutôt les informations associées ainsi que l'url distante.* C'est une table de hachage qui contient des paires propriété/valeur**/public class ImageCarnet extends HashMap<String, String> {/****/private static final long serialVersionUID = -6220175386957259859L;/*** Constructeur avec un objet JSON* @param image*/public ImageCarnet(JSONObject image){// l'objet JSON est une table de hachageSet<String> im = image.keySet() ;// on la parcourt pour chaque cléfor (Iterator<String> iterator = im.iterator(); iterator.hasNext();) {// si elle est associée à une valeur, on l'ajouteString key = iterator.next();if(image.get(key).isString() != null){String valeur = image.get(key).isString().stringValue() ;this.put(key, valeur) ;}else{// sinon on ajoute la clé avec une valeur videString valeur = " " ;this.put(key, valeur) ;}}}/*** Surcharge de toString qui affiche toutes les propriétés de l'image*/public String toString(){String valeur = " ";for (Iterator<String> iterator = this.keySet().iterator(); iterator.hasNext();) {String key = iterator.next();if(this.get(key) != null){valeur += "cle : "+key+" valeur :"+this.get(key)+"\n" ;}}return valeur ;}/*** Pour éviter que l'on traite des valeurs nulles à l'affichage* on passe par cette fonction qui retire les charactères nuls qui font planter* l'affichage, il ne faut pas utiliser get directement* @param cle* @return la valeur associée à la clé*/public String renvoyerValeurCorrecte(String cle){if(this.containsKey((cle))){String valeur = this.get(cle) ;if(valeur.equals("null") || valeur == null){return " " ;}else{char nullChar = '\u0000' ;String sNull = ""+nullChar ;valeur = valeur.replaceAll(sNull, "") ;return valeur ;}}else{return " " ;}}/*** Acesseur pour l'id de l'image* @return l'id de l'image*/public String getId() {return renvoyerValeurCorrecte("ci_id_image") ;}/*** Acesseur pour le numero d'ordre de l'image* @return l'ordre de l'image*/public String getOrdre() {return renvoyerValeurCorrecte("ci_ordre") ;}/*** Base de l'url serveur pour les images* @return url racine pour les images*/public String getBaseUrl(){return "http://162.38.234.9/Documents/images_serveur/" ;}/*** Renvoie le nom de base du fichier image et ses sous dossier* @return le nom de base du fichier de type (XXX_XXX_XXX), et ses sous dossier*/public String[] getBaseFileName(){String id = getId() ;int maxZeros = 9 - id.length() ;for(int i = 0 ; i < maxZeros ; i++){id = "0"+id ;}String dossierNv1 = id.substring(0, 3) ;String dossierNv2 = id.substring(3, 6) ;String fichierNv = id.substring(6, 9) ;String nomFichier = dossierNv1+"_"+dossierNv2+"_"+fichierNv ;String[] infosFichier = {nomFichier , dossierNv1 , dossierNv2} ;return infosFichier ;}/*** Renvoie le chemin et nom du fichier grand format* @return le chemin du fichier grand format*/public String getLUrl() {String[] infosFichier = getBaseFileName() ;return getBaseUrl()+infosFichier[1]+"/"+infosFichier[2]+"/L/"+infosFichier[0]+"_L.jpg" ;}/*** Renvoie le chemin et nom du fichier petit format* @return le chemin du fichier petit format*/public String getSUrl() {String[] infosFichier = getBaseFileName() ;return getBaseUrl()+infosFichier[1]+"/"+infosFichier[2]+"/S/"+infosFichier[0]+"_S.jpg" ;}/*** Renvoie le chemin et nom du fichier moyen format* @return le chemin du fichier moyen format*/public String getMUrl() {String[] infosFichier = getBaseFileName() ;return getBaseUrl()+infosFichier[1]+"/"+infosFichier[2]+"/M/"+infosFichier[0]+"_M.jpg" ;}/*** Renvoie la taille de l'image* @return un tableau de deux string contenant la hauteur puis la largeur*/public String[] getTailleImage(){String[] XY = { renvoyerValeurCorrecte("ci_meta_height") , renvoyerValeurCorrecte("ci_meta_width") } ;return XY ;}public String[] getNote(){String[] note = {renvoyerValeurCorrecte("ci_note_image") } ;return note ;}/*** Renvoie la date exif associée à l'image* @return la date associée à l'image*/public String getDate() {return renvoyerValeurCorrecte("ci_meta_date") ;}/*** Renvoie la ville associée à l'image* @return la ville iptc*/public Object getIptcCity() {return renvoyerValeurCorrecte("ci_meta_iptc_city") ;}/*** Renvoie le fabricant de l'appareil* @return le fabricant*/public String getMake() {return renvoyerValeurCorrecte("ci_meta_make") ;}/*** Renvoie le modele de l'appareil* @return le modele*/public String getModel() {return renvoyerValeurCorrecte("ci_meta_model") ;}/*** Renvoie un tableau nom / valeur de toutes les metadonnées Iptc* @return les métadonnées iptc*/public String[][] getMetadonnesIptc() {String[][] metaIptc = new String[14][2] ;int elem = 0 ;for (Iterator<String> it = this.keySet().iterator(); it.hasNext();){String key = it.next();// on filtre le "ci"String type[] = key.split("_",3) ;// si c'est une metadonnee exif ou iptcif(type[1].equals("meta")){String[] genre = type[2].split("_",2) ;if(genre[0].equals("iptc")){String nom = genre[1] ;metaIptc[elem][0] = nom ;metaIptc[elem][1] = renvoyerValeurCorrecte(key) ;elem++ ;}}}return metaIptc ;}/*** Renvoie un tableau nom / valeur de toutes les metadonnées Exif* @return les métadonnées Exif*/public String[][] getMetadonnesExif() {String[][] metaExif = new String[31][2] ;int elem = 0 ;for (Iterator<String> it = this.keySet().iterator(); it.hasNext();){String key = it.next();// on filtre le "ci"String type[] = key.split("_",3) ;// si c'est une metadonnee exif ou iptcif(type[1].equals("meta")){String[] genre = type[2].split("_",2) ;if(genre[0].equals("exif")){String nom = genre[1] ;metaExif[elem][0] = nom ;metaExif[elem][1] = renvoyerValeurCorrecte(key) ;elem++ ;}}}return metaExif ;}/*** Renvoie un tableau nom / valeur contenant les infos générales* @return les infos générales*/public String[][] getInfoGenerales() {String[][] metaGen = new String[2][2] ;metaGen[0][0] = "ci_meta_comment" ;metaGen[0][1] = this.renvoyerValeurCorrecte("ci_meta_comment") ;metaGen[1][0] = "ci_meta_date" ;metaGen[1][1] = this.renvoyerValeurCorrecte("ci_meta_date") ;return metaGen ;}/*** Renvoie une string contenant les mots clés séparés par des ','* @return les mots clés*/public String getMotsCles() {return renvoyerValeurCorrecte("ci_meta_mots_cles") ;}/*** Met à jour le commenentaire et la date* @param commentaires le nouveau commentaire* @param date la nouvelle date*/public void miseAJourInfoGenerales(String commentaires, String date, String note){put("ci_meta_comment",commentaires) ;put("ci_note_image",note) ;put("ci_meta_date",date) ;}/*** Met à jour les mots clés* @param motsClesEnCours la liste de mots clés séparés par des ','*/public void mettreAjourMotsCles(String motsClesEnCours) {put("ci_meta_mots_cles",motsClesEnCours) ;}}