Java tutorial
/* * 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)); } }); } } }