1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
package org.kuali.student.datadictionary.util; |
17 |
|
|
18 |
|
import java.util.ArrayList; |
19 |
|
import java.util.Arrays; |
20 |
|
import java.util.List; |
21 |
|
import java.util.Stack; |
22 |
|
import org.kuali.rice.krad.datadictionary.AttributeDefinition; |
23 |
|
import org.kuali.rice.krad.datadictionary.ComplexAttributeDefinition; |
24 |
|
import org.kuali.rice.krad.datadictionary.DataDictionaryDefinitionBase; |
25 |
|
import org.kuali.rice.krad.datadictionary.DataObjectEntry; |
26 |
|
|
|
|
| 0% |
Uncovered Elements: 105 (105) |
Complexity: 26 |
Complexity Density: 0.41 |
|
27 |
|
public class Dictionary2BeanComparer { |
28 |
|
|
29 |
|
private String className; |
30 |
|
private DataObjectEntry osDict; |
31 |
|
|
|
|
| 0% |
Uncovered Elements: 2 (2) |
Complexity: 1 |
Complexity Density: 0.5 |
|
32 |
0
|
public Dictionary2BeanComparer(String className, DataObjectEntry osDict) {... |
33 |
0
|
this.className = className; |
34 |
0
|
this.osDict = osDict; |
35 |
|
} |
36 |
|
|
|
|
| 0% |
Uncovered Elements: 12 (12) |
Complexity: 3 |
Complexity Density: 0.3 |
|
37 |
0
|
public List<String> compare() {... |
38 |
0
|
if (className == null) { |
39 |
0
|
return Arrays.asList(osDict.getFullClassName() + " does not have a corresponding java class"); |
40 |
|
} |
41 |
0
|
Class<?> clazz = null; |
42 |
0
|
try { |
43 |
0
|
clazz = Thread.currentThread().getContextClassLoader().loadClass(className); |
44 |
|
|
45 |
|
|
46 |
|
|
47 |
|
} catch (ClassNotFoundException ex) { |
48 |
0
|
return Arrays.asList("Cannot compare the dictionary entry to it's object because the object's class cannot be found"); |
49 |
|
} |
50 |
0
|
Stack<DataDictionaryDefinitionBase> parentFields = new Stack<DataDictionaryDefinitionBase>(); |
51 |
0
|
Stack<Class<?>> parentClasses = new Stack<Class<?>>(); |
52 |
0
|
DataObjectEntry osBean = new Bean2DictionaryConverter(clazz, parentFields, parentClasses).convert(); |
53 |
0
|
return compare(osDict, osBean); |
54 |
|
|
55 |
|
} |
56 |
|
|
|
|
| 0% |
Uncovered Elements: 33 (33) |
Complexity: 5 |
Complexity Density: 0.2 |
|
57 |
0
|
private List<String> compare(DataObjectEntry osDict,... |
58 |
|
DataObjectEntry osBean) { |
59 |
0
|
List<String> discrepancies = new ArrayList(); |
60 |
0
|
compareAddDiscrepancy(discrepancies, "Java class name", osDict.getFullClassName(), osBean.getFullClassName()); |
61 |
0
|
compareAddDiscrepancy(discrepancies, "Entry class", osDict.getEntryClass(), osBean.getEntryClass()); |
62 |
0
|
for (AttributeDefinition adDict : osDict.getAttributes()) { |
63 |
0
|
AttributeDefinition adBean = findAttributeDefinition(adDict.getName(), osBean); |
64 |
0
|
if (adBean == null) { |
65 |
|
|
66 |
0
|
discrepancies.add("Field " + adDict.getName() + " does not exist in the corresponding java class"); |
67 |
|
|
68 |
0
|
continue; |
69 |
|
} |
70 |
0
|
compareAddDiscrepancy(discrepancies, adDict.getName() + " dataType", adDict.getDataType(), adBean.getDataType()); |
71 |
|
|
72 |
|
|
73 |
|
} |
74 |
0
|
for (ComplexAttributeDefinition cadDict : osDict.getComplexAttributes()) { |
75 |
0
|
ComplexAttributeDefinition cadBean = findComplexAttributeDefinition(cadDict.getName(), osBean); |
76 |
0
|
if (cadBean == null) { |
77 |
|
|
78 |
0
|
discrepancies.add("Field " + cadDict.getName() + " does not exist in the corresponding java class"); |
79 |
|
|
80 |
0
|
continue; |
81 |
|
} |
82 |
|
|
83 |
|
|
84 |
|
} |
85 |
0
|
for (AttributeDefinition fdBean : osBean.getAttributes()) { |
86 |
0
|
AttributeDefinition fdDict = findAttributeDefinition(fdBean.getName(), osDict); |
87 |
0
|
if (fdDict == null) { |
88 |
0
|
discrepancies.add("Field " + fdBean.getName() + " missing from the dictictionary"); |
89 |
0
|
continue; |
90 |
|
} |
91 |
|
} |
92 |
0
|
for (ComplexAttributeDefinition fdBean : osBean.getComplexAttributes()) { |
93 |
0
|
ComplexAttributeDefinition fdDict = findComplexAttributeDefinition(fdBean.getName(), osDict); |
94 |
0
|
if (fdDict == null) { |
95 |
0
|
discrepancies.add("Field " + fdBean.getName() + " missing from the dictictionary"); |
96 |
0
|
continue; |
97 |
|
} |
98 |
|
} |
99 |
0
|
return discrepancies; |
100 |
|
} |
101 |
|
|
|
|
| 0% |
Uncovered Elements: 6 (6) |
Complexity: 2 |
Complexity Density: 0.5 |
|
102 |
0
|
private AttributeDefinition findAttributeDefinition(String name, DataObjectEntry ode) {... |
103 |
0
|
for (AttributeDefinition fd : ode.getAttributes()) { |
104 |
0
|
if (name.equals(fd.getName())) { |
105 |
0
|
return fd; |
106 |
|
} |
107 |
|
} |
108 |
0
|
return null; |
109 |
|
} |
110 |
|
|
|
|
| 0% |
Uncovered Elements: 6 (6) |
Complexity: 2 |
Complexity Density: 0.5 |
|
111 |
0
|
private ComplexAttributeDefinition findComplexAttributeDefinition(String name, DataObjectEntry ode) {... |
112 |
0
|
for (ComplexAttributeDefinition cad : ode.getComplexAttributes()) { |
113 |
0
|
if (name.equals(cad.getName())) { |
114 |
0
|
return cad; |
115 |
|
} |
116 |
|
} |
117 |
0
|
return null; |
118 |
|
} |
119 |
|
|
|
|
| 0% |
Uncovered Elements: 5 (5) |
Complexity: 2 |
Complexity Density: 0.67 |
|
120 |
0
|
private void compareAddDiscrepancy(List<String> discrepancies, String field, boolean value1,... |
121 |
|
boolean value2) { |
122 |
0
|
String discrep = compare(field, value1, value2); |
123 |
0
|
if (discrep != null) { |
124 |
0
|
discrepancies.add(discrep); |
125 |
|
} |
126 |
|
} |
127 |
|
|
|
|
| 0% |
Uncovered Elements: 5 (5) |
Complexity: 2 |
Complexity Density: 0.67 |
|
128 |
0
|
private void compareAddDiscrepancy(List<String> discrepancies, String field, Object value1,... |
129 |
|
Object value2) { |
130 |
0
|
String discrep = compare(field, value1, value2); |
131 |
0
|
if (discrep != null) { |
132 |
0
|
discrepancies.add(discrep); |
133 |
|
} |
134 |
|
} |
135 |
|
|
|
|
| 0% |
Uncovered Elements: 15 (15) |
Complexity: 5 |
Complexity Density: 0.71 |
|
136 |
0
|
private String compare(String field, boolean value1, boolean value2) {... |
137 |
0
|
if (value1) { |
138 |
0
|
if (value2) { |
139 |
0
|
return null; |
140 |
|
} |
141 |
|
} |
142 |
0
|
if (!value1) { |
143 |
0
|
if (!value2) { |
144 |
0
|
return null; |
145 |
|
} |
146 |
|
} |
147 |
0
|
return field + " inconsistent: dictionary='" + value1 + "', java class='" + value2 + "'"; |
148 |
|
} |
149 |
|
|
|
|
| 0% |
Uncovered Elements: 12 (12) |
Complexity: 4 |
Complexity Density: 0.67 |
|
150 |
0
|
private String compare(String field, Object value1, Object value2) {... |
151 |
0
|
if (value1 == null) { |
152 |
0
|
if (value2 == null) { |
153 |
0
|
return null; |
154 |
|
} |
155 |
|
} else { |
156 |
0
|
if (value1.equals(value2)) { |
157 |
0
|
return null; |
158 |
|
} |
159 |
|
} |
160 |
0
|
return field + " inconsistent: dictionary='" + value1 + "'], java class='" + value2 + "'"; |
161 |
|
} |
162 |
|
} |