User: dsundstrom Date: 02/02/26 15:45:32 Added: src/main/org/jboss/ejb/plugins/cmp/jdbc JDBCDynamicQLQuery.java Log: Initial revision of DynamicQl command which compiles and executes JBossQL at runtime. Revision Changes Path 1.1 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCDynamicQLQuery.java Index: JDBCDynamicQLQuery.java =================================================================== /* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.ejb.plugins.cmp.jdbc; import java.lang.reflect.Method; import java.util.Collection; import javax.ejb.FinderException; import org.jboss.deployment.DeploymentException; import org.jboss.ejb.EntityEnterpriseContext; import org.jboss.ejb.plugins.cmp.ejbql.Catalog; import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCQueryMetaData; import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCDynamicQLQueryMetaData; import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCReadAheadMetaData; /** * This class generates a query from JBoss-QL. * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> * @version $Revision: 1.1 $ */ public class JDBCDynamicQLQuery extends JDBCAbstractQueryCommand { private final Catalog catalog; private JDBCDynamicQLQueryMetaData metadata; public JDBCDynamicQLQuery( JDBCStoreManager manager, JDBCQueryMetaData q) throws DeploymentException { super(manager, q); catalog = (Catalog)manager.getApplicationData("CATALOG"); metadata = (JDBCDynamicQLQueryMetaData)q; } public Collection execute( Method finderMethod, Object[] args, EntityEnterpriseContext ctx) throws FinderException { String dynamicQL = (String)args[0]; if(getLog().isDebugEnabled()) { getLog().debug("DYNAMIC-QL: " + dynamicQL); } JDBCEJBQLCompiler compiler = new JDBCEJBQLCompiler(catalog); // get the parameters Object[] parameters = (Object[])args[1]; if(parameters == null) { throw new FinderException("Parameters is null"); } // get the parameter types Class[] parameterTypes = new Class[parameters.length]; for(int i=0; i<parameters.length; i++) { if(parameters[i] == null) { throw new FinderException("Parameter["+i+"] is null"); } parameterTypes[i] = parameters[i].getClass(); } // compile the dynamic-ql try { compiler.compileJBossQL( dynamicQL, finderMethod.getReturnType(), parameterTypes, metadata.getReadAhead()); } catch(Throwable t) { throw new FinderException("Error compiling ejbql: " + t); } // set the sql if(getLog().isDebugEnabled()) { getLog().debug("SQL:\r\n" + compiler.getSQL()); } setSQL(compiler.getSQL()); // set select object if(compiler.isSelectEntity()) { setSelectEntity(compiler.getSelectEntity()); } else { setSelectField(compiler.getSelectField()); } // get the parameter order setParameterList(compiler.getInputParameters()); return super.execute(finderMethod, parameters, ctx); } }
_______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development