Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 28 | Rev 31 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 28 Rev 30
1
package org.tela_botanica.client.image;
1
package org.tela_botanica.client.image;
2
 
2
 
3
import java.util.HashMap;
3
import java.util.HashMap;
4
import java.util.Iterator;
4
import java.util.Iterator;
5
 
5
 
6
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.interfaces.Rafraichissable;
7
import org.tela_botanica.client.modeles.ImageAsynchroneDAO;
7
import org.tela_botanica.client.modeles.ImageAsynchroneDAO;
8
import org.tela_botanica.client.modeles.ImageCarnet;
8
import org.tela_botanica.client.modeles.ImageCarnet;
9
import org.tela_botanica.client.modeles.ImageUploaderAsynchroneDAO;
9
import org.tela_botanica.client.modeles.ImageUploaderAsynchroneDAO;
10
import org.tela_botanica.client.modeles.ListeImageCarnet;
10
import org.tela_botanica.client.modeles.ListeImageCarnet;
11
import org.tela_botanica.client.modeles.ListeImageAsynchroneDAO;
11
import org.tela_botanica.client.modeles.ListeImageAsynchroneDAO;
12
import org.tela_botanica.client.modeles.MotsClesAsynchroneDAO;
12
import org.tela_botanica.client.modeles.MotsClesAsynchroneDAO;
-
 
13
 
-
 
14
import com.google.gwt.json.client.JSONArray;
13
 
15
import com.google.gwt.json.client.JSONObject;
14
import com.gwtext.client.data.ArrayReader;
16
import com.gwtext.client.data.ArrayReader;
15
import com.gwtext.client.data.FieldDef;
17
import com.gwtext.client.data.FieldDef;
16
import com.gwtext.client.data.IntegerFieldDef;
18
import com.gwtext.client.data.IntegerFieldDef;
17
import com.gwtext.client.data.MemoryProxy;
19
import com.gwtext.client.data.MemoryProxy;
18
import com.gwtext.client.data.Node;
20
import com.gwtext.client.data.Node;
19
import com.gwtext.client.data.NodeTraversalCallback;
21
import com.gwtext.client.data.NodeTraversalCallback;
20
import com.gwtext.client.data.RecordDef;
22
import com.gwtext.client.data.RecordDef;
21
import com.gwtext.client.data.Store;
23
import com.gwtext.client.data.Store;
22
import com.gwtext.client.data.StringFieldDef;
24
import com.gwtext.client.data.StringFieldDef;
23
import com.gwtext.client.data.Tree;
25
import com.gwtext.client.data.Tree;
24
import com.gwtext.client.widgets.tree.TreeNode;
26
import com.gwtext.client.widgets.tree.TreeNode;
25
 
27
 
26
/**
28
/**
27
 * Modèle d'accès aux données pour les images.
29
 * Modèle d'accès aux données pour les images.
28
 * C'est un singleton
30
 * C'est un singleton
29
 * @author aurelien
31
 * @author aurelien
30
 *
32
 *
31
 */
33
 */
