1 /* 2 * Copyright 2005-2008 The Kuali Foundation 3 * 4 * Licensed under the Educational Community 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.opensource.org/licenses/ecl2.php 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 package org.kuali.rice.kns.dao; 17 18 import java.util.Collection; 19 import java.util.List; 20 import java.util.Map; 21 22 import org.kuali.rice.kns.bo.PersistableBusinessObject; 23 24 /** 25 * This is the generic data access interface for business objects. This should be used for unit testing purposes only. 26 * 27 * 28 */ 29 public interface BusinessObjectDao { 30 /** 31 * Saves any object that implements the BusinessObject interface. 32 * 33 * @param bo 34 */ 35 public void save(PersistableBusinessObject bo); 36 37 /** 38 * Saves a List of BusinessObjects. 39 * 40 * @param businessObjects 41 */ 42 public void save(List businessObjects); 43 44 /** 45 * Retrieves an object instance identified by its primary key. For composite keys, use {@link #findByPrimaryKey(Class, Map)} 46 * 47 * @param clazz 48 * @param primaryKey 49 * @return 50 */ 51 public PersistableBusinessObject findBySinglePrimaryKey(Class clazz, Object primaryKey); 52 53 /** 54 * Retrieves an object instance identified bys it primary keys and values. This can be done by constructing a map where the key 55 * to the map entry is the primary key attribute and the value of the entry being the primary key value. For composite keys, 56 * pass in each primaryKey attribute and its value as a map entry. 57 * 58 * @param clazz 59 * @param primaryKeys 60 * @return 61 */ 62 public PersistableBusinessObject findByPrimaryKey(Class clazz, Map primaryKeys); 63 64 /** 65 * Retrieves an object instance identified by the class of the given object and the object's primary key values. 66 * 67 * @param object 68 * @return 69 */ 70 public PersistableBusinessObject retrieve(PersistableBusinessObject object); 71 72 /** 73 * Retrieves a collection of business objects populated with data, such that each record in the database populates a new object 74 * instance. This will only retrieve business objects by class type. 75 * 76 * @param clazz 77 * @return 78 */ 79 public Collection findAll(Class clazz); 80 81 /** 82 * Retrieves a collection of business objects populated with data, such that each record in the database populates a new object 83 * instance. This will only retrieve business objects by class type. 84 * 85 * Adds criteria on active column to return only active records. Assumes there exist a mapping for PropertyConstants.Active 86 * 87 * @param clazz 88 * @return 89 */ 90 public Collection findAllActive(Class clazz); 91 92 public Collection findAllInactive(Class clazz); 93 94 /** 95 * Retrieves a collection of business objects populated with data, such that each record in the database populates a new object 96 * instance. This will only retrieve business objects by class type. Orders the results by the given field. 97 * 98 * @param clazz 99 * @return 100 */ 101 public Collection findAllOrderBy(Class clazz, String sortField, boolean sortAscending); 102 103 /** 104 * Retrieves a collection of business objects populated with data, such that each record in the database populates a new object 105 * instance. This will only retrieve business objects by class type. Orders the results by the given field. 106 * 107 * Adds criteria on active column to return only active records. Assumes there exist a mapping for PropertyConstants.Active 108 * @param clazz 109 * @return 110 */ 111 public Collection findAllActiveOrderBy(Class clazz, String sortField, boolean sortAscending); 112 113 /** 114 * This method retrieves a collection of business objects populated with data, such that each record in the database populates a 115 * new object instance. This will retrieve business objects by class type and also by criteria passed in as key-value pairs, 116 * specifically attribute name-expected value. 117 * 118 * @param clazz 119 * @param fieldValues 120 * @return 121 */ 122 public Collection findMatching(Class clazz, Map fieldValues); 123 124 /** 125 * This method retrieves a collection of business objects populated with data, such that each record in the database populates a 126 * new object instance. This will retrieve business objects by class type and also by criteria passed in as key-value pairs, 127 * specifically attribute name-expected value. 128 * 129 * Adds criteria on active column to return only active records. Assumes there exist a mapping for PropertyConstants.Active 130 * 131 * @param clazz 132 * @param fieldValues 133 * @return 134 */ 135 public Collection findMatchingActive(Class clazz, Map fieldValues); 136 137 /** 138 * @param clazz 139 * @param fieldValues 140 * @return count of BusinessObjects of the given class whose fields match the values in the given Map. 141 */ 142 public int countMatching(Class clazz, Map fieldValues); 143 144 145 /** 146 * 147 * This method returns the number of matching result given the positive criterias and 148 * negative criterias. The negative criterias are the ones that will be set to 149 * "notEqualTo" or "notIn" 150 * 151 * @param clazz 152 * @param positiveFieldValues Map of fields and values for positive criteria 153 * @param negativeFieldValues Map of fields and values for negative criteria 154 * @return 155 */ 156 public int countMatching(Class clazz, Map positiveFieldValues, Map negativeFieldValues); 157 158 /** 159 * This method retrieves a collection of business objects populated with data, such that each record in the database populates a 160 * new object instance. This will retrieve business objects by class type and also by criteria passed in as key-value pairs, 161 * specifically attribute name-expected value. Orders the results by the given field. 162 * 163 * @param clazz 164 * @param fieldValues 165 * @return 166 */ 167 public Collection findMatchingOrderBy(Class clazz, Map fieldValues, String sortField, boolean sortAscending); 168 169 /** 170 * Deletes a business object from the database. 171 * 172 * @param bo 173 */ 174 public void delete(PersistableBusinessObject bo); 175 176 /** 177 * Deletes each business object in the given List from the database. 178 * 179 * @param boList 180 */ 181 public void delete(List<? extends PersistableBusinessObject> boList); 182 183 /** 184 * Deletes the business objects matching the given fieldValues 185 * 186 * @param clazz 187 * @param fieldValues 188 */ 189 public void deleteMatching(Class clazz, Map fieldValues); 190 }