Subversion Repositories eFlore/Archives.cel-v2

Rev

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