summaryrefslogtreecommitdiffstats
path: root/src/main/java/nu/xss/jpa/query/filter/EntityFilter.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/nu/xss/jpa/query/filter/EntityFilter.java')
-rw-r--r--src/main/java/nu/xss/jpa/query/filter/EntityFilter.java55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/main/java/nu/xss/jpa/query/filter/EntityFilter.java b/src/main/java/nu/xss/jpa/query/filter/EntityFilter.java
new file mode 100644
index 0000000..6af0a0b
--- /dev/null
+++ b/src/main/java/nu/xss/jpa/query/filter/EntityFilter.java
@@ -0,0 +1,55 @@
+package nu.xss.jpa.query.filter;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.Root;
+
+public class EntityFilter<E> extends AbstractFilter<E> {
+
+ private Class<E> entity;
+
+ private List<EntityFilterFlags> flags = new ArrayList<EntityFilterFlags>();
+
+ public EntityFilter(Class<E> entity, EntityFilterFlags... flags) {
+ super();
+ this.setEntity(entity);
+ for (EntityFilterFlags f : flags) {
+ this.flags.add(f);
+ }
+ }
+
+ @Override
+ public void buildFilters(CriteriaBuilder cb, Root<?> from) {
+ List<Field> fields = getInheritedFields(entity);
+ List<Method> methods = new ArrayList<Method>();
+ System.out.println(fields.toString());
+ for (Method m: entity.getMethods()) {
+ if (m.getName().startsWith("get") && m.getName() != "getClass") {
+ methods.add(m);
+ }
+ }
+ System.out.println(methods.toString());
+ }
+
+ public Class<E> getEntity() {
+ return entity;
+ }
+
+ public void setEntity(Class<E> entity) {
+ this.entity = entity;
+ }
+
+ private List<Field> getInheritedFields(Class<?> type) {
+ List<Field> fields = new ArrayList<Field>();
+ for (Class<?> c = type; c != null; c = c.getSuperclass()) {
+ fields.addAll(Arrays.asList(c.getDeclaredFields()));
+ }
+ return fields;
+ }
+
+}