Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2668 Rev 2671
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.Msg;
6
import org.tela_botanica.client.i18n.Msg;
7
import org.tela_botanica.client.modeles.objets.Configuration;
7
import org.tela_botanica.client.modeles.objets.Configuration;
8
import org.tela_botanica.client.modeles.objets.Utilisateur;
8
import org.tela_botanica.client.modeles.objets.Utilisateur;
9
import org.tela_botanica.client.observation.ObservationMediateur;
9
import org.tela_botanica.client.observation.ObservationMediateur;
10
import org.tela_botanica.client.util.Util;
10
import org.tela_botanica.client.util.Util;
11
 
11
 
12
import com.google.gwt.core.client.Callback;
12
import com.google.gwt.core.client.Callback;
13
import com.google.gwt.user.client.ui.FileUpload;
13
import com.google.gwt.user.client.ui.FileUpload;
14
import com.google.gwt.user.client.ui.FormPanel;
14
import com.google.gwt.user.client.ui.FormPanel;
15
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent;
15
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent;
16
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteHandler;
16
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteHandler;
17
import com.google.gwt.user.client.ui.HTML;
17
import com.google.gwt.user.client.ui.HTML;
18
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
18
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
19
import com.google.gwt.user.client.ui.Hidden;
19
import com.google.gwt.user.client.ui.Hidden;
20
import com.google.gwt.user.client.ui.VerticalPanel;
20
import com.google.gwt.user.client.ui.VerticalPanel;
21
import com.gwtext.client.core.EventObject;
21
import com.gwtext.client.core.EventObject;
22
import com.gwtext.client.widgets.Button;
22
import com.gwtext.client.widgets.Button;
23
import com.gwtext.client.widgets.Window;
23
import com.gwtext.client.widgets.Window;
24
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
24
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
25
 
25
 
26
public class FormulaireImportObservationVue {
26
public class FormulaireImportObservationVue {
27
	
27
	
28
	private ObservationMediateur oMediateur = null;
28
	private ObservationMediateur oMediateur = null;
29
	private  Window nPan = null;
29
	private  Window nPan = null;
30
	private Hidden identifiant = null;
30
	private Hidden identifiant = null;
31
	
31
	
32
	
32
	
33
	public FormulaireImportObservationVue(ObservationMediateur om) {
33
	public FormulaireImportObservationVue(ObservationMediateur om) {
34
	
34
	
35
		this.oMediateur = om;
35
		this.oMediateur = om;
36
 
36
 
37
		nPan = new Window(Msg.get("import-observations"));
37
		nPan = new Window(Msg.get("import-observations"));
38
		identifiant = new Hidden();
38
		identifiant = new Hidden();
39
		identifiant.setName("utilisateur");
39
		identifiant.setName("utilisateur");
40
		identifiant.setValue(Utilisateur.getInstance().getIdentifiantUtilisateurConsulte());
40
		identifiant.setValue(Utilisateur.getInstance().getIdentifiantUtilisateurConsulte());
41
		
41
		
42
		final FormPanel form = new FormPanel();
42
		final FormPanel form = new FormPanel();
43
		final Button boutonValidation = new Button(Msg.get("envoyer"));
43
		final Button boutonValidation = new Button(Msg.get("envoyer"));
44
		
44
		
45
		form.setEncoding(FormPanel.ENCODING_MULTIPART);
45
		form.setEncoding(FormPanel.ENCODING_MULTIPART);
46
		form.setMethod(FormPanel.METHOD_POST);
46
		form.setMethod(FormPanel.METHOD_POST);
47
		form.setWidth("275px");
47
		form.setWidth("275px");
48
		nPan.setWidth("275px");
48
		nPan.setWidth("275px");
49
 
49
 
50
		VerticalPanel holder = new VerticalPanel();
50
		VerticalPanel holder = new VerticalPanel();
51
 
51
 
52
		FileUpload upload = new FileUpload();
52
		FileUpload upload = new FileUpload();
53
		upload.setName("upload");
53
		upload.setName("upload");
54
		holder.add(upload);
54
		holder.add(upload);
55
		holder.add(boutonValidation);
55
		holder.add(boutonValidation);
56
		holder.add(identifiant);
56
		holder.add(identifiant);
57
		
57
		
58
		HTML lienVersDocumentModele = new HTML("<a href=\"modele_import.xls\">" + Msg.get("telecharger-modele") + "</a>");
58
		HTML lienVersDocumentModele = new HTML("<a href=\"modele_import.xls\">" + Msg.get("telecharger-modele") + "</a>");
59
		holder.add(lienVersDocumentModele);
59
		holder.add(lienVersDocumentModele);
60
		holder.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);	
60
		holder.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);	
61
		boutonValidation.addListener(new ButtonListenerAdapter() {
61
		boutonValidation.addListener(new ButtonListenerAdapter() {
62
						
62
						
63
			@Override
63
			@Override
64
			public void onClick(Button button, EventObject e) {
64
			public void onClick(Button button, EventObject e) {
65
				form.submit();
65
				form.submit();
66
			}
66
			}
67
		});
67
		});
68
 
68
 
69
		form.add(holder);
69
		form.add(holder);
70
		
70
		
71
		nPan.add(form);
71
		nPan.add(form);
72
		form.setAction(Configuration.getServiceBaseUrl() + "/ImportXLS");
72
		form.setAction(Configuration.getServiceBaseUrl() + "/ImportXLS");
73
		
73
		
74
		form.addSubmitCompleteHandler(new SubmitCompleteHandler() {	
74
		form.addSubmitCompleteHandler(new SubmitCompleteHandler() {	
75
			@Override
75
			@Override
76
			public void onSubmitComplete(SubmitCompleteEvent event) {
76
			public void onSubmitComplete(SubmitCompleteEvent event) {
77
				// Certains client ne savent pas lire le retour d'upload correctement
77
				// 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 
78
				// notamment à cause des requêtes CORS, donc en cas de problème on 
79
				// appelle manuellement les stats d'upload en lecture
79
				// appelle manuellement les stats d'upload en lecture
80
				if(event.getResults() != null) {
80
				if(event.getResults() != null) {
81
					try {
81
					try {
82
						Map<String, String> retourImport = Util.parserRetourImportObs(event.getResults());
82
						Map<String, String> retourImport = Util.parserRetourImportObs(event.getResults());
83
						surRetourImport(retourImport);
83
						surRetourImport(retourImport);
84
					} catch (Exception e) {
84
					} catch (Exception e) {
85
						demanderStatsUpload();
85
						demanderStatsUpload();
86
					}
86
					}
87
				} else {
87
				} else {
88
					demanderStatsUpload();
88
					demanderStatsUpload();
89
				}
89
				}
90
			}
90
			}
91
		});
91
		});
92
	}
92
	}
