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    }