package net.techreadiness.customer.action.organization;
import java.util.AbstractMap.SimpleEntry;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import net.techreadiness.service.OrganizationService;
import net.techreadiness.service.common.DataGrid;
import net.techreadiness.ui.action.filters.AbstractConversationFilterSelectionHandler;
import net.techreadiness.ui.action.filters.DataGridAware;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.stereotype.Component;
import com.google.common.collect.Lists;
@Component
@org.springframework.context.annotation.Scope("prototype")
public class OrgTypeSelectionFilterHandlerForOrgList extends
AbstractConversationFilterSelectionHandler<SimpleEntry<Long, String>> implements DataGridAware {
static final String FILTER_NAME = "orgType";
static final String SCOPE_PATH = "scopePath";
private DataGrid<?> grid;
@Inject
private OrganizationService orgService;
@Override
public List<SimpleEntry<Long, String>> getList(Map<String, Object> parameters) {
return orgService.findOrgTypes(getServiceContext());
}
@Override
public List<SimpleEntry<Long, String>> getSelection() {
Collection<Long> orgTypeCodes = Lists.newArrayList();
for (String orgTypeId : grid.getFilters().get(FILTER_NAME)) {
orgTypeCodes.add(NumberUtils.toLong(orgTypeId));
}
return orgService.findOrgTypesByIds(orgTypeCodes);
}
@Override
public void add(Long id) {
grid.getFilters().get(FILTER_NAME).add(id.toString());
}
@Override
public void remove(Long id) {
grid.getFilters().remove(FILTER_NAME, id.toString());
}
@Override
public void clear() {
grid.getFilters().get(FILTER_NAME).clear();
}
@Override
public void setDataGrid(DataGrid<?> grid) {
this.grid = grid;
}
}