package railo.intergral.fusiondebug.server.util;
import java.util.Iterator;
import com.intergral.fusiondebug.server.IFDValue;
import com.intergral.fusiondebug.server.IFDVariable;
public class FDDump {
//private static PrintStream out=System.out;
public static void dump(IFDVariable var) {
System.out.print(toString(var));
}
public static String toString(Object value) {
StringBuffer sb=new StringBuffer();
dump(sb,value, 0);
return sb.toString();
}
public static String toString(IFDVariable var) {
StringBuffer sb=new StringBuffer();
dump(sb,var, 0);
return sb.toString();
}
private static void dump(StringBuffer sb,Object value,int level) {
if(value instanceof IFDValue) dump(sb, (IFDValue)value, level);
else dump(sb, (IFDVariable)value, level);
}
private static void dump(StringBuffer sb,IFDValue value,int level) {
for(int i=0;i<level;i++){
sb.append(" - ");
}
sb.append(value.toString());
sb.append("\n");
if(value.hasChildren()){
Iterator it = value.getChildren().iterator();
while(it.hasNext()){
Object o=it.next();
dump(sb,(IFDVariable) o,level+1);
}
}
}
private static void dump(StringBuffer sb,IFDVariable var,int level) {
for(int i=0;i<level;i++){
sb.append(" - ");
}
sb.append(var.getName());
sb.append(":");
IFDValue value = var.getValue();
sb.append(value.toString());
sb.append("\n");
//print.err(value.getClass().getName());
if(value.hasChildren()){
Iterator it = value.getChildren().iterator();
while(it.hasNext()){
Object o=it.next();
//print.err(o.getClass().getName());
dump(sb,(IFDVariable) o,level+1);
//dump(sb,(IFDVariable) it.next(),level+1);
}
}
}
/*public static void main(String[] args) throws PageException {
Array arr = new ArrayImpl();
arr.setEL(1, "aaa");
arr.setEL(2, Boolean.TRUE);
arr.setEL(5, Constants.INTEGER_3);
Array sub1 = new ArrayImpl();
sub1.setEL(1, "ddd");
arr.setEL(6, sub1);
Struct sct=new StructImpl();
sct.set("susi1", "eee");
sct.set("susi2", "fff");
arr.setEL(7, sct);
Key aaa = KeyImpl.intern("aaa");
Key bbb = KeyImpl.intern("bbb");
Query qry=new QueryImpl(new Collection.Key[]{aaa,bbb},2,"quererli");
qry.setAt(aaa, 1, "a1");
qry.setAt(bbb, 1, "b1");
qry.setAt(aaa, 2, "a2");
qry.setAt(bbb, 2, sct);
arr.setEL(8, qry);
//arr.setEL(9, new StringBuffer());
dump(new FDVariable(null,"susi",FDCaster.toFDValue(null,"susi",qry)));
//dump(new FDVariable(null,"susi",FDCaster.toFDValue(null,"susi",arr)));
//dump(FDCaster.toFDVariable("susi",arr));
}*/
}