View Javadoc
1   // license-header java merge-point
2   //
3   // Attention: Generated code! Do not modify by hand!
4   // Generated by: hibernate/search/Search.java.vsl in andromda-spring-cartridge.
5   //
6   package fr.ifremer.quadrige3.core.dao;
7   
8   /*-
9    * #%L
10   * Quadrige3 Core :: Client API
11   * %%
12   * Copyright (C) 2017 - 2024 Ifremer
13   * %%
14   * This program is free software: you can redistribute it and/or modify
15   * it under the terms of the GNU Affero General Public License as published by
16   * the Free Software Foundation, either version 3 of the License, or
17   * (at your option) any later version.
18   * 
19   * This program is distributed in the hope that it will be useful,
20   * but WITHOUT ANY WARRANTY; without even the implied warranty of
21   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22   * GNU General Public License for more details.
23   * 
24   * You should have received a copy of the GNU Affero General Public License
25   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
26   * #L%
27   */
28  import java.io.Serializable;
29  import java.util.ArrayList;
30  import java.util.Arrays;
31  import java.util.Collection;
32  
33  /**
34   * Stores the information necessary to perform a property search.
35   *
36   * @see PropertySearch
37   */
38  public class Search
39      implements Serializable
40  {
41      private static final long serialVersionUID = 8277265070757689152L;
42  
43      /**
44       * Constructs the search object.
45       *
46       * @param parametersIn the parameters to use.
47       * @param pageNumberIn the page number (if paging results).
48       * @param pageSizeIn the page size (if paging results).
49       * @param eagerFetchingIn whether or not the search will eagerly fetch the associations included in the search.
50       */
51      public Search(SearchParameter[] parametersIn, int pageNumberIn, int pageSizeIn, boolean eagerFetchingIn)
52      {
53          this.pageNumber = pageNumberIn;
54          this.pageSize = pageSizeIn;
55          if (parametersIn != null)
56          {
57              this.parameters.addAll(Arrays.asList(parametersIn));
58          }
59          this.eagerFetching = eagerFetchingIn;
60      }
61  
62      /**
63       * Constructs the search object.
64       *
65       * @param parametersIn the parameters to use.
66       * @param pageNumberIn the page number (if paging results).
67       * @param pageSizeIn the page size (if paging results).
68       */
69      public Search(SearchParameter[] parametersIn, int pageNumberIn, int pageSizeIn)
70      {
71          this(parametersIn, pageNumberIn, pageSizeIn, false);
72      }
73  
74      /**
75       * Constructs the search object.
76       *
77       * @param parametersIn the parameters to use.
78       */
79      public Search(SearchParameter[] parametersIn)
80      {
81          this(parametersIn, -1, -1, false);
82      }
83  
84      /**
85       * Constructs the search object.
86       *
87       * @param parametersIn the parameters to use.
88       * @param eagerFetchingIn whether or not the search will eagerly fetch the associations included in the search.
89       */
90      public Search(SearchParameter[] parametersIn, boolean eagerFetchingIn)
91      {
92          this(parametersIn, -1, -1, eagerFetchingIn);
93      }
94  
95      private int pageNumber;
96  
97      /**
98       * Gets the page number (if paging the results).
99       *
100      * @return the page number.
101      */
102     public int getPageNumber()
103     {
104         return this.pageNumber;
105     }
106 
107     /**
108      * Sets the page number (if paging the results).
109      *
110      * @param pageNumberIn the page number (if paging results).
111      * @return the current search instance.
112      */
113     public Search setPageNumber(int pageNumberIn)
114     {
115         this.pageNumber = pageNumberIn;
116         return this;
117     }
118 
119     private int pageSize;
120 
121     /**
122      * Gets the size of the page (if paging the results).
123      *
124      * @return the page size.
125      */
126     public int getPageSize()
127     {
128         return this.pageSize;
129     }
130 
131     /**
132      * Sets the size of the page (if paging the results).
133      *
134      * @param pageSizeIn the page size.
135      * @return the current search instance.
136      */
137     public Search setPageSize(int pageSizeIn)
138     {
139         this.pageSize = pageSizeIn;
140         return this;
141     }
142 
143     private Collection<SearchParameter> parameters = new ArrayList<SearchParameter>();
144 
145     /**
146      * Gets the search parameters for this search object..
147      * @return parameters.toArray(new SearchParameter[this.parameters.size()])
148      */
149     public SearchParameter[] getParameters()
150     {
151         return this.parameters.toArray(new SearchParameter[this.parameters.size()]);
152     }
153 
154     /**
155      * Sets the search parameters for this search object.
156      *
157      * @param parametersIn
158      * @return the current search instance (this).
159      */
160     public Search setParameters(SearchParameter[] parametersIn)
161     {
162         this.parameters = new ArrayList<SearchParameter>(Arrays.asList(parametersIn));
163         return this;
164     }
165 
166     /**
167      * Constructs the search object with no parameters.
168      */
169     public Search()
170     {
171         this(null, -1, -1, false);
172     }
173 
174     /**
175      * Adds a search parameter to the search.
176      *
177      * @param searchParameter the search parameter to add.
178      * @return the current search instance.
179      */
180     public Search addSearchParameter(final SearchParameter searchParameter)
181     {
182         this.parameters.add(searchParameter);
183         return this;
184     }
185 
186     private boolean eagerFetching;
187 
188     /**
189      * Whether or not eager fetching is enabled (if it is enabled, all associations
190      * queried will be fetched eagerly).
191      *
192      * @return true/false
193      */
194     public boolean isEagerFetching()
195     {
196         return this.eagerFetching;
197     }
198 
199     /**
200      * Sets whether or not eager fetching is enabled (if it is enabled, all associations
201      * queried will be fetched eagerly).
202      *
203      * @param eagerFetchingIn whether or not to eager fetch the results.
204      * @return the current search instance (this).
205      */
206     public Search setEagerFetching(boolean eagerFetchingIn)
207     {
208         this.eagerFetching = eagerFetchingIn;
209         return this;
210     }
211 
212     /**
213      * Adds an "order by" clause for the search with default ascending order.
214      *
215      * @param propertyName the property name to order by.
216      *
217      * @return the current search instance.
218      */
219     public Search addOrderBy(final String propertyName)
220     {
221         return this.addOrderBy(propertyName, SearchParameter.ORDER_ASC);
222     }
223 
224     /**
225      * Adds an "order by" clause for the search.
226      *
227      * @param propertyName the property name to order by.
228      * @param order the order.  Use: {@link SearchParameter#ORDER_ASC},
229      *        {@link SearchParameter#ORDER_DESC}, or {@link SearchParameter#ORDER_UNSET}.
230      *
231      * @return the current search instance.
232      */
233     public Search addOrderBy(final String propertyName, final int order)
234     {
235         this.parameters.add(new SearchParameter(propertyName, null, -1, -1, order));
236         return this;
237     }
238 
239     /**
240      * Adds an "order by" clause for the search.
241      *
242      * @param propertyName the property name to order by.
243      * @param descending true/false; true for descending ordering, false for ascending ordering.
244      *
245      * @return the current search instance.
246      */
247     public Search addOrderBy(String propertyName, final boolean descending)
248     {
249         this.addOrderBy(propertyName, descending ? SearchParameter.ORDER_DESC : SearchParameter.ORDER_ASC);
250         return this;
251     }
252 
253     private boolean useSqlLimiting = false;
254 
255     /**
256      * Whether or not to use sql limiting (if paging is being used).  If this is set to false, then
257      * paging will be based on the actual entities returned instead of using SQL to limit the results.
258      *
259      * @return true/false
260      */
261     public boolean isUseSqlLimiting()
262     {
263         return this.useSqlLimiting;
264     }
265 
266     /**
267      * Sets whether or not to use sql limiting (if paging is being used).  If this is set to false, then
268      * paging will be based on the actual entities returned instead of using SQL to limit the results.
269      *
270      * @param useSqlPaging whether or not to use SQL paging (default is <code>false</code>).
271      *
272      * @return the current search instance.
273      */
274     public Search setUseSqlLimiting(boolean useSqlPaging)
275     {
276         this.useSqlLimiting = useSqlPaging;
277         return this;
278     }
279 }