437 |
aurelien |
1 |
package org.tela_botanica.client.vues.observation;
|
|
|
2 |
|
2657 |
aurelien |
3 |
import java.util.Iterator;
|
|
|
4 |
import java.util.Map;
|
|
|
5 |
|
2630 |
mathias |
6 |
import org.tela_botanica.client.i18n.Msg;
|
989 |
aurelien |
7 |
import org.tela_botanica.client.modeles.objets.Configuration;
|
1323 |
aurelien |
8 |
import org.tela_botanica.client.modeles.objets.Utilisateur;
|
437 |
aurelien |
9 |
import org.tela_botanica.client.observation.ObservationMediateur;
|
2657 |
aurelien |
10 |
import org.tela_botanica.client.util.Util;
|
2630 |
mathias |
11 |
|
2668 |
aurelien |
12 |
import com.google.gwt.core.client.Callback;
|
437 |
aurelien |
13 |
import com.google.gwt.user.client.ui.FileUpload;
|
|
|
14 |
import com.google.gwt.user.client.ui.FormPanel;
|
|
|
15 |
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent;
|
|
|
16 |
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteHandler;
|
|
|
17 |
import com.google.gwt.user.client.ui.HTML;
|
1292 |
aurelien |
18 |
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
|
481 |
david |
19 |
import com.google.gwt.user.client.ui.Hidden;
|
437 |
aurelien |
20 |
import com.google.gwt.user.client.ui.VerticalPanel;
|
|
|
21 |
import com.gwtext.client.core.EventObject;
|
|
|
22 |
import com.gwtext.client.widgets.Button;
|
|
|
23 |
import com.gwtext.client.widgets.Window;
|
|
|
24 |
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
|
|
|
25 |
|
|
|
26 |
public class FormulaireImportObservationVue {
|
|
|
27 |
|
|
|
28 |
private ObservationMediateur oMediateur = null;
|
481 |
david |
29 |
private Window nPan = null;
|
|
|
30 |
private Hidden identifiant = null;
|
437 |
aurelien |
31 |
|
481 |
david |
32 |
|
437 |
aurelien |
33 |
public FormulaireImportObservationVue(ObservationMediateur om) {
|
481 |
david |
34 |
|
437 |
aurelien |
35 |
this.oMediateur = om;
|
481 |
david |
36 |
|
2630 |
mathias |
37 |
nPan = new Window(Msg.get("import-observations"));
|
481 |
david |
38 |
identifiant = new Hidden();
|
1323 |
aurelien |
39 |
identifiant.setName("utilisateur");
|
|
|
40 |
identifiant.setValue(Utilisateur.getInstance().getIdentifiantUtilisateurConsulte());
|
437 |
aurelien |
41 |
|
|
|
42 |
final FormPanel form = new FormPanel();
|
2630 |
mathias |
43 |
final Button boutonValidation = new Button(Msg.get("envoyer"));
|
481 |
david |
44 |
|
437 |
aurelien |
45 |
form.setEncoding(FormPanel.ENCODING_MULTIPART);
|
|
|
46 |
form.setMethod(FormPanel.METHOD_POST);
|
|
|
47 |
form.setWidth("275px");
|
460 |
aurelien |
48 |
nPan.setWidth("275px");
|
437 |
aurelien |
49 |
|
|
|
50 |
VerticalPanel holder = new VerticalPanel();
|
|
|
51 |
|
|
|
52 |
FileUpload upload = new FileUpload();
|
|
|
53 |
upload.setName("upload");
|
|
|
54 |
holder.add(upload);
|
|
|
55 |
holder.add(boutonValidation);
|
481 |
david |
56 |
holder.add(identifiant);
|
454 |
aurelien |
57 |
|
2630 |
mathias |
58 |
HTML lienVersDocumentModele = new HTML("<a href=\"modele_import.xls\">" + Msg.get("telecharger-modele") + "</a>");
|
454 |
aurelien |
59 |
holder.add(lienVersDocumentModele);
|
2668 |
aurelien |
60 |
holder.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
|
437 |
aurelien |
61 |
boutonValidation.addListener(new ButtonListenerAdapter() {
|
|
|
62 |
|
1292 |
aurelien |
63 |
@Override
|
437 |
aurelien |
64 |
public void onClick(Button button, EventObject e) {
|
|
|
65 |
form.submit();
|
|
|
66 |
}
|
|
|
67 |
});
|
|
|
68 |
|
|
|
69 |
form.add(holder);
|
|
|
70 |
|
|
|
71 |
nPan.add(form);
|
1672 |
aurelien |
72 |
form.setAction(Configuration.getServiceBaseUrl() + "/ImportXLS");
|
437 |
aurelien |
73 |
|
2668 |
aurelien |
74 |
form.addSubmitCompleteHandler(new SubmitCompleteHandler() {
|
1292 |
aurelien |
75 |
@Override
|
437 |
aurelien |
76 |
public void onSubmitComplete(SubmitCompleteEvent event) {
|
2668 |
aurelien |
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
|
|
|
79 |
// appelle manuellement les stats d'upload en lecture
|
|
|
80 |
if(event.getResults() != null) {
|
|
|
81 |
try {
|
|
|
82 |
Map<String, String> retourImport = Util.parserRetourImportObs(event.getResults());
|
|
|
83 |
surRetourImport(retourImport);
|
|
|
84 |
} catch (Exception e) {
|
|
|
85 |
demanderStatsUpload();
|
|
|
86 |
}
|
|
|
87 |
} else {
|
|
|
88 |
demanderStatsUpload();
|
2657 |
aurelien |
89 |
}
|
437 |
aurelien |
90 |
}
|
|
|
91 |
});
|
481 |
david |
92 |
}
|
|
|
93 |
|
2668 |
aurelien |
94 |
private void demanderStatsUpload() {
|
|
|
95 |
Util.envoyerRequeteStatsUpload(new Callback<String, String>() {
|
|
|
96 |
@Override
|
|
|
97 |
public void onSuccess(String resultats) {
|
|
|
98 |
Map<String, String> retourImport = Util.parserRetourImportObs(resultats);
|
|
|
99 |
surRetourImport(retourImport);
|
|
|
100 |
}
|
|
|
101 |
|
|
|
102 |
@Override
|
|
|
103 |
public void onFailure(String reason) {
|
|
|
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
|
|
|
106 |
}
|
|
|
107 |
});
|
|
|
108 |
}
|
|
|
109 |
|
|
|
110 |
private void surRetourImport(Map<String, String> retourImport) {
|
|
|
111 |
String message = "";
|
|
|
112 |
for (Iterator<String> iterator = retourImport.keySet().iterator(); iterator
|
|
|
113 |
.hasNext();) {
|
|
|
114 |
String indexRapport = iterator.next();
|
|
|
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
|
|
|
117 |
String cleI18n = indexRapport.replace("_", "-");
|
|
|
118 |
Util.LogVersFirebug(cleI18n);
|
|
|
119 |
String[] StrParams = {retourImport.get(indexRapport).replace("\"", "")};
|
|
|
120 |
message += Msg.get(cleI18n, StrParams)+"\n";
|
|
|
121 |
}
|
|
|
122 |
com.google.gwt.user.client.Window.alert(message);
|
|
|
123 |
nPan.close();
|
|
|
124 |
oMediateur.obtenirDernierePageObservation();
|
|
|
125 |
}
|
|
|
126 |
|
481 |
david |
127 |
public void afficher() {
|
437 |
aurelien |
128 |
nPan.show();
|
|
|
129 |
}
|
|
|
130 |
}
|