Rev 2668 | Blame | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues.observation;import java.util.Iterator;import java.util.Map;import org.tela_botanica.client.i18n.Msg;import org.tela_botanica.client.modeles.objets.Configuration;import org.tela_botanica.client.modeles.objets.Utilisateur;import org.tela_botanica.client.observation.ObservationMediateur;import org.tela_botanica.client.util.Util;import com.google.gwt.core.client.Callback;import com.google.gwt.user.client.ui.FileUpload;import com.google.gwt.user.client.ui.FormPanel;import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent;import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteHandler;import com.google.gwt.user.client.ui.HTML;import com.google.gwt.user.client.ui.HasHorizontalAlignment;import com.google.gwt.user.client.ui.Hidden;import com.google.gwt.user.client.ui.VerticalPanel;import com.gwtext.client.core.EventObject;import com.gwtext.client.widgets.Button;import com.gwtext.client.widgets.Window;import com.gwtext.client.widgets.event.ButtonListenerAdapter;public class FormulaireImportObservationVue {private ObservationMediateur oMediateur = null;private Window nPan = null;private Hidden identifiant = null;public FormulaireImportObservationVue(ObservationMediateur om) {this.oMediateur = om;nPan = new Window(Msg.get("import-observations"));identifiant = new Hidden();identifiant.setName("utilisateur");identifiant.setValue(Utilisateur.getInstance().getIdentifiantUtilisateurConsulte());final FormPanel form = new FormPanel();final Button boutonValidation = new Button(Msg.get("envoyer"));form.setEncoding(FormPanel.ENCODING_MULTIPART);form.setMethod(FormPanel.METHOD_POST);form.setWidth("275px");nPan.setWidth("275px");VerticalPanel holder = new VerticalPanel();FileUpload upload = new FileUpload();upload.setName("upload");holder.add(upload);holder.add(boutonValidation);holder.add(identifiant);HTML lienVersDocumentModele = new HTML("<a href=\"modele_import.xls\">" + Msg.get("telecharger-modele") + "</a>");holder.add(lienVersDocumentModele);holder.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);boutonValidation.addListener(new ButtonListenerAdapter() {@Overridepublic void onClick(Button button, EventObject e) {form.submit();}});form.add(holder);nPan.add(form);form.setAction(Configuration.getServiceBaseUrl() + "/ImportXLS");form.addSubmitCompleteHandler(new SubmitCompleteHandler() {@Overridepublic void onSubmitComplete(SubmitCompleteEvent event) {// Certains client ne savent pas lire le retour d'upload correctement// notamment à cause des requêtes CORS, donc en cas de problème on// appelle manuellement les stats d'upload en lectureif(event.getResults() != null) {try {Map<String, String> retourImport = Util.parserRetourImportObs(event.getResults());surRetourImport(retourImport);} catch (Exception e) {demanderStatsUpload();}} else {demanderStatsUpload();}}});}private void demanderStatsUpload() {Util.envoyerRequeteStatsUpload(new Callback<String, String>() {@Overridepublic void onSuccess(String resultats) {Map<String, String> retourImport = Util.parserRetourImportObs(resultats);surRetourImport(retourImport);}@Overridepublic void onFailure(String reason) {// TODO: rien à faire, si la requête échoue c'est que le serveur// ne répond pas et donc on a déjà eu des problèmes en amont}});}private void surRetourImport(Map<String, String> retourImport) {String message = "";for (Iterator<String> iterator = retourImport.keySet().iterator(); iterator.hasNext();) {String indexRapport = iterator.next();// on ne met pas de "-" dans les clés json, mais par contre nos clé i18n// sont séparées par des tirets, donc on remplaceString cleI18n = indexRapport.replace("_", "-");String[] StrParams = {retourImport.get(indexRapport).replace("\"", "")};message += Msg.get(cleI18n, StrParams)+"\n";}com.google.gwt.user.client.Window.alert(message);nPan.close();oMediateur.obtenirDernierePageObservation();}public void afficher() {nPan.show();}}