package dk.statsbiblioteket.newspaper.treenode; import dk.statsbiblioteket.medieplatform.autonomous.iterator.common.AttributeParsingEvent; import dk.statsbiblioteket.medieplatform.autonomous.iterator.common.NodeBeginsParsingEvent; import dk.statsbiblioteket.medieplatform.autonomous.iterator.common.NodeEndParsingEvent; import dk.statsbiblioteket.medieplatform.autonomous.iterator.common.ParsingEvent; import dk.statsbiblioteket.medieplatform.autonomous.iterator.eventhandlers.EventRunner; import dk.statsbiblioteket.medieplatform.autonomous.iterator.eventhandlers.TreeEventHandler; import dk.statsbiblioteket.medieplatform.autonomous.iterator.filesystem.transforming.TransformingIteratorForFileSystems; import org.testng.annotations.Test; import java.io.File; import java.io.IOException; import java.util.Arrays; public class TreeNodesStructurePrint { @Test(groups = "integrationTest", enabled = false) public void printStructure() throws IOException { String pathToTestBatch = System.getProperty("integration.test.newspaper.testdata") + "/small-test-batch/B400022028241-RT1/"; final TreeNodeState nodeState = new TreeNodeState(); final TreeEventHandler handler = new PrintingTreeEventHandler(nodeState); EventRunner eventRunner = new EventRunner(new TransformingIteratorForFileSystems(new File(pathToTestBatch), TransformingIteratorForFileSystems.GROUPING_PATTERN_DEFAULT_VALUE, TransformingIteratorForFileSystems.DATA_FILE_PATTERN_JP2_VALUE, TransformingIteratorForFileSystems.CHECKSUM_POSTFIX_DEFAULT_VALUE, Arrays.asList(TransformingIteratorForFileSystems.IGNORED_FILES_DEFAULT_VALUE.split(","))), Arrays.asList(handler), null); eventRunner.run(); } private static class PrintingTreeEventHandler implements TreeEventHandler { private final TreeNodeState nodeState; public PrintingTreeEventHandler(TreeNodeState nodeState) { this.nodeState = nodeState; } private String printEvent(ParsingEvent event, String type) throws IOException { switch (event.getType()) { case NodeBegin: return "<" + type + " name=\"" + event.getName() + "\">"; case NodeEnd: return "</" + type + ">"; case Attribute: if (event instanceof AttributeParsingEvent) { AttributeParsingEvent attributeParsingEvent = (AttributeParsingEvent) event; return "<" + "attribute" + " name=\"" + event.getName() + "\" checksum=\"" + attributeParsingEvent .getChecksum() + "\" />"; } default: return event.toString(); } } @Override public void handleNodeBegin(NodeBeginsParsingEvent event) { try { nodeState.handleNodeBegin(event); TreeNode currentNode = nodeState.getCurrentNode(); System.out .println(printEvent(event, currentNode.getType().name())); } catch (IOException e) { throw new RuntimeException(e); } } @Override public void handleNodeEnd(NodeEndParsingEvent event) { try { TreeNode currentNode = nodeState.getCurrentNode(); nodeState.handleNodeEnd(event); System.out .println(printEvent(event, currentNode.getType().name())); } catch (IOException e) { throw new RuntimeException(e); } } @Override public void handleAttribute(AttributeParsingEvent event) { try { System.out.println(printEvent(event, "attribute")); } catch (IOException e) { throw new RuntimeException(e); } } @Override public void handleFinish() { //To change body of implemented methods use // File | Settings | File Templates. } } }