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) ; |
} |
|