32
public class ImageModele implements Rafraichissable {
34
public class ImageModele implements Rafraichissable {
33
	
35
	
34
	private static boolean estInstancie = false ;
36
	private static boolean estInstancie = false ;
35
	
37
	
36
	private ImageMediateur iMediateur = null ;
38
	private ImageMediateur iMediateur = null ;
37
	
39
	
38
	private ListeImageCarnet cacheImage = new ListeImageCarnet(0) ;
40
	private ListeImageCarnet cacheImage = new ListeImageCarnet(0) ;
39
	
41
	
40
	private HashMap motsCles = new HashMap(0) ;
42
	private HashMap motsCles = new HashMap(0) ;
41
	
43
	
42
	private Store st = null ;
44
	private Store st = null ;
43
	
45
	
44
	private com.gwtext.client.data.Tree arbreMotsCles = null ;
-
 
45
	
-
 
46
	private String arbreAplati = "" ;
46
	private com.gwtext.client.data.Tree arbreMotsCles =  new Tree() ;
47
	
47
	
48
	static ImageModele Instance(ImageMediateur im)
48
	static ImageModele Instance(ImageMediateur im)
49
	{
49
	{
50
		if(!estInstancie)
50
		if(!estInstancie)
51
		{
51
		{
52
			return new ImageModele(im);
52
			return new ImageModele(im);
53
		}
53
		}
54
		else
54
		else
55
		{
55
		{
56
			return null ;
56
			return null ;
57
		}
57
		}
58
	}
58
	}
59
	
59
	
60
	private ImageModele(ImageMediateur im) {
60
	private ImageModele(ImageMediateur im) {
61
		
61
		
62
		iMediateur = im ;
62
		iMediateur = im ;
63
	}
63
	}
64
	
64
	
65
	public ImageMediateur getIMediateur()
65
	public ImageMediateur getIMediateur()
66
	{
66
	{
67
		return iMediateur ;
67
		return iMediateur ;
68
	}
68
	}
-
 
69
	
-
 
70
	/**
-
 
71
	 * Appelle le DAO asynchrone pour obtenir la liste des images
-
 
72
	 * @param r le rafraichissable auxquel on enverra les données
69
	
73
	 */
70
	public void obtenirPhotoGalerie(Rafraichissable r)
74
	public void obtenirPhotoGalerie(Rafraichissable r)
71
	{
75
	{
72
		ListeImageAsynchroneDAO liaDAO = new ListeImageAsynchroneDAO();
76
		ListeImageAsynchroneDAO liaDAO = new ListeImageAsynchroneDAO();
73
		liaDAO.ObtenirListeImages(this);		
77
		liaDAO.ObtenirListeImages(this);		
74
	}
78
	}
-
 
79
	
-
 
80
	/**
-
 
81
	 * Appelle le DAO d'upload qui va choisir la methode d'upload adaptée
-
 
82
	 * et lancer l'interface appropriée
75
	
83
	 */
76
	public void uploaderImages()
84
	public void uploaderImages()
77
	{
85
	{
78
		ImageUploaderAsynchroneDAO IuADaO = new ImageUploaderAsynchroneDAO() ;
86
		ImageUploaderAsynchroneDAO IuADaO = new ImageUploaderAsynchroneDAO() ;
79
		IuADaO.setIMediateur(getIMediateur());
87
		IuADaO.setIMediateur(getIMediateur());
80
		IuADaO.choisirMethodeUpload() ;
88
		IuADaO.choisirMethodeUpload() ;
81
	}
89
	}
-
 
90
	
-
 
91
	/**
-
 
92
	 * Met à jour la liste des images à partir d'un objet
-
 
93
	 * @param o la nouvelle liste d'image 
82
	
94
	 */
83
	public void rafraichirListeImage(Object o)
95
	public void rafraichirListeImage(Object o)
84
	{
96
	{
85
		cacheImage = (ListeImageCarnet)o ;
97
		cacheImage = (ListeImageCarnet)o ;
86
	}
98
	}
-
 
99
	
-
 
100
	/**
-
 
101
	 * Met à jour l'arbre des mots clés à partir d'un objet
-
 
102
	 * @param o le nouvel arbre de mots clés
87
	
103
	 */
88
	public void rafraichirArbreMotsCles(Object o)
104
	public void rafraichirArbreMotsCles(Object o)
89
	{
105
	{
90
		arbreMotsCles = (com.gwtext.client.data.Tree)o ;
106
		arbreMotsCles = (com.gwtext.client.data.Tree)o ;
91
	}
107
	}
-
 
108
	
-
 
109
	/**
-
 
110
	 * Met à jour la table de correspondance mots clés / ids
-
 
111
	 * à partir d'un objet
-
 
112
	 * @param o la nouvelle table des mots clés
92
	
113
	 */
93
	public void rafraichirMotsCles(Object o)
114
	public void rafraichirMotsCles(Object o)
94
	{
115
	{
95
		motsCles = (HashMap)o ;
116
		motsCles = (HashMap)o ;
96
	}
117
	}
-
 
118
	
-
 
119
	/**
-
 
120
	 * Va chercher les métadonnées associées à une image dans la liste 
-
 
121
	 * des images chargée dans le modèle
-
 
122
	 * @param r le rafraichissable auquel on enverra les informations
-
 
123
	 * @param id l'identifiant de l'image
97
	
124
	 */
98
	public void obtenirMetadonnees(Rafraichissable r, String id)
125
	public void obtenirMetadonnees(Rafraichissable r, String id)
99
	{
-
 
100
			
126
	{			
101
		ImageCarnet im = (ImageCarnet)cacheImage.get(id) ;
127
		ImageCarnet im = (ImageCarnet)cacheImage.get(id) ;
102
				
128
				
103
				Object meta[] = new Object[3] ;
129
		Object meta[] = new Object[3] ;
104
				meta[0] = im.getMetadonnesExif() ;
130
		meta[0] = im.getMetadonnesExif() ;
105
				meta[1] = im.getMetadonnesIptc() ;
131
		meta[1] = im.getMetadonnesIptc() ;
106
				meta[2] = im.getInfoGenerales() ;
132
		meta[2] = im.getInfoGenerales() ;
107
				
-
 
108
				r.rafraichir(meta,false) ;
133
		
-
 
134
		r.rafraichir(meta,false) ;	
-
 
135
	}
-
 
136
	
-
 
137
	/**
-
 
138
	 * Va chercher les mots clés associés à une image dans la liste 
-
 
139
	 * des images chargée dans le modèle
109
	
140
	 * @param r le rafraichissable auquel on enverra les informations
110
	}
141
	 * @param id l'identifiant de l'image
111
	
142
	 */
112
	public void obtenirMotsClesId(Rafraichissable r, String id)
143
	public void obtenirMotsClesId(Rafraichissable r, String id)
113
	{
144
	{	
114
		ImageCarnet im = (ImageCarnet)cacheImage.get(id) ;
145
		ImageCarnet im = (ImageCarnet)cacheImage.get(id) ;
115
		String motsClesId = im.getMotsCles() ;
146
		String motsClesId = im.getMotsCles() ;
116
		String[] motsClesIdTab = motsClesId.split(",") ;
147
		String[] motsClesIdTab = motsClesId.split(",") ;
117
		
148
		
118
		r.rafraichir(motsClesIdTab, false) ;
149
		r.rafraichir(motsClesIdTab, false) ;
119
	}
150
	}
-
 
151
	
-
 
152
	/**
-
 
153
	 * Met à jour la liste des images en local et appelle le DAO de mise
-
 
154
	 * à jour pour les commentaires et la date des images selectionnées
-
 
155
	 * @param commentaires le commentaire à appliquer
-
 
156
	 * @param date la date à appliquer
-
 
157
	 * @param ids les identifiants des images selectionnées
120
	
158
	 */
121
	public void mettreAJourCacheImage(String commentaires, String date, String ids[])
159
	public void mettreAJourCacheImage(String commentaires, String date, String ids[])
122
	{
160
	{
123
			for (int i = 0; i < ids.length; i++) 
161
			for (int i = 0; i < ids.length; i++) 
124
			{	
162
			{	
125
				String key = ids[i] ;
163
				String key = ids[i] ;
126
				ImageCarnet ic = (ImageCarnet)cacheImage.get(key) ;
164
				ImageCarnet ic = (ImageCarnet)cacheImage.get(key) ;
127
				ic.miseAJourInfoGenerales(commentaires, date) ;
165
				ic.miseAJourInfoGenerales(commentaires, date) ;
128
				mettreAjourBaseDeDonneesImageCarnet(ic) ;	
166
				mettreAjourBaseDeDonneesImageCarnet(ic) ;	
129
			}
167
			}
130
	}
168
	}
-
 
169
	
-
 
170
	/**
-
 
171
	 * Ajoute un nouveau mot clés à la liste des mots clés locale
-
 
172
	 * @param text le mot clé
-
 
173
	 * @param id l'identifiant du mot clé
131
	
174
	 */
132
	public void mettreAjourMotsClesId(String text, String id)
175
	public void mettreAjourMotsClesId(String text, String id)
133
	{
176
	{
134
				 motsCles.put(id, text) ;
177
				 motsCles.put(id, text) ;
135
	}
178
	}
136
	
-
 
137
	public void mettreAjourBaseDeDonneesMotsClesId()
179
	
138
	{
-
 
-
 
180
	/**
-
 
181
	 * Appelle le DAO chargé de mettre à jour la base de données avec
139
		
182
	 * les toutes les informations des images modifiées par l'utilisateur
140
	}
-
 
141
	
183
	 */
142
	public void mettreAJourBaseDeDonneesListeImageCarnet()
184
	public void mettreAJourBaseDeDonneesListeImageCarnet()
143
	{
185
	{
144
		ListeImageAsynchroneDAO liDaO = new ListeImageAsynchroneDAO();
186
		ListeImageAsynchroneDAO liDaO = new ListeImageAsynchroneDAO();
145
		liDaO.setIMediateur(iMediateur);
187
		liDaO.setIMediateur(iMediateur);
146
		
188
		
147
		liDaO.SynchroniserBaseDeDonnees(cacheImage);
189
		liDaO.SynchroniserBaseDeDonnees(cacheImage);
148
	}
190
	}
-
 
191
	
-
 
192
	/**
-
 
193
	 * Appelle le DAO chargé de mettre à jour la base de données avec
-
 
194
	 * les toutes les informations d'une image donnée
-
 
195
	 * @param ic l'image à synchroniser avec la base
149
	
196
	 */
150
	public void mettreAjourBaseDeDonneesImageCarnet(ImageCarnet ic)
197
	public void mettreAjourBaseDeDonneesImageCarnet(ImageCarnet ic)
151
	{
198
	{
152
		ImageAsynchroneDAO iaDaO = new ImageAsynchroneDAO();
199
		ImageAsynchroneDAO iaDaO = new ImageAsynchroneDAO();
153
		iaDaO.setIMediateur(iMediateur);
200
		iaDaO.setIMediateur(iMediateur);
154
		iaDaO.SynchroniserBaseDeDonnees(ic) ;
201
		iaDaO.SynchroniserBaseDeDonnees(ic) ;
155
	}
202
	}
-
 
203
 
-
 
204
	/**
-
 
205
	 * Supprime les images données du cache local et appelle le DAO
-
 
206
	 * qui les supprime de la base de données
-
 
207
	 * @param ids les identifiants des images selectionnées
156
 
208
	 */
157
	public void supprimerImages(String[] ids) {
209
	public void supprimerImages(String[] ids) 
158
		
210
	{
159
		String rids[] = new String[ids.length] ;
211
		String rids[] = new String[ids.length] ;
160
		ListeImageAsynchroneDAO liDao = new ListeImageAsynchroneDAO() ;
212
		ListeImageAsynchroneDAO liDao = new ListeImageAsynchroneDAO() ;
161
		liDao.setIMediateur(iMediateur);
213
		liDao.setIMediateur(iMediateur);
162
		
214
		
163
		for (int i = 0; i < ids.length; i++) {
-
 
164
			
215
		for (int i = 0; i < ids.length; i++) 
165
			
216
		{				
166
			String key = ids[i] ;
217
			String key = ids[i] ;
167
			ImageCarnet ic = (ImageCarnet)cacheImage.get(key) ;
218
			ImageCarnet ic = (ImageCarnet)cacheImage.get(key) ;
168
			rids[i] = ic.getId() ;
219
			rids[i] = ic.getId() ;
169
		}
220
		}
170
		
221
		
171
		if(rids.length != 0)
222
		if(rids.length != 0)
172
		{
223
		{
173
			liDao.supprimerBaseDeDonnees(rids);
224
			liDao.supprimerBaseDeDonnees(rids);
174
		}
225
		}		
175
		
-
 
176
	}
226
	}
-
 
227
 
-
 
228
	/**
-
 
229
	 * Met à jour les données locales suivant le type des nouvelles données
-
 
230
	 * et appelle le médiateur pour le notifier de la mise à jour
177
 
231
	 */
-
 
232
	public void rafraichir(Object nouvelleDonnees, boolean repandreRafraichissement) 
-
 
233
	{
-
 
234
		if(nouvelleDonnees instanceof ListeImageCarnet)
-
 
235
		{
-
 
236
				ListeImageCarnet data = (ListeImageCarnet) nouvelleDonnees ;
-
 
237
				Object[][] photoData = new Object[data.size()][7];
-
 
238
				int i = 0 ;
-
 
239
				for (Iterator it = data.keySet().iterator(); it.hasNext();) 
-
 
240
				{
-
 
241
					ImageCarnet im = (ImageCarnet) data.get(it.next());
-
 
242
					photoData[i][0] = im.getOrdre() ;
-
 
243
					photoData[i][1] = im.getDate() ;
-
 
244
					photoData[i][2] = im.getIptcCity() ;
-
 
245
					photoData[i][3] = im.getMake()+" "+im.getModel() ;
-
 
246
					photoData[i][4] = im.getSUrl() ;
-
 
247
					photoData[i][5] = im.getMUrl() ;
-
 
248
					photoData[i][6] = im.getUrl() ;
-
 
249
					
-
 
250
					i++ ;
-
 
251
				}
-
 
252
		
-
 
253
				// creation du store
-
 
254
				FieldDef defNumImage = new IntegerFieldDef("num_image");
-
 
255
				FieldDef defDatImage = new StringFieldDef("dat_image");
-
 
256
				FieldDef defLieImage = new StringFieldDef("lie_image");
-
 
257
				FieldDef defAppImage = new StringFieldDef("app_image");
-
 
258
				FieldDef defUrlImageS = new StringFieldDef("url_image_S");
-
 
259
				FieldDef defUrlImageM = new StringFieldDef("url_image_M");
-
 
260
				FieldDef defUrlImage = new StringFieldDef("url_image");
178
	public void rafraichir(Object nouvelleDonnees,
261
				FieldDef[] defTab = {defNumImage,defDatImage,defLieImage,defAppImage,defUrlImageS,defUrlImageM,defUrlImage};
-
 
262
				RecordDef rd = new RecordDef(defTab) ;
-
 
263
				
-
 
264
				final MemoryProxy dataProxy = new MemoryProxy(photoData);
179
			boolean repandreRafraichissement) {
-
 
180
		
265
				final ArrayReader reader = new ArrayReader(rd);
181
			ListeImageCarnet data = (ListeImageCarnet) nouvelleDonnees ;
-
 
182
			Object[][] photoData = new Object[data.size()][7];
-
 
183
			int i = 0 ;
-
 
184
			for (Iterator it = data.keySet().iterator(); it.hasNext();) 
-
 
185
			{
-
 
186
				ImageCarnet im = (ImageCarnet) data.get(it.next());
-
 
187
				photoData[i][0] = im.getOrdre() ;
-
 
188
				photoData[i][1] = im.getDate() ;
-
 
189
				photoData[i][2] = im.getIptcCity() ;
-
 
190
				photoData[i][3] = im.getMake()+" "+im.getModel() ;
-
 
191
				photoData[i][4] = im.getSUrl() ;
-
 
192
				photoData[i][5] = im.getMUrl() ;
266
		
193
				photoData[i][6] = im.getUrl() ;
-
 
194
				
267
				final Store photoStore = new Store(dataProxy, reader);
195
				i++ ;
268
				
196
			}
-
 
197
	
-
 
198
			// creation du store
-
 
199
			FieldDef defNumImage = new IntegerFieldDef("num_image");
-
 
200
			FieldDef defDatImage = new StringFieldDef("dat_image");
-
 
201
			FieldDef defLieImage = new StringFieldDef("lie_image");
-
 
202
			FieldDef defAppImage = new StringFieldDef("app_image");
-
 
203
			FieldDef defUrlImageS = new StringFieldDef("url_image_S");
-
 
204
			FieldDef defUrlImageM = new StringFieldDef("url_image_M");
-
 
205
			FieldDef defUrlImage = new StringFieldDef("url_image");
269
				rafraichirListeImage(nouvelleDonnees);
-
 
270
				
206
			FieldDef[] defTab = {defNumImage,defDatImage,defLieImage,defAppImage,defUrlImageS,defUrlImageM,defUrlImage};
271
				st = photoStore ;
-
 
272
			
-
 
273
				if(repandreRafraichissement)
207
			RecordDef rd = new RecordDef(defTab) ;
274
				{
-
 
275
					getIMediateur().synchroniserDonneesZoomListeGalerie(st, this) ;
-
 
276
				}
208
			
277
		}
209
			final MemoryProxy dataProxy = new MemoryProxy(photoData);
278
		
210
			final ArrayReader reader = new ArrayReader(rd);
-
 
211
	
-
 
212
			final Store photoStore = new Store(dataProxy, reader);
279
		if(nouvelleDonnees instanceof JSONArray)
213
			
280
		{
-
 
281
			JSONArray reponse = (JSONArray)nouvelleDonnees ; 
-
 
282
			
-
 
283
			final int taillemax = reponse.size();
-
 
284
			
-
 
285
			if(taillemax == 0)
-
 
286
			{
214
			rafraichirListeImage(nouvelleDonnees);
287
				TreeNode root = new TreeNode() ;
215
			
288
				root.setId("racine") ;
216
			st = photoStore ;
289
				root.setText("Tags") ;
-
 
290
				root.setIcon("tela.png") ;
-
 
291
				String[] usObj = {"Tags","racine"} ;
-
 
292
				root.setUserObject(usObj) ;
-
 
293
				arbreMotsCles.setRootNode(root) ;				
-
 
294
			}
-
 
295
			
-
 
296
			for (int j = 0; j < taillemax ; j++) 
-
 
297
			{
-
 
298
				
-
 
299
				if(reponse.get(j).isObject() != null)
-
 
300
				{
-
 
301
					JSONObject noeud = (JSONObject)reponse.get(j) ;
217
		
302
					
-
 
303
					String id_noeud = noeud.get("cmc_id_mot_cle_utilisateur").isString().stringValue() ;
-
 
304
					String mot_cle = noeud.get("cmc_mot_cle").isString().stringValue() ;
-
 
305
					String parent = noeud.get("cmc_id_parent").isString().stringValue() ;
-
 
306
					
-
 
307
					String[] usObj = {mot_cle, id_noeud} ; 
-
 
308
					
-
 
309
					if(id_noeud.equals("racine"))
-
 
310
					{
-
 
311
						TreeNode root = new TreeNode() ;
-
 
312
						root.setId(id_noeud) ;
-
 
313
						root.setText(mot_cle) ;
-
 
314
						root.setIcon("tela.png") ;
-
 
315
						root.setUserObject(usObj) ;
-
 
316
						arbreMotsCles.setRootNode(root) ;
-
 
317
					}
-
 
318
					else
-
 
319
					{
-
 
320
						TreeNode node = new TreeNode() ;
-
 
321
						node.setId(id_noeud) ;
-
 
322
						node.setText(mot_cle) ;
-
 
323
						node.setChecked(false) ;
-
 
324
						Node parentNode = arbreMotsCles.getNodeById(parent) ;
-
 
325
						node.setIcon("tela.png") ;
-
 
326
						node.setUserObject(usObj) ;	
-
 
327
						parentNode.appendChild(node) ;
218
			if(repandreRafraichissement)
328
					}
219
			{
329
				}
-
 
330
			}			
-
 
331
				rafraichirArbreMotsCles(arbreMotsCles) ;
-
 
332
				getIMediateur().getMetadonneesIptcExif().getPanneauMotsCles().rafraichir(arbreMotsCles, true) ;				
220
				getIMediateur().synchroniserDonneesZoomListeGalerie(st, this) ;
333
		}		
221
			}
334
	}
222
		
335
	
223
		
336
	/**
224
	}
337
	 * Affiche les paires / valeur de tous les mots clés stockés
225
	
338
	 */
226
	public void afficherMotsCles()
339
	public void afficherMotsCles()
227
	{
340
	{
228
		for(Iterator it = motsCles.keySet().iterator() ; it.hasNext() ;)
341
		for(Iterator it = motsCles.keySet().iterator() ; it.hasNext() ;)
229
		{
342
		{
230
			String key = (String)it.next() ;
343
			String key = (String)it.next() ;
231
			String valeur = (String)motsCles.get(key) ; 
344
			String valeur = (String)motsCles.get(key) ; 
232
			System.out.println("clé : "+key+" valeur : "+valeur);
345
			System.out.println("clé : "+key+" valeur : "+valeur);
233
		}
346
		}
234
	}
347
	}
-
 
348
 
-
 
349
	/**
-
 
350
	 * Met à jour les mots clés associés à une image et appelle le DAO pour synchroniser la base de données
-
 
351
	 * @param ids les identifiants des images selectionnées
-
 
352
	 * @param motsClesEnCours les mots clés à appliquer aux images
-
 
353
	 * @param arbreMC l'arbre de mots clés en cours
235
 
354
	 */
236
	public void mettreAjourMotsCles(String[] ids, String motsClesEnCours, com.gwtext.client.data.Tree arbreMC) {
355
	public void mettreAjourMotsCles(String[] ids, String motsClesEnCours, com.gwtext.client.data.Tree arbreMC) 
237
		
356
	{		
238
		for (int i = 0; i < ids.length; i++) {
357
		for (int i = 0; i < ids.length; i++) 
239
			
358
		{	
240
			if(cacheImage.containsKey(ids[i]))
359
			if(cacheImage.containsKey(ids[i]))
241
			{
360
			{
242
				ImageCarnet ic = (ImageCarnet)cacheImage.get(ids[i]) ;
361
				ImageCarnet ic = (ImageCarnet)cacheImage.get(ids[i]) ;
243
				ic.mettreAjourMotsCles(motsClesEnCours) ;	
362
				ic.mettreAjourMotsCles(motsClesEnCours) ;	
-
 
363
				
-
 
364
				ImageAsynchroneDAO imgDao = new ImageAsynchroneDAO() ;
-
 
365
				imgDao.setIMediateur(getIMediateur()) ;
-
 
366
				imgDao.SynchroniserMotsClesImageBaseDeDonnees(ic) ;
244
			}
367
			}
245
		}
368
		}
246
		
369
		
247
		rafraichirArbreMotsCles(arbreMC) ;
370
		rafraichirArbreMotsCles(arbreMC) ;
248
	}
371
	}
249
	
372
	
-
 
373
	
250
 
374
	/**
-
 
375
	 * Appelle le DAO des mots clés pour obtenir l'arbre complet stocké dans la base de données
-
 
376
	 */
-
 
377
	public void initialiserArbreMotsCles()
-
 
378
	{
-
 
379
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
-
 
380
		MCDao.setIMediateur(getIMediateur()) ;
-
 
381
		
-
 
382
		MCDao.obtenirListeMotsCles(this) ;
-
 
383
	}
-
 
384
	
-
 
385
	/**
-
 
386
	 * Envoie l'arbre des mots clés stocké localement à l'élément rafrachissable donné, qui le demande
-
 
387
	 * @param r le rafraichissable demandeur de l'arbre
-
 
388
	 */
-
 
389
	public void obtenirArbreMotCle(Rafraichissable r)
-
 
390
	{
-
 
391
		r.rafraichir(arbreMotsCles, false) ;
-
 
392
	}
-
 
393
 
-
 
394
	/**
-
 
395
	 * Ajoute un mot clé à l'arbre des mots clés local et appelle le DAO qui fait la mise
-
 
396
	 * à jour de l'arbre des mots clés dans la base
-
 
397
	 * @param n le nouveau noeud contenant le mot clé
-
 
398
	 * @param arbreMC l'arbre des mots cles en cours
-
 
399
	 */
251
	public void ajouterMotCleDansArbre(TreeNode n, com.gwtext.client.data.Tree arbreMC) {
400
	public void ajouterMotCleDansArbre(TreeNode n, com.gwtext.client.data.Tree arbreMC) 
252
		
401
	{	
253
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
402
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
254
		MCDao.setIMediateur(getIMediateur()) ;
403
		MCDao.setIMediateur(getIMediateur()) ;
255
		
404
		
256
		String[] usObj = (String[])n.getUserObject() ;
405
		String[] usObj = (String[])n.getUserObject() ;
257
		String motCle = usObj[0] ;
406
		String motCle = usObj[0] ;
258
		String id = usObj[1] ;
407
		String id = usObj[1] ;
259
		String parentId = ""
408
		String parentId = "" ;
260
 ;		
409
		
261
		if(!id.equals("racine"))
410
		if(!id.equals("racine"))
262
		{
411
		{
263
			String[] parentUsObj = (String[])n.getParentNode().getUserObject() ;
412
			String[] parentUsObj = (String[])n.getParentNode().getUserObject() ;
264
			parentId = parentUsObj[1] ;
413
			parentId = parentUsObj[1] ;
265
		}
414
		}
266
		else
415
		else
267
		{
416
		{
268
			parentId = "racine" ;
417
			parentId = "racine" ;
269
		}
418
		}
270
		
419
		
271
		rafraichirArbreMotsCles(arbreMC) ;
420
		rafraichirArbreMotsCles(arbreMC) ;
272
		
421
		
273
		String nouveauMotCle = "&motcle="+motCle+"&id="+id+"&parent="+parentId ;
422
		String nouveauMotCle = "&motcle="+motCle+"&id="+id+"&parent="+parentId ;
274
		MCDao.ajouterBaseDeDonnees(nouveauMotCle) ;
423
		MCDao.ajouterBaseDeDonnees(nouveauMotCle) ;		
275
		
-
 
276
	}
424
	}
-
 
425
 
-
 
426
	/**
-
 
427
	 * Supprime un noeud de l'arbre des mots clés et appelle le DAO qui va supprimer
-
 
428
	 * les mots clés associés dans la base
-
 
429
	 * @param n le noeud à supprimer
-
 
430
	 * @param arbreMC l'arbre des mots clés en cours
277
 
431
	 */
-
 
432
	public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) 
278
	public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
433
	{
279
		
434
		
280
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
435
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
281
		MCDao.setIMediateur(getIMediateur()) ;
436
		MCDao.setIMediateur(getIMediateur()) ;
282
		
437
		
283
		String[] usObj = (String[])n.getUserObject() ;
438
		String[] usObj = (String[])n.getUserObject() ;
284
		String motCle = usObj[0] ;
439
		String motCle = usObj[0] ;
285
		String id = usObj[1] ;
440
		String id = usObj[1] ;
286
		
441
		
287
		String motCleASupprimer = id ;
442
		String motCleASupprimer = id ;
288
		
443
		
289
		MCDao.supprimerBaseDeDonnees(id) ;
444
		MCDao.supprimerBaseDeDonnees(id) ;
290
		
445
		
291
	}
446
	}
-
 
447
 
-
 
448
	/**
-
 
449
	 * Modifie le noeud donné dans l'arbre des mots clés en cours et appelle le DAO
-
 
450
	 * qui synchronise la modification dans la base de données
-
 
451
	 * @param n le noeud modifié
-
 
452
	 * @param arbreMC l'arbre des mots clés en cours
292
 
453
	 */
-
 
454
	public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) 
293
	public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) {
455
	{
294
		
456
		
295
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
457
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
296
		MCDao.setIMediateur(getIMediateur()) ;
458
		MCDao.setIMediateur(getIMediateur()) ;
297
		
459
		
298
		String[] usObj = (String[])n.getUserObject() ;
460
		String[] usObj = (String[])n.getUserObject() ;
299
		String motCle = usObj[0] ;
461
		String motCle = usObj[0] ;
300
		String id = usObj[1] ;
462
		String id = usObj[1] ;
301
		String parentId = ""
463
		String parentId = "" ;
302
 ;		
464
		
303
		if(!id.equals("racine"))
465
		if(!id.equals("racine"))
304
		{
466
		{
305
			String[] parentUsObj = (String[])n.getParentNode().getUserObject() ;
467
			String[] parentUsObj = (String[])n.getParentNode().getUserObject() ;
306
			parentId = parentUsObj[1] ;
468
			parentId = parentUsObj[1] ;
307
		}
469
		}
308
		else
470
		else
309
		{
471
		{
310
			parentId = "racine" ;
472
			parentId = "racine" ;
311
		}
473
		}
312
		
474
		
313
		rafraichirArbreMotsCles(arbreMC) ;
475
		rafraichirArbreMotsCles(arbreMC) ;
314
		
476
		
315
		String motCleModifie = "&motcle="+motCle+"&id="+id+"&parent="+parentId ;
-
 
316
		
477
		String motCleModifie = "&motcle="+motCle+"&id="+id+"&parent="+parentId ;	
317
		MCDao.modifierBaseDeDonnees(motCleModifie) ;
478
		MCDao.modifierBaseDeDonnees(motCleModifie) ;
318
		
479
		
319
	}
480
	}
-
 
481
	
-
 
482
	/**
-
 
483
	 * Deplace un noeud dans l'arbre des mots cles et appelle le DAO qui reorganise l'arbre
-
 
484
	 * dans la base de donnees suivant le changement
-
 
485
	 * @param n le noeud deplace (et son sous arbre associe)
-
 
486
	 * @param arbreMC l'arbre des mots cles en cours
320
	
487
	 */
321
	public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC)
