Package railo.runtime.orm.hibernate.tuplizer.accessors

Source Code of railo.runtime.orm.hibernate.tuplizer.accessors.CFCGetter

package railo.runtime.orm.hibernate.tuplizer.accessors;

import java.lang.reflect.Member;
import java.lang.reflect.Method;
import java.util.Map;

import org.hibernate.HibernateException;
import org.hibernate.engine.SessionImplementor;
import org.hibernate.metadata.ClassMetadata;
import org.hibernate.property.Getter;
import org.hibernate.type.Type;

import railo.runtime.Component;
import railo.runtime.PageContext;
import railo.runtime.exp.PageException;
import railo.runtime.orm.hibernate.CommonUtil;
import railo.runtime.orm.hibernate.HibernateCaster;
import railo.runtime.orm.hibernate.HibernateORMEngine;
import railo.runtime.orm.hibernate.HibernatePageException;
import railo.runtime.orm.hibernate.HibernateUtil;
import railo.runtime.type.Collection;
import railo.runtime.type.Collection.Key;

public class CFCGetter implements Getter {

  private Key key;

  /**
   * Constructor of the class
   * @param key
   */
  public CFCGetter(String key){
    this(CommonUtil.createKey(key));
  }
 
  /**
   * Constructor of the class
   * @param engine
   * @param key
   */
  public CFCGetter( Collection.Key key){
    this.key=key;
  }
 
  @Override
  public Object get(Object trg) throws HibernateException {
    try {
      // MUST cache this, perhaps when building xml
      HibernateORMEngine engine = getHibernateORMEngine();
      PageContext pc = CommonUtil.pc();
      Component cfc = CommonUtil.toComponent(trg);
      String name = HibernateCaster.getEntityName(cfc);
      ClassMetadata metaData = engine.getSessionFactory(pc).getClassMetadata(name);
      Type type = HibernateUtil.getPropertyType(metaData, key.getString());

      Object rtn = cfc.getComponentScope().get(key,null);
      return HibernateCaster.toSQL(type, rtn,null);
    }
    catch (PageException pe) {
      throw new HibernatePageException(pe);
    }
  }
 

  public HibernateORMEngine getHibernateORMEngine(){
    try {
      // TODO better impl
      return HibernateUtil.getORMEngine(CommonUtil.pc());
    }
    catch (PageException e) {}
     
    return null;
  }
 

  @Override
  public Object getForInsert(Object trg, Map arg1, SessionImplementor arg2)throws HibernateException {
    return get(trg);// MUST better solution? this is from MapGetter
  }

  @Override
  public Member getMember() {
    return null;
  }

  @Override
  public Method getMethod() {
    return null;
  }

  public String getMethodName() {
    return null;// MUST macht es sinn den namen zur�ck zu geben?
  }

  public Class getReturnType() {
    return Object.class;// MUST more concrete?
  }

}
TOP

Related Classes of railo.runtime.orm.hibernate.tuplizer.accessors.CFCGetter

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.