001 /** 002 * creates a Cold Fusion 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.ext.function.Function; 009 import railo.runtime.type.Array; 010 import railo.runtime.type.FunctionValue; 011 import railo.runtime.type.Query; 012 import railo.runtime.type.QueryImpl; 013 014 public final class Query_ implements Function { 015 public static Query call(PageContext pc , Object[] arr) throws DatabaseException { 016 String[] names=new String[arr.length]; 017 Array[] columns=new Array[arr.length]; 018 int count=0; 019 020 for(int i=0;i<arr.length;i++) { 021 if(arr[i] instanceof FunctionValue) { 022 FunctionValue vf = (FunctionValue)arr[i]; 023 if(vf.getValue() instanceof Array) { 024 names[count]=vf.getName(); 025 columns[count]=(Array) vf.getValue(); 026 count++; 027 } 028 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); 029 } 030 else throw new DatabaseException("invalid argument for function query, only named argument are allowed","example: query(column1:array(1,2,3))",null,null,null); 031 } 032 Query query=new QueryImpl(names,columns,"query"); 033 return query; 034 } 035 }