Here the source code

package vdo.archeo.page;

import java.util.ArrayList;
import java.util.List;

import org.apache.click.control.ActionLink;
import org.apache.click.control.Form;
import org.apache.click.control.Label;
import org.apache.click.control.Option;
import org.apache.click.control.Select;
import org.apache.click.control.Submit;
import org.apache.click.control.TextField;
import org.apache.click.extras.control.AutoCompleteTextField;
import org.apache.click.extras.control.PageSubmit;
import org.apache.click.extras.control.RegexField;
import org.apache.click.util.Bindable;

import vdo.archeo.hibernate.AgglocomDAO;
import vdo.archeo.hibernate.Biblio;
import vdo.archeo.hibernate.BiblioDAO;
import vdo.archeo.hibernate.CantonDAO;
import vdo.archeo.hibernate.Commune;
import vdo.archeo.hibernate.CommuneDAO;
import vdo.archeo.hibernate.DatationDAO;
import vdo.archeo.hibernate.OccupationDAO;
import vdo.archeo.hibernate.Site;
import vdo.archeo.hibernate.SiteDAO;
import vdo.archeo.hibernate.TerritoireDAO;
import vdo.archeo.hibernate.TypapprocheDAO;
import vdo.archeo.hibernate.TypsiteDAO;
import vdo.archeo.hibernate.Utilisateur;

@SuppressWarnings("serial")
public class SearchSitesPage extends BorderPage {

        @Bindable protected String title = "Carte Archéologique du Val d'Oise";
        @Bindable protected Form formSearch = new Form();
        @Bindable protected Site site = new Site();
        @Bindable protected int sizeListe = 0 ;
        
        private List<Site> sites = null;

