/* ServerConsoleExecutionInfoCollector.java
Purpose:
Description:
History:
2013/1/7 Created by Dennis Chen
Copyright (C) 2013 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.bind.sys.debugger.impl;
import org.zkoss.bind.sys.debugger.impl.info.AddBindingInfo;
import org.zkoss.bind.sys.debugger.impl.info.AddCommandBindingInfo;
import org.zkoss.bind.sys.debugger.impl.info.AnnoWarnInfo;
import org.zkoss.bind.sys.debugger.impl.info.CommandInfo;
import org.zkoss.bind.sys.debugger.impl.info.EventInfo;
import org.zkoss.bind.sys.debugger.impl.info.LoadInfo;
import org.zkoss.bind.sys.debugger.impl.info.NotifyChangeInfo;
import org.zkoss.bind.sys.debugger.impl.info.SaveInfo;
import org.zkoss.bind.sys.debugger.impl.info.StackInfo;
import org.zkoss.bind.sys.debugger.impl.info.ValidationInfo;
import org.zkoss.json.JSONObject;
/**
*
* @author dennis
* @since 6.5.2
*/
public class DefaultExecutionInfoCollector extends AbstractExecutionInfoCollector {
private boolean _startLine = false;
public void addInfo(JSONObject info) {
Object type = info.get("type");
if (!_startLine) {
out("=======================================");
_startLine = true;
}
StringBuilder sb = new StringBuilder();
sb.append("[" + info.get("sid") + "]");
int stack = (Integer) info.get("stack");
for (int i = 0; i < stack; i++) {
sb.append(" ");
if (i == stack - 1) {
if (StackInfo.TYPE.equals(type)) {
sb.append(" + ");
} else {
sb.append(" *");
}
} else {
sb.append(" ");
}
}
if (AddBindingInfo.TYPE.equals(type) || AddCommandBindingInfo.TYPE.equals(type)) {
sb.append("ADD-BINDING");
}
if (StackInfo.TYPE.equals(type)) {
sb.append(info.get("name") + "\t ");
} else {
sb.append("[" + info.get("type") + (info.containsKey("subtype") ? ":" + info.get("subtype") : "") + "]\t");
}
if (EventInfo.TYPE.equals(type)) {
sb.append("[" + info.get("event") + "]");
} else if (LoadInfo.TYPE.equals(type)) {
if (info.containsKey("condition")) {
sb.append("[" + info.get("condition") + "]\t");
}
sb.append(info.get("fromExpr") + " > " + info.get("toExpr") + "\t");
if (Boolean.TRUE.equals(info.get("nullval"))) {
sb.append("NULL");
} else {
sb.append(info.get("value"));
}
} else if (CommandInfo.TYPE.equals(type)) {
if (info.containsKey("event")) {
sb.append("[" + info.get("event") + "]\t");
}
if (info.containsKey("commandExpr")) {
sb.append("[" + info.get("commandExpr") + "]\t");
}
sb.append(info.get("command"));
} else if (ValidationInfo.TYPE.equals(type)) {
sb.append(info.get("validatorExpr") + "\t" + info.get("validator") + "\t result = " + info.get("result"));
} else if (SaveInfo.TYPE.equals(type)) {
if (info.containsKey("condition")) {
sb.append("[" + info.get("condition") + "]\t");
}
sb.append(info.get("fromExpr") + " > " + info.get("toExpr") + "\t");
if (Boolean.TRUE.equals(info.get("nullval"))) {
sb.append("NULL");
} else {
sb.append(info.get("value"));
}
} else if (NotifyChangeInfo.TYPE.equals(type)) {
sb.append("[" + info.get("base") + "][" + info.get("prop") + "]");
} else if (AddBindingInfo.TYPE.equals(type)) {
if (info.containsKey("condition")) {
sb.append("[" + info.get("condition") + "]\t");
}
sb.append(info.get("fromExpr") + " > " + info.get("toExpr"));
} else if (AddCommandBindingInfo.TYPE.equals(type)) {
sb.append("[" + info.get("event") + "]\t" + info.get("commandExpr"));
} else if (AnnoWarnInfo.TYPE.equals(type)) {
sb.append(info.get("attr") + " = @" + info.get("anno") + "()");
}
if (info.containsKey("widget")) {
sb.append(
"\t<" + info.get("widget") + " uuid=\"" + info.get("uuid") + "\" id=\"" + info.get("id") + "\" />");
}
if (info.containsKey("note")) {
sb.append("\t" + info.get("note"));
}
if (info.containsKey("location")) {
sb.append("\t" + info.get("location"));
}
out(sb.toString());
}
protected void out(String string) {
System.out.println(string);
}
}