Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2671 Rev 2755
1
package org.tela_botanica.client.vues.observation;
1
package org.tela_botanica.client.vues.observation;
2
 
2
 
3
import java.util.Iterator;
3
import java.util.Iterator;
4
import java.util.Map;
4
import java.util.Map;
-
 
5
 
5
 
6
import org.tela_botanica.client.i18n.I18n;
-
 
7
import org.tela_botanica.client.i18n.Msg;
-
 
8
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.i18n.Msg;
9
import org.tela_botanica.client.modeles.dao.ListeReferentielChampsEtendusDAO;
-
 
10
import org.tela_botanica.client.modeles.objets.Configuration;
7
import org.tela_botanica.client.modeles.objets.Configuration;
11
import org.tela_botanica.client.modeles.objets.ListeGroupesChampsEtendus;
8
import org.tela_botanica.client.modeles.objets.Utilisateur;
12
import org.tela_botanica.client.modeles.objets.Utilisateur;
9
import org.tela_botanica.client.observation.ObservationMediateur;
13
import org.tela_botanica.client.observation.ObservationMediateur;
10
import org.tela_botanica.client.util.Util;
14
import org.tela_botanica.client.util.Util;
11
 
15
 
12
import com.google.gwt.core.client.Callback;
16
import com.google.gwt.core.client.Callback;
-
 
17
import com.google.gwt.event.dom.client.ClickEvent;
-
 
18
import com.google.gwt.event.dom.client.ClickHandler;
13
import com.google.gwt.user.client.ui.FileUpload;
19
import com.google.gwt.user.client.ui.FileUpload;
14
import com.google.gwt.user.client.ui.FormPanel;
20
import com.google.gwt.user.client.ui.FormPanel;
15
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent;
21
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent;
16
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteHandler;
22
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteHandler;
17
import com.google.gwt.user.client.ui.HTML;
23
import com.google.gwt.user.client.ui.HTML;
18
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
24
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
19
import com.google.gwt.user.client.ui.Hidden;
25
import com.google.gwt.user.client.ui.Hidden;
-
 
26
import com.google.gwt.user.client.ui.HorizontalPanel;
-
 
27
import com.google.gwt.user.client.ui.ListBox;
20
import com.google.gwt.user.client.ui.VerticalPanel;
28
import com.google.gwt.user.client.ui.VerticalPanel;
-
 
29
import com.google.gwt.user.client.ui.Widget;
21
import com.gwtext.client.core.EventObject;
30
import com.gwtext.client.core.EventObject;
22
import com.gwtext.client.widgets.Button;
31
import com.gwtext.client.widgets.Button;
23
import com.gwtext.client.widgets.Window;
32
import com.gwtext.client.widgets.Window;
24
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
33
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
25
 
34
 
