package net.techreadiness.persistence.datagrid;
import java.util.Collection;
import java.util.List;
import javax.inject.Inject;
import net.techreadiness.persistence.criteriaquery.Criteria;
import net.techreadiness.persistence.criteriaquery.CriteriaQuery;
import net.techreadiness.persistence.criteriaquery.QueryResult;
import net.techreadiness.persistence.domain.UserDO;
import net.techreadiness.service.common.DataGrid;
import net.techreadiness.service.common.DataGridItemProviderImpl;
import net.techreadiness.service.object.User;
import net.techreadiness.service.object.mapping.MappingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Component
@Scope("prototype")
@Transactional(readOnly = true)
public class UserByUserItemProviderImpl extends DataGridItemProviderImpl<User> implements UserByUserItemProvider {
private Collection<Long> userIds;
@Inject
MappingService mappingService;
@Autowired
CriteriaQuery<UserDO> criteriaQuery;
@Override
public List<User> getPage(DataGrid<User> grid) {
int start = (grid.getPage() - 1) * grid.getPageSize();
int pageSize = 100;
Criteria criteria = new Criteria(start, pageSize);
criteriaQuery.setBaseWhere("main.user_id in (:user_id_list)");
criteria.getParameters().putAll("user_id_list", userIds);
QueryResult<UserDO> result = criteriaQuery.getData(criteria, UserDO.class);
setTotalNumberOfItems(result.getTotalRowCount());
return mappingService.mapFromDOList(result.getRows());
}
public Collection<Long> getUserIds() {
return userIds;
}
@Override
public void setUserIds(Collection<Long> userIds) {
this.userIds = userIds;
}
}