package net.techreadiness.persistence.datagrid;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import net.techreadiness.persistence.domain.PermissionDO;
import net.techreadiness.service.common.DataGrid;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
@Scope("prototype")
@Repository
@Transactional(readOnly = true)
public class PermissionByScopeItemProviderImpl implements PermissionByScopeItemProvider {
private final Logger log = LoggerFactory.getLogger(PermissionByScopeItemProviderImpl.class);
@PersistenceContext
private EntityManager em;
@Override
public List<PermissionDO> getPage(DataGrid<PermissionDO> grid) {
int start = (grid.getPage() - 1) * grid.getPageSize();
TypedQuery<PermissionDO> query = getQuery(grid);
query.setFirstResult(start);
query.setMaxResults(grid.getPageSize());
return new ArrayList<>(query.getResultList());
}
@Override
public int getTotalNumberOfItems(DataGrid<PermissionDO> grid) {
TypedQuery<PermissionDO> query = getQuery(grid);
log.debug("size is: {}" + query.getResultList().size());
return query.getResultList().size();
}
private TypedQuery<PermissionDO> getQuery(DataGrid<PermissionDO> grid) {
TypedQuery<PermissionDO> query = em.createQuery("select p from PermissionDO p ", PermissionDO.class);
return query;
}
}