private State<T> copy(final State<T> state) { final State<T> copyOfState = createState( NFAStateNameHandler.getOriginalNameFromInternal(state.getName()), state.getStateType()); for (StateTransition<T> tStateTransition : state.getStateTransitions()) { copyOfState.addStateTransition( tStateTransition.getAction(), tStateTransition.getTargetState().equals(tStateTransition.getSourceState()) ? copyOfState : tStateTransition.getTargetState(), tStateTransition.getCondition()); } return copyOfState; }
public void addStateTransition( final StateTransitionAction action, final State<T> targetState, final IterativeCondition<T> condition) { stateTransitions.add(new StateTransition<T>(this, action, targetState, condition)); }
private void updateWithGreedyCondition( State<T> state, IterativeCondition<T> takeCondition) { for (StateTransition<T> stateTransition : state.getStateTransitions()) { stateTransition.setCondition( new RichAndCondition<>(stateTransition.getCondition(), new RichNotCondition<>(takeCondition))); } } }
private boolean isSelfIgnore(final StateTransition<T> edge) { return isEquivalentState(edge.getTargetState(), currentState) && edge.getAction() == StateTransitionAction.IGNORE; } }
private State<T> findFinalStateAfterProceed( ConditionContext context, State<T> state, T event) { final Stack<State<T>> statesToCheck = new Stack<>(); statesToCheck.push(state); try { while (!statesToCheck.isEmpty()) { final State<T> currentState = statesToCheck.pop(); for (StateTransition<T> transition : currentState.getStateTransitions()) { if (transition.getAction() == StateTransitionAction.PROCEED && checkFilterCondition(context, transition.getCondition(), event)) { if (transition.getTargetState().isFinal()) { return transition.getTargetState(); } else { statesToCheck.push(transition.getTargetState()); } } } } } catch (Exception e) { throw new FlinkRuntimeException("Failure happened in filter function.", e); } return null; }
switch (edge.getAction()) { case IGNORE: { if (!isStartState(computationState)) { final DeweyNumber version; if (isEquivalentState(edge.getTargetState(), getState(computationState))) { sharedBufferAccessor, resultingComputationStates, edge.getTargetState(), computationState.getPreviousBufferEntry(), version, final State<T> nextState = edge.getTargetState(); final State<T> currentState = edge.getSourceState();
public static <T> Map<String, State<T>> migrateGraph(State<T> oldStartState) { State<T> oldFirst = oldStartState; State<T> oldSecond = oldStartState.getStateTransitions().iterator().next().getTargetState(); while (oldSecondToThirdTake != null) { newSecond = new State<T>(oldSecondToThirdTake.getTargetState().getName(), State.StateType.Normal); convertedStates.put(newSecond.getName(), newSecond); newFirst.addTake(newSecond, oldFirstToSecondTake.getCondition()); newFirst.addIgnore(oldFirstIgnore.getCondition()); oldSecond = oldSecondToThirdTake.getTargetState(); newFirst.addTake(endingState, oldFirstToSecondTake.getCondition()); newFirst.addIgnore(oldFirstIgnore.getCondition());
return input != null && input.getAction() == StateTransitionAction.TAKE; }).getTargetState().getName();
/** * Tear-down method for the NFA. */ public void close() throws Exception { for (State<T> state : getStates()) { for (StateTransition<T> transition : state.getStateTransitions()) { IterativeCondition condition = transition.getCondition(); FunctionUtils.closeFunction(condition); } } }
if (checkFilterCondition(context, stateTransition.getCondition(), event)) { switch (stateTransition.getAction()) { case PROCEED: states.push(stateTransition.getTargetState()); break; case IGNORE:
if (transition.getAction() == StateTransitionAction.PROCEED) { if (transition.getTargetState().isFinal()) { return true; } else { statesToCheck.push(transition.getTargetState());
switch (edge.getAction()) { case IGNORE: { if (!isStartState(computationState)) { final DeweyNumber version; if (isEquivalentState(edge.getTargetState(), getState(computationState))) { sharedBufferAccessor, resultingComputationStates, edge.getTargetState(), computationState.getPreviousBufferEntry(), version, final State<T> nextState = edge.getTargetState(); final State<T> currentState = edge.getSourceState();
@Override public boolean apply(@Nullable StateTransition<T> input) { return input != null && input.getAction() == StateTransitionAction.TAKE; }
/** * Initialization method for the NFA. It is called before any element is passed and thus suitable for one time setup * work. * @param cepRuntimeContext runtime context of the enclosing operator * @param conf The configuration containing the parameters attached to the contract. */ public void open(RuntimeContext cepRuntimeContext, Configuration conf) throws Exception { for (State<T> state : getStates()) { for (StateTransition<T> transition : state.getStateTransitions()) { IterativeCondition condition = transition.getCondition(); FunctionUtils.setFunctionRuntimeContext(condition, cepRuntimeContext); FunctionUtils.openFunction(condition, conf); } } }
if (tStateTransition.getAction() == StateTransitionAction.PROCEED) { State<T> targetState = tStateTransition.getTargetState(); boolean remove = false; if (targetState.isStop()) { targetState = copyWithoutTransitiveNots(tStateTransition.getTargetState()); copyOfSink.addStateTransition(tStateTransition.getAction(), targetState, tStateTransition.getCondition()); tStateTransition.getAction(), tStateTransition.getTargetState().equals(tStateTransition.getSourceState()) ? copyOfSink : tStateTransition.getTargetState(), tStateTransition.getCondition() );
private State<T> findFinalStateAfterProceed(State<T> state, T event, ComputationState<T> computationState) { final Stack<State<T>> statesToCheck = new Stack<>(); statesToCheck.push(state); try { while (!statesToCheck.isEmpty()) { final State<T> currentState = statesToCheck.pop(); for (StateTransition<T> transition : currentState.getStateTransitions()) { if (transition.getAction() == StateTransitionAction.PROCEED && checkFilterCondition(computationState, transition.getCondition(), event)) { if (transition.getTargetState().isFinal()) { return transition.getTargetState(); } else { statesToCheck.push(transition.getTargetState()); } } } } } catch (Exception e) { throw new RuntimeException("Failure happened in filter function.", e); } return null; }
private <T> Set<Tuple2<String, StateTransitionAction>> unfoldTransitions(final State<T> state) { final Set<Tuple2<String, StateTransitionAction>> transitions = new HashSet<>(); for (StateTransition<T> transition : state.getStateTransitions()) { transitions.add(Tuple2.of( transition.getTargetState().getName(), transition.getAction())); } return transitions; }
switch (edge.getAction()) { case IGNORE: { if (!isStartState(computationState)) { final DeweyNumber version; if (isEquivalentState(edge.getTargetState(), getState(computationState))) { sharedBufferAccessor, resultingComputationStates, edge.getTargetState(), computationState.getPreviousBufferEntry(), version, final State<T> nextState = edge.getTargetState(); final State<T> currentState = edge.getSourceState();
@Override public boolean apply(@Nullable StateTransition<T> input) { return input != null && input.getAction() == StateTransitionAction.TAKE; } }).getTargetState().getName();