01: /**********************************************************************
02: Copyright (c) 2005 Andy Jefferson and others. All rights reserved.
03: Licensed under the Apache License, Version 2.0 (the "License");
04: you may not use this file except in compliance with the License.
05: You may obtain a copy of the License at
06:
07: http://www.apache.org/licenses/LICENSE-2.0
08:
09: Unless required by applicable law or agreed to in writing, software
10: distributed under the License is distributed on an "AS IS" BASIS,
11: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12: See the License for the specific language governing permissions and
13: limitations under the License.
14:
15:
16: Contributors:
17: ...
18: **********************************************************************/package org.jpox.store;
19:
20: import org.jpox.store.mapping.JavaTypeMapping;
21:
22: /**
23: * Representation of a statement to fetch a particular object.
24: * @version $Revision: 1.13 $
25: */
26: public interface FetchStatement {
27: /**
28: * Add column(s) to the SELECT clause using a LEFT OUTER JOIN
29: * to join to another table. Joins using the refMapping in the other table,
30: * and selects the columns of the selectMapping. A discriminator in the other table
31: * can be provided where this should be part of the join constraint.
32: * @param refMapping Mapping in the other table to join to.
33: * @param selectMapping Mapping of the field in the other table to select
34: * @param refDiscrimMapping Mapping for discriminator in the related table (optional)
35: * @param discrimValues Valid values for the discriminator in the related table (optional)
36: * @param useExistingJoinIfPossible Use an existing outer join if possible
37: * @return The parameter position(s) of the column(s) in the statement.
38: */
39: public abstract int[] selectOuterJoin(JavaTypeMapping refMapping,
40: JavaTypeMapping selectMapping,
41: JavaTypeMapping refDiscrimMapping, Object[] discrimValues,
42: boolean useExistingJoinIfPossible);
43:
44: /**
45: * Add column(s) to the SELECT clause using a LEFT OUTER JOIN
46: * to join to another table. Joins using the refMapping in the other table,
47: * and selects the columns of the selectMapping. A reference type mapping can be provided
48: * where we need the reference mapping joining to a subclass table to define the
49: * correct type.
50: * @param refMapping Mapping in the other table to join to.
51: * @param selectMapping Mapping of the field in the other table to select
52: * @param refTypeMapping Mapping for subclass table for the related table (optional)
53: * @return The parameter position(s) of the column(s) in the statement.
54: */
55: public abstract int[] selectOuterJoin(JavaTypeMapping refMapping,
56: JavaTypeMapping selectMapping,
57: JavaTypeMapping refTypeMapping);
58:
59: /**
60: * Add a column to the SELECT clause.
61: * @param col The column to add
62: * @return The parameter position of this column in the statement.
63: */
64: public abstract int select(DatastoreField col);
65:
66: /**
67: * Adds an expression to the SELECT clause.
68: * @param expr the expr to add to the select clause
69: * @return The parameter position of this expression in the statement.
70: */
71: public abstract int select(String expr);
72:
73: /**
74: * Method to specify a column to be referenced.
75: * @param col The column
76: * @return The column statement text
77: */
78: public abstract String referenceDatastoreField(DatastoreField col);
79:
80: /**
81: * Method to add an extra condition to the WHERE clause.
82: * @param condition The condition
83: */
84: public abstract void andCondition(String condition);
85:
86: /**
87: * Method to return the statement assuming no locking of rows.
88: * @return The statement
89: */
90: public abstract String toString();
91:
92: /**
93: * Method to return the statement.
94: * @param lock Whether to lock the rows found by this SELECT
95: * @return The statement
96: **/
97: public abstract String toString(boolean lock);
98: }
|