Package org.jboss.ejb.plugins.cmp.ejbql

Source Code of org.jboss.ejb.plugins.cmp.ejbql.AbstractMappedTypeFunction

package org.jboss.ejb.plugins.cmp.ejbql;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;

import org.jboss.ejb.plugins.cmp.jdbc.JDBCResultSetReader;
import org.jboss.ejb.plugins.cmp.jdbc.JDBCType;
import org.jboss.ejb.plugins.cmp.jdbc.JDBCUtil;
import org.jboss.logging.Logger;

/**
* A AbstractMappedTypeFunction.
*
* @author <a href="alex@jboss.com">Alexey Loubyansky</a>
* @version $Revision: 1.1 $
*/
public abstract class AbstractMappedTypeFunction extends SimpleNode implements SelectFunction
{
   protected final Logger log;
   protected Class resultType;
   protected JDBCResultSetReader resultReader;
  
   public AbstractMappedTypeFunction(int i)
   {
      super(i);
      log = Logger.getLogger(getClass());
   }

   public void setResultType(Class type)
   {
      if(Collection.class.isAssignableFrom(type))
      {
         resultType = getDefaultResultType();
      }
      else
      {
         this.resultType = type;
      }
      this.resultReader = JDBCUtil.getResultReaderByType(resultType);
   }

   protected Class getDefaultResultType()
   {
      return Double.class;
   }

   public void setJDBCType(final JDBCType jdbcType)
   {
      if(resultReader != null)
      {
         final JDBCResultSetReader jdbcResultReader = this.resultReader;
         resultReader = new JDBCResultSetReader()
         {
            public Object get(ResultSet rs, int index, Class destination, Logger log) throws SQLException
            {
               Object jdbcResult = jdbcResultReader.get(rs, index, destination, log);
               return jdbcType.setColumnValue(0, null, jdbcResult);
            }
         };
      }
   }

   // SelectFunction implementation

   public Object readResult(ResultSet rs) throws SQLException
   {
      return resultReader.get(rs, 1, resultType, log);
   }
}
TOP

Related Classes of org.jboss.ejb.plugins.cmp.ejbql.AbstractMappedTypeFunction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.