package net.techreadiness.customer.action.user; import java.util.Collection; import java.util.List; import java.util.Map; import javax.inject.Inject; import net.techreadiness.service.RoleService; import net.techreadiness.service.object.Role; import net.techreadiness.ui.action.filters.AbstractConversationFilterSelectionHandler; import org.springframework.stereotype.Component; import com.google.common.collect.Lists; @Component @org.springframework.context.annotation.Scope("prototype") public class RoleFilterSelectionHandlerForUser extends AbstractConversationFilterSelectionHandler<Role> { private static final String ROLE_IDS = "roleId"; private static final String USER_DATAGRID_STATE = "userGrid"; @Inject private RoleService roleService; @Override public List<Role> getList(Map<String, Object> parameters) { String[] term = (String[]) parameters.get("term"); List<Role> roles; if (term != null && term.length > 0 && !term[0].trim().isEmpty()) { roles = roleService.findRolesBySearchTerm(getServiceContext(), term[0]); } else { roles = Lists.newLinkedList(roleService.findRolesFromScope(getServiceContext())); } return roles; } @Override public List<Role> getSelection() { Collection<String> strings = getDataGridState(USER_DATAGRID_STATE).getFilters().get(ROLE_IDS); Collection<Long> roleIds = Lists.newArrayList(); for (String string : strings) { roleIds.add(Long.valueOf(string)); } return roleService.findByIds(getServiceContext(), roleIds); } @Override public void add(Long id) { getDataGridState(USER_DATAGRID_STATE).getFilters().put(ROLE_IDS, id.toString()); } @Override public void remove(Long id) { getDataGridState(USER_DATAGRID_STATE).getFilters().remove(ROLE_IDS, id.toString()); } @Override public void clear() { getDataGridState(USER_DATAGRID_STATE).getFilters().get(ROLE_IDS).clear(); } }