//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.consumers.print;
import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
import uk.gov.dstl.baleen.consumers.AbstractStructureConsumer;
import uk.gov.dstl.baleen.types.structure.Structure;
import uk.gov.dstl.baleen.uima.utils.SelectorPath;
import uk.gov.dstl.baleen.uima.utils.select.ItemHierarchy;
import uk.gov.dstl.baleen.uima.utils.select.Node;
import uk.gov.dstl.baleen.uima.utils.select.NodeTraversor;
import uk.gov.dstl.baleen.uima.utils.select.NodeVisitor;
/**
* Print out all structure.
*/
public class Selectors extends AbstractStructureConsumer {
private String print(Node<Structure> root) {
final StringBuilder sb = new StringBuilder();
new NodeTraversor<>(new NodeVisitor<Structure>() {
@Override
public void head(Node<Structure> node, int depth) {
sb.append(new SelectorPath(node.toPath()));
sb.append("\n");
}
}).traverse(root);
return sb.toString();
}
@Override
protected void doProcess(ItemHierarchy<Structure> structureHierarchy) throws AnalysisEngineProcessException {
final String result = print(structureHierarchy.getRoot());
getMonitor().info("{}:\n{}", Structure.class.getName(), result);
}
}