import com.opentext.api.LAPI_DOCUMENTS;
import com.opentext.api.LLNameEnumeration;
import com.opentext.api.LLNameEnumerationEx;
import com.opentext.api.LLSession;
import com.opentext.api.LLValue;
import com.opentext.api.LLValueEnumeration;
import java.io.IOException;
import java.io.OutputStream;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
public class LLValueExplorer {
public static String toSensibleString(LLValue item) {
XMLOutputter xo = new XMLOutputter(Format.getPrettyFormat());
Element e = toElement(item);
return xo.outputString(e);
}
public void dumpTo(LLValue item, OutputStream out) throws IOException {
XMLOutputter xo = new XMLOutputter(Format.getPrettyFormat());
Element e = toElement(item);
xo.output(e, out);
}
private static Element toElement(LLValue llValue) {
Element e;
if (llValue.isAssoc()) {
e = new Element("assoc");
LLNameEnumerationEx names = llValue.enumerateNamesEx();
while (names.hasMoreElements()) {
LLValue key = names.nextName();
Element val = toElement(llValue.toValue(key));
val.setAttribute("key", key.toString());
e.addContent(val);
}
} else if (llValue.isBoolean()) {
e = new Element("boolean");
e.setText(llValue.toString());
} else if (llValue.isDate()) {
e = new Element("date");
e.setText(llValue.toString());
} else if (llValue.isDouble()) {
e = new Element("double");
e.setText(Double.toString(llValue.toDouble()));
} else if (llValue.isError()) {
e = new Element("error");
e.setText(llValue.toString());
} else if (llValue.isInteger()) {
e = new Element("integer");
e.setText(Integer.toString(llValue.toInteger()));
} else if (llValue.isList()) {
e = new Element("list");
LLValueEnumeration values = llValue.enumerateValues();
while (values.hasMoreElements()) {
e.addContent(toElement(values.nextValue()));
}
} else if (llValue.isLong()) {
e = new Element("long");
e.setText(Long.toString(llValue.toLong()));
} else if (llValue.isUndefined()) {
e = new Element("undefined");
} else if (llValue.isString()) {
e = new Element("string");
e.setText(llValue.toString());
} else if (llValue.isRecord()) {
e = new Element("record");
LLNameEnumeration names = llValue.enumerateNames();
while (names.hasMoreElements()) {
String key = names.nextName();
Element val = toElement(llValue.toValue(key));
val.setAttribute("key", key);
e.addContent(val);
}
} else if (llValue.isPoint()) {
e = new Element("point");
e.setText(llValue.toString());
} else if (llValue.isSet()) {
e = new Element("set");
LLValueEnumeration values = llValue.enumerateValues();
while (values.hasMoreElements()) {
e.addContent(toElement(values.nextValue()));
}
} else if (llValue.isTable()) {
e = new Element("table");
e.setText(llValue.toString());
} else {
e = new Element("unknown");
{
e.setText(llValue.toString());
}
}
return e;
}
}
Comments