001 package org.rice.krms.test;
002
003 import java.util.ArrayList;
004 import java.util.Collection;
005 import java.util.HashMap;
006 import java.util.List;
007 import java.util.Map;
008
009 import org.kuali.rice.kns.bo.BusinessObject;
010 import org.kuali.rice.kns.bo.PersistableBusinessObject;
011 import org.kuali.rice.kns.service.BusinessObjectService;
012 import org.kuali.rice.krms.impl.repository.ContextBo;
013 import org.kuali.rice.krms.impl.repository.KrmsTypeBo;
014 import org.kuali.rice.krms.impl.repository.TermSpecificationBo;
015 import org.springframework.transaction.annotation.Transactional;
016 import org.springframework.util.CollectionUtils;
017
018 public class TestBoService implements BusinessObjectService {
019
020 private Map<Class<?>, String> idFieldNamesMap = new HashMap<Class<?>, String>();
021
022 {
023 idFieldNamesMap.put(KrmsTypeBo.class, "id");
024 idFieldNamesMap.put(ContextBo.class, "contextId");
025 idFieldNamesMap.put(TermSpecificationBo.class, "id");
026 }
027
028 private final GenericTestDao dao;
029
030 public TestBoService(GenericTestDao genericDao) {
031 this.dao = genericDao;
032 }
033
034 public void addIdFieldNameMapping(Class<?> clazz, String fieldName) {
035 idFieldNamesMap.put(clazz, fieldName);
036 }
037
038 /* (non-Javadoc)
039 * @see org.kuali.rice.kns.service.BusinessObjectService#save(org.kuali.rice.kns.bo.PersistableBusinessObject)
040 */
041 @Override
042 public PersistableBusinessObject save(PersistableBusinessObject bo) {
043 return dao.save(bo);
044 }
045
046 /* (non-Javadoc)
047 * @see org.kuali.rice.kns.service.BusinessObjectService#save(java.util.List)
048 */
049 @SuppressWarnings({ "unchecked", "rawtypes" })
050 @Override
051 public List<? extends PersistableBusinessObject> save(
052 List<? extends PersistableBusinessObject> businessObjects) {
053 List results = new ArrayList();
054 if (!CollectionUtils.isEmpty(businessObjects)) {
055 for (PersistableBusinessObject bo : businessObjects) {
056 results.add(save(bo));
057 }
058 }
059 return results;
060 }
061
062
063 /* (non-Javadoc)
064 * @see org.kuali.rice.kns.service.BusinessObjectService#linkAndSave(org.kuali.rice.kns.bo.PersistableBusinessObject)
065 */
066 @Override
067 public PersistableBusinessObject linkAndSave(
068 PersistableBusinessObject bo) {
069 // TODO Auto-generated method stub
070 throw new UnsupportedOperationException();
071 }
072
073 /* (non-Javadoc)
074 * @see org.kuali.rice.kns.service.BusinessObjectService#linkAndSave(java.util.List)
075 */
076 @Override
077 public List<? extends PersistableBusinessObject> linkAndSave(
078 List<? extends PersistableBusinessObject> businessObjects) {
079 // TODO Auto-generated method stub
080 throw new UnsupportedOperationException();
081 }
082
083 /* (non-Javadoc)
084 * @see org.kuali.rice.kns.service.BusinessObjectService#findBySinglePrimaryKey(java.lang.Class, java.lang.Object)
085 */
086 @Override
087 public <T extends BusinessObject> T findBySinglePrimaryKey(
088 Class<T> clazz, Object primaryKey) {
089 String idFieldName = "id";
090 if (idFieldNamesMap.containsKey(clazz)) idFieldName = idFieldNamesMap.get(clazz);
091 return (T) dao.findById((String)primaryKey, idFieldName, clazz);
092 }
093
094 /* (non-Javadoc)
095 * @see org.kuali.rice.kns.service.BusinessObjectService#findByPrimaryKey(java.lang.Class, java.util.Map)
096 */
097 @Override
098 public <T extends BusinessObject> T findByPrimaryKey(Class<T> clazz,
099 Map<String, ?> primaryKeys) {
100 Collection<T> results = dao.findMatching(clazz, primaryKeys);
101 if (!CollectionUtils.isEmpty(results)) {
102 if (results.size() > 1) throw new IllegalStateException("primary key fetch should only return one result!");
103 return results.iterator().next();
104 }
105 return null;
106 }
107
108 /* (non-Javadoc)
109 * @see org.kuali.rice.kns.service.BusinessObjectService#retrieve(org.kuali.rice.kns.bo.PersistableBusinessObject)
110 */
111 @Override
112 public PersistableBusinessObject retrieve(
113 PersistableBusinessObject object) {
114 // TODO Auto-generated method stub
115 throw new UnsupportedOperationException();
116 }
117
118 /* (non-Javadoc)
119 * @see org.kuali.rice.kns.service.BusinessObjectService#findAll(java.lang.Class)
120 */
121 @Override
122 public <T extends BusinessObject> Collection<T> findAll(Class<T> clazz) {
123 // TODO Auto-generated method stub
124 throw new UnsupportedOperationException();
125 }
126
127 /* (non-Javadoc)
128 * @see org.kuali.rice.kns.service.BusinessObjectService#findAllOrderBy(java.lang.Class, java.lang.String, boolean)
129 */
130 @Override
131 public <T extends BusinessObject> Collection<T> findAllOrderBy(
132 Class<T> clazz, String sortField, boolean sortAscending) {
133 // TODO Auto-generated method stub
134 throw new UnsupportedOperationException();
135 }
136
137 /* (non-Javadoc)
138 * @see org.kuali.rice.kns.service.BusinessObjectService#findMatching(java.lang.Class, java.util.Map)
139 */
140 @Override
141 public <T extends BusinessObject> Collection<T> findMatching(
142 Class<T> clazz, Map<String, ?> fieldValues) {
143 return dao.findMatching(clazz, fieldValues);
144 }
145
146 /* (non-Javadoc)
147 * @see org.kuali.rice.kns.service.BusinessObjectService#countMatching(java.lang.Class, java.util.Map)
148 */
149 @Override
150 public int countMatching(Class clazz, Map<String, ?> fieldValues) {
151 throw new UnsupportedOperationException();
152 }
153
154 /* (non-Javadoc)
155 * @see org.kuali.rice.kns.service.BusinessObjectService#countMatching(java.lang.Class, java.util.Map, java.util.Map)
156 */
157 @Override
158 public int countMatching(Class clazz,
159 Map<String, ?> positiveFieldValues,
160 Map<String, ?> negativeFieldValues) {
161 throw new UnsupportedOperationException();
162 }
163
164 /* (non-Javadoc)
165 * @see org.kuali.rice.kns.service.BusinessObjectService#findMatchingOrderBy(java.lang.Class, java.util.Map, java.lang.String, boolean)
166 */
167 @Override
168 public <T extends BusinessObject> Collection<T> findMatchingOrderBy(
169 Class<T> clazz, Map<String, ?> fieldValues, String sortField,
170 boolean sortAscending) {
171 throw new UnsupportedOperationException();
172 }
173
174 /* (non-Javadoc)
175 * @see org.kuali.rice.kns.service.BusinessObjectService#delete(org.kuali.rice.kns.bo.PersistableBusinessObject)
176 */
177 @Override
178 public void delete(PersistableBusinessObject bo) {
179 throw new UnsupportedOperationException();
180 }
181
182 /* (non-Javadoc)
183 * @see org.kuali.rice.kns.service.BusinessObjectService#delete(java.util.List)
184 */
185 @Override
186 public void delete(List<? extends PersistableBusinessObject> boList) {
187 throw new UnsupportedOperationException();
188 }
189
190 /* (non-Javadoc)
191 * @see org.kuali.rice.kns.service.BusinessObjectService#deleteMatching(java.lang.Class, java.util.Map)
192 */
193 @Override
194 @Transactional
195 public void deleteMatching(Class clazz, Map<String, ?> fieldValues) {
196 dao.deleteMatching(clazz, fieldValues);
197 }
198
199 /* (non-Javadoc)
200 * @see org.kuali.rice.kns.service.BusinessObjectService#getReferenceIfExists(org.kuali.rice.kns.bo.BusinessObject, java.lang.String)
201 */
202 @Override
203 public BusinessObject getReferenceIfExists(BusinessObject bo,
204 String referenceName) {
205 throw new UnsupportedOperationException();
206 }
207
208 /* (non-Javadoc)
209 * @see org.kuali.rice.kns.service.BusinessObjectService#linkUserFields(org.kuali.rice.kns.bo.PersistableBusinessObject)
210 */
211 @Override
212 public void linkUserFields(PersistableBusinessObject bo) {
213 throw new UnsupportedOperationException();
214 }
215
216 /* (non-Javadoc)
217 * @see org.kuali.rice.kns.service.BusinessObjectService#linkUserFields(java.util.List)
218 */
219 @Override
220 public void linkUserFields(List<PersistableBusinessObject> bos) {
221 throw new UnsupportedOperationException(); }
222
223 /* (non-Javadoc)
224 * @see org.kuali.rice.kns.service.BusinessObjectService#manageReadOnly(org.kuali.rice.kns.bo.PersistableBusinessObject)
225 */
226 @Override
227 public PersistableBusinessObject manageReadOnly(
228 PersistableBusinessObject bo) {
229 throw new UnsupportedOperationException();
230 }
231
232 }