package org.brixcms.plugin.usermgmt.role.admin.filter;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.brixcms.plugin.jpa.web.admin.filter.FilterPlugin;
import org.brixcms.plugin.usermgmt.role.Role;
import org.brixcms.plugin.usermgmt.role.RoleFilter;
/**
* @author dan.simko@gmail.com
*/
public class RoleFilterPlugin implements FilterPlugin<Role, Long, RoleFilter> {
@Override
public String getPluginId() {
return RoleFilterPlugin.class.getName();
}
@Override
public RoleFilter newFilter() {
return new RoleFilter();
}
@Override
public Panel newFilterPanel(String id, IModel<RoleFilter> model) {
return new RoleFilterPanel(id, model);
}
@Override
public List<Predicate> createPredicate(CriteriaBuilder builder, Root<Role> root, RoleFilter filter) {
List<Predicate> predicates = new ArrayList<>();
if (filter.getId() != null) {
predicates.add(builder.equal(root.get("id"), filter.getId()));
}
if (filter.getName() != null) {
predicates.add(builder.like(root.get("name"), filter.getName() + "%"));
}
return predicates;
}
}