Subversion Repositories eFlore/Archives.cel-v2

Rev

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

Rev 25 Rev 28
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
 
-
 
13
import com.google.gwt.user.client.ui.Tree;
13
 
14
import com.gwtext.client.data.ArrayReader;
14
import com.gwtext.client.data.ArrayReader;
15
import com.gwtext.client.data.FieldDef;
15
import com.gwtext.client.data.FieldDef;
16
import com.gwtext.client.data.IntegerFieldDef;
16
import com.gwtext.client.data.IntegerFieldDef;
17
import com.gwtext.client.data.MemoryProxy;
17
import com.gwtext.client.data.MemoryProxy;
18
import com.gwtext.client.data.Node;
18
import com.gwtext.client.data.Node;
-
 
19
import com.gwtext.client.data.NodeTraversalCallback;
19
import com.gwtext.client.data.RecordDef;
20
import com.gwtext.client.data.RecordDef;
20
import com.gwtext.client.data.Store;
21
import com.gwtext.client.data.Store;
21
import com.gwtext.client.data.StringFieldDef;
22
import com.gwtext.client.data.StringFieldDef;
-
 
23
import com.gwtext.client.data.Tree;
22
import com.gwtext.client.widgets.tree.TreeNode;
24
import com.gwtext.client.widgets.tree.TreeNode;
23
 
25
 
24
/**
26
/**
25
 * Modèle d'accès aux données pour les images.
27
 * Modèle d'accès aux données pour les images.
26
 * C'est un singleton
28
 * C'est un singleton
27
 * @author aurelien
29
 * @author aurelien
28
 *
30
 *
29
 */
31
 */
