001: /*
002: * $Id: RowIteratorRowDecoratorIterator.java,v 1.10 2005/12/20 18:32:41 ahimanikya Exp $
003: * =======================================================================
004: * Copyright (c) 2002-2005 Axion Development Team. All rights reserved.
005: *
006: * Redistribution and use in source and binary forms, with or without
007: * modification, are permitted provided that the following conditions
008: * are met:
009: *
010: * 1. Redistributions of source code must retain the above
011: * copyright notice, this list of conditions and the following
012: * disclaimer.
013: *
014: * 2. Redistributions in binary form must reproduce the above copyright
015: * notice, this list of conditions and the following disclaimer in
016: * the documentation and/or other materials provided with the
017: * distribution.
018: *
019: * 3. The names "Tigris", "Axion", nor the names of its contributors may
020: * not be used to endorse or promote products derived from this
021: * software without specific prior written permission.
022: *
023: * 4. Products derived from this software may not be called "Axion", nor
024: * may "Tigris" or "Axion" appear in their names without specific prior
025: * written permission.
026: *
027: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
028: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
029: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
030: * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
031: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
032: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
033: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
034: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
035: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
036: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
037: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
038: * =======================================================================
039: */
040:
041: package org.axiondb.engine.rowiterators;
042:
043: import java.util.NoSuchElementException;
044:
045: import org.axiondb.AxionException;
046: import org.axiondb.Row;
047: import org.axiondb.RowDecorator;
048: import org.axiondb.RowDecoratorIterator;
049: import org.axiondb.RowIterator;
050:
051: /**
052: * A {@link RowDecoratorIterator}based upon some {@link RowDecorator decorator}and
053: * {@link RowIterator}.
054: *
055: * @version $Revision: 1.10 $ $Date: 2005/12/20 18:32:41 $
056: * @author Rodney Waldhoff
057: */
058: public class RowIteratorRowDecoratorIterator implements
059: RowDecoratorIterator {
060:
061: public RowIteratorRowDecoratorIterator(RowIterator iterator,
062: RowDecorator decorator) {
063: setIterator(iterator);
064: setDecorator(decorator);
065: }
066:
067: public void add(Row row) throws AxionException {
068: _iterator.add(row);
069: }
070:
071: public RowDecorator current() throws NoSuchElementException {
072: return decorate(_iterator.current());
073: }
074:
075: public RowDecorator first() throws NoSuchElementException,
076: AxionException {
077: return decorate(_iterator.first());
078: }
079:
080: public RowDecorator getDecorator() {
081: return _decorator;
082: }
083:
084: public RowIterator getIterator() {
085: return _iterator;
086: }
087:
088: public boolean hasCurrent() {
089: return _iterator.hasCurrent();
090: }
091:
092: public boolean hasNext() {
093: return _iterator.hasNext();
094: }
095:
096: public boolean hasPrevious() {
097: return _iterator.hasPrevious();
098: }
099:
100: public RowDecorator last() throws NoSuchElementException,
101: AxionException {
102: return decorate(_iterator.last());
103: }
104:
105: public RowDecorator next() throws NoSuchElementException,
106: AxionException {
107: return decorate(_iterator.next());
108: }
109:
110: public int nextIndex() {
111: return _iterator.nextIndex();
112: }
113:
114: public RowDecorator previous() throws NoSuchElementException,
115: AxionException {
116: return decorate(_iterator.previous());
117: }
118:
119: public int previousIndex() {
120: return _iterator.previousIndex();
121: }
122:
123: public void remove() throws AxionException {
124: _iterator.remove();
125: }
126:
127: public void reset() throws AxionException {
128: _iterator.reset();
129: }
130:
131: public void set(Row row) throws AxionException {
132: _iterator.set(row);
133: }
134:
135: public void setDecorator(RowDecorator decorator) {
136: _decorator = decorator;
137: }
138:
139: public void setIterator(RowIterator iterator) {
140: _iterator = iterator;
141: }
142:
143: public int size() throws AxionException {
144: return _iterator.size();
145: }
146:
147: private RowDecorator decorate(Row row) {
148: _decorator.setRow(_iterator.currentIndex(), row);
149: return _decorator;
150: }
151:
152: private RowDecorator _decorator;
153: private RowIterator _iterator;
154: }
|