001 /** 002 * Implements the Cold Fusion 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.ext.function.Function; 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 import railo.runtime.type.QueryPro; 017 018 public final class QuerySetColumn implements Function { 019 public static String call(PageContext pc , Query query, String columnName,String newColumnName) throws PageException { 020 columnName=columnName.trim(); 021 newColumnName=newColumnName.trim(); 022 Collection.Key src=KeyImpl.getInstance(columnName); 023 Collection.Key trg=KeyImpl.getInstance(newColumnName); 024 025 QueryPro qp = Caster.toQueryPro(query,null); 026 if(qp!=null) qp.rename(src, trg); 027 else { 028 QueryColumn qc = query.removeColumn(src); 029 Array content=new ArrayImpl(); 030 int len=qc.size(); 031 for(int i=1;i<=len;i++){ 032 content.setE(i, qc.get(i)); 033 } 034 query.addColumn(trg, content, qc.getType()); 035 } 036 return null; 037 } 038 }