View Javadoc
1   package org.kuali.rice.krad.dao;
2   
3   import org.kuali.rice.krad.bo.BusinessObject;
4   import org.kuali.rice.krad.bo.PersistableBusinessObject;
5   import org.kuali.rice.krad.util.LegacyDataFramework;
6   
7   import java.util.Collection;
8   import java.util.List;
9   import java.util.Map;
10  
11  /**
12   * Created by angelind on 11/6/14.
13   *
14   * Overridden by 'Sheik Salahudeen'
15   * Overridden for fixing the document fetching issue in KRAD Transaction document with OJB.
16   * Modified method names: findBySinglePrimaryKey,findByPrimaryKey,findByPrimaryKeyUsingKeyObject,findAll,findAllActive,findAllInactive,findAllOrderBy,findAllActiveOrderBy,findMatching,findMatchingActive,findMatchingOrderBy
17   * Changes description : Modified the return type of method from '<T extends BusinessObject>' to  '<T>'.
18   */
19  @Deprecated
20  @LegacyDataFramework
21  public interface BusinessObjectDao {
22      /**
23       * Saves any object that implements the BusinessObject interface.
24       *
25       * @param bo
26       */
27      public PersistableBusinessObject save(PersistableBusinessObject bo);
28  
29      /**
30       * Saves a List of BusinessObjects.
31       *
32       * @param businessObjects
33       */
34      public List<? extends PersistableBusinessObject> save(List businessObjects);
35  
36      /**
37       * Retrieves an object instance identified by its primary key. For composite keys, use {@link #findByPrimaryKey(Class, java.util.Map)}
38       *
39       * @param clazz
40       * @param primaryKey
41       * @return
42       */
43      public <T> T findBySinglePrimaryKey(Class<T> clazz, Object primaryKey);
44  
45      /**
46       * Retrieves an object instance identified bys it primary keys and values. This can be done by constructing a map where the key
47       * to the map entry is the primary key attribute and the value of the entry being the primary key value. For composite keys,
48       * pass in each primaryKey attribute and its value as a map entry.
49       *
50       * @param clazz
51       * @param primaryKeys
52       * @return
53       */
54      public <T> T findByPrimaryKey(Class<T> clazz, Map<String, ?> primaryKeys);
55  
56      /**
57       * Retrieves an object, based on its PK object
58       *
59       * @param clazz the class of the object to retrieve
60       * @param pkObject the value of the primary key
61       * @return the retrieved PersistableBusinessObject
62       */
63      public abstract <T > T findByPrimaryKeyUsingKeyObject(Class<T> clazz, Object pkObject);
64  
65      /**
66       * Retrieves an object instance identified by the class of the given object and the object's primary key values.
67       *
68       * @param object
69       * @return
70       */
71      public Object retrieve(Object object);
72  
73      /**
74       * Retrieves a collection of business objects populated with data, such that each record in the database populates a new object
75       * instance. This will only retrieve business objects by class type.
76       *
77       * @param clazz
78       * @return
79       */
80      public <T> Collection<T> findAll(Class<T> clazz);
81  
82      /**
83       * Retrieves a collection of business objects populated with data, such that each record in the database populates a new object
84       * instance. This will only retrieve business objects by class type.
85       *
86       * Adds criteria on active column to return only active records. Assumes there exist a mapping for PropertyConstants.Active
87       *
88       * @param clazz
89       * @return
90       */
91      public <T> Collection<T> findAllActive(Class<T> clazz);
92  
93      public <T> Collection<T> findAllInactive(Class<T> clazz);
94  
95      /**
96       * Retrieves a collection of business objects populated with data, such that each record in the database populates a new object
97       * instance. This will only retrieve business objects by class type. Orders the results by the given field.
98       *
99       * @param clazz
100      * @return
101      */
102     public <T> Collection<T> findAllOrderBy(Class<T> clazz, String sortField, boolean sortAscending);
103 
104     /**
105      * Retrieves a collection of business objects populated with data, such that each record in the database populates a new object
106      * instance. This will only retrieve business objects by class type. Orders the results by the given field.
107      *
108      * Adds criteria on active column to return only active records. Assumes there exist a mapping for PropertyConstants.Active
109      * @param clazz
110      * @return
111      */
112     public <T> Collection<T> findAllActiveOrderBy(Class<T> clazz, String sortField, boolean sortAscending);
113 
114     /**
115      * This method retrieves a collection of business objects populated with data, such that each record in the database populates a
116      * new object instance. This will retrieve business objects by class type and also by criteria passed in as key-value pairs,
117      * specifically attribute name-expected value.
118      *
119      * @param clazz
120      * @param fieldValues
121      * @return
122      */
123     public <T> Collection<T> findMatching(Class<T> clazz, Map<String, ?> fieldValues);
124 
125     /**
126      * Finds all entities matching the passed in Rice JPA criteria
127      *
128      * @param <T> the type of the entity that will be returned
129      * @param criteria the criteria to form the query with
130      * @return a Collection (most likely a List) of all matching entities 
131      */
132     //public abstract <T> Collection<T> findMatching(Criteria criteria);
133 
134     /**
135      * This method retrieves a collection of business objects populated with data, such that each record in the database populates a
136      * new object instance. This will retrieve business objects by class type and also by criteria passed in as key-value pairs,
137      * specifically attribute name-expected value.
138      *
139      * Adds criteria on active column to return only active records. Assumes there exist a mapping for PropertyConstants.Active
140      *
141      * @param clazz
142      * @param fieldValues
143      * @return
144      */
145     public <T> Collection<T> findMatchingActive(Class<T> clazz, Map<String, ?> fieldValues);
146 
147     /**
148      * @param clazz
149      * @param fieldValues
150      * @return count of BusinessObjects of the given class whose fields match the values in the given Map.
151      */
152     public int countMatching(Class clazz, Map<String, ?> fieldValues);
153 
154 
155     /**
156      *
157      * This method returns the number of matching result given the positive criterias and
158      * negative criterias. The negative criterias are the ones that will be set to 
159      * "notEqualTo" or "notIn"
160      *
161      * @param clazz
162      * @param positiveFieldValues  Map of fields and values for positive criteria
163      * @param negativeFieldValues  Map of fields and values for negative criteria
164      * @return
165      */
166     public int countMatching(Class clazz, Map<String, ?> positiveFieldValues, Map<String, ?> negativeFieldValues);
167 
168     /**
169      * This method retrieves a collection of business objects populated with data, such that each record in the database populates a
170      * new object instance. This will retrieve business objects by class type and also by criteria passed in as key-value pairs,
171      * specifically attribute name-expected value. Orders the results by the given field.
172      *
173      * @param clazz
174      * @param fieldValues
175      * @return
176      */
177     public <T> Collection<T> findMatchingOrderBy(Class<T> clazz, Map<String, ?> fieldValues, String sortField, boolean sortAscending);
178 
179     /**
180      * Deletes a business object from the database.
181      *
182      * @param bo
183      */
184     public void delete(Object bo);
185 
186     /**
187      * Deletes each business object in the given List from the database.
188      *
189      * @param boList
190      */
191     public void delete(List<? extends PersistableBusinessObject> boList);
192 
193     /**
194      * Deletes the business objects matching the given fieldValues
195      *
196      * @param clazz
197      * @param fieldValues
198      */
199     public void deleteMatching(Class clazz, Map<String, ?> fieldValues);
200 
201     /**
202      * Merges the given business object, but tells the ORM that the object is to be treated as Read Only,
203      * and even if it has changes, it will not be persisted to the database 
204      *
205      * @param bo the business object to managed
206      * @return the managed copied of the business object
207      */
208     public PersistableBusinessObject manageReadOnly(PersistableBusinessObject bo);
209 }
210