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