package esl.cuenet.query.pattern.graph; import esl.cuenet.query.pattern.parser.ModelPatternParser; import esl.system.SysLoggerUtils; import org.apache.log4j.Logger; import org.junit.Test; import java.util.Stack; public class PatternGraphTraversalTest { static { SysLoggerUtils.initLogger(); } private Logger logger = Logger.getLogger(PatternGraphTraversalTest.class); @Test public void traversePGTest() { PatternGraphConstructor constructor = new PatternGraphConstructor(); ModelPatternParser parser = new ModelPatternParser("(a: ( (b: ( (x:(xx -> xxx)) -> y -> (z:((zz:(zzz)))) )) -> (c: (p -> (q: (m -> n -> (o:(oo -> ooo)) )) -> r) ) ) )"); try { parser.parse(constructor); } catch (Exception p) { System.out.println("EXCEPT: " + p.getMessage()); } catch (Error r) { System.out.println("ERROR: " + r.getMessage()); } PatternGraphNode subEventGraph = constructor.getGraph().getFirst(); Stack<PatternGraphNode> dfsStack = new Stack<PatternGraphNode>(); dfsStack.push(subEventGraph); while ( !dfsStack.empty() ) { PatternGraphNode node = dfsStack.pop(); logger.info("At: " + node.label()); if (node.getSubEventPatternGraph() != null) { for (int i=node.getSubEventPatternGraph().size()-1; i>=0; i--) dfsStack.push(node.getSubEventPatternGraph().get(i)); } } logger.info(""); } }