Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 25 | Rev 30 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
7 aperonnet 1
package org.tela_botanica.client.image;
2
 
25 aperonnet 3
import java.util.HashMap;
16 aperonnet 4
import java.util.Iterator;
5
 
7 aperonnet 6
import org.tela_botanica.client.interfaces.Rafraichissable;
19 aperonnet 7
import org.tela_botanica.client.modeles.ImageAsynchroneDAO;
16 aperonnet 8
import org.tela_botanica.client.modeles.ImageCarnet;
12 aperonnet 9
import org.tela_botanica.client.modeles.ImageUploaderAsynchroneDAO;
19 aperonnet 10
import org.tela_botanica.client.modeles.ListeImageCarnet;
7 aperonnet 11
import org.tela_botanica.client.modeles.ListeImageAsynchroneDAO;
28 aperonnet 12
import org.tela_botanica.client.modeles.MotsClesAsynchroneDAO;
7 aperonnet 13
 
20 aperonnet 14
import com.gwtext.client.data.ArrayReader;
15
import com.gwtext.client.data.FieldDef;
16
import com.gwtext.client.data.IntegerFieldDef;
17
import com.gwtext.client.data.MemoryProxy;
25 aperonnet 18
import com.gwtext.client.data.Node;
28 aperonnet 19
import com.gwtext.client.data.NodeTraversalCallback;
20 aperonnet 20
import com.gwtext.client.data.RecordDef;
21
import com.gwtext.client.data.Store;
22
import com.gwtext.client.data.StringFieldDef;
28 aperonnet 23
import com.gwtext.client.data.Tree;
25 aperonnet 24
import com.gwtext.client.widgets.tree.TreeNode;
20 aperonnet 25
 
12 aperonnet 26
/**
27
 * Modèle d'accès aux données pour les images.
28
 * C'est un singleton
29
 * @author aurelien
30
 *
31
 */
