001 package com.khubla.pragmatach.framework.dao;
002
003 import java.util.List;
004
005 import com.khubla.pragmatach.framework.api.PragmatachException;
006
007 /**
008 * @author tome
009 */
010 public class PagerImpl<T, I> implements Pager<T> {
011 /**
012 * number of records to return at a time
013 */
014 private final int batchsize;
015 /**
016 * current records
017 */
018 private int currentRecords = 0;
019 /**
020 * total size
021 */
022 private final int totalRecords;
023 /**
024 * dao
025 */
026 private final DAO<T, I> dao;
027
028 /**
029 * ctor
030 */
031 public PagerImpl(DAO<T, I> dao, int batchsize) throws PragmatachException {
032 this.batchsize = batchsize;
033 this.dao = dao;
034 this.totalRecords = (int) dao.count();
035 }
036
037 public int getBatchsize() {
038 return batchsize;
039 }
040
041 @Override
042 public boolean hasNext() {
043 return (currentRecords < totalRecords) ? true : false;
044 }
045
046 @Override
047 public List<T> next() throws PragmatachException {
048 try {
049 /*
050 * query
051 */
052 final List<T> ret = dao.getAll(currentRecords, batchsize);
053 currentRecords += ret.size();
054 return ret;
055 } catch (final Exception e) {
056 throw new PragmatachException("Exception in next", e);
057 }
058 }
059 }