1 package jimm.datavision.source; 2 import java.util.List ; 3 4 14 public abstract class DataCursor { 15 16 protected int currRowNumber; protected List prevRowData; 18 protected List currRowData; 19 protected List nextRowData; 20 protected List lastRowData; 21 protected int lastRowNumber; 22 23 public boolean isFirst() { return currRowNumber == 1; } 24 public boolean isLast() { 25 if (nextRowData != null) return false; 27 nextRowData = readRowData(); return nextRowData == null; } 30 31 public boolean next() { 32 if (nextRowData == null) nextRowData = readRowData(); 34 35 if (nextRowData == null) { lastRowData = currRowData; 37 lastRowNumber = currRowNumber; 38 } 39 40 prevRowData = currRowData; 41 currRowData = nextRowData; 42 nextRowData = null; 43 44 ++currRowNumber; 45 return currRowData != null; 46 } 47 48 public boolean previous() { 49 if (currRowNumber <= 1) return false; 51 52 nextRowData = currRowData; 53 currRowData = prevRowData; 54 prevRowData = null; 55 --currRowNumber; 56 return true; 57 } 58 59 public boolean last() { 60 while (lastRowData == null && next()) 61 ; 62 currRowData = lastRowData; 63 currRowNumber = lastRowNumber; 64 return true; 65 } 66 67 public int getRow() { return currRowNumber; } 68 69 public void close() {} 70 71 84 public Object getObject(int index) { 85 return currRowData == null ? null : currRowData.get(index - 1); 86 } 87 88 protected abstract List readRowData(); 89 90 } 91 | Popular Tags |