aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/java/com/healthmarketscience/jackcess/Cursor.java39
1 files changed, 23 insertions, 16 deletions
diff --git a/src/java/com/healthmarketscience/jackcess/Cursor.java b/src/java/com/healthmarketscience/jackcess/Cursor.java
index 58acfee..81a2555 100644
--- a/src/java/com/healthmarketscience/jackcess/Cursor.java
+++ b/src/java/com/healthmarketscience/jackcess/Cursor.java
@@ -963,30 +963,30 @@ public abstract class Cursor implements Iterable<Map<String, Object>>
protected abstract DirHandler getDirHandler(boolean moveForward);
/**
- * Row iterator for this table, unmodifiable.
+ * Row iterator for this table, modifiable.
*/
private final class RowIterator implements Iterator<Map<String, Object>>
{
private final Collection<String> _columnNames;
private final boolean _moveForward;
- private boolean _hasNext = false;
+ private Boolean _hasNext;
private RowIterator(Collection<String> columnNames, boolean moveForward)
{
- try {
- _columnNames = columnNames;
- _moveForward = moveForward;
- reset(_moveForward);
- _hasNext = moveToAnotherRow(_moveForward);
- } catch(IOException e) {
- throw new IllegalStateException(e);
- }
+ _columnNames = columnNames;
+ _moveForward = moveForward;
+ reset(_moveForward);
}
- public boolean hasNext() { return _hasNext; }
-
- public void remove() {
- throw new UnsupportedOperationException();
+ public boolean hasNext() {
+ if(_hasNext == null) {
+ try {
+ _hasNext = moveToAnotherRow(_moveForward);
+ } catch(IOException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+ return _hasNext;
}
public Map<String, Object> next() {
@@ -995,13 +995,20 @@ public abstract class Cursor implements Iterable<Map<String, Object>>
}
try {
Map<String, Object> rtn = getCurrentRow(_columnNames);
- _hasNext = moveToAnotherRow(_moveForward);
+ _hasNext = null;
return rtn;
} catch(IOException e) {
throw new IllegalStateException(e);
}
}
-
+
+ public void remove() {
+ try {
+ deleteCurrentRow();
+ } catch(IOException e) {
+ throw new IllegalStateException(e);
+ }
+ }
}
/**