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; } }