488
	public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC)
322
	{
489
	{
323
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
490
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
324
		MCDao.setIMediateur(getIMediateur()) ;
491
		MCDao.setIMediateur(getIMediateur()) ;
325
		
492
		
326
		String[] usObj = (String[])n.getUserObject() ;
493
		String[] usObj = (String[])n.getUserObject() ;
327
		String motCle = usObj[0] ;
494
		String motCle = usObj[0] ;
328
		String id = usObj[1] ;
495
		String id = usObj[1] ;
329
		String parentId = ""
496
		String parentId = "" ;		
330
 ;		
-
 
331
		if(!id.equals("racine"))
497
		if(!id.equals("racine"))
332
		{
498
		{
333
			String[] parentUsObj = (String[])n.getParentNode().getUserObject() ;
499
			String[] parentUsObj = (String[])n.getParentNode().getUserObject() ;
334
			parentId = parentUsObj[1] ;
500
			parentId = parentUsObj[1] ;
335
		}
501
		}
336
		else
502
		else
337
		{
503
		{
338
			parentId = "racine" ;
504
			parentId = "racine" ;
339
		}
505
		}
340
		
506
		
341
		rafraichirArbreMotsCles(arbreMC) ;
507
		rafraichirArbreMotsCles(arbreMC) ;
342
		
508
		
343
		String motCleModifie = "&motcle="+motCle+"&id="+id+"&parent="+parentId ;
-
 
344
		
509
		String motCleModifie = "&motcle="+motCle+"&id="+id+"&parent="+parentId ;		
345
		MCDao.deplacerBaseDeDonnees(motCleModifie) ;
510
		MCDao.deplacerBaseDeDonnees(motCleModifie) ;
346
	}
511
	}
347
	
512
	
348
}
513
}