001 /** 002 * Implements the CFML Function queryaddcolumn 003 */ 004 package railo.runtime.functions.query; 005 006 import railo.runtime.PageContext; 007 import railo.runtime.exp.PageException; 008 import railo.runtime.functions.BIF; 009 import railo.runtime.op.Caster; 010 import railo.runtime.type.Array; 011 import railo.runtime.type.ArrayImpl; 012 import railo.runtime.type.Collection; 013 import railo.runtime.type.KeyImpl; 014 import railo.runtime.type.Query; 015 import railo.runtime.type.QueryColumn; 016 017 public final class QuerySetColumn extends BIF { 018 019 private static final long serialVersionUID = -268309857190767441L; 020 021 public static String call(PageContext pc , Query query, String columnName,String newColumnName) throws PageException { 022 columnName=columnName.trim(); 023 newColumnName=newColumnName.trim(); 024 Collection.Key src=KeyImpl.getInstance(columnName); 025 Collection.Key trg=KeyImpl.getInstance(newColumnName); 026 027 Query qp = Caster.toQuery(query,null); 028 if(qp!=null) qp.rename(src, trg); 029 else { 030 QueryColumn qc = query.removeColumn(src); 031 Array content=new ArrayImpl(); 032 int len=qc.size(); 033 for(int i=1;i<=len;i++){ 034 content.setE(i, qc.get(i,null)); 035 } 036 query.addColumn(trg, content, qc.getType()); 037 } 038 return null; 039 } 040 041 @Override 042 public Object invoke(PageContext pc, Object[] args) throws PageException { 043 return call(pc,Caster.toQuery(args[0]),Caster.toString(args[1]),Caster.toString(args[2])); 044 } 045 }