Subversion Repositories eFlore/Applications.coel

Rev

Rev 1526 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1287 cyprien 1
package org.tela_botanica.client.composants.pagination;
2
 
1428 cyprien 3
import org.tela_botanica.client.interfaces.Rafraichissable;
4
import org.tela_botanica.client.modeles.Information;
5
import org.tela_botanica.client.util.Debug;
1567 jpm 6
import org.tela_botanica.client.util.Log;
1468 jpm 7
import org.tela_botanica.client.util.UtilString;
1428 cyprien 8
 
1287 cyprien 9
import com.extjs.gxt.ui.client.data.BasePagingLoader;
10
import com.extjs.gxt.ui.client.data.LoadEvent;
11
import com.extjs.gxt.ui.client.data.PagingLoadResult;
12
import com.google.gwt.user.client.rpc.AsyncCallback;
13
 
14
public class ChargeurListe<D extends PagingLoadResult<?>> extends BasePagingLoader<D> {
15
 
16
	private String recherche = "";
1428 cyprien 17
	private Rafraichissable vueARafraichir = null;
1468 jpm 18
	private boolean doRafraichir = false;
1287 cyprien 19
 
20
	@SuppressWarnings("unchecked")
1428 cyprien 21
	public ChargeurListe(Proxy proxy, TransformateurJSONaModelData reader, Rafraichissable vueARafraichir) {
1287 cyprien 22
		super(proxy, reader);
1428 cyprien 23
		this.vueARafraichir = vueARafraichir;
1287 cyprien 24
	}
25
 
1468 jpm 26
	public boolean load(Object loadConfig, String recherche, boolean doRafraichir) {
27
		this.doRafraichir = doRafraichir;
1428 cyprien 28
		if (fireEvent(BeforeLoad, new LoadEvent(this, loadConfig))) {
1526 jpm 29
			lastConfig = loadConfig;
30
			this.recherche = recherche;
31
			loadData(loadConfig, recherche);
32
			return true;
33
		} else {
34
			return false;
35
		}
1287 cyprien 36
	}
37
 
38
	public boolean load(Object loadConfig) {
1526 jpm 39
		if (fireEvent(BeforeLoad, new LoadEvent(this, loadConfig))) {
40
			lastConfig = loadConfig;
41
			loadData(loadConfig, recherche);
42
			return true;
43
		}
44
		return false;
1287 cyprien 45
	}
46
 
47
	public void load(int offset, int limit) {
1526 jpm 48
		this.offset = offset;
49
		this.limit = limit;
50
		load();
1287 cyprien 51
	}
52
 
53
	public boolean load() {
1526 jpm 54
		Object config = (reuseConfig && lastConfig != null) ? lastConfig : newLoadConfig();
55
		config = prepareLoadConfig(config);
56
		return load(config);
1287 cyprien 57
	}
58
 
59
	@SuppressWarnings("unchecked")
60
	protected void loadData(final Object config, String recherche) {
61
		AsyncCallback<D> callback = new AsyncCallback<D>() {
1428 cyprien 62
 
1287 cyprien 63
		    public void onFailure(Throwable caught) {
1526 jpm 64
		    	onLoadFailure(config, caught);
65
		    	if (!UtilString.isEmpty(caught.getMessage())) {
1567 jpm 66
		    		Log.error("[FAILURE] ChargeurListe : message="+caught.getMessage());
1526 jpm 67
		    	} else {
1567 jpm 68
		    		Log.error("[FAILURE] ChargeurListe : message=NULL. Peut-être le modelType est-il mal paramétré ?");
1526 jpm 69
		    	}
1287 cyprien 70
		    }
1428 cyprien 71
 
1287 cyprien 72
		    public void onSuccess(D result) {
1428 cyprien 73
		    	onLoadSuccess(config, result);
1468 jpm 74
 
75
		    	/*
76
		    	// SUPPRIMER LES PREFIXES
77
		    	if (result instanceof BasePagingLoadResult) {
78
		    		BasePagingLoadResult retourPaging = (BasePagingLoadResult)result;
79
		    		List retourListe = retourPaging.getData();
80
 
81
		    		for(int i=0; i< retourListe.size(); i++) {
82
		    			if (retourListe.get(i) instanceof BaseModelData) {
83
		    				BaseModelData model = (BaseModelData)retourListe.get(i);
84
 
85
		    				Map<String, Object> a = model.getProperties();
86
		    				Set<String> cles = a.keySet();
87
		    				Iterator<String> it = cles.iterator();
88
		    				while (it.hasNext()) {
89
		    					String cle = it.next();
90
		    					if (a.get(cle) != null) {
91
		    						String cleObjet = "";
92
		    						cleObjet = cle.replaceFirst("^[A-Za-z]+_", "");
93
		    						model.set(cleObjet, a.get(cle));
94
		    						model.remove(cle);
95
		    					}
96
		    				}
97
		    			}
98
		    		}
99
		    	}*/
100
 
101
 
102
		    	// Cas où il faut rafraichir le combo manuellement
103
		    	// (cela sert pour charger la valeur initiale du combo au chargement d'un formulaire)
104
			    if (doRafraichir) {
1428 cyprien 105
			    	Information info = new Information("selectionnerValeurCombo");
106
			    	info.setDonnee(result);
107
			    	info.setMessage("");
108
 
109
					vueARafraichir.rafraichir(info);
110
			    }
111
			}
1287 cyprien 112
		};
1526 jpm 113
		((Proxy) proxy).load((TransformateurJSONaModelData) reader, config, callback, recherche);
1287 cyprien 114
	}
115
}