View Javadoc
1   /*
2    * Copyright 2010 James Pether Sörling
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *   http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   *
16   *	$Id$
17   *  $HeadURL$
18  */
19  
20  package com.hack23.cia.service.data.api;
21  
22  import java.io.Serializable;
23  import java.util.List;
24  
25  import javax.persistence.metamodel.SingularAttribute;
26  
27  /**
28   * The Interface AbstractGenericDAO.
29   *
30   * @param <T>
31   *            the generic type
32   * @param <I>
33   *            the generic type
34   */
35  public interface AbstractGenericDAO<T extends Serializable, I extends Serializable> {
36  
37  	/**
38  	 * Delete.
39  	 *
40  	 * @param entity
41  	 *            the entity
42  	 */
43  	void delete(T entity);
44  
45  	/**
46  	 * Find first by property.
47  	 *
48  	 * @param property
49  	 *            the property
50  	 * @param value
51  	 *            the value
52  	 * @return the t
53  	 */
54  	T findFirstByProperty(SingularAttribute<T, ? extends Object> property, Object value);
55  
56  	/**
57  	 * Find list by property.
58  	 *
59  	 * @param values
60  	 *            the values
61  	 * @param properties
62  	 *            the properties
63  	 * @return the list
64  	 */
65  	List<T> findListByProperty(final Object[] values,final SingularAttribute<T, ? extends Object>... properties);
66  
67  
68  	/**
69  	 * Find list by property.
70  	 *
71  	 * @param property
72  	 *            the property
73  	 * @param value
74  	 *            the value
75  	 * @return the list
76  	 */
77  	List<T> findListByProperty(SingularAttribute<T, ? extends Object> property, Object value);
78  
79  	/**
80  	 * Find list by embedded property.
81  	 *
82  	 * @param <V>
83  	 *            the value type
84  	 * @param property
85  	 *            the property
86  	 * @param clazz2
87  	 *            the clazz 2
88  	 * @param property2
89  	 *            the property 2
90  	 * @param value
91  	 *            the value
92  	 * @return the list
93  	 */
94  	<V> List<T> findListByEmbeddedProperty(SingularAttribute<T, V> property,Class<V> clazz2,SingularAttribute<V, ? extends Object> property2, Object value);
95  
96  	/**
97  	 * Find ordered by property list by embedded property.
98  	 *
99  	 * @param <V>
100 	 *            the value type
101 	 * @param property
102 	 *            the property
103 	 * @param clazz2
104 	 *            the clazz 2
105 	 * @param property2
106 	 *            the property 2
107 	 * @param value
108 	 *            the value
109 	 * @param orderByProperty
110 	 *            the order by property
111 	 * @return the list
112 	 */
113 	<V> List<T> findOrderedByPropertyListByEmbeddedProperty(final SingularAttribute<T, V> property,
114 			final Class<V> clazz2, final SingularAttribute<V, ? extends Object> property2, final Object value,
115 			final SingularAttribute<T, ? extends Object> orderByProperty);
116 
117 
118 	/**
119 	 * Gets the all.
120 	 *
121 	 * @return the all
122 	 */
123 	List<T> getAll();
124 
125 
126 	/**
127 	 * Gets the all order by.
128 	 *
129 	 * @param orderBy
130 	 *            the order by
131 	 * @return the all order by
132 	 */
133 	List<T> getAllOrderBy(final SingularAttribute<T, ? extends Object> orderBy);
134 
135 
136 	/**
137 	 * Gets the page.
138 	 *
139 	 * @param pageNr
140 	 *            the page nr
141 	 * @param resultPerPage
142 	 *            the result per page
143 	 * @return the page
144 	 */
145 	List<T> getPage(int pageNr,int resultPerPage);
146 
147 	/**
148 	 * Gets the page order by.
149 	 *
150 	 * @param pageNr
151 	 *            the page nr
152 	 * @param resultPerPage
153 	 *            the result per page
154 	 * @param orderBy
155 	 *            the order by
156 	 * @return the page order by
157 	 */
158 	List<T> getPageOrderBy(int pageNr,int resultPerPage,final SingularAttribute<T, ? extends Object> orderBy);
159 
160 
161 	/**
162 	 * Gets the size.
163 	 *
164 	 * @return the size
165 	 */
166 	Long getSize();
167 
168 	/**
169 	 * Load.
170 	 *
171 	 * @param id
172 	 *            the id
173 	 * @return the t
174 	 */
175 	T load(I id);
176 
177 	/**
178 	 * Merge.
179 	 *
180 	 * @param entity
181 	 *            the entity
182 	 * @return the t
183 	 */
184 	T merge(T entity);
185 
186 	/**
187 	 * Persist.
188 	 *
189 	 * @param list
190 	 *            the list
191 	 */
192 	void persist(final List<T> list);
193 
194 	/**
195 	 * Persist.
196 	 *
197 	 * @param entity
198 	 *            the entity
199 	 */
200 	void persist(T entity);
201 
202 	/**
203 	 * Search.
204 	 *
205 	 * @param searchExpression
206 	 *            the search expression
207 	 * @param maxResults
208 	 *            the max results
209 	 * @param fields
210 	 *            the fields
211 	 * @return the list
212 	 */
213 	List<T> search(String searchExpression, Integer maxResults,String ...fields);
214 
215 }