Java源码示例:org.apache.flink.cep.pattern.Quantifier.Times
示例1
/**
* Specifies that the pattern can occur between from and to times.
*
* @param from number of times matching event must appear at least
* @param to number of times matching event must appear at most
* @return The same pattern with the number of times range applied
*
* @throws MalformedPatternException if the quantifier is not applicable to this pattern.
*/
public Pattern<T, F> times(int from, int to) {
checkIfNoNotPattern();
checkIfQuantifierApplied();
this.quantifier = Quantifier.times(quantifier.getConsumingStrategy());
if (from == 0) {
this.quantifier.optional();
from = 1;
}
this.times = Times.of(from, to);
return this;
}
示例2
/**
* Specifies that the pattern can occur between from and to times.
*
* @param from number of times matching event must appear at least
* @param to number of times matching event must appear at most
* @return The same pattern with the number of times range applied
*
* @throws MalformedPatternException if the quantifier is not applicable to this pattern.
*/
public Pattern<T, F> times(int from, int to) {
checkIfNoNotPattern();
checkIfQuantifierApplied();
this.quantifier = Quantifier.times(quantifier.getConsumingStrategy());
if (from == 0) {
this.quantifier.optional();
from = 1;
}
this.times = Times.of(from, to);
return this;
}
示例3
/**
* Specifies that the pattern can occur between from and to times.
*
* @param from number of times matching event must appear at least
* @param to number of times matching event must appear at most
* @return The same pattern with the number of times range applied
*
* @throws MalformedPatternException if the quantifier is not applicable to this pattern.
*/
public Pattern<T, F> times(int from, int to) {
checkIfNoNotPattern();
checkIfQuantifierApplied();
this.quantifier = Quantifier.times(quantifier.getConsumingStrategy());
if (from == 0) {
this.quantifier.optional();
from = 1;
}
this.times = Times.of(from, to);
return this;
}
示例4
public Times getTimes() {
return times;
}
示例5
/**
* Creates a "complex" state consisting of given number of states with
* same {@link IterativeCondition}.
*
* @param sinkState the state that the created state should point to
* @param proceedState state that the state being converted should proceed to
* @param times number of times the state should be copied
* @return the first state of the "complex" state, next state should point to it
*/
@SuppressWarnings("unchecked")
private State<T> createTimesState(final State<T> sinkState, final State<T> proceedState, Times times) {
State<T> lastSink = sinkState;
setCurrentGroupPatternFirstOfLoop(false);
final IterativeCondition<T> untilCondition = (IterativeCondition<T>) currentPattern.getUntilCondition();
final IterativeCondition<T> innerIgnoreCondition = extendWithUntilCondition(
getInnerIgnoreCondition(currentPattern),
untilCondition,
false);
final IterativeCondition<T> takeCondition = extendWithUntilCondition(
getTakeCondition(currentPattern),
untilCondition,
true);
if (currentPattern.getQuantifier().hasProperty(Quantifier.QuantifierProperty.GREEDY) &&
times.getFrom() != times.getTo()) {
if (untilCondition != null) {
State<T> sinkStateCopy = copy(sinkState);
originalStateMap.put(sinkState.getName(), sinkStateCopy);
}
updateWithGreedyCondition(sinkState, takeCondition);
}
for (int i = times.getFrom(); i < times.getTo(); i++) {
lastSink = createSingletonState(lastSink, proceedState, takeCondition, innerIgnoreCondition, true);
addStopStateToLooping(lastSink);
}
for (int i = 0; i < times.getFrom() - 1; i++) {
lastSink = createSingletonState(lastSink, null, takeCondition, innerIgnoreCondition, false);
addStopStateToLooping(lastSink);
}
// we created the intermediate states in the loop, now we create the start of the loop.
setCurrentGroupPatternFirstOfLoop(true);
return createSingletonState(
lastSink,
proceedState,
takeCondition,
getIgnoreCondition(currentPattern),
currentPattern.getQuantifier().hasProperty(Quantifier.QuantifierProperty.OPTIONAL));
}
示例6
public Times getTimes() {
return times;
}
示例7
/**
* Creates a "complex" state consisting of given number of states with
* same {@link IterativeCondition}.
*
* @param sinkState the state that the created state should point to
* @param proceedState state that the state being converted should proceed to
* @param times number of times the state should be copied
* @return the first state of the "complex" state, next state should point to it
*/
@SuppressWarnings("unchecked")
private State<T> createTimesState(final State<T> sinkState, final State<T> proceedState, Times times) {
State<T> lastSink = sinkState;
setCurrentGroupPatternFirstOfLoop(false);
final IterativeCondition<T> untilCondition = (IterativeCondition<T>) currentPattern.getUntilCondition();
final IterativeCondition<T> innerIgnoreCondition = extendWithUntilCondition(
getInnerIgnoreCondition(currentPattern),
untilCondition,
false);
final IterativeCondition<T> takeCondition = extendWithUntilCondition(
getTakeCondition(currentPattern),
untilCondition,
true);
if (currentPattern.getQuantifier().hasProperty(Quantifier.QuantifierProperty.GREEDY) &&
times.getFrom() != times.getTo()) {
if (untilCondition != null) {
State<T> sinkStateCopy = copy(sinkState);
originalStateMap.put(sinkState.getName(), sinkStateCopy);
}
updateWithGreedyCondition(sinkState, takeCondition);
}
for (int i = times.getFrom(); i < times.getTo(); i++) {
lastSink = createSingletonState(lastSink, proceedState, takeCondition, innerIgnoreCondition, true);
addStopStateToLooping(lastSink);
}
for (int i = 0; i < times.getFrom() - 1; i++) {
lastSink = createSingletonState(lastSink, null, takeCondition, innerIgnoreCondition, false);
addStopStateToLooping(lastSink);
}
// we created the intermediate states in the loop, now we create the start of the loop.
setCurrentGroupPatternFirstOfLoop(true);
return createSingletonState(
lastSink,
proceedState,
takeCondition,
getIgnoreCondition(currentPattern),
currentPattern.getQuantifier().hasProperty(Quantifier.QuantifierProperty.OPTIONAL));
}
示例8
public Times getTimes() {
return times;
}
示例9
/**
* Creates a "complex" state consisting of given number of states with
* same {@link IterativeCondition}.
*
* @param sinkState the state that the created state should point to
* @param proceedState state that the state being converted should proceed to
* @param times number of times the state should be copied
* @return the first state of the "complex" state, next state should point to it
*/
@SuppressWarnings("unchecked")
private State<T> createTimesState(final State<T> sinkState, final State<T> proceedState, Times times) {
State<T> lastSink = sinkState;
setCurrentGroupPatternFirstOfLoop(false);
final IterativeCondition<T> untilCondition = (IterativeCondition<T>) currentPattern.getUntilCondition();
final IterativeCondition<T> innerIgnoreCondition = extendWithUntilCondition(
getInnerIgnoreCondition(currentPattern),
untilCondition,
false);
final IterativeCondition<T> takeCondition = extendWithUntilCondition(
getTakeCondition(currentPattern),
untilCondition,
true);
if (currentPattern.getQuantifier().hasProperty(Quantifier.QuantifierProperty.GREEDY) &&
times.getFrom() != times.getTo()) {
if (untilCondition != null) {
State<T> sinkStateCopy = copy(sinkState);
originalStateMap.put(sinkState.getName(), sinkStateCopy);
}
updateWithGreedyCondition(sinkState, takeCondition);
}
for (int i = times.getFrom(); i < times.getTo(); i++) {
lastSink = createSingletonState(lastSink, proceedState, takeCondition, innerIgnoreCondition, true);
addStopStateToLooping(lastSink);
}
for (int i = 0; i < times.getFrom() - 1; i++) {
lastSink = createSingletonState(lastSink, null, takeCondition, innerIgnoreCondition, false);
addStopStateToLooping(lastSink);
}
// we created the intermediate states in the loop, now we create the start of the loop.
setCurrentGroupPatternFirstOfLoop(true);
return createSingletonState(
lastSink,
proceedState,
takeCondition,
getIgnoreCondition(currentPattern),
currentPattern.getQuantifier().hasProperty(Quantifier.QuantifierProperty.OPTIONAL));
}
示例10
/**
* Specifies that this pattern can occur {@code one or more} times.
* This means at least one and at most infinite number of events can
* be matched to this pattern.
*
* <p>If this quantifier is enabled for a
* pattern {@code A.oneOrMore().followedBy(B)} and a sequence of events
* {@code A1 A2 B} appears, this will generate patterns:
* {@code A1 B} and {@code A1 A2 B}. See also {@link #allowCombinations()}.
*
* @return The same pattern with a {@link Quantifier#looping(ConsumingStrategy)} quantifier applied.
* @throws MalformedPatternException if the quantifier is not applicable to this pattern.
*/
public Pattern<T, F> oneOrMore() {
checkIfNoNotPattern();
checkIfQuantifierApplied();
this.quantifier = Quantifier.looping(quantifier.getConsumingStrategy());
this.times = Times.of(1);
return this;
}
示例11
/**
* Specifies that this pattern can occur the specified times at least.
* This means at least the specified times and at most infinite number of events can
* be matched to this pattern.
*
* @return The same pattern with a {@link Quantifier#looping(ConsumingStrategy)} quantifier applied.
* @throws MalformedPatternException if the quantifier is not applicable to this pattern.
*/
public Pattern<T, F> timesOrMore(int times) {
checkIfNoNotPattern();
checkIfQuantifierApplied();
this.quantifier = Quantifier.looping(quantifier.getConsumingStrategy());
this.times = Times.of(times);
return this;
}
示例12
/**
* Specifies that this pattern can occur {@code one or more} times.
* This means at least one and at most infinite number of events can
* be matched to this pattern.
*
* <p>If this quantifier is enabled for a
* pattern {@code A.oneOrMore().followedBy(B)} and a sequence of events
* {@code A1 A2 B} appears, this will generate patterns:
* {@code A1 B} and {@code A1 A2 B}. See also {@link #allowCombinations()}.
*
* @return The same pattern with a {@link Quantifier#looping(ConsumingStrategy)} quantifier applied.
* @throws MalformedPatternException if the quantifier is not applicable to this pattern.
*/
public Pattern<T, F> oneOrMore() {
checkIfNoNotPattern();
checkIfQuantifierApplied();
this.quantifier = Quantifier.looping(quantifier.getConsumingStrategy());
this.times = Times.of(1);
return this;
}
示例13
/**
* Specifies that this pattern can occur the specified times at least.
* This means at least the specified times and at most infinite number of events can
* be matched to this pattern.
*
* @return The same pattern with a {@link Quantifier#looping(ConsumingStrategy)} quantifier applied.
* @throws MalformedPatternException if the quantifier is not applicable to this pattern.
*/
public Pattern<T, F> timesOrMore(int times) {
checkIfNoNotPattern();
checkIfQuantifierApplied();
this.quantifier = Quantifier.looping(quantifier.getConsumingStrategy());
this.times = Times.of(times);
return this;
}
示例14
/**
* Specifies that this pattern can occur {@code one or more} times.
* This means at least one and at most infinite number of events can
* be matched to this pattern.
*
* <p>If this quantifier is enabled for a
* pattern {@code A.oneOrMore().followedBy(B)} and a sequence of events
* {@code A1 A2 B} appears, this will generate patterns:
* {@code A1 B} and {@code A1 A2 B}. See also {@link #allowCombinations()}.
*
* @return The same pattern with a {@link Quantifier#looping(ConsumingStrategy)} quantifier applied.
* @throws MalformedPatternException if the quantifier is not applicable to this pattern.
*/
public Pattern<T, F> oneOrMore() {
checkIfNoNotPattern();
checkIfQuantifierApplied();
this.quantifier = Quantifier.looping(quantifier.getConsumingStrategy());
this.times = Times.of(1);
return this;
}
示例15
/**
* Specifies that this pattern can occur the specified times at least.
* This means at least the specified times and at most infinite number of events can
* be matched to this pattern.
*
* @return The same pattern with a {@link Quantifier#looping(ConsumingStrategy)} quantifier applied.
* @throws MalformedPatternException if the quantifier is not applicable to this pattern.
*/
public Pattern<T, F> timesOrMore(int times) {
checkIfNoNotPattern();
checkIfQuantifierApplied();
this.quantifier = Quantifier.looping(quantifier.getConsumingStrategy());
this.times = Times.of(times);
return this;
}