001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package org.jboss.ejb.plugins.cmp.jdbc.metadata;
023:
024: import java.lang.reflect.Method;
025:
026: /**
027: * Imutable class which holds information about a raw sql query.
028: * A raw sql query allows you to do anything sql allows you to do.
029: *
030: * @author <a href="mailto:dain@daingroup.com">Dain Sundstrom</a>
031: * @version $Revision: 57209 $
032: */
033: public final class JDBCRawSqlQueryMetaData implements JDBCQueryMetaData {
034: private final Method method;
035:
036: private final Class compiler;
037:
038: private final boolean lazyResultSetLoading;
039:
040: /**
041: * Constructs a JDBCRawSqlQueryMetaData which is invoked by the specified
042: * method.
043: *
044: * @param method the method which invokes this query
045: */
046: public JDBCRawSqlQueryMetaData(Method method, Class qlCompiler,
047: boolean lazyResultSetLoading) {
048: this .method = method;
049: this .compiler = qlCompiler;
050: this .lazyResultSetLoading = lazyResultSetLoading;
051: }
052:
053: public Method getMethod() {
054: return method;
055: }
056:
057: public boolean isResultTypeMappingLocal() {
058: return false;
059: }
060:
061: public Class getQLCompilerClass() {
062: return compiler;
063: }
064:
065: /**
066: * Gets the read ahead metadata for the query.
067: *
068: * @return the read ahead metadata for the query.
069: */
070: public JDBCReadAheadMetaData getReadAhead() {
071: return JDBCReadAheadMetaData.DEFAULT;
072: }
073:
074: public boolean isLazyResultSetLoading() {
075: return lazyResultSetLoading;
076: }
077:
078: /**
079: * Compares this JDBCRawSqlQueryMetaData against the specified object. Returns
080: * true if the objects are the same. Two JDBCRawSqlQueryMetaData are the same
081: * if they are both invoked by the same method.
082: *
083: * @param o the reference object with which to compare
084: * @return true if this object is the same as the object argument; false otherwise
085: */
086: public boolean equals(Object o) {
087: if (o instanceof JDBCRawSqlQueryMetaData) {
088: return ((JDBCRawSqlQueryMetaData) o).method.equals(method);
089: }
090: return false;
091: }
092:
093: /**
094: * Returns a hashcode for this JDBCRawSqlQueryMetaData. The hashcode is computed
095: * by the method which invokes this query.
096: *
097: * @return a hash code value for this object
098: */
099: public int hashCode() {
100: return method.hashCode();
101: }
102:
103: /**
104: * Returns a string describing this JDBCRawSqlQueryMetaData. The exact details
105: * of the representation are unspecified and subject to change, but the following
106: * may be regarded as typical:
107: * <p/>
108: * "[JDBCRawSqlQueryMetaData: method=public org.foo.User findByName(java.lang.String)]"
109: *
110: * @return a string representation of the object
111: */
112: public String toString() {
113: return "[JDBCRawSqlQueryMetaData : method=" + method + "]";
114: }
115: }
|