001 /** 002 * Implements the CFML Function queryaddcolumn 003 */ 004 package railo.runtime.functions.query; 005 006 import railo.runtime.PageContext; 007 import railo.runtime.db.SQLCaster; 008 import railo.runtime.exp.PageException; 009 import railo.runtime.functions.BIF; 010 import railo.runtime.op.Caster; 011 import railo.runtime.type.ArrayImpl; 012 import railo.runtime.type.KeyImpl; 013 import railo.runtime.type.Query; 014 015 public final class QueryAddColumn extends BIF { 016 017 private static final long serialVersionUID = -242783888553490683L; 018 019 public static double call(PageContext pc , Query query, String string) throws PageException { 020 return call(pc, query, string,new ArrayImpl()); 021 } 022 023 public static double call(PageContext pc , Query query, String string, Object array) throws PageException { 024 query.addColumn(KeyImpl.init(string),Caster.toArray(array)); 025 return query.size(); 026 } 027 028 public static double call(PageContext pc , Query query, String string, Object datatype, Object array) throws PageException { 029 if(datatype==null) return call(pc, query, string, array); 030 031 query.addColumn(KeyImpl.init(string),Caster.toArray(array),SQLCaster.toIntType(Caster.toString(datatype))); 032 return query.size(); 033 } 034 035 @Override 036 public Object invoke(PageContext pc, Object[] args) throws PageException { 037 if(args.length==2)return call(pc,Caster.toQuery(args[0]),Caster.toString(args[1])); 038 if(args.length==3)return call(pc,Caster.toQuery(args[0]),Caster.toString(args[1]),args[2]); 039 return call(pc,Caster.toQuery(args[0]),Caster.toString(args[1]),args[2],args[3]); 040 } 041 }