Subversion Repositories eFlore/Archives.cel-v2

Rev

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

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