01: /*
02: * Copyright (c) 1998 - 2005 Versant Corporation
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * Versant Corporation - initial API and implementation
10: */
11: package com.versant.core.jdbc.fetch;
12:
13: import java.util.Iterator;
14: import java.sql.PreparedStatement;
15:
16: /**
17: * This provides access to the results of a FetchSpec query.
18: */
19: public interface FetchResult extends Iterator {
20:
21: /**
22: * Execute the query for these results.
23: */
24: public void execute();
25:
26: /**
27: * If this query is busy executing then call cancel on its
28: * PreparedStatement. Otherwise do nothing.
29: */
30: public void cancel();
31:
32: /**
33: * Close these results, discarding any exceptions. It is a NOP to call
34: * close on an already closed result.
35: */
36: public void close();
37:
38: /**
39: * Has this result been closed?
40: */
41: public boolean isClosed();
42:
43: /**
44: * Are there more results? This will execute the query if not already
45: * done. It returns false if the results have been closed. The results
46: * are automatically closed if there are no more results.
47: */
48: public boolean hasNext();
49:
50: /**
51: * Return an Object[] or a Object depending on the spec. Throws a
52: * JDOFatalInternalException if there are no more rows or the results
53: * have been closed.
54: */
55: public Object next();
56:
57: /**
58: * Remove is not supported.
59: */
60: public void remove();
61:
62: /**
63: * Is this a scrollable result? If true then get(index) can be used to
64: * access the rows.
65: */
66: public boolean isScrollable();
67:
68: /**
69: * Return the number of results. This is only valid for a scrollable
70: * result. This will execute the query if not already done.
71: */
72: public int size();
73:
74: /**
75: * Return the row at index (zero based). This is only valid for a
76: * scrollable result. This will execute the query if not already done.
77: */
78: public Object get(int index);
79:
80: /**
81: * Get the FetchSpec we were created from. This provides state information
82: * e.g. the type of each entry in the projection.
83: */
84: public FetchSpec getFetchSpec();
85:
86: /**
87: * Todo remove this hack for EJBQL when we refactor query stuff
88: */
89: public PreparedStatement getPreparedStatement();
90: }
|