001 /** 002 * creates a CFML query Column 003 */ 004 package railo.runtime.functions.query; 005 006 import railo.runtime.PageContext; 007 import railo.runtime.exp.DatabaseException; 008 import railo.runtime.exp.PageException; 009 import railo.runtime.functions.BIF; 010 import railo.runtime.type.Array; 011 import railo.runtime.type.FunctionValue; 012 import railo.runtime.type.Query; 013 import railo.runtime.type.QueryImpl; 014 015 public final class Query_ extends BIF { 016 017 private static final long serialVersionUID = -3496695992298284984L; 018 019 public static Query call(PageContext pc , Object[] arr) throws DatabaseException { 020 String[] names=new String[arr.length]; 021 Array[] columns=new Array[arr.length]; 022 int count=0; 023 024 for(int i=0;i<arr.length;i++) { 025 if(arr[i] instanceof FunctionValue) { 026 FunctionValue vf = (FunctionValue)arr[i]; 027 if(vf.getValue() instanceof Array) { 028 names[count]=vf.getNameAsString(); 029 columns[count]=(Array) vf.getValue(); 030 count++; 031 } 032 else throw new DatabaseException("invalid argument for function query, only array as value are allowed","example: query(column1:array(1,2,3))",null,null,null); 033 } 034 else throw new DatabaseException("invalid argument for function query, only named argument are allowed","example: query(column1:array(1,2,3))",null,null,null); 035 } 036 Query query=new QueryImpl(names,columns,"query"); 037 return query; 038 } 039 040 @Override 041 public Object invoke(PageContext pc, Object[] args) throws PageException { 042 return call(pc,(Object[])args[0]); 043 } 044 }