Package railo.runtime.type

Source Code of railo.runtime.type.QueryColumnRef

package railo.runtime.type;

import java.util.Date;
import java.util.Iterator;
import java.util.Map.Entry;

import railo.runtime.PageContext;
import railo.runtime.config.NullSupportHelper;
import railo.runtime.dump.DumpData;
import railo.runtime.dump.DumpProperties;
import railo.runtime.dump.DumpUtil;
import railo.runtime.engine.ThreadLocalPageContext;
import railo.runtime.exp.DatabaseException;
import railo.runtime.exp.PageException;
import railo.runtime.op.Caster;
import railo.runtime.op.Operator;
import railo.runtime.op.date.DateCaster;
import railo.runtime.type.dt.DateTime;
import railo.runtime.type.it.EntryIterator;
import railo.runtime.type.it.KeyIterator;
import railo.runtime.type.it.StringIterator;
import railo.runtime.type.util.CollectionUtil;
import railo.runtime.type.util.QueryUtil;

/**
* Recordcount Query Column
*/
public final class QueryColumnRef implements QueryColumn,Sizeable {
   
    private Query query;
    private Collection.Key columnName;
    private int type;

    /**
     * Constructor of the class
     * @param query
     * @param columnName
     * @param type
     */
    public QueryColumnRef(Query query, Collection.Key columnName, int type) {
        this.query=query;
        this.columnName=columnName;
        this.type=type;
    }

    @Override
    public Object remove(int row) throws DatabaseException {
        throw new DatabaseException("can't remove "+columnName+" at row "+row+" value from Query",null,null,null);
    }

    @Override
    public Object removeEL(int row) {
        return query.getAt(columnName,row,null);
    }

    @Override
    public Object get(int row) throws PageException {
        return query.getAt(columnName,row);
    }
   
    /**
     * touch a value, means if key dosent exist, it will created
     * @param row
     * @return matching value or created value
     * @throws PageException
     */
    public Object touch(int row) throws PageException {
        Object o= query.getAt(columnName,row,NullSupportHelper.NULL());
        if(o!=NullSupportHelper.NULL()) return o;
        return query.setAt(columnName,row,new StructImpl());
    }
   
    public Object touchEL(int row) {
        Object o= query.getAt(columnName,row,NullSupportHelper.NULL());
        if(o!=NullSupportHelper.NULL()) return o;
        return query.setAtEL(columnName,row,new StructImpl());
    }

    @Override
    public Object get(int row, Object defaultValue) {
        return query.getAt(columnName,row,defaultValue);
    }

    @Override
    public Object set(int row, Object value) throws DatabaseException {
        throw new DatabaseException("can't change "+columnName+" value from Query",null,null,null);
    }

    @Override
    public Object setEL(int row, Object value) {
        return query.getAt(columnName,row,null);
    }

    @Override
    public void add(Object value) {}

    @Override
    public void addRow(int count) {}

    @Override
    public int getType() {
        return type;
    }

    @Override
    public String getTypeAsString() {
        return QueryImpl.getColumTypeName(getType());
    }

    @Override
    public void cutRowsTo(int maxrows) {}


    @Override
    public int size() {
        return query.size();
    }

    @Override
    public Collection.Key[] keys() {
      Collection.Key[] k=new Collection.Key[size()];
        for(int i=1;i<=k.length;i++) {
            k[i-1]=KeyImpl.init(Caster.toString(i));
        }
        return k;
    }

  @Override
  public Object remove(Collection.Key key) throws PageException {
    throw new DatabaseException("can't remove "+key+" from Query",null,null,null);
  }

  @Override
  public Object removeEL(Collection.Key key) {
    return get(key,null);
  }

    @Override
    public void clear() {}

    @Override
    public Object get(String key) throws PageException {
        return get(Caster.toIntValue(key));
    }

  @Override
  public Object get(Collection.Key key) throws PageException {
    return get(Caster.toIntValue(key.getString()));
  }

    @Override
    public Object get(String key, Object defaultValue) {
        return get(Caster.toIntValue(key,query.getCurrentrow(ThreadLocalPageContext.get().getId())),defaultValue);
    }

  @Override
  public Object get(Collection.Key key, Object defaultValue) {
    return get(Caster.toIntValue(key,query.getCurrentrow(ThreadLocalPageContext.get().getId())),defaultValue);
  }

    @Override
    public Object set(String key, Object value) throws PageException {
        return set(Caster.toIntValue(key),value);
    }

  @Override
  public Object set(Collection.Key key, Object value) throws PageException {
    return set(Caster.toIntValue(key),value);
  }

    @Override
    public Object setEL(String key, Object value) {
        return setEL(Caster.toIntValue(key,query.getCurrentrow(ThreadLocalPageContext.get().getId())),value);
    }

  @Override
  public Object setEL(Collection.Key key, Object value) {
    return setEL(Caster.toIntValue(key,query.getCurrentrow(ThreadLocalPageContext.get().getId())),value);
  }

  @Override
  public Iterator<Collection.Key> keyIterator() {
        return new KeyIterator(keys());
    }
   
  @Override
  public Iterator<String> keysAsStringIterator() {
      return new StringIterator(keys());
    }
 
  @Override
  public Iterator<Entry<Key, Object>> entryIterator() {
    return new EntryIterator(this, keys());
  }
   
  @Override
  public Iterator<Object> valueIterator() {
    return query.getColumn(columnName,null).valueIterator();
  }

