[ https://issues.apache.org/jira/browse/FLINK-6356?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15984279#comment-15984279 ]
ASF GitHub Bot commented on FLINK-6356: --------------------------------------- Github user dawidwys commented on a diff in the pull request: https://github.com/apache/flink/pull/3761#discussion_r113378455 --- Diff: flink-libraries/flink-cep/src/main/java/org/apache/flink/cep/pattern/Pattern.java --- @@ -162,130 +186,114 @@ public int getTimes() { } /** - * Appends a new pattern operator to the existing one. The new pattern operator enforces strict - * temporal contiguity. This means that the whole pattern only matches if an event which matches - * this operator directly follows the preceding matching event. Thus, there cannot be any - * events in between two matching events. + * Appends a new pattern to the existing one. The new pattern enforces strict + * temporal contiguity. This means that the whole pattern sequence matches only + * if an event which matches this pattern directly follows the preceding matching + * event. Thus, there cannot be any events in between two matching events. * - * @param name Name of the new pattern operator - * @return A new pattern operator which is appended to this pattern operator + * @param name Name of the new pattern + * @return A new pattern which is appended to this one */ public Pattern<T, T> next(final String name) { return new Pattern<T, T>(name, this); } /** - * Appends a new pattern operator to the existing one. The new pattern operator enforces - * non-strict temporal contiguity. This means that a matching event of this operator and the + * Appends a new pattern to the existing one. The new pattern enforces non-strict + * temporal contiguity. This means that a matching event of this pattern and the * preceding matching event might be interleaved with other events which are ignored. * - * @param name Name of the new pattern operator - * @return A new pattern operator which is appended to this pattern operator + * @param name Name of the new pattern + * @return A new pattern which is appended to this one */ public FollowedByPattern<T, T> followedBy(final String name) { return new FollowedByPattern<T, T>(name, this); } /** - * Starts a new pattern with the initial pattern operator whose name is provided. Furthermore, - * the base type of the event sequence is set. - * - * @param name Name of the new pattern operator - * @param <X> Base type of the event pattern - * @return The first pattern operator of a pattern - */ - public static <X> Pattern<X, X> begin(final String name) { - return new Pattern<X, X>(name, null); - } - - /** - * Specifies that this pattern can occur zero or more times(kleene star). - * This means any number of events can be matched in this state. + * Specifies that this pattern is optional for a final match of the pattern + * sequence to happen. * - * @return The same pattern with applied Kleene star operator - * - * @throws MalformedPatternException if quantifier already applied + * @return The same pattern as optional. + * @throws MalformedPatternException if the quantifier is not applicable to this pattern. */ - public Pattern<T, F> zeroOrMore() { - return zeroOrMore(true); + public Pattern<T, F> optional() { + quantifier.optional(); + return this; } /** - * Specifies that this pattern can occur zero or more times(kleene star). - * This means any number of events can be matched in this state. - * - * If eagerness is enabled for a pattern A*B and sequence A1 A2 B will generate patterns: - * B, A1 B and A1 A2 B. If disabled B, A1 B, A2 B and A1 A2 B. + * 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. * - * @param eager if true the pattern always consumes earlier events - * @return The same pattern with applied Kleene star operator + * <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()}. * - * @throws MalformedPatternException if quantifier already applied + * @return The same pattern with a {@link Quantifier#ONE_OR_MORE()} quantifier applied. + * @throws MalformedPatternException if the quantifier is not applicable to this pattern. */ - public Pattern<T, F> zeroOrMore(final boolean eager) { + public Pattern<T, F> oneOrMore() { checkIfQuantifierApplied(); - if (eager) { - this.quantifier = Quantifier.ZERO_OR_MORE_EAGER; - } else { - this.quantifier = Quantifier.ZERO_OR_MORE_COMBINATIONS; - } + this.quantifier = Quantifier.ONE_OR_MORE(); return this; } /** - * Specifies that this pattern can occur one or more times(kleene star). - * This means at least one and at most infinite number of events can be matched in this state. + * Specifies exact number of times that this pattern should be matched. * - * @return The same pattern with applied Kleene plus operator + * @param times number of times matching event must appear + * @return The same pattern with number of times applied * - * @throws MalformedPatternException if quantifier already applied + * @throws MalformedPatternException if the quantifier is not applicable to this pattern. */ - public Pattern<T, F> oneOrMore() { - return oneOrMore(true); + public Pattern<T, F> times(int times) { + checkIfQuantifierApplied(); + Preconditions.checkArgument(times > 0, "You should give a positive number greater than 0."); + this.quantifier = Quantifier.TIMES(); + this.times = times; + return this; } /** - * Specifies that this pattern can occur one or more times(kleene star). - * This means at least one and at most infinite number of events can be matched in this state. + * Applicable only to {@link Quantifier#ONE_OR_MORE()} patterns, this option --- End diff -- It is also applicable to `TIMES()` > Make times() eager and enable allowing combinations. > ---------------------------------------------------- > > Key: FLINK-6356 > URL: https://issues.apache.org/jira/browse/FLINK-6356 > Project: Flink > Issue Type: Bug > Components: CEP > Affects Versions: 1.3.0 > Reporter: Kostas Kloudas > Assignee: Kostas Kloudas > Fix For: 1.3.0 > > > This is the PR that addresses it https://github.com/apache/flink/pull/3761 -- This message was sent by Atlassian JIRA (v6.3.15#6346)