diff options
author | Maaartin Grajcar <grajcar@seznam.cz> | 2015-04-07 20:24:19 +0200 |
---|---|---|
committer | Maaartin Grajcar <grajcar@seznam.cz> | 2015-04-07 20:24:19 +0200 |
commit | c2b20d57a0c20fb457dc3d11ee7febdb1f3e14f8 (patch) | |
tree | 92a9d446de99e82206a4c444539b4cebfaab01c7 /src/main/java/com/iciql/TableDefinition.java | |
parent | 2ada578502b7c4f9052ac1eca920b0ed4e84161e (diff) | |
download | iciql-c2b20d57a0c20fb457dc3d11ee7febdb1f3e14f8.tar.gz iciql-c2b20d57a0c20fb457dc3d11ee7febdb1f3e14f8.zip |
Make IQTable.inheritColumns works for an arbitrary depth.
Diffstat (limited to 'src/main/java/com/iciql/TableDefinition.java')
-rw-r--r-- | src/main/java/com/iciql/TableDefinition.java | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/src/main/java/com/iciql/TableDefinition.java b/src/main/java/com/iciql/TableDefinition.java index e4fff87..e07cee6 100644 --- a/src/main/java/com/iciql/TableDefinition.java +++ b/src/main/java/com/iciql/TableDefinition.java @@ -439,28 +439,7 @@ public class TableDefinition<T> { inheritColumns = viewAnnotation.inheritColumns(); } - List<Field> classFields = Utils.newArrayList(); - classFields.addAll(Arrays.asList(clazz.getDeclaredFields())); - if (inheritColumns) { - Class<?> superClass = clazz.getSuperclass(); - classFields.addAll(Arrays.asList(superClass.getDeclaredFields())); - - if (superClass.isAnnotationPresent(IQView.class)) { - IQView superView = superClass.getAnnotation(IQView.class); - if (superView.inheritColumns()) { - // inherit columns from super.super.class - Class<?> superSuperClass = superClass.getSuperclass(); - classFields.addAll(Arrays.asList(superSuperClass.getDeclaredFields())); - } - } else if (superClass.isAnnotationPresent(IQTable.class)) { - IQTable superTable = superClass.getAnnotation(IQTable.class); - if (superTable.inheritColumns()) { - // inherit columns from super.super.class - Class<?> superSuperClass = superClass.getSuperclass(); - classFields.addAll(Arrays.asList(superSuperClass.getDeclaredFields())); - } - } - } + List<Field> classFields = classFields(inheritColumns); Set<FieldDefinition> uniqueFields = new LinkedHashSet<FieldDefinition>(); T defaultObject = Db.instance(clazz); @@ -606,6 +585,27 @@ public class TableDefinition<T> { } } + private List<Field> classFields(boolean inheritColumns) { + List<Field> classFields = Utils.newArrayList(); + classFields.addAll(Arrays.asList(clazz.getDeclaredFields())); + Class<?> superClass = clazz; + while (inheritColumns) { + superClass = superClass.getSuperclass(); + classFields.addAll(Arrays.asList(superClass.getDeclaredFields())); + + if (superClass.isAnnotationPresent(IQView.class)) { + IQView superView = superClass.getAnnotation(IQView.class); + inheritColumns = superView.inheritColumns(); + } else if (superClass.isAnnotationPresent(IQTable.class)) { + IQTable superTable = superClass.getAnnotation(IQTable.class); + inheritColumns = superTable.inheritColumns(); + } else { + inheritColumns = false; + } + } + return classFields; + } + void checkMultipleBooleans() { if (multiplePrimitiveBools) { throw new IciqlException( |