26
public class FormulaireImportObservationVue {
35
public class FormulaireImportObservationVue implements Rafraichissable {
27
	
36
	
28
	private ObservationMediateur oMediateur = null;
37
	private ObservationMediateur oMediateur = null;
29
	private  Window nPan = null;
38
	private  Window nPan = null;
30
	private Hidden identifiant = null;
39
	private Hidden identifiant = null;
-
 
40
	
-
 
41
	private static ListeGroupesChampsEtendus cacheGroupes;
31
	
42
	ListBox listeGroupeChampsEtendus;
32
	
43
	
33
	public FormulaireImportObservationVue(ObservationMediateur om) {
44
	public FormulaireImportObservationVue(ObservationMediateur om) {
34
	
45
	
35
		this.oMediateur = om;
46
		this.oMediateur = om;
36
 
47
 
37
		nPan = new Window(Msg.get("import-observations"));
48
		nPan = new Window(Msg.get("import-observations"));
38
		identifiant = new Hidden();
49
		identifiant = new Hidden();
39
		identifiant.setName("utilisateur");
50
		identifiant.setName("utilisateur");
40
		identifiant.setValue(Utilisateur.getInstance().getIdentifiantUtilisateurConsulte());
51
		identifiant.setValue(Utilisateur.getInstance().getIdentifiantUtilisateurConsulte());
41
		
52
		
42
		final FormPanel form = new FormPanel();
53
		final FormPanel form = new FormPanel();
43
		final Button boutonValidation = new Button(Msg.get("envoyer"));
54
		final Button boutonValidation = new Button(Msg.get("envoyer"));
44
		
55
		
45
		form.setEncoding(FormPanel.ENCODING_MULTIPART);
56
		form.setEncoding(FormPanel.ENCODING_MULTIPART);
46
		form.setMethod(FormPanel.METHOD_POST);
57
		form.setMethod(FormPanel.METHOD_POST);
47
		form.setWidth("275px");
58
		form.setWidth("450px");
48
		nPan.setWidth("275px");
59
		nPan.setWidth("450px");
49
 
60
 
50
		VerticalPanel holder = new VerticalPanel();
61
		VerticalPanel holder = new VerticalPanel();
51
 
62
 
52
		FileUpload upload = new FileUpload();
63
		FileUpload upload = new FileUpload();
53
		upload.setName("upload");
64
		upload.setName("upload");
54
		holder.add(upload);
65
		holder.add(upload);
55
		holder.add(boutonValidation);
66
		holder.add(boutonValidation);
56
		holder.add(identifiant);
67
		holder.add(identifiant);
-
 
68
		
-
 
69
		listeGroupeChampsEtendus = new ListBox();
-
 
70
		listeGroupeChampsEtendus.addStyleName("liste_projets_import");
-
 
71
		
-
 
72
		if(cacheGroupes == null) {
-
 
73
			ListeReferentielChampsEtendusDAO lrceDao = new ListeReferentielChampsEtendusDAO(null);
-
 
74
			lrceDao.obtenirGroupesChampsEtendus(this);
-
 
75
		} else {
-
 
76
			this.rafraichir(cacheGroupes, false);
-
 
77
		}
57
		
78
		
-
 
79
		HTML lienVersDocumentModele = new HTML("<a href=\"#\">" + Msg.get("telecharger-modele") + "</a>");
-
 
80
		lienVersDocumentModele.addClickHandler(new ClickHandler() {			
-
 
81
			@Override
-
 
82
			public void onClick(ClickEvent event) {
-
 
83
				String groupeimport = listeGroupeChampsEtendus.getValue(listeGroupeChampsEtendus.getSelectedIndex());
-
 
84
				String urlTplImport = Configuration.getServiceBaseUrl() + "/ImportXLS/template?groupe="+groupeimport;
-
 
85
				com.google.gwt.user.client.Window.open(urlTplImport, "", "");
-
 
86
			}
-
 
87
		});
-
 
88
		
58
		HTML lienVersDocumentModele = new HTML("<a href=\"modele_import.xls\">" + Msg.get("telecharger-modele") + "</a>");
89
		HorizontalPanel holHoriz = new HorizontalPanel();
-
 
90
		holHoriz.add(lienVersDocumentModele);
-
 
91
		holHoriz.add(listeGroupeChampsEtendus);
59
		holder.add(lienVersDocumentModele);
92
		holder.add(holHoriz);
60
		holder.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);	
93
		holder.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);	
61
		boutonValidation.addListener(new ButtonListenerAdapter() {
94
		boutonValidation.addListener(new ButtonListenerAdapter() {
62
						
95
						
63
			@Override
96
			@Override
64
			public void onClick(Button button, EventObject e) {
97
			public void onClick(Button button, EventObject e) {
65
				form.submit();
98
				form.submit();
66
			}
99
			}
67
		});
100
		});
68
 
101
 
69
		form.add(holder);
102
		form.add(holder);
70
		
103
		
71
		nPan.add(form);
104
		nPan.add(form);
72
		form.setAction(Configuration.getServiceBaseUrl() + "/ImportXLS");
105
		form.setAction(Configuration.getServiceBaseUrl() + "/ImportXLS");
73
		
106
		
74
		form.addSubmitCompleteHandler(new SubmitCompleteHandler() {	
107
		form.addSubmitCompleteHandler(new SubmitCompleteHandler() {	
75
			@Override
108
			@Override
76
			public void onSubmitComplete(SubmitCompleteEvent event) {
109
			public void onSubmitComplete(SubmitCompleteEvent event) {
77
				// Certains client ne savent pas lire le retour d'upload correctement
110
				// Certains client ne savent pas lire le retour d'upload correctement
78
				// notamment à cause des requêtes CORS, donc en cas de problème on 
111
				// notamment à cause des requêtes CORS, donc en cas de problème on 
79
				// appelle manuellement les stats d'upload en lecture
112
				// appelle manuellement les stats d'upload en lecture
80
				if(event.getResults() != null) {
113
				if(event.getResults() != null) {
81
					try {
114
					try {
82
						Map<String, String> retourImport = Util.parserRetourImportObs(event.getResults());
115
						Map<String, String> retourImport = Util.parserRetourImportObs(event.getResults());
83
						surRetourImport(retourImport);
116
						surRetourImport(retourImport);
84
					} catch (Exception e) {
117
					} catch (Exception e) {
85
						demanderStatsUpload();
118
						demanderStatsUpload();
86
					}
119
					}
87
				} else {
120
				} else {
88
					demanderStatsUpload();
121
					demanderStatsUpload();
89
				}
122
				}
90
			}
123
			}
91
		});
124
		});
92
	}
125
	}
