1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| protected void getFieldData(String[] fieldNames,int start,Object child,int level,boolean isFoot) throws NoSuchFieldException, IllegalAccessException {
for (int i = start; i < fieldNames.length; i++) { if (child == null) { addData(null, isFoot); countColumnValue(null); getStructure().putNull(level,isFoot); break; } if (child instanceof Map) { child = ((Map) child).get(fieldNames[i]); if (!isList(child)) { if (i == fieldNames.length - 1) { if (child == null) { getStructure().putNull(level,isFoot); } T t = (T) child; addData(t, true); countColumnValue(t); } } else { level++; if (child.getClass().isArray()) { isArrayColumn = true; T[] data = (T[]) child; setArrayType(ARRAY); for (Object d : data) { if (i == fieldNames.length - 1) { addData((T) d, true); } else { getFieldData(fieldNames, i + 1, d, level, true); } } getStructure().put(level - 1, data.length,isFoot); } else { List data = (List) child; setArrayType(LIST); isArrayColumn = true; for (Object d : data) { if (i == fieldNames.length - 1) { T t = (T) d; addData(t, true); } else { getFieldData(fieldNames, i + 1, d, level, true); }
} getStructure().put(level - 1, data.size(),isFoot); } break; } } else if (child instanceof MapTableData.CustomColumn) { MapTableData.CustomColumn customColumn = (MapTableData.CustomColumn) child; String fieldName = fieldNames[i]; child = customColumn.getValueByColumnName(fieldName); if (!isList(child)) { if (i == fieldNames.length - 1) { if (child == null) { getStructure().putNull(level,isFoot); } T t = (T) child; addData(t, true); countColumnValue(t); } } else { level++; if (child.getClass().isArray()) { isArrayColumn = true; T[] data = (T[]) child; setArrayType(ARRAY); for (Object d : data) { if (i == fieldNames.length - 1) { addData((T) d, true); } else { getFieldData(fieldNames, i + 1, d, level, true); } } getStructure().put(level - 1, data.length,isFoot); } else { List data = (List) child; setArrayType(LIST); isArrayColumn = true; for (Object d : data) { if (i == fieldNames.length - 1) { T t = (T) d; addData(t, true); } else { getFieldData(fieldNames, i + 1, d, level, true); }
} getStructure().put(level - 1, data.size(),isFoot); } break; } } } }
|