001: package org.mandarax.util;
002:
003: /*
004: * Copyright (C) 1999-2004 <A href="http://www-ist.massey.ac.nz/JBDietrich" target="_top">Jens Dietrich</a>
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2 of the License, or (at your option) any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
019: */
020:
021: import java.util.List;
022: import java.util.Map;
023: import org.mandarax.kernel.Derivation;
024: import org.mandarax.kernel.InferenceException;
025: import org.mandarax.kernel.ResultSet;
026: import org.mandarax.kernel.VariableTerm;
027:
028: /**
029: * Abstract result set wrapping another result set and delegating all methods to the
030: * wrapped result set. Useful as a superclass when implementingg filters.
031: * @author <A href="http://www-ist.massey.ac.nz/JBDietrich" target="_top">Jens Dietrich</A>
032: * @version 3.4 <7 March 05>
033: * @since 3.0
034: */
035:
036: public abstract class ResultSetWrapper implements ResultSet {
037: protected ResultSet delegate = null;
038:
039: /**
040: * Constructor.
041: * @param delegate the delegate
042: */
043: public ResultSetWrapper(ResultSet delegate) {
044: super ();
045: this .delegate = delegate;
046: }
047:
048: /**
049: * Indicates whether the cursor is at the first position.
050: * @return a boolean
051: */
052: public boolean isFirst() throws InferenceException {
053: return delegate.isFirst();
054: }
055:
056: /**
057: * Indicates whether the cursor is at the last position.
058: * @return a boolean
059: */
060: public boolean isLast() throws InferenceException {
061: return delegate.isLast();
062: }
063:
064: /**
065: * Moves the cursor to the first row in this ResultSet object.
066: * @return true if the cursor is on a valid row; false if there are no rows in the result set
067: */
068: public boolean first() throws InferenceException {
069: return delegate.first();
070: }
071:
072: /**
073: * Moves the cursor to the last row in this ResultSet object.
074: * @return true if the cursor is on a valid row; false if there are no rows in the results
075: */
076: public boolean last() throws InferenceException {
077: return delegate.last();
078: }
079:
080: /**
081: * Retrieves the current result number. Numbering starts with 1.
082: * @return a number
083: */
084: public int getResultNumber() throws InferenceException {
085: return delegate.getResultNumber();
086: }
087:
088: /**
089: * Moves the cursor down one row from its current position. A ResultSet cursor is initially positioned
090: * before the first row; the first call to the method next makes the first row the current row;
091: * the second call makes the second row the current row, and so on.
092: * @return true if the new current row is valid; false if there are no more rows
093: */
094: public boolean next() throws InferenceException {
095: return delegate.next();
096: }
097:
098: /**
099: * Moves the cursor to the previous row in this ResultSet object.
100: * @return true if the cursor is on a valid row; false if it is off the result set
101: */
102: public boolean previous() throws InferenceException {
103: return delegate.previous();
104: };
105:
106: /**
107: * Releases this ResultSet resources.
108: */
109: public void close() throws InferenceException {
110: delegate.close();
111: }
112:
113: /**
114: * Get a list of all variable terms in the query.
115: * @return a list of variable terms
116: */
117: public List getQueryVariables() throws InferenceException {
118: return delegate.getQueryVariables();
119: }
120:
121: /**
122: * Get the derivation of the current result.
123: * Throw an exception if the cursor is not positioned at a result.
124: * @return the proof (derivation)
125: */
126: public Derivation getProof() throws InferenceException {
127: return delegate.getProof();
128: }
129:
130: /**
131: * Get the object that replaces the variable with the given name and type.
132: * If there is no such object, return null.
133: * Throw an exception if the cursor is not positioned at a result.
134: * @return the object that replaced the variable
135: * @param type the type of the variable
136: * @param name the name of the variable
137: * @exception an inference exception
138: */
139: public Object getResult(Class type, String name)
140: throws InferenceException {
141: return delegate.getResult(type, name);
142: }
143:
144: /**
145: * Get the object that replaces the variable.
146: * If there is no such object, return null.
147: * Throw an exception if the cursor is not positioned at a result.
148: * @return the object that replaced the variable
149: * @param term the variable term that is (perhaps) replaced
150: * @exception an inference exception
151: */
152: public Object getResult(VariableTerm term)
153: throws InferenceException {
154: return delegate.getResult(term);
155: }
156:
157: /**
158: * Get the current position of the cursor.
159: * @return an integer
160: */
161: public int getCursorPosition() throws InferenceException {
162: return delegate.getCursorPosition();
163: }
164:
165: /**
166: * Moves the cursor a relative number of results, either positive or negative.
167: * @param offset the number of results
168: * @return true if the cursor is on the result set; false otherwise.
169: */
170: public boolean relative(int offset) throws InferenceException {
171: return delegate.relative(offset);
172: }
173:
174: /**
175: * Moves the cursor to the given result number.
176: * @param resultNo the number of results.
177: * @return true if the cursor is on the result set; false otherwise
178: */
179: public boolean absolute(int resultNo) throws InferenceException {
180: return delegate.absolute(resultNo);
181: }
182:
183: /**
184: * Moves the cursor to the front of this ResultSet object, just before the first row.
185: * This method has no effect if the result set contains no rows.
186: */
187: public void beforeFirst() throws InferenceException {
188: delegate.beforeFirst();
189: }
190:
191: /**
192: * Moves the cursor to the end of this ResultSet object, just after the last row.
193: * This method has no effect if the result set contains no rows.
194: */
195: public void afterLast() throws InferenceException {
196: delegate.afterLast();
197: }
198:
199: /**
200: * Retrieves whether the cursor is before the first row in this ResultSet object.
201: * @return true if the cursor is before the first row; false if the cursor is at any other position or the result set contains no rows
202: */
203: public boolean isBeforeFirst() throws InferenceException {
204: return delegate.isBeforeFirst();
205: }
206:
207: /**
208: * Retrieves whether the cursor is after the last result in this ResultSet object.
209: * @return true if the cursor is after the last result; false if the cursor is at any other position or the result set contains no results
210: */
211: public boolean isAfterLast() throws InferenceException {
212: return delegate.isAfterLast();
213: }
214:
215: /**
216: * Get the replacements as map (term -> term associations).
217: * @return a map
218: */
219: public Map getResults() throws InferenceException {
220: return delegate.getResults();
221: }
222:
223: }
|