From 8cb8936567f1f74d7f0b664b391802709982624d Mon Sep 17 00:00:00 2001 From: Sebastian Schmelzer Date: Thu, 23 Aug 2012 17:43:54 +0200 Subject: add support for filter, change sorting/pagination api, cleanup --- .../java/nu/xss/jpa/query/filter/EntityFilter.java | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/main/java/nu/xss/jpa/query/filter/EntityFilter.java (limited to 'src/main/java/nu/xss/jpa/query/filter/EntityFilter.java') 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 extends AbstractFilter { + + private Class entity; + + private List flags = new ArrayList(); + + public EntityFilter(Class entity, EntityFilterFlags... flags) { + super(); + this.setEntity(entity); + for (EntityFilterFlags f : flags) { + this.flags.add(f); + } + } + + @Override + public void buildFilters(CriteriaBuilder cb, Root from) { + List fields = getInheritedFields(entity); + List methods = new ArrayList(); + 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 getEntity() { + return entity; + } + + public void setEntity(Class entity) { + this.entity = entity; + } + + private List getInheritedFields(Class type) { + List fields = new ArrayList(); + for (Class c = type; c != null; c = c.getSuperclass()) { + fields.addAll(Arrays.asList(c.getDeclaredFields())); + } + return fields; + } + +} -- cgit v1.2.3-55-g7522