20 aperonnet 32
public class ImageModele implements Rafraichissable {
7 aperonnet 33
 
12 aperonnet 34
	private static boolean estInstancie = false ;
35
 
7 aperonnet 36
	private ImageMediateur iMediateur = null ;
37
 
19 aperonnet 38
	private ListeImageCarnet cacheImage = new ListeImageCarnet(0) ;
16 aperonnet 39
 
28 aperonnet 40
	private HashMap motsCles = new HashMap(0) ;
25 aperonnet 41
 
20 aperonnet 42
	private Store st = null ;
43
 
28 aperonnet 44
	private com.gwtext.client.data.Tree arbreMotsCles = null ;
25 aperonnet 45
 
28 aperonnet 46
	private String arbreAplati = "" ;
47
 
12 aperonnet 48
	static ImageModele Instance(ImageMediateur im)
49
	{
50
		if(!estInstancie)
51
		{
52
			return new ImageModele(im);
53
		}
54
		else
55
		{
56
			return null ;
57
		}
58
	}
59
 
60
	private ImageModele(ImageMediateur im) {
7 aperonnet 61
 
62
		iMediateur = im ;
63
	}
64
 
18 aperonnet 65
	public ImageMediateur getIMediateur()
66
	{
67
		return iMediateur ;
68
	}
69
 
7 aperonnet 70
	public void obtenirPhotoGalerie(Rafraichissable r)
71
	{
72
		ListeImageAsynchroneDAO liaDAO = new ListeImageAsynchroneDAO();
20 aperonnet 73
		liaDAO.ObtenirListeImages(this);
7 aperonnet 74
	}
12 aperonnet 75
 
76
	public void uploaderImages()
77
	{
18 aperonnet 78
		ImageUploaderAsynchroneDAO IuADaO = new ImageUploaderAsynchroneDAO() ;
79
		IuADaO.setIMediateur(getIMediateur());
80
		IuADaO.choisirMethodeUpload() ;
12 aperonnet 81
	}
16 aperonnet 82
 
83
	public void rafraichirListeImage(Object o)
84
	{
19 aperonnet 85
		cacheImage = (ListeImageCarnet)o ;
16 aperonnet 86
	}
87
 
25 aperonnet 88
	public void rafraichirArbreMotsCles(Object o)
89
	{
28 aperonnet 90
		arbreMotsCles = (com.gwtext.client.data.Tree)o ;
25 aperonnet 91
	}
92
 
93
	public void rafraichirMotsCles(Object o)
94
	{
28 aperonnet 95
		motsCles = (HashMap)o ;
25 aperonnet 96
	}
97
 
16 aperonnet 98
	public void obtenirMetadonnees(Rafraichissable r, String id)
99
	{
100
 
25 aperonnet 101
		ImageCarnet im = (ImageCarnet)cacheImage.get(id) ;
16 aperonnet 102
 
18 aperonnet 103
				Object meta[] = new Object[3] ;
16 aperonnet 104
				meta[0] = im.getMetadonnesExif() ;
105
				meta[1] = im.getMetadonnesIptc() ;
18 aperonnet 106
				meta[2] = im.getInfoGenerales() ;
16 aperonnet 107
 
108
				r.rafraichir(meta,false) ;
109
 
110
	}
18 aperonnet 111
 
25 aperonnet 112
	public void obtenirMotsClesId(Rafraichissable r, String id)
113
	{
114
		ImageCarnet im = (ImageCarnet)cacheImage.get(id) ;
115
		String motsClesId = im.getMotsCles() ;
116
		String[] motsClesIdTab = motsClesId.split(",") ;
117
 
118
		r.rafraichir(motsClesIdTab, false) ;
119
	}
120
 
18 aperonnet 121
	public void mettreAJourCacheImage(String commentaires, String date, String ids[])
122
	{
25 aperonnet 123
			for (int i = 0; i < ids.length; i++)
124
			{
18 aperonnet 125
				String key = ids[i] ;
126
				ImageCarnet ic = (ImageCarnet)cacheImage.get(key) ;
127
				ic.miseAJourInfoGenerales(commentaires, date) ;
28 aperonnet 128
				mettreAjourBaseDeDonneesImageCarnet(ic) ;
18 aperonnet 129
			}
130
	}
19 aperonnet 131
 
25 aperonnet 132
	public void mettreAjourMotsClesId(String text, String id)
133
	{
28 aperonnet 134
				 motsCles.put(id, text) ;
25 aperonnet 135
	}
136
 
28 aperonnet 137
	public void mettreAjourBaseDeDonneesMotsClesId()
19 aperonnet 138
	{
28 aperonnet 139
 
140
	}
141
 
142
	public void mettreAJourBaseDeDonneesListeImageCarnet()
143
	{
19 aperonnet 144
		ListeImageAsynchroneDAO liDaO = new ListeImageAsynchroneDAO();
145
		liDaO.setIMediateur(iMediateur);
146
 
147
		liDaO.SynchroniserBaseDeDonnees(cacheImage);
148
	}
149
 
28 aperonnet 150
	public void mettreAjourBaseDeDonneesImageCarnet(ImageCarnet ic)
19 aperonnet 151
	{
152
		ImageAsynchroneDAO iaDaO = new ImageAsynchroneDAO();
153
		iaDaO.setIMediateur(iMediateur);
154
		iaDaO.SynchroniserBaseDeDonnees(ic) ;
155
	}
7 aperonnet 156
 
20 aperonnet 157
	public void supprimerImages(String[] ids) {
158
 
159
		String rids[] = new String[ids.length] ;
160
		ListeImageAsynchroneDAO liDao = new ListeImageAsynchroneDAO() ;
161
		liDao.setIMediateur(iMediateur);
162
 
163
		for (int i = 0; i < ids.length; i++) {
164
 
165
 
166
			String key = ids[i] ;
167
			ImageCarnet ic = (ImageCarnet)cacheImage.get(key) ;
168
			rids[i] = ic.getId() ;
169
		}
170
 
171
		if(rids.length != 0)
172
		{
173
			liDao.supprimerBaseDeDonnees(rids);
174
		}
175
 
176
	}
177
 
178
	public void rafraichir(Object nouvelleDonnees,
179
			boolean repandreRafraichissement) {
180
 
25 aperonnet 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() ;
193
				photoData[i][6] = im.getUrl() ;
194
 
195
				i++ ;
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");
206
			FieldDef[] defTab = {defNumImage,defDatImage,defLieImage,defAppImage,defUrlImageS,defUrlImageM,defUrlImage};
207
			RecordDef rd = new RecordDef(defTab) ;
20 aperonnet 208
 
25 aperonnet 209
			final MemoryProxy dataProxy = new MemoryProxy(photoData);
210
			final ArrayReader reader = new ArrayReader(rd);
211
 
212
			final Store photoStore = new Store(dataProxy, reader);
213
 
214
			rafraichirListeImage(nouvelleDonnees);
215
 
216
			st = photoStore ;
20 aperonnet 217
 
25 aperonnet 218
			if(repandreRafraichissement)
219
			{
220
				getIMediateur().synchroniserDonneesZoomListeGalerie(st, this) ;
221
			}
20 aperonnet 222
 
223
 
25 aperonnet 224
	}
20 aperonnet 225
 
25 aperonnet 226
	public void afficherMotsCles()
227
	{
28 aperonnet 228
		for(Iterator it = motsCles.keySet().iterator() ; it.hasNext() ;)
20 aperonnet 229
		{
25 aperonnet 230
			String key = (String)it.next() ;
28 aperonnet 231
			String valeur = (String)motsCles.get(key) ;
25 aperonnet 232
			System.out.println("clé : "+key+" valeur : "+valeur);
20 aperonnet 233
		}
25 aperonnet 234
	}
235
 
28 aperonnet 236
	public void mettreAjourMotsCles(String[] ids, String motsClesEnCours, com.gwtext.client.data.Tree arbreMC) {
20 aperonnet 237
 
25 aperonnet 238
		for (int i = 0; i < ids.length; i++) {
239
 
240
			if(cacheImage.containsKey(ids[i]))
241
			{
242
				ImageCarnet ic = (ImageCarnet)cacheImage.get(ids[i]) ;
243
				ic.mettreAjourMotsCles(motsClesEnCours) ;
244
			}
245
		}
246
 
28 aperonnet 247
		rafraichirArbreMotsCles(arbreMC) ;
25 aperonnet 248
	}
28 aperonnet 249
 
250
 
251
	public void ajouterMotCleDansArbre(TreeNode n, com.gwtext.client.data.Tree arbreMC) {
252
 
253
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
254
		MCDao.setIMediateur(getIMediateur()) ;
255
 
256
		String[] usObj = (String[])n.getUserObject() ;
257
		String motCle = usObj[0] ;
258
		String id = usObj[1] ;
259
		String parentId = ""
260
 ;
261
		if(!id.equals("racine"))
262
		{
263
			String[] parentUsObj = (String[])n.getParentNode().getUserObject() ;
264
			parentId = parentUsObj[1] ;
265
		}
266
		else
267
		{
268
			parentId = "racine" ;
269
		}
270
 
271
		rafraichirArbreMotsCles(arbreMC) ;
272
 
273
		String nouveauMotCle = "&motcle="+motCle+"&id="+id+"&parent="+parentId ;
274
		MCDao.ajouterBaseDeDonnees(nouveauMotCle) ;
275
 
276
	}
277
 
278
	public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
279
 
280
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
281
		MCDao.setIMediateur(getIMediateur()) ;
282
 
283
		String[] usObj = (String[])n.getUserObject() ;
284
		String motCle = usObj[0] ;
285
		String id = usObj[1] ;
286
 
287
		String motCleASupprimer = id ;
288
 
289
		MCDao.supprimerBaseDeDonnees(id) ;
290
 
291
	}
