Créer

    La configuration des formulaires de recherches passe par des fichiers XML. Utilisez l’éditeur interne pour la rédaction du fichier.


    L’éditeur est accessible via le menu Administration > Configuration > XML :

    • Cliquez sur le + pour créer un nouveau fichier XML,
    • Dans le premier champ, saisissez Recherche de dossiers clients pour nommer le fichier XML,
    • Saisissez le code XML décrit dans la suite du tutoriel,
    • Cliquez sur le bouton Sauvegarder.

    Identifiant

    La première chose à faire est de donner un identifiant unique dossierClientSearch à la recherche. Cet identifiant permettra d’appeler facilement cette recherche.


    Cet identifiant permettra également de faire l’association entre le formulaire de recherche et l’équipe qui y aura accès.


    	<bean id="dossierClientSearch" class="com.flower.docs.gui.client.search.ComponentSearchPresenter" scope="prototype">	  
    	</bean>


    Note : Ces deux balises correspondent aux balises de début et de fin de la définition d’une recherche. Ainsi, tout ce qui sera décrit dans la suite de cet exemple est à insérer entre ces deux balises.


    Titre, description et catégorie

    L’identifiant permet l’appel à la recherche d’un point de vue technique, mais il n’est pas visible pour les utilisateurs.

    Dans ce cas, le nom, la description, et la catégorie permettront de faciliter l’utilisation de la recherche avancée :

    • Renseignez la propriété title avec sa valeur Dossiers Clients,
    • Décrivez la propriété description avec sa valeur Rechercher un dossier client par sa référence, son nom ou son prénom.


    <property name="title" value="Dossiers Clients" />
    <property name="description" value="Rechercher un dossier client par sa référence, son nom ou son prénom."/>


    Catégorisez la recherche à l’aide de la propriété categorieSelectorPresenter :

    • Permettez une seule catégorie avec la classe FakeCategorySelectorPresenter,
    • Utilisez le type VIRTUAL_FOLDER pour les dossiers clients.


    	<property name="categorySelectorPresenter">
    		<bean class="com.flower.docs.gui.client.search.criteria.item.FakeCategorySelectorPresenter">
    				<property name="value">
    				<value type="com.flower.docs.domain.component.Category">VIRTUAL_FOLDER</value>
    				</property>
    		</bean>
    	</property>


    La recherche par mots-clés keywordCriteriaPresenter ne sera pas utilisée. Désactivez cette recherche à l’aide de la propriété enabled et sa valeur false :


    <property name="keywordCriteriaPresenter">
    	<bean class="com.flower.docs.gui.client.search.criteria.KeywordCriteriaPresenter">
    		<property name="enabled" value="false" />
    	</bean>
    </property>


    Toutes les propriétés qui seront décrites dans la suite de cette page doivent être placées dans le bean AdvancedCriteriaPresenter. Définissez la recherche avancée avec la propriété AdvancedCriteriaPresenter :


    <property name="advancedCriteriaPresenter">
        <bean class="com.flower.docs.gui.client.search.criteria.advanced.AdvancedCriteriaPresenter" />
    </property>


    Désactivez le sélecteur de catégorie displayClassSelector à l’aide de sa valeur false qui permet uniquement la recherche sur les dossiers clients de la manière suivante :


    <property name="displayClassSelector" value="false" />


    Afin de forcer l’ouverture de la recherche avancée, ajoutez la propriété forceOpen avec sa valeur true :


    <property name="forceOpen" value="true" />


    Valorisez la propriété addEmptyCriterion avec true pour que l’utilisateur puisse ajouter des critères :


    <property name="addEmptyCriterion" value="true" />


    Définissez le bouton showSearchButton permettant de lancer la recherche :


    <property name="showSearchButton" value="true" />


    Afin de pouvoir utiliser un tag comme critère de recherche, il faut l’avoir défini comme recherchable lors de sa création !


    Les critères de recherche représentent le contenu du formulaire de recherche.


    La recherche avancée peut être configurée pour afficher, par défaut, des critères que l’utilisateur n’aura plus qu’à remplir avant d’exécuter sa recherche. Cette propriété est à placer dans le bean AdvancedCriteriaPresenter. L’ajout de critères se fait via la propriété fixedCriterionPresenters :


    <property name="fixedCriterionPresenters">
    	<list>
    	</list>
    </property>


    Entre les balises <list> et </list> ajoutez les différents critères de recherches.

    Placez la définition du critère au début du corps XML. La définition du critère de recherche NomAdherentCriterion se fait comme suit :

    • le tag NomClient qui est un critère de recherche
    • Le critère est une chaîne de caractères STRING
    • EQUALS_TO est l’opérateur qui va aider la recherche à trouver le client


    Code XML : Définition de Critère

    <bean id="NomAdherentCriterion" class="com.flower.docs.gui.client.search.criterion.SimpleCriterionPresenter">
        <property name="model">
            <bean class="com.flower.docs.domain.search.Criterion">
                <property name="name" value="NomClient" />
                <property name="type">
                    <value type="com.flower.docs.domain.search.Types">STRING</value>
                </property>
                <property name="operator">
                    <value type="com.flower.docs.domain.search.Operators">EQUALS_TO</value>
                </property>
            </bean>
        </property>
    </bean>

    Note : La définition reste la même pour les critères RefClientCriterion et PrenomClientCriterion, il suffit juste de changer les valeurs des propriétés description, nom et l’identifiant id du bean.


    Les différentes propriétés d’un critère :

    • name : (ici égal à NomClient) le nom symbolique du tag qui doit être utilisé comme critère.

    • type : le type de valeur à saisir dans le champ (Type de champ).

    • operator : l’opérateur par défaut affiché dans la recherche (Opérateur).


    Référencez les critères dans la liste à l’aide de l’identifiant du bean :


    <property name="fixedCriterionPresenters">
    	<list>
    		<ref bean="RefClientCriterion" />
    		<ref bean="NomAdherentCriterion" />
            <ref bean="PrenomClientCriterion" />
    	</list>
    </property>


    Dans la partie précédente vous avez vu comment définir le formulaire et les critères de recherche. Vous allez maintenant voir comment paramétrer l’affichage des résultats.


    Pour ce faire, vous allez utiliser une requête cachée parce que l’utilisateur ne peut intéragir avec.


    Ce bloc XML est à placer dans le bean ComponentSearchPresenter, au même niveau que la propriété advancedCriteriaPresenter.

    La définition de cette recherche cachée se fait via la propriété hiddenRequest :


    <property name="hiddenRequest">
    	<bean class="com.flower.docs.domain.search.SearchRequest">
    		<!-- Ajoutez ici les différentes parties décrites dans la suite -->
    	</bean>
    </property>

    Colonnes à afficher

    Placez la propriété SelectClause dans le bean SearchRequest. Définissez cette propriété comme ci-dessous pour afficher les colonnes du tableau :


    Code XML : Définition des colonnes à afficher

    <property name="selectClause">
    	<bean class="com.flower.docs.domain.search.SelectClause">
    		<property name="fields">
    			<list>		
    				<!-- Colonnes à afficher -->
    				<value>name</value>
    				<value>NomClient</value>
    				<value>RefClient</value>
    			</list>
    		</property>
    	</bean>
    </property>


    Filtre

    Placez la propriété filterClauses à la suite de la selectClause. Définissez la propriété filterClauses comme ci-dessous afin d’effectuer la recherche sur les dossiers clients :

    • Le type STRING permet de dire que le critère à rechercher sera une chaîne de caractères,
    • C’est l’opérateur EQUALS_TO qui effectuera la remontée des dossiers clients,
    • les dossiers clients à rechercher seront du type DossierClient,


    Code XML : Définition du filtre

    <property name="filterClauses">
    	<list>
    		<bean class="com.flower.docs.domain.search.AndClause">
    			<property name="criteria">
    				<list>
    					<bean class="com.flower.docs.domain.search.Criterion">
    						<property name="name" value="classid" />
    						<property name="type">
    							<value type="com.flower.docs.domain.search.Types">STRING</value>
    						</property>
    						<property name="operator">
    							<value type="com.flower.docs.domain.search.Operators">EQUALS_TO</value>
    						</property>
    						<property name="values">
    							<list>
    								<value>DossierClient</value>								
    							</list>
    						</property>
    					</bean>
    				</list>
    			</property>
    		</bean>
    	</list>
    </property>

    Tri

    FlowerDocs permet le tri d’affichage des résultats en fonction des techniques et tags.


    Dans ce cas, vous allez trier le résultat en fonction de la propriété creationDate, qui est la date de création des dossiers clients.


    Utilisez la propriété orderClauses pour définir le tri d’affichage des dossiers clients du plus récent au plus ancien :


    Code XML : Définition du Tri des dossiers clients

    <property name="orderClauses">
    	<list>
    		<bean class="com.flower.docs.domain.search.OrderClause">
    			<property name="name" value="creationDate" />
    			<property name="ascending" value="false" />
    		</bean>
    	</list>
    </property>


    Le nombre de résultats remontés par la recherche. Cette propriété donne la possibilité d’instaurer un nombre de résultat à afficher par défaut par page de résultat :


    <property name="max" value="25" />


    Ajoutez ce bloc XML au même niveau que la hiddenRequest. Afin de rendre plus élégant les résultats de recherche, vous avez aussi la possibilité de cacher certaines colonnes de résultats :


    <property name="hiddenColumns">
    	<list>
    		<value>status</value>
    		<value>classid</value>
    	</list>
    </property>