Recherche

Construiser vos requêtes de recherche

Les requêtes de recherche permettent de demander à Flower de renvoyer des résultats en fonction de différents critères. Ces requêtes de recherche sont composées de la façon suivante :

Les clauses

Clause Select

La selectClause permet de définir les champs à remonter. Elle est constituée d’une liste de valeurs fields.

Clauses Filter

Les filterClauses permettent de définir des filtres à appliquer sur la recherche. Une filterClause est composée de la façon suivante :

  • criteria : les critères de ce filtre
  • filterClauses : les sous-filtres

Une clause Filter va pouvoir en contenir une ou plusieurs autres afin de pouvoir effectuer des requêtes complexes avec des opérateurs logiques ET et OU. Pour celà, il existe deux types de clause Filter :

  • AndClause : Clause ET, un opérateur logique ET est appliqué entre les ses critères et ses sous-clauses
  • OrClause : Clause OU, un opérateur logique OU est appliqué entre les ses critères et ses sous-clauses

Clauses Order

Les orderClauses permettent de définir l’ordre dans lequel les résultats seront remontés. Elles sont composées de la façon suivante :

  • name : le nom du critère sur lequel trier
  • type : le type du critère
  • ascending : tri par ordre croissant ou non

Contexte

Il est possible d’ajouter les critères de contextes context dans une requête afin de pouvoir faire des traitement spécifique en fonction d’un contexte de recherche préalablement défini. Ces critères ne seront pas utilisés pour filtrer ou ajouter des colonnes dans le tableau de résultats.

Minimum et maximum

  • start : Défini le début de la page de recherche
  • max : Défini le nombre maximum de résultats à retourner


Exemple

<bean class="com.flower.docs.domain.search.SearchRequest">
	<property name="selectClause">
		<bean class="com.flower.docs.domain.search.SelectClause">
			<property name="fields">
				<list>
					<value>name</value>
					<value>classid</value>
					<value>creationDate</value>
					<value>lastUpdateDate</value>
				</list>
			</property>
		</bean>
	</property>
	<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="name" />
							<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">STARTS_WITH</value>
							</property>
							<property name="values">
								<list>
									<value>Agent</value>
								</list>
							</property>					
						</bean>
					</list>
				</property>
			</bean>
		</list>
	</property>
	<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>
</bean>