93
	
126
	
94
	private void demanderStatsUpload() {
127
	private void demanderStatsUpload() {
95
		Util.envoyerRequeteStatsUpload(new Callback<String, String>() {	
128
		Util.envoyerRequeteStatsUpload(new Callback<String, String>() {	
96
			@Override
129
			@Override
97
			public void onSuccess(String resultats) {
130
			public void onSuccess(String resultats) {
98
				Map<String, String> retourImport = Util.parserRetourImportObs(resultats);
131
				Map<String, String> retourImport = Util.parserRetourImportObs(resultats);
99
				surRetourImport(retourImport);
132
				surRetourImport(retourImport);
100
			}
133
			}
101
			
134
			
102
			@Override
135
			@Override
103
			public void onFailure(String reason) {
136
			public void onFailure(String reason) {
104
				// TODO: rien à faire, si la requête échoue c'est que le serveur
137
				// TODO: rien à faire, si la requête échoue c'est que le serveur
105
				// ne répond pas et donc on a déjà eu des problèmes en amont
138
				// ne répond pas et donc on a déjà eu des problèmes en amont
106
			}
139
			}
107
		});
140
		});
108
	}
141
	}
109
	
142
	
110
	private void surRetourImport(Map<String, String> retourImport) {
143
	private void surRetourImport(Map<String, String> retourImport) {
111
		String message = "";
144
		String message = "";
112
		for (Iterator<String> iterator = retourImport.keySet().iterator(); iterator
145
		for (Iterator<String> iterator = retourImport.keySet().iterator(); iterator
113
				.hasNext();) {
146
				.hasNext();) {
114
			String indexRapport = iterator.next();
147
			String indexRapport = iterator.next();
115
			// on ne met pas de "-" dans les clés json, mais par contre nos clé i18n
148
			// on ne met pas de "-" dans les clés json, mais par contre nos clé i18n
116
			// sont séparées par des tirets, donc on remplace
149
			// sont séparées par des tirets, donc on remplace
117
			String cleI18n = indexRapport.replace("_", "-");
150
			String cleI18n = indexRapport.replace("_", "-");
118
			String[] StrParams = {retourImport.get(indexRapport).replace("\"", "")};
151
			String[] StrParams = {retourImport.get(indexRapport).replace("\"", "")};
119
			message += Msg.get(cleI18n, StrParams)+"\n";
152
			message += Msg.get(cleI18n, StrParams)+"\n";
120
		}
153
		}
121
		com.google.gwt.user.client.Window.alert(message);	
154
		com.google.gwt.user.client.Window.alert(message);	
122
		nPan.close();
155
		nPan.close();
123
		oMediateur.obtenirDernierePageObservation();
156
		oMediateur.obtenirDernierePageObservation();
124
	}
157
	}
125
	
158
	
126
	public void afficher() {
159
	public void afficher() {
127
		nPan.show();
160
		nPan.show();
128
	}
161
	}
-
 
162
	
-
 
163
	public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) {			
-
 
164
		if(nouvelleDonnees instanceof ListeGroupesChampsEtendus) {
-
 
165
			cacheGroupes  = (ListeGroupesChampsEtendus)nouvelleDonnees;
-
 
166
			listeGroupeChampsEtendus.addItem(Msg.get("import-standard"), "");
-
 
167
			for (Iterator<String> iterator = cacheGroupes.getCorrespondancesCorrespondancesIdsNomsGroupes().keySet().iterator(); iterator.hasNext();) {
-
 
168
				String cleGroupe = iterator.next();
-
 
169
				String[] strParams = {cleGroupe};
-
 
170
				listeGroupeChampsEtendus.addItem(Msg.get("import-champs-projets", strParams), cleGroupe);
-
 
171
			}
-
 
172
		}
-
 
173
	}
129
}
174
}