1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.krad.service.impl;
17
18 import java.util.HashMap;
19 import java.util.List;
20 import java.util.Map;
21
22 import org.kuali.rice.krad.bo.BusinessObjectRelationship;
23 import org.kuali.rice.krad.bo.PersistableBusinessObject;
24 import org.kuali.rice.krad.service.PersistenceStructureService;
25 import org.kuali.rice.krad.util.ForeignKeyFieldsPopulationState;
26 import org.kuali.rice.krad.util.spring.CacheNoCopy;
27
28
29
30
31
32
33
34 public class PersistenceStructureServiceImpl extends PersistenceServiceImplBase implements PersistenceStructureService {
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 public static Map<Class, Class> referenceConversionMap = new HashMap<Class, Class>();
52
53 private PersistenceStructureService persistenceStructureServiceJpa;
54 private PersistenceStructureService persistenceStructureServiceOjb;
55
56 public void setPersistenceStructureServiceJpa(PersistenceStructureService persistenceStructureServiceJpa) {
57 this.persistenceStructureServiceJpa = persistenceStructureServiceJpa;
58 }
59
60 public void setPersistenceStructureServiceOjb(PersistenceStructureService persistenceStructureServiceOjb) {
61 this.persistenceStructureServiceOjb = persistenceStructureServiceOjb;
62 }
63
64 private PersistenceStructureService getService(Class clazz) {
65 return (isJpaEnabledForKradClass(clazz)) ?
66 persistenceStructureServiceJpa : persistenceStructureServiceOjb;
67 }
68
69
70
71
72 @CacheNoCopy
73 public boolean isPersistable(Class clazz) {
74 return getService(clazz).isPersistable(clazz);
75 }
76
77
78
79
80 @CacheNoCopy
81 public List getPrimaryKeys(Class clazz) {
82 return getService(clazz).getPrimaryKeys(clazz);
83 }
84
85
86
87
88 @CacheNoCopy
89 public List listFieldNames(Class clazz) {
90 return getService(clazz).listFieldNames(clazz);
91 }
92
93
94
95
96
97 public Object clearPrimaryKeyFields(Object persistableObject) {
98 return getService(persistableObject.getClass()).clearPrimaryKeyFields(persistableObject);
99 }
100
101
102
103
104 @CacheNoCopy
105
106 public List listPersistableSubclasses(Class superclazz) {
107 return getService(superclazz).listPersistableSubclasses(superclazz);
108 }
109
110
111
112
113
114 @CacheNoCopy
115 public Map<String, BusinessObjectRelationship> getRelationshipMetadata(Class persistableClass, String attributeName, String attributePrefix) {
116 return getService(persistableClass).getRelationshipMetadata(persistableClass, attributeName, attributePrefix);
117 }
118
119 @CacheNoCopy
120
121 public Map<String, BusinessObjectRelationship> getRelationshipMetadata(Class persistableClass, String attributeName) {
122 return getService(persistableClass).getRelationshipMetadata(persistableClass, attributeName);
123 }
124
125
126
127
128
129 @CacheNoCopy
130 public String getForeignKeyFieldName(Class persistableObjectClass, String attributeName, String pkName) {
131 return getService(persistableObjectClass).getForeignKeyFieldName(persistableObjectClass, attributeName, pkName);
132 }
133
134
135
136
137
138 @CacheNoCopy
139 public Map getReferencesForForeignKey(Class persistableObjectClass, String attributeName) {
140 return getService(persistableObjectClass).getReferencesForForeignKey(persistableObjectClass, attributeName);
141 }
142
143
144
145
146 @CacheNoCopy
147 public Map getForeignKeysForReference(Class clazz, String attributeName) {
148 return getService(clazz).getForeignKeysForReference(clazz, attributeName);
149 }
150
151 @CacheNoCopy
152 public Map<String, String> getInverseForeignKeysForCollection(Class boClass, String collectionName) {
153 return getService(boClass).getInverseForeignKeysForCollection(boClass, collectionName);
154 }
155
156
157
158
159 @CacheNoCopy
160 public Map getNestedForeignKeyMap(Class persistableObjectClass) {
161 return getService(persistableObjectClass).getNestedForeignKeyMap(persistableObjectClass);
162 }
163
164
165
166
167 public boolean hasPrimaryKeyFieldValues(Object persistableObject) {
168 return getService(persistableObject.getClass()).hasPrimaryKeyFieldValues(persistableObject);
169 }
170
171
172
173
174
175 public ForeignKeyFieldsPopulationState getForeignKeyFieldsPopulationState(PersistableBusinessObject bo, String referenceName) {
176 return getService(bo.getClass()).getForeignKeyFieldsPopulationState(bo, referenceName);
177 }
178
179
180
181
182 @CacheNoCopy
183 public Map<String, Class> listReferenceObjectFields(Class boClass) {
184 return getService(boClass).listReferenceObjectFields(boClass);
185 }
186
187 @CacheNoCopy
188 public Map<String, Class> listCollectionObjectTypes(Class boClass) {
189 return getService(boClass).listCollectionObjectTypes(boClass);
190 }
191
192 public Map<String, Class> listCollectionObjectTypes(PersistableBusinessObject bo) {
193 return getService(bo.getClass()).listCollectionObjectTypes(bo);
194 }
195
196
197
198
199 public Map<String, Class> listReferenceObjectFields(PersistableBusinessObject bo) {
200 return getService(bo.getClass()).listReferenceObjectFields(bo);
201 }
202
203 @CacheNoCopy
204 public boolean isReferenceUpdatable(Class boClass, String referenceName) {
205 return getService(boClass).isReferenceUpdatable(boClass, referenceName);
206 }
207
208 @CacheNoCopy
209 public boolean isCollectionUpdatable(Class boClass, String collectionName) {
210 return getService(boClass).isCollectionUpdatable(boClass, collectionName);
211 }
212
213 @CacheNoCopy
214 public boolean hasCollection(Class boClass, String collectionName) {
215 return getService(boClass).hasCollection(boClass, collectionName);
216 }
217
218 @CacheNoCopy
219 public boolean hasReference(Class boClass, String referenceName) {
220 return getService(boClass).hasReference(boClass, referenceName);
221 }
222
223
224
225
226
227
228 public String getTableName(
229 Class<? extends PersistableBusinessObject> boClass) {
230 return getService(boClass).getTableName(boClass);
231 }
232
233
234 }