package org.jboss.ejb.plugins.cmp.jdbc.metadata;
import java.lang.reflect.Method;
import org.jboss.deployment.DeploymentException;
public final class JDBCDynamicQLQueryMetaData implements JDBCQueryMetaData
{
private final Method method;
private final boolean resultTypeMappingLocal;
private final JDBCReadAheadMetaData readAhead;
private final Class compiler;
private final boolean lazyResultSetLoading;
public JDBCDynamicQLQueryMetaData(JDBCDynamicQLQueryMetaData defaults,
JDBCReadAheadMetaData readAhead,
Class qlCompiler,
boolean lazyResultSetLoading)
throws DeploymentException
{
this.method = defaults.getMethod();
this.readAhead = readAhead;
this.resultTypeMappingLocal = defaults.isResultTypeMappingLocal();
compiler = qlCompiler;
this.lazyResultSetLoading = lazyResultSetLoading;
}
public JDBCDynamicQLQueryMetaData(boolean resultTypeMappingLocal,
Method method,
JDBCReadAheadMetaData readAhead,
Class compiler,
boolean lazyResultSetLoading)
throws DeploymentException
{
this.method = method;
this.readAhead = readAhead;
this.resultTypeMappingLocal = resultTypeMappingLocal;
Class[] parameterTypes = method.getParameterTypes();
if(parameterTypes.length != 2
||
!parameterTypes[0].equals(String.class) ||
!parameterTypes[1].equals(Object[].class))
{
throw new DeploymentException(
"Dynamic-ql method must have two " +
"parameters of type String and Object[]."
);
}
this.compiler = compiler;
this.lazyResultSetLoading = lazyResultSetLoading;
}
public Method getMethod()
{
return method;
}
public boolean isResultTypeMappingLocal()
{
return resultTypeMappingLocal;
}
public JDBCReadAheadMetaData getReadAhead()
{
return readAhead;
}
public Class getQLCompilerClass()
{
return compiler;
}
public boolean isLazyResultSetLoading()
{
return lazyResultSetLoading;
}
public boolean equals(Object o)
{
if(o instanceof JDBCDynamicQLQueryMetaData)
{
return ((JDBCDynamicQLQueryMetaData) o).method.equals(method);
}
return false;
}
public int hashCode()
{
return method.hashCode();
}
public String toString()
{
return "[JDBCDynamicQLQueryMetaData : method=" + method + "]";
}
}