001/** 002 * Copyright 2005-2016 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.kuali.rice.krad.service.impl; 017 018import java.lang.reflect.InvocationTargetException; 019import java.util.Collection; 020import java.util.List; 021import java.util.Map; 022 023import org.kuali.rice.core.api.uif.RemotableQuickFinder; 024import org.kuali.rice.krad.datadictionary.RelationshipDefinition; 025import org.kuali.rice.krad.document.Document; 026import org.kuali.rice.krad.service.LegacyDataAdapter; 027import org.kuali.rice.krad.service.LegacyDataAdapter; 028import org.kuali.rice.krad.util.ForeignKeyFieldsPopulationState; 029import org.kuali.rice.krad.util.LegacyUtils; 030 031/** 032 * LegacyDataAdapter implementation. 033 * 034 * @deprecated instead of using this class, where possible go directly against new KRAD code 035 */ 036@Deprecated 037public class LegacyDataAdapterImpl implements LegacyDataAdapter { 038 039 private LegacyDataAdapter kradLegacyDataAdapter; 040 private LegacyDataAdapter knsLegacyDataAdapter; 041 042 @Override 043 public <T> T save(T dataObject) { 044 return selectAdapter(dataObject).save(dataObject); 045 } 046 047 @Override 048 public <T> T linkAndSave(T dataObject) { 049 return selectAdapter(dataObject).linkAndSave(dataObject); 050 } 051 052 @Override 053 public <T> T saveDocument(T document) { 054 return selectAdapter(document).saveDocument(document); 055 } 056 057 @Override 058 public <T> T findByPrimaryKey(Class<T> clazz, Map<String, ?> primaryKeys) { 059 return selectAdapter(clazz).findByPrimaryKey(clazz, primaryKeys); 060 } 061 062 @Override 063 public <T> T findBySinglePrimaryKey(Class<T> clazz, Object primaryKey) { 064 return selectAdapter(clazz).findBySinglePrimaryKey(clazz, primaryKey); 065 } 066 067 @Override 068 public void delete(Object dataObject) { 069 selectAdapter(dataObject).delete(dataObject); 070 } 071 072 @Override 073 public void deleteMatching(Class<?> type, Map<String, ?> fieldValues) { 074 selectAdapter(type).deleteMatching(type, fieldValues); 075 } 076 077 @Override 078 public <T> T retrieve(T dataObject) { 079 return selectAdapter(dataObject).retrieve(dataObject); 080 } 081 082 @Override 083 public <T> Collection<T> findAll(Class<T> clazz) { 084 return selectAdapter(clazz).findAll(clazz); 085 } 086 087 @Override 088 public <T> Collection<T> findMatching(Class<T> clazz, Map<String, ?> fieldValues) { 089 return selectAdapter(clazz).findMatching(clazz, fieldValues); 090 } 091 092 @Override 093 public <T> Collection<T> findMatchingOrderBy(Class<T> clazz, Map<String, ?> fieldValues, String sortField, 094 boolean sortAscending) { 095 return selectAdapter(clazz).findMatchingOrderBy(clazz, fieldValues, sortField, sortAscending); 096 } 097 098 @Override 099 public Map<String, ?> getPrimaryKeyFieldValues(Object dataObject) { 100 return selectAdapter(dataObject).getPrimaryKeyFieldValues(dataObject); 101 } 102 103 @Override 104 public void retrieveNonKeyFields(Object persistableObject) { 105 selectAdapter(persistableObject).retrieveNonKeyFields(persistableObject); 106 } 107 108 @Override 109 public void retrieveReferenceObject(Object persistableObject, String referenceObjectName) { 110 selectAdapter(persistableObject).retrieveReferenceObject(persistableObject, referenceObjectName); 111 } 112 113 @Override 114 public void refreshAllNonUpdatingReferences(Object persistableObject) { 115 selectAdapter(persistableObject).refreshAllNonUpdatingReferences(persistableObject); 116 } 117 118 @Override 119 public boolean isProxied(Object object) { 120 return selectAdapter(object).isProxied(object); 121 } 122 123 @Override 124 public Object resolveProxy(Object object) { 125 return selectAdapter(object).resolveProxy(object); 126 } 127 128 // Lookup methods 129 130 @Override 131 public <T> Collection<T> findCollectionBySearchHelper(Class<T> dataObjectClass, Map<String, String> formProperties, 132 boolean unbounded, boolean allPrimaryKeyValuesPresentAndNotWildcard, Integer searchResultsLimit) { 133 return selectAdapter(dataObjectClass).findCollectionBySearchHelper(dataObjectClass, formProperties, unbounded, 134 allPrimaryKeyValuesPresentAndNotWildcard, searchResultsLimit); 135 } 136 137 @Override 138 public <T> Collection<T> findCollectionBySearchHelper(Class<T> dataObjectClass, Map<String, String> formProperties, 139 List<String> wildcardAsLiteralPropertyNames, boolean unbounded, 140 boolean allPrimaryKeyValuesPresentAndNotWildcard, Integer searchResultsLimit) { 141 return selectAdapter(dataObjectClass).findCollectionBySearchHelper(dataObjectClass, formProperties, 142 wildcardAsLiteralPropertyNames, unbounded, allPrimaryKeyValuesPresentAndNotWildcard, 143 searchResultsLimit); 144 } 145 146 @Override 147 public <T> T findObjectBySearch(Class<T> type, Map<String, String> formProps) { 148 return selectAdapter(type).findObjectBySearch(type, formProps); 149 } 150 151 @Override 152 public boolean allPrimaryKeyValuesPresentAndNotWildcard(Class<?> boClass, Map<String, String> formProps) { 153 return selectAdapter(boClass).allPrimaryKeyValuesPresentAndNotWildcard(boClass, formProps); 154 } 155 156 @Override 157 public List<String> listPrimaryKeyFieldNames(Class<?> type) { 158 return selectAdapter(type).listPrimaryKeyFieldNames(type); 159 } 160 161 @Override 162 public Class<?> determineCollectionObjectType(Class<?> containingType, String collectionPropertyName) { 163 return selectAdapter(containingType).determineCollectionObjectType(containingType, collectionPropertyName); 164 } 165 166 @Override 167 public boolean hasReference(Class<?> boClass, String referenceName) { 168 return selectAdapter(boClass).hasReference(boClass, referenceName); 169 } 170 171 @Override 172 public boolean hasCollection(Class<?> boClass, String collectionName) { 173 return selectAdapter(boClass).hasCollection(boClass, collectionName); 174 } 175 176 @Override 177 public boolean isExtensionAttribute(Class<?> boClass, String attributePropertyName, Class<?> propertyType) { 178 return selectAdapter(boClass).isExtensionAttribute(boClass, attributePropertyName, propertyType); 179 } 180 181 @Override 182 public Class<?> getExtensionAttributeClass(Class<?> boClass, String attributePropertyName) { 183 return selectAdapter(boClass).getExtensionAttributeClass(boClass, attributePropertyName); 184 } 185 186 @Override 187 public Map<String, ?> getPrimaryKeyFieldValuesDOMDS(Object dataObject) { 188 return selectAdapter(dataObject).getPrimaryKeyFieldValuesDOMDS(dataObject); 189 } 190 191 @Override 192 public boolean equalsByPrimaryKeys(Object do1, Object do2) { 193 return selectAdapter(do1).equalsByPrimaryKeys(do1, do2); 194 } 195 196 @Override 197 public void materializeAllSubObjects(Object object) { 198 selectAdapter(object).materializeAllSubObjects(object); 199 } 200 201 @Override 202 public Class<?> getPropertyType(Object object, String propertyName) { 203 return selectAdapter(object).getPropertyType(object, propertyName); 204 } 205 206 @Override 207 public Object getExtension( 208 Class<?> businessObjectClass) throws InstantiationException, IllegalAccessException { 209 return selectAdapter(businessObjectClass).getExtension(businessObjectClass); 210 } 211 212 @Override 213 public void refreshReferenceObject(Object businessObject, String referenceObjectName) { 214 selectAdapter(businessObject).refreshReferenceObject(businessObject, referenceObjectName); 215 } 216 217 @Override 218 public boolean isLockable(Object object) { 219 return selectAdapter(object).isLockable(object); 220 } 221 222 @Override 223 public void verifyVersionNumber(Object dataObject) { 224 selectAdapter(dataObject).verifyVersionNumber(dataObject); 225 } 226 227 @Override 228 public RemotableQuickFinder.Builder createQuickFinder(Class<?> containingClass, String attributeName) { 229 return selectAdapter(containingClass).createQuickFinder(containingClass, attributeName); 230 } 231 232 @Override 233 public boolean isReferenceUpdatable(Class<?> type, String referenceName) { 234 return selectAdapter(type).isReferenceUpdatable(type, referenceName); 235 } 236 237 @Override 238 @SuppressWarnings("rawtypes") 239 public Map<String, Class> listReferenceObjectFields(Class<?> type) { 240 return selectAdapter(type).listReferenceObjectFields(type); 241 } 242 243 @Override 244 public boolean isCollectionUpdatable(Class<?> type, String collectionName) { 245 return selectAdapter(type).isCollectionUpdatable(type, collectionName); 246 } 247 248 @Override 249 @SuppressWarnings("rawtypes") 250 public Map<String, Class> listCollectionObjectTypes(Class<?> type) { 251 return selectAdapter(type).listCollectionObjectTypes(type); 252 } 253 254 @Override 255 public Object getReferenceIfExists(Object bo, String referenceName) { 256 return selectAdapter(bo).getReferenceIfExists(bo, referenceName); 257 } 258 259 @Override 260 public boolean allForeignKeyValuesPopulatedForReference(Object bo, String referenceName) { 261 return selectAdapter(bo).allForeignKeyValuesPopulatedForReference(bo, referenceName); 262 } 263 264 @Override 265 public RelationshipDefinition getDictionaryRelationship(Class<?> c, String attributeName) { 266 return selectAdapter(c).getDictionaryRelationship(c, attributeName); 267 } 268 269 @Override 270 public String getTitleAttribute(Class<?> dataObjectClass) { 271 return selectAdapter(dataObjectClass).getTitleAttribute(dataObjectClass); 272 } 273 274 @Override 275 public boolean areNotesSupported(Class<?> dataObjectClass) { 276 return selectAdapter(dataObjectClass).areNotesSupported(dataObjectClass); 277 } 278 279 @Override 280 public String getDataObjectIdentifierString(Object dataObject) { 281 return selectAdapter(dataObject).getDataObjectIdentifierString(dataObject); 282 } 283 284 @Override 285 public Class<?> getInquiryObjectClassIfNotTitle(Object dataObject, String propertyName) { 286 return selectAdapter(dataObject).getInquiryObjectClassIfNotTitle(dataObject, propertyName); 287 } 288 289 @Override 290 public Map<String, String> getInquiryParameters(Object dataObject, List<String> keys, String propertyName) { 291 return selectAdapter(dataObject).getInquiryParameters(dataObject, keys, propertyName); 292 } 293 294 @Override 295 public boolean hasLocalLookup(Class<?> dataObjectClass) { 296 return selectAdapter(dataObjectClass).hasLocalLookup(dataObjectClass); 297 } 298 299 @Override 300 public boolean hasLocalInquiry(Class<?> dataObjectClass) { 301 return selectAdapter(dataObjectClass).hasLocalInquiry(dataObjectClass); 302 } 303 304 @Override 305 public org.kuali.rice.krad.bo.DataObjectRelationship getDataObjectRelationship(Object dataObject, 306 Class<?> dataObjectClass, String attributeName, String attributePrefix, boolean keysOnly, 307 boolean supportsLookup, boolean supportsInquiry) { 308 return selectAdapter(dataObjectClass).getDataObjectRelationship(dataObject, dataObjectClass, attributeName, 309 attributePrefix, keysOnly, supportsLookup, supportsInquiry); 310 } 311 312 @Override 313 public boolean isPersistable(Class<?> dataObjectClass) { 314 return selectAdapter(dataObjectClass).isPersistable(dataObjectClass); 315 } 316 317 @Override 318 public ForeignKeyFieldsPopulationState getForeignKeyFieldsPopulationState(Object dataObject, String referenceName) { 319 return selectAdapter(dataObject).getForeignKeyFieldsPopulationState(dataObject, referenceName); 320 } 321 322 @Override 323 public Map<String, String> getForeignKeysForReference(Class<?> clazz, String attributeName) { 324 return selectAdapter(clazz).getForeignKeysForReference(clazz, attributeName); 325 } 326 327 @Override 328 public boolean hasPrimaryKeyFieldValues(Object dataObject) { 329 return selectAdapter(dataObject).hasPrimaryKeyFieldValues(dataObject); 330 } 331 332 @Override 333 public void setObjectPropertyDeep(Object bo, String propertyName, Class type, 334 Object propertyValue) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { 335 selectAdapter(bo).setObjectPropertyDeep(bo, propertyName, type, propertyValue); 336 } 337 338 @Override 339 @SuppressWarnings("rawtypes") 340 public Class materializeClassForProxiedObject(Object object) { 341 return selectAdapter(object).materializeClassForProxiedObject(object); 342 } 343 344 @Override 345 public Object getNestedValue(Object bo, String fieldName) { 346 return selectAdapter(bo).getNestedValue(bo, fieldName); 347 } 348 349 @Override 350 @SuppressWarnings("rawtypes") 351 public Object createNewObjectFromClass(Class clazz) { 352 return selectAdapter(clazz).createNewObjectFromClass(clazz); 353 } 354 355 @Override 356 public boolean isNull(Object object) { 357 return selectAdapter(object).isNull(object); 358 } 359 360 @Override 361 public void setObjectProperty(Object bo, String propertyName, Class propertyType, 362 Object propertyValue) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { 363 selectAdapter(bo).setObjectProperty(bo, propertyName, propertyType, propertyValue); 364 } 365 366 @Override 367 public <T extends Document> T findByDocumentHeaderId(Class<T> documentClass, String id) { 368 return selectAdapter(documentClass).findByDocumentHeaderId(documentClass, id); 369 } 370 371 @Override 372 public <T extends Document> List<T> findByDocumentHeaderIds(Class<T> documentClass, List<String> ids) { 373 return selectAdapter(documentClass).findByDocumentHeaderIds(documentClass, ids); 374 } 375 376 protected LegacyDataAdapter selectAdapter(Object dataObject) { 377 if (LegacyUtils.isKnsEnabled() && (dataObject instanceof Class) && LegacyUtils.useLegacy( 378 (Class<?>) dataObject)) { 379 return getKnsLegacyDataAdapter(); 380 } else if (LegacyUtils.isKnsEnabled() && !(dataObject instanceof Class) && LegacyUtils.useLegacyForObject( 381 dataObject)) { 382 return getKnsLegacyDataAdapter(); 383 } else { 384 return getKradLegacyDataAdapter(); 385 } 386 387 } 388 389 public LegacyDataAdapter getKradLegacyDataAdapter() { 390 return kradLegacyDataAdapter; 391 } 392 393 public void setKradLegacyDataAdapter(LegacyDataAdapter kradLegacyDataAdapter) { 394 this.kradLegacyDataAdapter = kradLegacyDataAdapter; 395 } 396 397 public LegacyDataAdapter getKnsLegacyDataAdapter() { 398 return knsLegacyDataAdapter; 399 } 400 401 public void setKnsLegacyDataAdapter(LegacyDataAdapter knsLegacyDataAdapter) { 402 this.knsLegacyDataAdapter = knsLegacyDataAdapter; 403 } 404 405} 406