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