    @Override
    public boolean containsKey(String key) {
        return get(key,NullSupportHelper.NULL())!=NullSupportHelper.NULL();
    }

  @Override
  public boolean containsKey(Collection.Key key) {
    return get(key,NullSupportHelper.NULL())!=NullSupportHelper.NULL();
  }

    @Override
  public DumpData toDumpData(PageContext pageContext, int maxlevel, DumpProperties dp) {
      return DumpUtil.toDumpData(get(query.getCurrentrow(pageContext.getId()),null), pageContext,maxlevel,dp);
    }

    @Override
    public String castToString() throws PageException {
        return Caster.toString(get(query.getCurrentrow(ThreadLocalPageContext.get().getId())));
    }

  @Override
  public String castToString(String defaultValue) {
    Object value = get(query.getCurrentrow(ThreadLocalPageContext.get().getId()),NullSupportHelper.NULL());
    if(value==NullSupportHelper.NULL())return defaultValue;
    return Caster.toString(value,defaultValue);
  }

    @Override
    public boolean castToBooleanValue() throws PageException {
        return Caster.toBooleanValue(get(query.getCurrentrow(ThreadLocalPageContext.get().getId())));
    }
   
    @Override
    public Boolean castToBoolean(Boolean defaultValue) {
      Object value = get(query.getCurrentrow(ThreadLocalPageContext.get().getId()),NullSupportHelper.NULL());
    if(value==NullSupportHelper.NULL())return defaultValue;
    return Caster.toBoolean(value,defaultValue);
    }

    @Override
    public double castToDoubleValue() throws PageException {
        return Caster.toDoubleValue(get(query.getCurrentrow(ThreadLocalPageContext.get().getId())));
    }
   
    @Override
    public double castToDoubleValue(double defaultValue) {
      Object value = get(query.getCurrentrow(ThreadLocalPageContext.get().getId()),NullSupportHelper.NULL());
    if(value==NullSupportHelper.NULL())return defaultValue;
    return Caster.toDoubleValue(value,defaultValue);
    }

    @Override
    public DateTime castToDateTime() throws PageException {
        return Caster.toDate(get(query.getCurrentrow(ThreadLocalPageContext.get().getId())),null);
    }
   
    @Override
    public DateTime castToDateTime(DateTime defaultValue) {
      Object value = get(query.getCurrentrow(ThreadLocalPageContext.get().getId()),NullSupportHelper.NULL());
    if(value==NullSupportHelper.NULL())return defaultValue;
    return DateCaster.toDateAdvanced(value,true,null,defaultValue);
    }

  @Override
  public int compareTo(boolean b) throws PageException {
    return Operator.compare(castToBooleanValue(), b);
  }

  @Override
  public int compareTo(DateTime dt) throws PageException {
    return Operator.compare((Date)castToDateTime(), (Date)dt);
  }

  @Override
  public int compareTo(double d) throws PageException {
    return Operator.compare(castToDoubleValue(), d);
  }

  @Override
  public int compareTo(String str) throws PageException {
    return Operator.compare(castToString(), str);
  }

    @Override
    public String getKeyAsString() throws PageException {
        return columnName.toString();
    }

    @Override
    public Collection.Key getKey() throws PageException {
        return columnName;
    }

    @Override
    public Object get(PageContext pc) throws PageException {
        return get(query.getCurrentrow(pc.getId()));
    }
   
    @Override
    public Object get(PageContext pc, Object defaultValue) {
        return get(query.getCurrentrow(pc.getId()),defaultValue);
    }

    @Override
    public Object removeRow(int row) throws DatabaseException {
        throw new DatabaseException("can't remove row from Query",null,null,null);
    }

    @Override
    public Object touch(PageContext pc) throws PageException {
        return touch(query.getCurrentrow(pc.getId()));
    }

    @Override
    public Object touchEL(PageContext pc) {
        return touchEL(query.getCurrentrow(pc.getId()));
    }

    @Override
    public Object set(PageContext pc, Object value) throws PageException {
        return set(query.getCurrentrow(pc.getId()),value);
    }
   
    @Override
    public Object setEL(PageContext pc, Object value) {
        return setEL(query.getCurrentrow(pc.getId()),value);
    }

    @Override
    public Object remove(PageContext pc) throws PageException {
        return remove(query.getCurrentrow(pc.getId()));
    }

    @Override
    public Object removeEL(PageContext pc) {
        return removeEL(query.getCurrentrow(pc.getId()));
    }

    @Override
    public Object getParent() {
        return query;
    }

    @Override
    public Object clone() {
        QueryColumn clone=new QueryColumnRef(query,columnName,type);
        return clone;
    }

    @Override
    public Collection duplicate(boolean deepCopy) {
//     MUST muss deepCopy checken
        QueryColumn clone=new QueryColumnRef(query,columnName,type);
        return clone;
    }
 

  @Override
  public long sizeOf() {
    return QueryUtil.sizeOf(this);
  }
 
  @Override
  public java.util.Iterator<String> getIterator() {
      return keysAsStringIterator();
    }
 
  @Override
  public boolean equals(Object obj){
    if(!(obj instanceof Collection)) return false;
    return CollectionUtil.equals(this,(Collection)obj);
  }
 
  /*@Override
  public int hashCode() {
    return CollectionUtil.hashCode(this);
  }*/
}
TOP

Related Classes of railo.runtime.type.QueryColumnRef

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.