        private Select typsiteSelect     = new Select("type","Type de site");
        private Select territoireSelect  = new 
Select("territoire","Territoire");
        private Select cantonSelect      = new Select("canton","Canton");
        private Select agglocomSelect    = new 
Select("agglocom","Agglo/Communes");
        private Select datationSelect    = new Select("datation","Datation");
        private Select occupationSelect  = new 
Select("occupation","Occupation");
        private Select typapprocheSelect = new Select("typapproche.id","Type 
d'approche");
        private RegexField numero        = new RegexField("numero","N° 
Site",15);
        private TextField datation2 = new TextField("datation2","2ème 
Datation",25);
        private TextField lieudit   = new TextField("lieudit","Lieu dit",25);
        private TextField adresse   = new TextField("adresse","Adresse",25);
        private TextField nom       = new TextField("nom","Nom usuel",25);
        private TextField motcle1    = new TextField("motcle1","Mots clés 
Immobilier",25);
        private TextField motcle2    = new TextField("motcle2","Mots clés 
Mobilier",25);
        private TextField motcle3    = new TextField("description","Mots clés 
Description",25);
        private TextField conserv   = new TextField("conserv","Lieu de 
conservation",25);
        private TextField titulaire = new 
TextField("operation.auteur","Titulaire",25);
        private TextField annee     = new 
TextField("operation.annee","Année",10);

        private AutoCompleteTextField commune = new 
AutoCompleteTextField("commune.libCommune","Commune",30) {
            
                public List<String> getAutoCompleteList(String criteria) {
                List<Commune> communes = new 
CommuneDAO().findByLibLike(criteria);

                List<String> libCommunes = new ArrayList<String>();
                
                for (Commune commune : communes) {
                                libCommunes.add(commune.getLibCommune());
                        }
                return libCommunes;
            }
         };
         
        private AutoCompleteTextField refBiblio = new 
AutoCompleteTextField("biblio.reference","Vedette Biblio",40) {
             
                 public List<String> getAutoCompleteList(String criteria) {
                 List<Biblio> biblios = new BiblioDAO().findByRefLike(criteria);

                 List<String> references = new ArrayList<String>();
                
                 for (Biblio biblio : biblios) {
                                references.add(biblio.getReference());
                 }
                 return references;
            }
         };
         
        private String nomSearch = "";
        private String typsiteSearch   = "";
        private String datationSearch  = "";
        private String datation2Search = "";
        private String terrSearch      = "";
        private String canSearch       = "";
        private String comSearch       = "";
        private String occupSearch     = "";
        private String numSearch       = "";
        private String lieuditSearch   = "";
        private String adresseSearch   = "";
        private String refBiblioSearch = "";
        private String motcle1Search   = "";
        private String motcle2Search   = "";
        private String motcle3Search   = "";
        private String conservSearch   = "";
        private String anneeSearch     = "";
        private String tituSearch      = "";
        private String typappSearch    = "";
        private String agglocomSearch  = "";

    public SearchSitesPage() {

        //Formulaire de recherche
        formSearch.setColumns(3);
        formSearch.setButtonAlign("center");
        formSearch.setLabelAlign("left");
        formSearch.setLabelsPosition("top");

                //Territoire
                formSearch.add(territoireSelect);

                //Canton
                formSearch.add(cantonSelect);

                //Commune
                commune.setMaxLength(50);
                
commune.setAttribute("onfocus","this.value=this.value.toUpperCase();");
        formSearch.add(commune);
        
                //Agglomération de communes
                formSearch.add(agglocomSelect);
        
                //N° de site
        numero.setMaxLength(10);
        numero.setMinLength(4);
        //numero.setPattern(patternNumero);
        formSearch.add(numero);
        
        //Nom usuel
        nom.setMaxLength(50);
        formSearch.add(nom);

                //Lieu dit
        lieudit.setMaxLength(50);
        formSearch.add(lieudit);

                //Adresse
        adresse.setMaxLength(50);
        formSearch.add(adresse,2);
        
                //Mots clés Immobilier
                motcle1.setMaxLength(50);
        formSearch.add(motcle1);
        
                //Mots clés Mobilier
                motcle2.setMaxLength(50);
        formSearch.add(motcle2);
        
                //Mots clés Description
                motcle3.setMaxLength(50);
        formSearch.add(motcle3);
        
        //Label Mot clés
        Label label = new Label("<i>Les mot clés multiples doivent être séparés 
par une virgule</i>");
        formSearch.add(label,3);
        
                //Datation
                formSearch.add(datationSelect);

                //Datation2
        datation2.setMaxLength(50);
        formSearch.add(datation2);
        
        //Année
                annee.setMaxLength(20);
        formSearch.add(annee);
        
                //Type de site
                formSearch.add(typsiteSelect);
 
                //Occupation
                formSearch.add(occupationSelect);       
        
        //Type d'approche
        formSearch.add(typapprocheSelect);
        
        //Titulaire
                titulaire.setMaxLength(50);
        formSearch.add(titulaire);      
        
        //Vedette Biblio
        refBiblio.setMaxLength(50);
        formSearch.add(refBiblio);
        
        //Lieu de conservation
        conserv.setMaxLength(50);
        formSearch.add(conserv,2);

        Submit searchButton = new Submit(" Rechercher ");
        searchButton.setAttribute("class","button");
        formSearch.add(searchButton);

        //ActionButton clearButton = new ActionButton("Effacer les critères", 
this, "onClear");
        ActionLink clearLink = new ActionLink("Effacer les critères", this, 
"onClear");
        //clearLink.setAttribute("class","button");
        formSearch.add(clearLink);
        
        Submit printButton = new PageSubmit("Sites par Commune", 
SitesCommunePage.class);        
        printButton.setAttribute("class","button");
        formSearch.add(printButton);
    }

    public void buildSelects() {
        typsiteSelect.add(new Option(0,"TYPE"));
        typsiteSelect.addAll(new TypsiteDAO().findAll(),"id","libelle");

                datationSelect.add(new Option(0,"DATATION"));
                datationSelect.addAll(new 
DatationDAO().findAll(),"id","libelle");

                occupationSelect.add(new Option(0,"OCCUPATION"));
                occupationSelect.addAll(new 
OccupationDAO().findAll(),"libelle","libelle");

                territoireSelect.add(new Option(0,"TERRITOIRE"));
                territoireSelect.addAll(new 
TerritoireDAO().findAll(),"numTerritoire","libTerritoire");
                
        typapprocheSelect.add(new Option(0,"TYPE APPROCHE"));
        typapprocheSelect.addAll(new TypapprocheDAO().findAll(),"id","libelle");
        
        agglocomSelect.add(new Option(0,"AGGLO/COMMUNES"));
        agglocomSelect.addAll(new 
AgglocomDAO().findAll(),"numAgglocom","libAgglocom");

                cantonSelect.add(new Option(0,"CANTON"));
                cantonSelect.addAll(new 
CantonDAO().findAll(),"numCanton","libCanton");   
    }    

    public boolean onClear() {
        formSearch.clearValues();
        return true;
    }
       
    public void onInit() {

        super.onInit();

        buildSelects(); 
        
        if (getContext().hasSessionAttribute("utilisateur"))
                        utilisateur = 
(Utilisateur)getContext().getSessionAttribute("utilisateur");
        
        if (!utilisateur.getRole().equals("Utilisateur")) {
                Submit addButton = new PageSubmit("Ajouter un Site", 
AddSitePage.class);
                addButton.setAttribute("class","button");
                formSearch.add(addButton);
        }
    }

    public void onSearch() {

        nomSearch       = nom.getValue().trim();
        typsiteSearch   = typsiteSelect.getValue();
        datationSearch  = datationSelect.getValue();
        datation2Search = datation2.getValue().trim();
        terrSearch      = territoireSelect.getValue();
        canSearch       = cantonSelect.getValue();
        comSearch       = commune.getValue();
        occupSearch     = occupationSelect.getValue();
        numSearch       = numero.getValue().trim();
        lieuditSearch   = lieudit.getValue().trim();
        adresseSearch   = adresse.getValue().trim();
        refBiblioSearch = refBiblio.getValue().trim();
        motcle1Search    = motcle1.getValue().trim();
        motcle2Search    = motcle2.getValue().trim();
        motcle3Search    = motcle3.getValue().trim();
        conservSearch   = conserv.getValue().trim();
        anneeSearch     = annee.getValue().trim();
        tituSearch      = titulaire.getValue().trim();
        typappSearch    = typapprocheSelect.getValue();
        agglocomSearch  = agglocomSelect.getValue();

        //Mise en session des critères renseignés si recherche
        if (getContext().isPost()) {

            if (typsiteSearch.equals("0"))  typsiteSearch  = "";
                if (datationSearch.equals("0")) datationSearch = "";
            if (terrSearch.equals("0"))     terrSearch     = "";
            if (canSearch.equals("0"))      canSearch      = "";
                //if (comSearch.equals("0"))    comSearch      = "";
                if (occupSearch.equals("0"))    occupSearch    = "";
                if (typappSearch.equals("0"))   typappSearch   = "";
                if (agglocomSearch.equals("0")) agglocomSearch = "";

            getContext().setSessionAttribute("nom",nomSearch);
            getContext().setSessionAttribute("typsite",typsiteSearch);
            getContext().setSessionAttribute("datation",datationSearch);
            getContext().setSessionAttribute("datation2",datation2Search);
            getContext().setSessionAttribute("territoire",terrSearch);
            getContext().setSessionAttribute("canton",canSearch);
            getContext().setSessionAttribute("commune",comSearch);
            getContext().setSessionAttribute("occupation",occupSearch);
            getContext().setSessionAttribute("numero",numSearch);
            getContext().setSessionAttribute("lieudit",lieuditSearch);
            getContext().setSessionAttribute("adresse",adresseSearch);
            getContext().setSessionAttribute("refBiblio",refBiblioSearch);
            getContext().setSessionAttribute("motcle1",motcle1Search);
            getContext().setSessionAttribute("motcle2",motcle2Search);
            getContext().setSessionAttribute("motcle3",motcle3Search);
            getContext().setSessionAttribute("conserv",conservSearch);
            getContext().setSessionAttribute("annee",anneeSearch);
            getContext().setSessionAttribute("titulaire",tituSearch);
            getContext().setSessionAttribute("typapp",typappSearch);
            getContext().setSessionAttribute("agglocom",agglocomSearch);
        }
        //Récupération des critères de recherche en session s'ils existent
        else {
                if (getContext().hasSessionAttribute("nom")) {
                        nomSearch = 
(String)getContext().getSessionAttribute("nom");
                        nom.setValue(nomSearch);
                }
                if (getContext().hasSessionAttribute("typsite")) {
                        typsiteSearch = 
(String)getContext().getSessionAttribute("typsite");
                        typsiteSelect.setValue(typsiteSearch);
                } else typsiteSearch = "";
                if (getContext().hasSessionAttribute("datation")) {
                        datationSearch = 
(String)getContext().getSessionAttribute("datation");
                        datationSelect.setValue(datationSearch);
                } else datationSearch = "";
                if (getContext().hasSessionAttribute("datation2")) {
                        datation2Search = 
(String)getContext().getSessionAttribute("datation2");
                        datation2.setValue(datation2Search);
                } else datation2Search = "";
                if (getContext().hasSessionAttribute("territoire")) {
                        terrSearch = 
(String)getContext().getSessionAttribute("territoire");
                        territoireSelect.setValue(terrSearch);
                } else terrSearch = "";
                if (getContext().hasSessionAttribute("canton")) {
                        canSearch = 
(String)getContext().getSessionAttribute("canton");
                        //communeSelect.setValue(comSearch);
                        cantonSelect.setValue(canSearch);
                } else canSearch = "";
                if (getContext().hasSessionAttribute("commune")) {
                        comSearch = 
(String)getContext().getSessionAttribute("commune");
                        //communeSelect.setValue(comSearch);
                        commune.setValue(comSearch);
                } else comSearch = "";
                if (getContext().hasSessionAttribute("occupation")) {
                        occupSearch = 
(String)getContext().getSessionAttribute("occupation");
                        occupationSelect.setValue(occupSearch);
                } else occupSearch = "";
                if (getContext().hasSessionAttribute("numero")) {
                        numSearch = 
(String)getContext().getSessionAttribute("numero");
                        numero.setValue(numSearch);
                }
                if (getContext().hasSessionAttribute("lieudit")) {
                        lieuditSearch = 
(String)getContext().getSessionAttribute("lieudit");
                        lieudit.setValue(lieuditSearch);
                }
                if (getContext().hasSessionAttribute("adresse")) {
                        adresseSearch = 
(String)getContext().getSessionAttribute("adresse");
                        adresse.setValue(adresseSearch);
                }
                if (getContext().hasSessionAttribute("refBiblio")) {
                        refBiblioSearch = 
(String)getContext().getSessionAttribute("refBiblio");
                        refBiblio.setValue(refBiblioSearch);
                }
                if (getContext().hasSessionAttribute("motcle1")) {
                        motcle1Search = 
(String)getContext().getSessionAttribute("motcle1");
                        motcle1.setValue(motcle1Search);
                }
                if (getContext().hasSessionAttribute("motcle2")) {
                        motcle2Search = 
(String)getContext().getSessionAttribute("motcle2");
                        motcle2.setValue(motcle2Search);
                }
                if (getContext().hasSessionAttribute("motcle3")) {
                        motcle3Search = 
(String)getContext().getSessionAttribute("motcle3");
                        motcle3.setValue(motcle3Search);
                }
                if (getContext().hasSessionAttribute("conserv")) {
                        conservSearch = 
(String)getContext().getSessionAttribute("conserv");
                        conserv.setValue(conservSearch);
                }
                if (getContext().hasSessionAttribute("annee")) {
                        anneeSearch = 
(String)getContext().getSessionAttribute("annee");
                        annee.setValue(anneeSearch);
                }
                if (getContext().hasSessionAttribute("titulaire")) {
                        tituSearch = 
(String)getContext().getSessionAttribute("titulaire");
                        titulaire.setValue(tituSearch);
                }
                if (getContext().hasSessionAttribute("typapp")) {
                        typappSearch = 
(String)getContext().getSessionAttribute("typapp");
                        typapprocheSelect.setValue(typappSearch);
                } else typappSearch = "";
                if (getContext().hasSessionAttribute("agglocom")) {
                        agglocomSearch = 
(String)getContext().getSessionAttribute("agglocom");
                        agglocomSelect.setValue(agglocomSearch);
                } else agglocomSearch = "";
        }
    }
    
    public void onPost() {
        onSearch();
        
                sites = new SiteDAO().findByCriteria(nomSearch, typsiteSearch, 
datationSearch, datation2Search, terrSearch, canSearch, 
                                 agglocomSearch, comSearch, occupSearch, 
numSearch, lieuditSearch, adresseSearch, 
                                 refBiblioSearch, motcle1Search, motcle2Search, 
motcle3Search,conservSearch, anneeSearch, tituSearch, typappSearch);            
                
                sizeListe = sites.size();        

                if (sites.isEmpty()) 
                        formSearch.setError("<strong>Aucun site ne correspond à 
votre recherche</strong>");
                else {
                        //Mise en session de la liste des Sites
                        getContext().setSessionAttribute("sites",sites);

                        //Redirection vers la liste des sites
                        setRedirect(SitesPage.class);
                }
        }
    
    public void onGet() {
        onSearch();
    } 

    public boolean onSecurityCheck() {

        if (getContext().hasSession())
            return true;
        else {
            setRedirect(LoginPage.class);
            return false;
        }
    }
}




Reply via email to