summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/iciql/TableDefinition.java
diff options
context:
space:
mode:
authorMaaartin Grajcar <grajcar@seznam.cz>2015-04-07 20:24:19 +0200
committerMaaartin Grajcar <grajcar@seznam.cz>2015-04-07 20:24:19 +0200
commitc2b20d57a0c20fb457dc3d11ee7febdb1f3e14f8 (patch)
tree92a9d446de99e82206a4c444539b4cebfaab01c7 /src/main/java/com/iciql/TableDefinition.java
parent2ada578502b7c4f9052ac1eca920b0ed4e84161e (diff)
downloadiciql-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.java44
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(