//// (c) 2005 Andreas Harth
//package org.olap4j.driver.olap4ld.linkeddata;
//
//import org.semanticweb.yars.engine.QueryException;
//import org.semanticweb.yars.engine.Visitor;
//
///**
// * A visitor to translate a program tree to an XML tree
// * suitable for displaying.
// *
// * @author aharth
// */
//public class Exec2XML implements LogicalOlapOperatorQueryPlanVisitor {
// StringBuffer _buf = null;
//
// /**
// * Constructor.
// */
// public Exec2XML() {
// _buf = new StringBuffer();
// }
//
// /**
// * Visitor to traverse the logical operator tree and
// * spit out XML.
// */
// public void visit(Object op) throws QueryException {
// if (op instanceof ProjectIterator) {
// _buf.append("<project><![CDATA[");
// _buf.append(op.toString());
// _buf.append("]]>");
// ((ProjectIterator)op)._bi.accept(this);
// _buf.append("</project>");
// } else if (op instanceof SelectIterator) {
// _buf.append("<select><![CDATA[");
// _buf.append(op.toString());
// _buf.append("]]>");
// ((SelectIterator)op)._oit.accept(this);
// _buf.append("</select>");
// } else if (op instanceof JoinINLIterator) {
// _buf.append("<joininl><![CDATA[");
// _buf.append(op.toString());
// _buf.append("]]>");
// _buf.append("<r>");
// ((JoinINLIterator)op)._ri.accept(this);
// _buf.append("</r>");
// _buf.append("<s>");
// ((JoinINLIterator)op)._si.accept(this);
// _buf.append("</s>");
// _buf.append("</joininl>");
// } else if (op instanceof KeywordIterator) {
// _buf.append("<keyword><![CDATA[");
// _buf.append(op.toString());
// _buf.append("]]></keyword>");
// } else if (op instanceof ValuesIterator) {
// _buf.append("<values><![CDATA[");
// _buf.append(op.toString());
// _buf.append("]]>");
// try {
// ((ValuesIterator)op)._bit.accept(this);
// } catch (NullPointerException ex) {
// ; // FIXME XXX @@@
// }
// _buf.append("</values>");
// } else if (op instanceof ValuesListIterator) {
// _buf.append("<valueslist><![CDATA[");
// _buf.append(op.toString());
// _buf.append("]]>");
// try {
// ((ValuesListIterator)op)._bit.accept(this);
// } catch (NullPointerException ex) {
// ; // FIXME XXX @@@
// }
// _buf.append("</valueslist>");
// } else if (op instanceof OIDIterator) {
// _buf.append("<oids><![CDATA[");
// _buf.append(op.toString());
// _buf.append("]]></oids>");
// } else if (op instanceof TemplateIterator) {
// _buf.append("<template><![CDATA[");
// _buf.append(op.toString());
// _buf.append("]]>");
// ((TemplateIterator)op)._vi.accept(this);
// _buf.append("</template>");
// } else if (op instanceof DifferenceIterator) {
// _buf.append("<difference><![CDATA[");
// _buf.append(op.toString());
// _buf.append("]]>");
// _buf.append("<r>");
// ((DifferenceIterator)op)._ri.accept(this);
// _buf.append("</r>");
// _buf.append("<s>");
// ((DifferenceIterator)op)._si.accept(this);
// _buf.append("</s>");
// _buf.append("</difference>");
// } else if (op instanceof UnionIterator) {
// _buf.append("<union><![CDATA[");
// _buf.append(op.toString());
// _buf.append("]]>");
// _buf.append("</union>");
// } else {
// _buf.append("<unspec>");
// _buf.append(op.toString());
// _buf.append("</unspec>");
// }
// }
//
// public Object getNewRoot() {
// return new String(_buf);
// }
//}