Subversion Repositories eFlore/Archives.cel-v2

Compare Revisions

Ignore whitespace Rev 29 → Rev 30

/trunk/src/org/tela_botanica/client/image/ImageModele.java
11,6 → 11,8
import org.tela_botanica.client.modeles.ListeImageAsynchroneDAO;
import org.tela_botanica.client.modeles.MotsClesAsynchroneDAO;
 
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.gwtext.client.data.ArrayReader;
import com.gwtext.client.data.FieldDef;
import com.gwtext.client.data.IntegerFieldDef;
41,10 → 43,8
private Store st = null ;
private com.gwtext.client.data.Tree arbreMotsCles = null ;
private com.gwtext.client.data.Tree arbreMotsCles = new Tree() ;
private String arbreAplati = "" ;
static ImageModele Instance(ImageMediateur im)
{
if(!estInstancie)
67,6 → 67,10
return iMediateur ;
}
/**
* Appelle le DAO asynchrone pour obtenir la liste des images
* @param r le rafraichissable auxquel on enverra les données
*/
public void obtenirPhotoGalerie(Rafraichissable r)
{
ListeImageAsynchroneDAO liaDAO = new ListeImageAsynchroneDAO();
73,6 → 77,10
liaDAO.ObtenirListeImages(this);
}
/**
* Appelle le DAO d'upload qui va choisir la methode d'upload adaptée
* et lancer l'interface appropriée
*/
public void uploaderImages()
{
ImageUploaderAsynchroneDAO IuADaO = new ImageUploaderAsynchroneDAO() ;
80,37 → 88,60
IuADaO.choisirMethodeUpload() ;
}
/**
* Met à jour la liste des images à partir d'un objet
* @param o la nouvelle liste d'image
*/
public void rafraichirListeImage(Object o)
{
cacheImage = (ListeImageCarnet)o ;
}
/**
* Met à jour l'arbre des mots clés à partir d'un objet
* @param o le nouvel arbre de mots clés
*/
public void rafraichirArbreMotsCles(Object o)
{
arbreMotsCles = (com.gwtext.client.data.Tree)o ;
}
/**
* Met à jour la table de correspondance mots clés / ids
* à partir d'un objet
* @param o la nouvelle table des mots clés
*/
public void rafraichirMotsCles(Object o)
{
motsCles = (HashMap)o ;
}
/**
* Va chercher les métadonnées associées à une image dans la liste
* des images chargée dans le modèle
* @param r le rafraichissable auquel on enverra les informations
* @param id l'identifiant de l'image
*/
public void obtenirMetadonnees(Rafraichissable r, String id)
{
{
ImageCarnet im = (ImageCarnet)cacheImage.get(id) ;
Object meta[] = new Object[3] ;
meta[0] = im.getMetadonnesExif() ;
meta[1] = im.getMetadonnesIptc() ;
meta[2] = im.getInfoGenerales() ;
r.rafraichir(meta,false) ;
Object meta[] = new Object[3] ;
meta[0] = im.getMetadonnesExif() ;
meta[1] = im.getMetadonnesIptc() ;
meta[2] = im.getInfoGenerales() ;
r.rafraichir(meta,false) ;
}
/**
* Va chercher les mots clés associés à une image dans la liste
* des images chargée dans le modèle
* @param r le rafraichissable auquel on enverra les informations
* @param id l'identifiant de l'image
*/
public void obtenirMotsClesId(Rafraichissable r, String id)
{
{
ImageCarnet im = (ImageCarnet)cacheImage.get(id) ;
String motsClesId = im.getMotsCles() ;
String[] motsClesIdTab = motsClesId.split(",") ;
118,6 → 149,13
r.rafraichir(motsClesIdTab, false) ;
}
/**
* Met à jour la liste des images en local et appelle le DAO de mise
* à jour pour les commentaires et la date des images selectionnées
* @param commentaires le commentaire à appliquer
* @param date la date à appliquer
* @param ids les identifiants des images selectionnées
*/
public void mettreAJourCacheImage(String commentaires, String date, String ids[])
{
for (int i = 0; i < ids.length; i++)
129,16 → 167,20
}
}
/**
* Ajoute un nouveau mot clés à la liste des mots clés locale
* @param text le mot clé
* @param id l'identifiant du mot clé
*/
public void mettreAjourMotsClesId(String text, String id)
{
motsCles.put(id, text) ;
}
public void mettreAjourBaseDeDonneesMotsClesId()
{
}
/**
* Appelle le DAO chargé de mettre à jour la base de données avec
* les toutes les informations des images modifiées par l'utilisateur
*/
public void mettreAJourBaseDeDonneesListeImageCarnet()
{
ListeImageAsynchroneDAO liDaO = new ListeImageAsynchroneDAO();
147,6 → 189,11
liDaO.SynchroniserBaseDeDonnees(cacheImage);
}
/**
* Appelle le DAO chargé de mettre à jour la base de données avec
* les toutes les informations d'une image donnée
* @param ic l'image à synchroniser avec la base
*/
public void mettreAjourBaseDeDonneesImageCarnet(ImageCarnet ic)
{
ImageAsynchroneDAO iaDaO = new ImageAsynchroneDAO();
154,15 → 201,19
iaDaO.SynchroniserBaseDeDonnees(ic) ;
}
 
public void supprimerImages(String[] ids) {
/**
* Supprime les images données du cache local et appelle le DAO
* qui les supprime de la base de données
* @param ids les identifiants des images selectionnées
*/
public void supprimerImages(String[] ids)
{
String rids[] = new String[ids.length] ;
ListeImageAsynchroneDAO liDao = new ListeImageAsynchroneDAO() ;
liDao.setIMediateur(iMediateur);
for (int i = 0; i < ids.length; i++) {
for (int i = 0; i < ids.length; i++)
{
String key = ids[i] ;
ImageCarnet ic = (ImageCarnet)cacheImage.get(key) ;
rids[i] = ic.getId() ;
171,58 → 222,120
if(rids.length != 0)
{
liDao.supprimerBaseDeDonnees(rids);
}
}
}
 
public void rafraichir(Object nouvelleDonnees,
boolean repandreRafraichissement) {
/**
* Met à jour les données locales suivant le type des nouvelles données
* et appelle le médiateur pour le notifier de la mise à jour
*/
public void rafraichir(Object nouvelleDonnees, boolean repandreRafraichissement)
{
if(nouvelleDonnees instanceof ListeImageCarnet)
{
ListeImageCarnet data = (ListeImageCarnet) nouvelleDonnees ;
Object[][] photoData = new Object[data.size()][7];
int i = 0 ;
for (Iterator it = data.keySet().iterator(); it.hasNext();)
{
ImageCarnet im = (ImageCarnet) data.get(it.next());
photoData[i][0] = im.getOrdre() ;
photoData[i][1] = im.getDate() ;
photoData[i][2] = im.getIptcCity() ;
photoData[i][3] = im.getMake()+" "+im.getModel() ;
photoData[i][4] = im.getSUrl() ;
photoData[i][5] = im.getMUrl() ;
photoData[i][6] = im.getUrl() ;
i++ ;
}
ListeImageCarnet data = (ListeImageCarnet) nouvelleDonnees ;
Object[][] photoData = new Object[data.size()][7];
int i = 0 ;
for (Iterator it = data.keySet().iterator(); it.hasNext();)
{
ImageCarnet im = (ImageCarnet) data.get(it.next());
photoData[i][0] = im.getOrdre() ;
photoData[i][1] = im.getDate() ;
photoData[i][2] = im.getIptcCity() ;
photoData[i][3] = im.getMake()+" "+im.getModel() ;
photoData[i][4] = im.getSUrl() ;
photoData[i][5] = im.getMUrl() ;
photoData[i][6] = im.getUrl() ;
// creation du store
FieldDef defNumImage = new IntegerFieldDef("num_image");
FieldDef defDatImage = new StringFieldDef("dat_image");
FieldDef defLieImage = new StringFieldDef("lie_image");
FieldDef defAppImage = new StringFieldDef("app_image");
FieldDef defUrlImageS = new StringFieldDef("url_image_S");
FieldDef defUrlImageM = new StringFieldDef("url_image_M");
FieldDef defUrlImage = new StringFieldDef("url_image");
FieldDef[] defTab = {defNumImage,defDatImage,defLieImage,defAppImage,defUrlImageS,defUrlImageM,defUrlImage};
RecordDef rd = new RecordDef(defTab) ;
i++ ;
}
// creation du store
FieldDef defNumImage = new IntegerFieldDef("num_image");
FieldDef defDatImage = new StringFieldDef("dat_image");
FieldDef defLieImage = new StringFieldDef("lie_image");
FieldDef defAppImage = new StringFieldDef("app_image");
FieldDef defUrlImageS = new StringFieldDef("url_image_S");
FieldDef defUrlImageM = new StringFieldDef("url_image_M");
FieldDef defUrlImage = new StringFieldDef("url_image");
FieldDef[] defTab = {defNumImage,defDatImage,defLieImage,defAppImage,defUrlImageS,defUrlImageM,defUrlImage};
RecordDef rd = new RecordDef(defTab) ;
final MemoryProxy dataProxy = new MemoryProxy(photoData);
final ArrayReader reader = new ArrayReader(rd);
final Store photoStore = new Store(dataProxy, reader);
rafraichirListeImage(nouvelleDonnees);
st = photoStore ;
final MemoryProxy dataProxy = new MemoryProxy(photoData);
final ArrayReader reader = new ArrayReader(rd);
final Store photoStore = new Store(dataProxy, reader);
if(repandreRafraichissement)
{
getIMediateur().synchroniserDonneesZoomListeGalerie(st, this) ;
}
}
if(nouvelleDonnees instanceof JSONArray)
{
JSONArray reponse = (JSONArray)nouvelleDonnees ;
rafraichirListeImage(nouvelleDonnees);
final int taillemax = reponse.size();
st = photoStore ;
if(repandreRafraichissement)
if(taillemax == 0)
{
getIMediateur().synchroniserDonneesZoomListeGalerie(st, this) ;
TreeNode root = new TreeNode() ;
root.setId("racine") ;
root.setText("Tags") ;
root.setIcon("tela.png") ;
String[] usObj = {"Tags","racine"} ;
root.setUserObject(usObj) ;
arbreMotsCles.setRootNode(root) ;
}
for (int j = 0; j < taillemax ; j++)
{
if(reponse.get(j).isObject() != null)
{
JSONObject noeud = (JSONObject)reponse.get(j) ;
String id_noeud = noeud.get("cmc_id_mot_cle_utilisateur").isString().stringValue() ;
String mot_cle = noeud.get("cmc_mot_cle").isString().stringValue() ;
String parent = noeud.get("cmc_id_parent").isString().stringValue() ;
String[] usObj = {mot_cle, id_noeud} ;
if(id_noeud.equals("racine"))
{
TreeNode root = new TreeNode() ;
root.setId(id_noeud) ;
root.setText(mot_cle) ;
root.setIcon("tela.png") ;
root.setUserObject(usObj) ;
arbreMotsCles.setRootNode(root) ;
}
else
{
TreeNode node = new TreeNode() ;
node.setId(id_noeud) ;
node.setText(mot_cle) ;
node.setChecked(false) ;
Node parentNode = arbreMotsCles.getNodeById(parent) ;
node.setIcon("tela.png") ;
node.setUserObject(usObj) ;
parentNode.appendChild(node) ;
}
}
}
rafraichirArbreMotsCles(arbreMotsCles) ;
getIMediateur().getMetadonneesIptcExif().getPanneauMotsCles().rafraichir(arbreMotsCles, true) ;
}
}
/**
* Affiche les paires / valeur de tous les mots clés stockés
*/
public void afficherMotsCles()
{
for(Iterator it = motsCles.keySet().iterator() ; it.hasNext() ;)
233,14 → 346,24
}
}
 
public void mettreAjourMotsCles(String[] ids, String motsClesEnCours, com.gwtext.client.data.Tree arbreMC) {
for (int i = 0; i < ids.length; i++) {
/**
* Met à jour les mots clés associés à une image et appelle le DAO pour synchroniser la base de données
* @param ids les identifiants des images selectionnées
* @param motsClesEnCours les mots clés à appliquer aux images
* @param arbreMC l'arbre de mots clés en cours
*/
public void mettreAjourMotsCles(String[] ids, String motsClesEnCours, com.gwtext.client.data.Tree arbreMC)
{
for (int i = 0; i < ids.length; i++)
{
if(cacheImage.containsKey(ids[i]))
{
ImageCarnet ic = (ImageCarnet)cacheImage.get(ids[i]) ;
ic.mettreAjourMotsCles(motsClesEnCours) ;
ImageAsynchroneDAO imgDao = new ImageAsynchroneDAO() ;
imgDao.setIMediateur(getIMediateur()) ;
imgDao.SynchroniserMotsClesImageBaseDeDonnees(ic) ;
}
}
247,9 → 370,35
rafraichirArbreMotsCles(arbreMC) ;
}
/**
* Appelle le DAO des mots clés pour obtenir l'arbre complet stocké dans la base de données
*/
public void initialiserArbreMotsCles()
{
MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
MCDao.setIMediateur(getIMediateur()) ;
MCDao.obtenirListeMotsCles(this) ;
}
/**
* Envoie l'arbre des mots clés stocké localement à l'élément rafrachissable donné, qui le demande
* @param r le rafraichissable demandeur de l'arbre
*/
public void obtenirArbreMotCle(Rafraichissable r)
{
r.rafraichir(arbreMotsCles, false) ;
}
 
public void ajouterMotCleDansArbre(TreeNode n, com.gwtext.client.data.Tree arbreMC) {
/**
* Ajoute un mot clé à l'arbre des mots clés local et appelle le DAO qui fait la mise
* à jour de l'arbre des mots clés dans la base
* @param n le nouveau noeud contenant le mot clé
* @param arbreMC l'arbre des mots cles en cours
*/
public void ajouterMotCleDansArbre(TreeNode n, com.gwtext.client.data.Tree arbreMC)
{
MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
MCDao.setIMediateur(getIMediateur()) ;
256,8 → 405,8
String[] usObj = (String[])n.getUserObject() ;
String motCle = usObj[0] ;
String id = usObj[1] ;
String parentId = ""
;
String parentId = "" ;
if(!id.equals("racine"))
{
String[] parentUsObj = (String[])n.getParentNode().getUserObject() ;
271,11 → 420,17
rafraichirArbreMotsCles(arbreMC) ;
String nouveauMotCle = "&motcle="+motCle+"&id="+id+"&parent="+parentId ;
MCDao.ajouterBaseDeDonnees(nouveauMotCle) ;
MCDao.ajouterBaseDeDonnees(nouveauMotCle) ;
}
 
public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
/**
* Supprime un noeud de l'arbre des mots clés et appelle le DAO qui va supprimer
* les mots clés associés dans la base
* @param n le noeud à supprimer
* @param arbreMC l'arbre des mots clés en cours
*/
public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC)
{
MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
MCDao.setIMediateur(getIMediateur()) ;
290,7 → 445,14
}
 
public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) {
/**
* Modifie le noeud donné dans l'arbre des mots clés en cours et appelle le DAO
* qui synchronise la modification dans la base de données
* @param n le noeud modifié
* @param arbreMC l'arbre des mots clés en cours
*/
public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC)
{
MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
MCDao.setIMediateur(getIMediateur()) ;
298,8 → 460,8
String[] usObj = (String[])n.getUserObject() ;
String motCle = usObj[0] ;
String id = usObj[1] ;
String parentId = ""
;
String parentId = "" ;
if(!id.equals("racine"))
{
String[] parentUsObj = (String[])n.getParentNode().getUserObject() ;
312,12 → 474,17
rafraichirArbreMotsCles(arbreMC) ;
String motCleModifie = "&motcle="+motCle+"&id="+id+"&parent="+parentId ;
String motCleModifie = "&motcle="+motCle+"&id="+id+"&parent="+parentId ;
MCDao.modifierBaseDeDonnees(motCleModifie) ;
}
/**
* Deplace un noeud dans l'arbre des mots cles et appelle le DAO qui reorganise l'arbre
* dans la base de donnees suivant le changement
* @param n le noeud deplace (et son sous arbre associe)
* @param arbreMC l'arbre des mots cles en cours
*/
public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC)
{
MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
326,8 → 493,7
String[] usObj = (String[])n.getUserObject() ;
String motCle = usObj[0] ;
String id = usObj[1] ;
String parentId = ""
;
String parentId = "" ;
if(!id.equals("racine"))
{
String[] parentUsObj = (String[])n.getParentNode().getUserObject() ;
340,8 → 506,7
rafraichirArbreMotsCles(arbreMC) ;
String motCleModifie = "&motcle="+motCle+"&id="+id+"&parent="+parentId ;
String motCleModifie = "&motcle="+motCle+"&id="+id+"&parent="+parentId ;
MCDao.deplacerBaseDeDonnees(motCleModifie) ;
}