Package railo.intergral.fusiondebug.server.type.qry

Source Code of railo.intergral.fusiondebug.server.type.qry.FDQuery

package railo.intergral.fusiondebug.server.type.qry;

import java.util.ArrayList;
import java.util.List;

import railo.intergral.fusiondebug.server.type.FDValueNotMutability;
import railo.intergral.fusiondebug.server.type.FDVariable;
import railo.intergral.fusiondebug.server.type.simple.FDSimpleVariable;
import railo.runtime.op.Caster;
import railo.runtime.type.Query;

import com.intergral.fusiondebug.server.IFDStackFrame;

public class FDQuery extends FDValueNotMutability {

  private static final int INTERVAL = 10;
  private ArrayList children=new ArrayList();
  private Query qry;
 
  public FDQuery(IFDStackFrame frame,Query qry){
    this.qry=qry;
   
    // columns
    String[] strColumns = qry.getColumns();
    List lstColumns=new ArrayList();
    String type;
    for(int i=0;i<strColumns.length;i++){
      type=qry.getColumn(strColumns[i],null).getTypeAsString();
      //else type="";
      lstColumns.add(new FDSimpleVariable(frame,strColumns[i],type,null));
    }
    children.add(new FDSimpleVariable(frame,"Columns",Caster.toString(strColumns.length),lstColumns));
   
    // rows
    int rowcount=qry.getRowCount();
    List lstRows=new ArrayList();//,values;
    fill(frame,qry,lstRows,1,rowcount-1,strColumns);
    children.add(new FDSimpleVariable(frame,"Rows",Caster.toString(rowcount),lstRows));
  }
 
  private static void fill(IFDStackFrame frame, Query qry, List lstRows, int start,int len, String[] strColumns) {
    int to=start+len;
    int interval = INTERVAL;
    while(interval*interval<len)
      interval*=interval;
    if(len>interval){
      int max;
      for(int i=start;i<to;i+=interval)  {
        max=(i+interval)<to?(interval-1):to-i;
        ArrayList group=new ArrayList();
        lstRows.add(new FDSimpleVariable(frame,"Rows","["+i+"-"+((i+max))+"]",group));
        fill(frame, qry, group, i, max, strColumns);
      }
    }
    else {
      ArrayList values;
      for(int r=start;r<=to;r++){
        values=new ArrayList();
        for(int c=0;c<strColumns.length;c++){
          values.add(new FDVariable(frame,strColumns[c],new FDQueryNode(frame,qry,r,strColumns[c])));
        }
        lstRows.add(new FDSimpleVariable(frame,"Row","["+r+"]",values));
      }
    }
  }


  @Override
  public List getChildren() {
    return children;
  }

  @Override
  public boolean hasChildren() {
    return true;
  }
 
  @Override
  public String toString() {
    return "Query(Columns:"+qry.getColumns().length+", Rows:"+qry.getRecordcount()+")";
  }

}
TOP

Related Classes of railo.intergral.fusiondebug.server.type.qry.FDQuery

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.