| 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 |
|
} |