292
 
293
	public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) {
294
 
295
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
296
		MCDao.setIMediateur(getIMediateur()) ;
297
 
298
		String[] usObj = (String[])n.getUserObject() ;
299
		String motCle = usObj[0] ;
300
		String id = usObj[1] ;
301
		String parentId = ""
302
 ;
303
		if(!id.equals("racine"))
304
		{
305
			String[] parentUsObj = (String[])n.getParentNode().getUserObject() ;
306
			parentId = parentUsObj[1] ;
307
		}
308
		else
309
		{
310
			parentId = "racine" ;
311
		}
312
 
313
		rafraichirArbreMotsCles(arbreMC) ;
314
 
315
		String motCleModifie = "&motcle="+motCle+"&id="+id+"&parent="+parentId ;
316
 
317
		MCDao.modifierBaseDeDonnees(motCleModifie) ;
318
 
319
	}
320
 
321
	public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC)
322
	{
323
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
324
		MCDao.setIMediateur(getIMediateur()) ;
325
 
326
		String[] usObj = (String[])n.getUserObject() ;
327
		String motCle = usObj[0] ;
328
		String id = usObj[1] ;
329
		String parentId = ""
330
 ;
331
		if(!id.equals("racine"))
332
		{
333
			String[] parentUsObj = (String[])n.getParentNode().getUserObject() ;
334
			parentId = parentUsObj[1] ;
335
		}
336
		else
337
		{
338
			parentId = "racine" ;
339
		}
340
 
341
		rafraichirArbreMotsCles(arbreMC) ;
342
 
343
		String motCleModifie = "&motcle="+motCle+"&id="+id+"&parent="+parentId ;
344
 
345
		MCDao.deplacerBaseDeDonnees(motCleModifie) ;
346
	}
347
 
7 aperonnet 348
}