Subversion Repositories eFlore/Archives.cel-v2

Rev

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