93
	
93
	
94
	private void demanderStatsUpload() {
94
	private void demanderStatsUpload() {
95
		Util.envoyerRequeteStatsUpload(new Callback<String, String>() {	
95
		Util.envoyerRequeteStatsUpload(new Callback<String, String>() {	
96
			@Override
96
			@Override
97
			public void onSuccess(String resultats) {
97
			public void onSuccess(String resultats) {
98
				Map<String, String> retourImport = Util.parserRetourImportObs(resultats);
98
				Map<String, String> retourImport = Util.parserRetourImportObs(resultats);
99
				surRetourImport(retourImport);
99
				surRetourImport(retourImport);
100
			}
100
			}
101
			
101
			
102
			@Override
102
			@Override
103
			public void onFailure(String reason) {
103
			public void onFailure(String reason) {
104
				// TODO: rien à faire, si la requête échoue c'est que le serveur
104
				// 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
105
				// ne répond pas et donc on a déjà eu des problèmes en amont
106
			}
106
			}
107
		});
107
		});
108
	}
108
	}
109
	
109
	
110
	private void surRetourImport(Map<String, String> retourImport) {
110
	private void surRetourImport(Map<String, String> retourImport) {
111
		String message = "";
111
		String message = "";
112
		for (Iterator<String> iterator = retourImport.keySet().iterator(); iterator
112
		for (Iterator<String> iterator = retourImport.keySet().iterator(); iterator
113
				.hasNext();) {
113
				.hasNext();) {
114
			String indexRapport = iterator.next();
114
			String indexRapport = iterator.next();
115
			// on ne met pas de "-" dans les clés json, mais par contre nos clé i18n
115
			// 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
116
			// sont séparées par des tirets, donc on remplace
117
			String cleI18n = indexRapport.replace("_", "-");
117
			String cleI18n = indexRapport.replace("_", "-");
118
			Util.LogVersFirebug(cleI18n);
-
 
119
			String[] StrParams = {retourImport.get(indexRapport).replace("\"", "")};
118
			String[] StrParams = {retourImport.get(indexRapport).replace("\"", "")};
120
			message += Msg.get(cleI18n, StrParams)+"\n";
119
			message += Msg.get(cleI18n, StrParams)+"\n";
121
		}
120
		}
122
		com.google.gwt.user.client.Window.alert(message);	
121
		com.google.gwt.user.client.Window.alert(message);	
123
		nPan.close();
122
		nPan.close();
124
		oMediateur.obtenirDernierePageObservation();
123
		oMediateur.obtenirDernierePageObservation();
125
	}
124
	}
126
	
125
	
127
	public void afficher() {
126
	public void afficher() {
128
		nPan.show();
127
		nPan.show();
129
	}
128
	}
130
}
129
}