/* ExecutionInfoBase.java
Purpose:
Description:
History:
2013/1/18 Created by dennis
Copyright (C) 2012 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.bind.sys.debugger.impl.info;
import org.zkoss.bind.impl.BinderUtil;
import org.zkoss.bind.sys.debugger.ExecutionInfo;
import org.zkoss.json.JSONObject;
import org.zkoss.zk.ui.Component;
/**
*
* @author dennis
*
*/
public class ExecutionInfoBase implements ExecutionInfo {
Component _comp;
String _type;
String _subtype;
String _note;
String _location;
protected ExecutionInfoBase(String type, String subtype, Component comp, String note) {
_type = type;
_subtype = subtype;
_comp = comp;
_note = note;
_location = BinderUtil.hasContext() ? BinderUtil.getContext().getCurrentLocationMessage() : null;
}
public Component getComponent() {
return _comp;
}
public String getType() {
return _type;
}
public String getNote() {
return _note;
}
public String getSubtype() {
return _subtype;
}
public JSONObject toJSON() {
JSONObject json = new JSONObject();
putEssential(json, "type", _type);
if (_comp != null) {
put(json, "widget", _comp.getDefinition().getName());
put(json, "uuid", _comp.getUuid());
put(json, "id", _comp.getId());
}
put(json, "subtype", _subtype);
put(json, "note", toString(_note, 300));
put(json, "location", _location);
return json;
}
protected static void put(JSONObject json, String prop, Object val) {
if (val != null) {
json.put(prop, val);
}
}
protected static void putEssential(JSONObject json, String prop, Object val) {
json.put(prop, val);
}
//utility method
protected static String toString(Object value, int len) {
String valstr = value == null ? null : value.toString();
if (valstr != null && valstr.length() > len) {
valstr = valstr.substring(0, len - 4) + "...";
}
return valstr;
}
}