001 package railo.runtime.functions.orm; 002 003 import railo.runtime.PageContext; 004 import railo.runtime.exp.FunctionException; 005 import railo.runtime.exp.PageException; 006 import railo.runtime.op.Caster; 007 import railo.runtime.op.Decision; 008 import railo.runtime.orm.ORMSession; 009 import railo.runtime.orm.ORMUtil; 010 import railo.runtime.type.ArrayImpl; 011 import railo.runtime.type.Struct; 012 013 public class ORMExecuteQuery { 014 015 public static Object call(PageContext pc,String hql) throws PageException { 016 return _call(pc,hql,null,false,null); 017 } 018 public static Object call(PageContext pc,String hql,Object paramsOrUnique) throws PageException { 019 if(Decision.isCastableToBoolean(paramsOrUnique)){ 020 return _call(pc,hql,null,Caster.toBooleanValue(paramsOrUnique),null); 021 } 022 return _call(pc,hql,paramsOrUnique,false,null); 023 } 024 public static Object call(PageContext pc,String hql,Object paramsOrUnique,Object uniqueOrQueryOptions) throws PageException { 025 if(Decision.isCastableToBoolean(paramsOrUnique)){ 026 return _call(pc,hql,null,Caster.toBooleanValue(paramsOrUnique),Caster.toStruct(uniqueOrQueryOptions)); 027 } 028 if(Decision.isCastableToBoolean(uniqueOrQueryOptions)){ 029 return _call(pc,hql,paramsOrUnique,Caster.toBooleanValue(uniqueOrQueryOptions),null); 030 } 031 return _call(pc,hql,paramsOrUnique,false,Caster.toStruct(uniqueOrQueryOptions)); 032 } 033 034 public static Object call(PageContext pc,String hql,Object params,Object unique, Object queryOptions) throws PageException { 035 return _call(pc,hql,params,Caster.toBooleanValue(unique),Caster.toStruct(queryOptions)); 036 } 037 private static Object _call(PageContext pc,String hql, Object params, boolean unique, Struct queryOptions) throws PageException { 038 ORMSession session=ORMUtil.getSession(pc); 039 //ORMEngine engine= ORMUtil.getEngine(pc); 040 if(params==null) 041 return session.executeQuery(pc,hql,new ArrayImpl(),unique,queryOptions); 042 else if(Decision.isStruct(params)) 043 return session.executeQuery(pc,hql,Caster.toStruct(params),unique,queryOptions); 044 else if(Decision.isArray(params)) 045 return session.executeQuery(pc,hql,Caster.toArray(params),unique,queryOptions); 046 else if(Decision.isCastableToStruct(params)) 047 return session.executeQuery(pc,hql,Caster.toStruct(params),unique,queryOptions); 048 else if(Decision.isCastableToArray(params)) 049 return session.executeQuery(pc,hql,Caster.toArray(params),unique,queryOptions); 050 else 051 throw new FunctionException(pc, "ORMExecuteQuery", 2, "params", "cannot convert the params to a array or a struct"); 052 } 053 }