+++ /dev/null
-/*
- * Copyright (c) 1995-2012, Index Data
- * All rights reserved.
- * See the file LICENSE for details.
- */
-package org.z3950.zing.cql;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.nio.CharBuffer;
-
-/**
- * Reader proxy to count how many characters has been read so far.
- * @author jakub
- */
-public class PositionAwareReader extends Reader {
- protected Reader reader;
- protected int pos = -1;
-
- public PositionAwareReader(Reader reader) {
- this.reader = reader;
- }
-
- /*
- * Position of the last read character or -1 if either reading from an empty
- * stream or no 'read' has been invoked for this reader.
- */
- public int getPosition() {
- return pos;
- }
-
- @Override
- public void mark(int readAheadLimit) throws IOException {
- reader.mark(readAheadLimit);
- }
-
- @Override
- public boolean markSupported() {
- return reader.markSupported();
- }
-
- @Override
- public int read() throws IOException {
- int c = reader.read();
- if (c != -1) pos++;
- return c;
- }
-
- @Override
- public int read(char[] cbuf) throws IOException {
- int c = reader.read(cbuf);
- if (c != -1) pos+=c;
- return c;
- }
-
- @Override
- public int read(CharBuffer target) throws IOException {
- int c = reader.read(target);
- if (c != -1) pos+=c;
- return c;
- }
-
- @Override
- public int read(char[] cbuf, int off, int len) throws IOException {
- int c = reader.read(cbuf, off, len);
- if (c != -1) pos+=c;
- return c;
- }
-
- @Override
- public boolean ready() throws IOException {
- return reader.ready();
- }
-
- @Override
- public long skip(long n) throws IOException {
- return reader.skip(n);
- }
-
- @Override
- public void close() throws IOException {
- reader.close();
- }
-
- @Override
- public void reset() throws IOException {
- reader.reset();
- }
-
- //override object methods, to be on the safe-side
-
- @Override
- public boolean equals(Object obj) {
- return reader.equals(obj);
- }
-
- @Override
- public String toString() {
- return reader.toString();
- }
-
- @Override
- public int hashCode() {
- return reader.hashCode();
- }
-
-}