/** * Prepare the rootNode and it's child nodes so that we can get matchedString by index */ private void buildRootNode() { if (isTransactionNodeBuilt) return; isTransactionNodeBuilt = true; rootNode = new Node(); rootNode.setNbrChar(1); List<Node> nextNodes = prepareTransactionNodes(automaton.getInitialState()); rootNode.setNextNodes(nextNodes); rootNode.updateNbrMatchedString(); }
/** * Prepare the rootNode and it's child nodes so that we can get matchedString by index */ private void buildRootNode() { if (isTransactionNodeBuilt) return; isTransactionNodeBuilt = true; rootNode = new Node(); rootNode.setNbrChar(1); List<Node> nextNodes = prepareTransactionNodes(automaton.getInitialState()); rootNode.setNextNodes(nextNodes); rootNode.updateNbrMatchedString(); }
/** * Build list of nodes that present possible transactions from the <code>state</code>. * * @param state * @return */ private List<Node> prepareTransactionNodes(State state) { List<Node> transactionNodes = new ArrayList<Node>(); if (preparedTransactionNode == Integer.MAX_VALUE / 2) return transactionNodes; ++ preparedTransactionNode; if (state.isAccept()) { Node acceptedNode = new Node(); acceptedNode.setNbrChar(1); transactionNodes.add(acceptedNode); } List<Transition> transitions = state.getSortedTransitions(true); for (Transition transition : transitions) { Node trsNode = new Node(); int nbrChar = transition.getMax() - transition.getMin() + 1; trsNode.setNbrChar(nbrChar); trsNode.setMaxChar(transition.getMax()); trsNode.setMinChar(transition.getMin()); List<Node> nextNodes = prepareTransactionNodes(transition.getDest()); trsNode.setNextNodes(nextNodes); transactionNodes.add(trsNode); } return transactionNodes; }
/** * Build list of nodes that present possible transactions from the <code>state</code>. * * @param state * @return */ private List<Node> prepareTransactionNodes(State state) { List<Node> transactionNodes = new ArrayList<Node>(); if (preparedTransactionNode == Integer.MAX_VALUE / 2) return transactionNodes; ++preparedTransactionNode; if (state.isAccept()) { Node acceptedNode = new Node(); acceptedNode.setNbrChar(1); transactionNodes.add(acceptedNode); } List<Transition> transitions = state.getSortedTransitions(true); for (Transition transition : transitions) { Node trsNode = new Node(); int nbrChar = transition.getMax() - transition.getMin() + 1; trsNode.setNbrChar(nbrChar); trsNode.setMaxChar(transition.getMax()); trsNode.setMinChar(transition.getMin()); List<Node> nextNodes = prepareTransactionNodes(transition.getDest()); trsNode.setNextNodes(nextNodes); transactionNodes.add(trsNode); } return transactionNodes; }