com.asptt.plongee.resa.wicket.page.admin.fichesecurite.SaisieFSAjoutPlongeurPanel.java Source code

Java tutorial

Introduction

Here is the source code for com.asptt.plongee.resa.wicket.page.admin.fichesecurite.SaisieFSAjoutPlongeurPanel.java

Source

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.asptt.plongee.resa.wicket.page.admin.fichesecurite;

import com.asptt.plongee.resa.exception.ResaException;
import com.asptt.plongee.resa.mail.PlongeeMail;
import com.asptt.plongee.resa.model.Adherent;
import com.asptt.plongee.resa.model.FicheSecurite;
import com.asptt.plongee.resa.model.NavigationOriginePage;
import com.asptt.plongee.resa.model.Plongee;
import com.asptt.plongee.resa.wicket.ResaSession;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Logger;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
import org.apache.wicket.util.string.Strings;
import org.wicketstuff.objectautocomplete.AutoCompletionChoicesProvider;
import org.wicketstuff.objectautocomplete.ObjectAutoCompleteBuilder;
import org.wicketstuff.objectautocomplete.ObjectAutoCompleteField;
import org.wicketstuff.objectautocomplete.ObjectAutoCompleteRenderer;

/**
 *
 * @author ecus6396
 */
public class SaisieFSAjoutPlongeurPanel extends Panel {

    private List<Adherent> list;
    private final Logger logger = Logger.getLogger(getClass());
    FeedbackPanel feedback = new FeedbackPanel("feedback");
    private final FicheSecurite fs;
    //    private Plongee plongee;
    private final Date dateMini;
    private final Date dateMaxi;
    private final NavigationOriginePage origPage;

    public SaisieFSAjoutPlongeurPanel(NavigationOriginePage originePage, String id, Date dateMin, Date dateMax) {
        super(id);
        dateMini = dateMin;
        dateMaxi = dateMax;
        origPage = originePage;
        //Rcupration de la fiche de securite dans la session
        fs = ResaSession.get().getFicheSecurite();
        //le feedback panel pour les message d'erreur
        feedback.setOutputMarkupId(true);
        add(feedback);

        add(new PlongeursForm("plongeursForm"));
    }

    public List<Adherent> getMatchingAdherents(String search) {
        if (Strings.isEmpty(search)) {
            List<Adherent> emptyList = Collections.emptyList();
            return emptyList;
        }

        if (list == null) {
            list = ResaSession.get().getAdherentService().rechercherPlongeurs();
        }

        ArrayList<Adherent> newList = new ArrayList<Adherent>();
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getNom().startsWith(search.toUpperCase())) {
                newList.add(list.get(i));
            }
        }
        return newList;
    }

    class PlongeursForm extends Form {

        private static final long serialVersionUID = 5529259540931669786L;
        ObjectAutoCompleteField<Adherent, String> autocompleteField;

        public PlongeursForm(String id) {
            super(id);

            //init de la plonge
            final Plongee plongee = ResaSession.get().getPlongeeService().rechercherPlongeeParId(fs.getIdPlongee());

            AutoCompletionChoicesProvider<Adherent> provider = new AutoCompletionChoicesProvider<Adherent>() {
                private static final long serialVersionUID = 1L;

                @Override
                public Iterator<Adherent> getChoices(String input) {
                    return getMatchingAdherents(input).iterator();
                }
            };

            ObjectAutoCompleteRenderer<Adherent> renderer = new ObjectAutoCompleteRenderer<Adherent>() {
                private static final long serialVersionUID = 1L;

                @Override
                protected String getIdValue(Adherent adherent) {
                    return adherent.getNumeroLicense();
                }

                @Override
                protected String getTextValue(Adherent adherent) {
                    String texteAffiche = adherent.getNomCompletFS() + " " + (adherent.getAptitudeFS());
                    return texteAffiche;
                }
            };

            ObjectAutoCompleteBuilder<Adherent, String> builder = new ObjectAutoCompleteBuilder<Adherent, String>(
                    provider);
            builder.autoCompleteRenderer(renderer);
            builder.searchLinkText("Autre recherche");
            builder.width(200);

            autocompleteField = builder.build("numeroLicense", new Model<String>());
            final TextField<String> adherent = autocompleteField.getSearchTextField();
            adherent.setRequired(true);

            add(autocompleteField);

            add(new AjaxButton("valider") {
                @Override
                protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                    // Rcupration du plongeur avec une requete en base
                    Adherent plongeur = ResaSession.get().getAdherentService()
                            .rechercherAdherentParIdentifiantTous(autocompleteField.getConvertedInput());
                    try {
                        // Inscription du plongeur
                        ResaSession.get().getPlongeeService().inscrireAdherent(plongee, plongeur,
                                PlongeeMail.PAS_DE_MAIL);
                        //On remet  jour la liste des plongeurs  inscrire et on la met es session
                        ResaSession.get().setListPlongeursAInscrire(
                                ResaSession.get().getPlongeeService().initListPlongeursAInscrire(fs));
                        // Maj du nombre de plongeurs dans la fs
                        fs.setNbPlongeurs(plongee.getParticipants().size());
                        //retour sur la page de saisie de la fiche de securite
                        setResponsePage(new SaisieFicheSecurite(origPage, dateMini, dateMaxi));
                    } catch (ResaException ex) {
                        error("Inscription impossible");
                        logger.warn("Ajout plongeur sur FS impossible" + ex.getMessage());
                    }
                }

                @Override
                protected void onError(AjaxRequestTarget target, Form<?> form) {
                    target.addComponent(feedback);
                }
            });

            add(new Link("cancel") {
                @Override
                public void onClick() {
                    setResponsePage(new SaisieFicheSecurite(origPage, dateMini, dateMaxi));
                }
            });

        }
    }
}