New file |
0,0 → 1,367 |
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 hachage |
Set<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'ajoute |
String 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 vide |
String 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 iptc |
if(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 iptc |
if(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) ; |
|
} |
|
} |