Rev 2671 | 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.I18n;import org.tela_botanica.client.i18n.Msg;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.dao.ListeReferentielChampsEtendusDAO;import org.tela_botanica.client.modeles.objets.Configuration;import org.tela_botanica.client.modeles.objets.ListeGroupesChampsEtendus;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.event.dom.client.ClickEvent;import com.google.gwt.event.dom.client.ClickHandler;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.HorizontalPanel;import com.google.gwt.user.client.ui.ListBox;import com.google.gwt.user.client.ui.VerticalPanel;import com.google.gwt.user.client.ui.Widget;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 implements Rafraichissable {private ObservationMediateur oMediateur = null;private Window nPan = null;private Hidden identifiant = null;private static ListeGroupesChampsEtendus cacheGroupes;ListBox listeGroupeChampsEtendus;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("450px");nPan.setWidth("450px");VerticalPanel holder = new VerticalPanel();FileUpload upload = new FileUpload();upload.setName("upload");holder.add(upload);holder.add(boutonValidation);holder.add(identifiant);listeGroupeChampsEtendus = new ListBox();listeGroupeChampsEtendus.addStyleName("liste_projets_import");if(cacheGroupes == null) {ListeReferentielChampsEtendusDAO lrceDao = new ListeReferentielChampsEtendusDAO(null);lrceDao.obtenirGroupesChampsEtendus(this);} else {this.rafraichir(cacheGroupes, false);}HTML lienVersDocumentModele = new HTML("<a href=\"#\">" + Msg.get("telecharger-modele") + "</a>");lienVersDocumentModele.addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {String groupeimport = listeGroupeChampsEtendus.getValue(listeGroupeChampsEtendus.getSelectedIndex());String urlTplImport = Configuration.getServiceBaseUrl() + "/ImportXLS/template?groupe="+groupeimport;com.google.gwt.user.client.Window.open(urlTplImport, "", "");}});HorizontalPanel holHoriz = new HorizontalPanel();holHoriz.add(lienVersDocumentModele);holHoriz.add(listeGroupeChampsEtendus);holder.add(holHoriz);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();}public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) {if(nouvelleDonnees instanceof ListeGroupesChampsEtendus) {cacheGroupes = (ListeGroupesChampsEtendus)nouvelleDonnees;listeGroupeChampsEtendus.addItem(Msg.get("import-standard"), "");for (Iterator<String> iterator = cacheGroupes.getCorrespondancesCorrespondancesIdsNomsGroupes().keySet().iterator(); iterator.hasNext();) {String cleGroupe = iterator.next();String[] strParams = {cleGroupe};listeGroupeChampsEtendus.addItem(Msg.get("import-champs-projets", strParams), cleGroupe);}}}}