Java tutorial
package com.asptt.plongee.resa.wicket.page.admin.adherent; import com.asptt.plongee.resa.exception.TechnicalException; import com.asptt.plongee.resa.model.Adherent; import com.asptt.plongee.resa.model.Aptitude; import com.asptt.plongee.resa.model.DetachableAdherentModel; import com.asptt.plongee.resa.model.Encadrement; import com.asptt.plongee.resa.model.NiveauAutonomie; import com.asptt.plongee.resa.util.FocusOnLoadBehavior; import com.asptt.plongee.resa.wicket.ResaSession; import com.asptt.plongee.resa.wicket.page.AccueilPage; import com.asptt.plongee.resa.wicket.page.TemplatePage; import com.asptt.plongee.resa.wicket.page.admin.adherent.contact.ContactPanel; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.List; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.form.AjaxButton; import org.apache.wicket.authorization.strategies.role.annotations.AuthorizeInstantiation; import org.apache.wicket.datetime.StyleDateConverter; import org.apache.wicket.datetime.markup.html.form.DateTextField; import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; import org.apache.wicket.extensions.yui.calendar.DatePicker; import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.ListMultipleChoice; import org.apache.wicket.markup.html.form.RequiredTextField; import org.apache.wicket.markup.html.form.TextArea; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.html.panel.FeedbackPanel; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.validation.validator.EmailAddressValidator; import org.apache.wicket.validation.validator.PatternValidator; import org.apache.wicket.validation.validator.StringValidator; @AuthorizeInstantiation("ADMIN") public class CreerAdherent extends TemplatePage { static FeedbackPanel feedback = new FeedbackPanel("feedback"); private static ModalWindow modalDuplicateLicense; public CreerAdherent() { setPageTitle("Creer adherent"); // Constructeur du formulaire et du feedback panel pour renvoyer des messages sur la page feedback.setOutputMarkupId(true); add(feedback); modalDuplicateLicense = new ModalWindow("modalDuplicateLicense"); modalDuplicateLicense.setTitle("Reinitialisation adherent inactif"); modalDuplicateLicense.setResizable(false); modalDuplicateLicense.setInitialWidth(30); modalDuplicateLicense.setInitialHeight(15); modalDuplicateLicense.setWidthUnit("em"); modalDuplicateLicense.setHeightUnit("em"); modalDuplicateLicense.setCssClassName(ModalWindow.CSS_CLASS_BLUE); add(modalDuplicateLicense); add(new CreerAdherentForm("creerAdherentForm")); } public static ModalWindow getModalDuplicateLicense() { return modalDuplicateLicense; } private static class CreerAdherentForm extends Form { public CreerAdherentForm(String creerAdherentForm) { super(creerAdherentForm); CompoundPropertyModel model = new CompoundPropertyModel(new Adherent()); setModel(model); add(new RequiredTextField<String>("nom").add(new FocusOnLoadBehavior())); add(new RequiredTextField<String>("prenom")); add(new RequiredTextField<String>("numeroLicense", String.class).add(new PatternValidator("\\d{6}"))); // numro de tlphone au bon format (10 caractres numriques) RequiredTextField<String> telephone = new RequiredTextField<String>("telephone", String.class); telephone.add(StringValidator.ExactLengthValidator.exactLength(10)); telephone.add(new PatternValidator("\\d{10}")); add(telephone); add(new RequiredTextField<String>("mail").add(EmailAddressValidator.getInstance())); // Ajout de la liste des niveaux List<NiveauAutonomie> niveaux = new ArrayList<NiveauAutonomie>(); niveaux.addAll(Arrays.asList(NiveauAutonomie.values())); add(new DropDownChoice("niveau", niveaux).setNullValid(true)); // Ajout de la liste des aptitudes List<Aptitude> aptitudes = new ArrayList<Aptitude>(); aptitudes.addAll(Arrays.asList(Aptitude.values())); add(new DropDownChoice("aptitude", aptitudes)); // Ajout de la liste des niveaux d'encadrement List<Encadrement> encadrement = new ArrayList<Encadrement>(); encadrement.addAll(Arrays.asList(Encadrement.values())); add(new DropDownChoice("encadrement", encadrement)); // Ajout de la checkbox pilote add(new CheckBox("pilote", model.bind("pilote"))); //Ajout des roles List<String> roles = Arrays.asList(new String[] { "ADMIN", "USER", "SECRETARIAT", "DP", "ENCADRANT" }); add(new ListMultipleChoice<String>("roles", roles)); //Ajout du champs date du certificat medical DateTextField dateCMTextFiled = new DateTextField("dateCM", new PropertyModel<Date>(model, "dateCM"), new StyleDateConverter("S-", true)); dateCMTextFiled.setRequired(true); add(dateCMTextFiled); dateCMTextFiled.add(new DatePicker()); Date dateDuJour = new Date(); GregorianCalendar gc = new GregorianCalendar(); gc.setTime(dateDuJour); int anneeCourante = gc.get(Calendar.YEAR); int nextAnnee = anneeCourante + 1; List<Integer> annees = new ArrayList<Integer>(); annees.add(anneeCourante); annees.add(nextAnnee); DropDownChoice<Integer> listAnnee = new DropDownChoice<Integer>("anneeCotisation", annees); listAnnee.setRequired(true); add(listAnnee); // Ajout de la checkbox TIV add(new CheckBox("tiv", model.bind("tiv"))); //commentaire TextArea<String> textareaInput = new TextArea<String>("commentaire"); textareaInput.add(StringValidator.ExactLengthValidator.maximumLength(45)); add(textareaInput); ContactPanel cuPanel = new ContactPanel("cuPanel", model); add(cuPanel); add(new AjaxButton("validAdherent") { @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { Adherent adherent = (Adherent) form.getModelObject(); try { ResaSession.get().getAdherentService().creerAdherent(adherent); setResponsePage(AccueilPage.class); } catch (TechnicalException e) { StringBuilder bufMsg = new StringBuilder(e.getMessage()); bufMsg.indexOf("Duplicate"); if (bufMsg.indexOf("Duplicate") >= 0) { Adherent dupliAdh = ResaSession.get().getAdherentService() .rechercherAdherentParIdentifiant(adherent.getNumeroLicense()); if (!dupliAdh.isActif()) { IModel<Adherent> adh = new DetachableAdherentModel(dupliAdh); replaceModalWindowDuplicateLicense(target, adh); } } else { e.printStackTrace(); error(e.getKey()); } } } // L'implmentation de cette mthode est ncessaire pour voir // les messages d'erreur dans le feedBackPanel @Override protected void onError(AjaxRequestTarget target, Form<?> form) { target.addComponent(feedback); } }); add(new Link("cancel") { @Override public void onClick() { setResponsePage(AccueilPage.class); } }); } } public static void replaceModalWindowDuplicateLicense(AjaxRequestTarget target, IModel<Adherent> adherent) { modalDuplicateLicense .setContent(new GererDuplicateLicensePanel(modalDuplicateLicense.getContentId(), adherent)); modalDuplicateLicense.setTitle("Reinitialisation adherent inactif"); modalDuplicateLicense.setUseInitialHeight(true); // Pour viter le message de disparition de la fenetre lors de la validation target.appendJavascript("Wicket.Window.unloadConfirmation = false;"); } }