30
public class ImageModele implements Rafraichissable {
32
public class ImageModele implements Rafraichissable {
31
	
33
	
32
	private static boolean estInstancie = false ;
34
	private static boolean estInstancie = false ;
33
	
35
	
34
	private ImageMediateur iMediateur = null ;
36
	private ImageMediateur iMediateur = null ;
35
	
37
	
36
	private ListeImageCarnet cacheImage = new ListeImageCarnet(0) ;
38
	private ListeImageCarnet cacheImage = new ListeImageCarnet(0) ;
37
	
39
	
38
	private HashMap motcles = new HashMap(0) ;
40
	private HashMap motsCles = new HashMap(0) ;
39
	
41
	
40
	private Store st = null ;
42
	private Store st = null ;
-
 
43
	
-
 
44
	private com.gwtext.client.data.Tree arbreMotsCles = null ;
41
	
45
	
42
	private Tree arbreMotsCles = null ;
46
	private String arbreAplati = "" ;
43
	
47
	
44
	static ImageModele Instance(ImageMediateur im)
48
	static ImageModele Instance(ImageMediateur im)
45
	{
49
	{
46
		if(!estInstancie)
50
		if(!estInstancie)
47
		{
51
		{
48
			return new ImageModele(im);
52
			return new ImageModele(im);
49
		}
53
		}
50
		else
54
		else
51
		{
55
		{
52
			return null ;
56
			return null ;
53
		}
57
		}
54
	}
58
	}
55
	
59
	
56
	private ImageModele(ImageMediateur im) {
60
	private ImageModele(ImageMediateur im) {
57
		
61
		
58
		iMediateur = im ;
62
		iMediateur = im ;
59
	}
63
	}
60
	
64
	
61
	public ImageMediateur getIMediateur()
65
	public ImageMediateur getIMediateur()
62
	{
66
	{
63
		return iMediateur ;
67
		return iMediateur ;
64
	}
68
	}
65
	
69
	
66
	public void obtenirPhotoGalerie(Rafraichissable r)
70
	public void obtenirPhotoGalerie(Rafraichissable r)
67
	{
71
	{
68
		ListeImageAsynchroneDAO liaDAO = new ListeImageAsynchroneDAO();
72
		ListeImageAsynchroneDAO liaDAO = new ListeImageAsynchroneDAO();
69
		liaDAO.ObtenirListeImages(this);		
73
		liaDAO.ObtenirListeImages(this);		
70
	}
74
	}
71
	
75
	
72
	public void uploaderImages()
76
	public void uploaderImages()
73
	{
77
	{
74
		ImageUploaderAsynchroneDAO IuADaO = new ImageUploaderAsynchroneDAO() ;
78
		ImageUploaderAsynchroneDAO IuADaO = new ImageUploaderAsynchroneDAO() ;
75
		IuADaO.setIMediateur(getIMediateur());
79
		IuADaO.setIMediateur(getIMediateur());
76
		IuADaO.choisirMethodeUpload() ;
80
		IuADaO.choisirMethodeUpload() ;
77
	}
81
	}
78
	
82
	
79
	public void rafraichirListeImage(Object o)
83
	public void rafraichirListeImage(Object o)
80
	{
84
	{
81
		cacheImage = (ListeImageCarnet)o ;
85
		cacheImage = (ListeImageCarnet)o ;
82
	}
86
	}
83
	
87
	
84
	public void rafraichirArbreMotsCles(Object o)
88
	public void rafraichirArbreMotsCles(Object o)
85
	{
89
	{
86
		arbreMotsCles = (Tree)o ;
90
		arbreMotsCles = (com.gwtext.client.data.Tree)o ;
87
	}
91
	}
88
	
92
	
89
	public void rafraichirMotsCles(Object o)
93
	public void rafraichirMotsCles(Object o)
90
	{
94
	{
91
		motcles = (HashMap)o ;
95
		motsCles = (HashMap)o ;
92
	}
96
	}
93
	
97
	
94
	public void obtenirMetadonnees(Rafraichissable r, String id)
98
	public void obtenirMetadonnees(Rafraichissable r, String id)
95
	{
99
	{
96
			
100
			
97
		ImageCarnet im = (ImageCarnet)cacheImage.get(id) ;
101
		ImageCarnet im = (ImageCarnet)cacheImage.get(id) ;
98
				
102
				
99
				Object meta[] = new Object[3] ;
103
				Object meta[] = new Object[3] ;
100
				meta[0] = im.getMetadonnesExif() ;
104
				meta[0] = im.getMetadonnesExif() ;
101
				meta[1] = im.getMetadonnesIptc() ;
105
				meta[1] = im.getMetadonnesIptc() ;
102
				meta[2] = im.getInfoGenerales() ;
106
				meta[2] = im.getInfoGenerales() ;
103
				
107
				
104
				r.rafraichir(meta,false) ;
108
				r.rafraichir(meta,false) ;
105
	
109
	
106
	}
110
	}
107
	
111
	
108
	public void obtenirMotsClesId(Rafraichissable r, String id)
112
	public void obtenirMotsClesId(Rafraichissable r, String id)
109
	{
113
	{
110
		ImageCarnet im = (ImageCarnet)cacheImage.get(id) ;
114
		ImageCarnet im = (ImageCarnet)cacheImage.get(id) ;
111
		String motsClesId = im.getMotsCles() ;
115
		String motsClesId = im.getMotsCles() ;
112
		String[] motsClesIdTab = motsClesId.split(",") ;
116
		String[] motsClesIdTab = motsClesId.split(",") ;
113
		
117
		
114
		r.rafraichir(motsClesIdTab, false) ;
118
		r.rafraichir(motsClesIdTab, false) ;
115
	}
119
	}
116
	
120
	
117
	public void mettreAJourCacheImage(String commentaires, String date, String ids[])
121
	public void mettreAJourCacheImage(String commentaires, String date, String ids[])
118
	{
122
	{
119
			for (int i = 0; i < ids.length; i++) 
123
			for (int i = 0; i < ids.length; i++) 
120
			{	
124
			{	
121
				String key = ids[i] ;
125
				String key = ids[i] ;
122
				ImageCarnet ic = (ImageCarnet)cacheImage.get(key) ;
126
				ImageCarnet ic = (ImageCarnet)cacheImage.get(key) ;
123
				ic.miseAJourInfoGenerales(commentaires, date) ;
127
				ic.miseAJourInfoGenerales(commentaires, date) ;
124
				mettreAjourImageCarnet(ic) ;	
128
				mettreAjourBaseDeDonneesImageCarnet(ic) ;	
125
			}
129
			}
126
	}
130
	}
127
	
131
	
128
	public void mettreAjourMotsClesId(String text, String id)
132
	public void mettreAjourMotsClesId(String text, String id)
129
	{
133
	{
130
				 motcles.put(id, text) ;
134
				 motsCles.put(id, text) ;
131
	}
135
	}
132
	
136
	
-
 
137
	public void mettreAjourBaseDeDonneesMotsClesId()
-
 
138
	{
-
 
139
		
-
 
140
	}
-
 
141
	
133
	public void mettreAJourBaseDeDonnees()
142
	public void mettreAJourBaseDeDonneesListeImageCarnet()
134
	{
143
	{
135
		ListeImageAsynchroneDAO liDaO = new ListeImageAsynchroneDAO();
144
		ListeImageAsynchroneDAO liDaO = new ListeImageAsynchroneDAO();
136
		liDaO.setIMediateur(iMediateur);
145
		liDaO.setIMediateur(iMediateur);
137
		
146
		
138
		liDaO.SynchroniserBaseDeDonnees(cacheImage);
147
		liDaO.SynchroniserBaseDeDonnees(cacheImage);
139
	}
148
	}
140
	
149
	
141
	public void mettreAjourImageCarnet(ImageCarnet ic)
150
	public void mettreAjourBaseDeDonneesImageCarnet(ImageCarnet ic)
142
	{
151
	{
143
		ImageAsynchroneDAO iaDaO = new ImageAsynchroneDAO();
152
		ImageAsynchroneDAO iaDaO = new ImageAsynchroneDAO();
144
		iaDaO.setIMediateur(iMediateur);
153
		iaDaO.setIMediateur(iMediateur);
145
		iaDaO.SynchroniserBaseDeDonnees(ic) ;
154
		iaDaO.SynchroniserBaseDeDonnees(ic) ;
146
	}
155
	}
147
 
156
 
148
	public void supprimerImages(String[] ids) {
157
	public void supprimerImages(String[] ids) {
149
		
158
		
150
		String rids[] = new String[ids.length] ;
159
		String rids[] = new String[ids.length] ;
151
		ListeImageAsynchroneDAO liDao = new ListeImageAsynchroneDAO() ;
160
		ListeImageAsynchroneDAO liDao = new ListeImageAsynchroneDAO() ;
152
		liDao.setIMediateur(iMediateur);
161
		liDao.setIMediateur(iMediateur);
153
		
162
		
154
		for (int i = 0; i < ids.length; i++) {
163
		for (int i = 0; i < ids.length; i++) {
155
			
164
			
156
			
165
			
157
			String key = ids[i] ;
166
			String key = ids[i] ;
158
			ImageCarnet ic = (ImageCarnet)cacheImage.get(key) ;
167
			ImageCarnet ic = (ImageCarnet)cacheImage.get(key) ;
159
			rids[i] = ic.getId() ;
168
			rids[i] = ic.getId() ;
160
		}
169
		}
161
		
170
		
162
		if(rids.length != 0)
171
		if(rids.length != 0)
163
		{
172
		{
164
			liDao.supprimerBaseDeDonnees(rids);
173
			liDao.supprimerBaseDeDonnees(rids);
165
		}
174
		}
166
		
175
		
167
	}
176
	}
168
 
177
 
169
	public void rafraichir(Object nouvelleDonnees,
178
	public void rafraichir(Object nouvelleDonnees,
170
			boolean repandreRafraichissement) {
179
			boolean repandreRafraichissement) {
171
		
180
		
172
			ListeImageCarnet data = (ListeImageCarnet) nouvelleDonnees ;
181
			ListeImageCarnet data = (ListeImageCarnet) nouvelleDonnees ;
173
			Object[][] photoData = new Object[data.size()][7];
182
			Object[][] photoData = new Object[data.size()][7];
174
			int i = 0 ;
183
			int i = 0 ;
175
			for (Iterator it = data.keySet().iterator(); it.hasNext();) 
184
			for (Iterator it = data.keySet().iterator(); it.hasNext();) 
176
			{
185
			{
177
				ImageCarnet im = (ImageCarnet) data.get(it.next());
186
				ImageCarnet im = (ImageCarnet) data.get(it.next());
178
				photoData[i][0] = im.getOrdre() ;
187
				photoData[i][0] = im.getOrdre() ;
179
				photoData[i][1] = im.getDate() ;
188
				photoData[i][1] = im.getDate() ;
180
				photoData[i][2] = im.getIptcCity() ;
189
				photoData[i][2] = im.getIptcCity() ;
181
				photoData[i][3] = im.getMake()+" "+im.getModel() ;
190
				photoData[i][3] = im.getMake()+" "+im.getModel() ;
182
				photoData[i][4] = im.getSUrl() ;
191
				photoData[i][4] = im.getSUrl() ;
183
				photoData[i][5] = im.getMUrl() ;
192
				photoData[i][5] = im.getMUrl() ;
184
				photoData[i][6] = im.getUrl() ;
193
				photoData[i][6] = im.getUrl() ;
185
				
194
				
186
				i++ ;
195
				i++ ;
187
			}
196
			}
188
	
197
	
189
			// creation du store
198
			// creation du store
190
			FieldDef defNumImage = new IntegerFieldDef("num_image");
199
			FieldDef defNumImage = new IntegerFieldDef("num_image");
191
			FieldDef defDatImage = new StringFieldDef("dat_image");
200
			FieldDef defDatImage = new StringFieldDef("dat_image");
192
			FieldDef defLieImage = new StringFieldDef("lie_image");
201
			FieldDef defLieImage = new StringFieldDef("lie_image");
193
			FieldDef defAppImage = new StringFieldDef("app_image");
202
			FieldDef defAppImage = new StringFieldDef("app_image");
194
			FieldDef defUrlImageS = new StringFieldDef("url_image_S");
203
			FieldDef defUrlImageS = new StringFieldDef("url_image_S");
195
			FieldDef defUrlImageM = new StringFieldDef("url_image_M");
204
			FieldDef defUrlImageM = new StringFieldDef("url_image_M");
196
			FieldDef defUrlImage = new StringFieldDef("url_image");
205
			FieldDef defUrlImage = new StringFieldDef("url_image");
197
			FieldDef[] defTab = {defNumImage,defDatImage,defLieImage,defAppImage,defUrlImageS,defUrlImageM,defUrlImage};
206
			FieldDef[] defTab = {defNumImage,defDatImage,defLieImage,defAppImage,defUrlImageS,defUrlImageM,defUrlImage};
198
			RecordDef rd = new RecordDef(defTab) ;
207
			RecordDef rd = new RecordDef(defTab) ;
199
			
208
			
200
			final MemoryProxy dataProxy = new MemoryProxy(photoData);
209
			final MemoryProxy dataProxy = new MemoryProxy(photoData);
201
			final ArrayReader reader = new ArrayReader(rd);
210
			final ArrayReader reader = new ArrayReader(rd);
202
	
211
	
203
			final Store photoStore = new Store(dataProxy, reader);
212
			final Store photoStore = new Store(dataProxy, reader);
204
			
213
			
205
			rafraichirListeImage(nouvelleDonnees);
214
			rafraichirListeImage(nouvelleDonnees);
206
			
215
			
207
			st = photoStore ;
216
			st = photoStore ;
208
		
217
		
209
			if(repandreRafraichissement)
218
			if(repandreRafraichissement)
210
			{
219
			{
211
				getIMediateur().synchroniserDonneesZoomListeGalerie(st, this) ;
220
				getIMediateur().synchroniserDonneesZoomListeGalerie(st, this) ;
212
			}
221
			}
213
		
222
		
214
		
223
		
215
	}
224
	}
216
	
225
	
217
	public void afficherMotsCles()
226
	public void afficherMotsCles()
218
	{
227
	{
219
		for(Iterator it = motcles.keySet().iterator() ; it.hasNext() ;)
228
		for(Iterator it = motsCles.keySet().iterator() ; it.hasNext() ;)
220
		{
229
		{
221
			String key = (String)it.next() ;
230
			String key = (String)it.next() ;
222
			String valeur = (String)motcles.get(key) ; 
231
			String valeur = (String)motsCles.get(key) ; 
223
			System.out.println("clé : "+key+" valeur : "+valeur);
232
			System.out.println("clé : "+key+" valeur : "+valeur);
224
		}
233
		}
225
	}
234
	}
226
 
235
 
227
	public void mettreAjourMotsCles(String[] ids, String motsClesEnCours) {
236
	public void mettreAjourMotsCles(String[] ids, String motsClesEnCours, com.gwtext.client.data.Tree arbreMC) {
228
		
237
		
229
		for (int i = 0; i < ids.length; i++) {
238
		for (int i = 0; i < ids.length; i++) {
230
			
239
			
231
			if(cacheImage.containsKey(ids[i]))
240
			if(cacheImage.containsKey(ids[i]))
232
			{
241
			{
233
				ImageCarnet ic = (ImageCarnet)cacheImage.get(ids[i]) ;
242
				ImageCarnet ic = (ImageCarnet)cacheImage.get(ids[i]) ;
234
				ic.mettreAjourMotsCles(motsClesEnCours) ;	
243
				ic.mettreAjourMotsCles(motsClesEnCours) ;	
235
			}
244
			}
236
		}
245
		}
-
 
246
		
-
 
247
		rafraichirArbreMotsCles(arbreMC) ;
-
 
248
	}
-
 
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) ;
237
		
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
	}
238
	}
347
	
239
}
348
}