Class BaseMatcher<Match extends IPatternMatch>

java.lang.Object
tools.refinery.interpreter.internal.apiimpl.QueryResultWrapper
tools.refinery.interpreter.api.impl.BaseMatcher<Match>
Type Parameters:
Match -
All Implemented Interfaces:
InterpreterMatcher<Match>
Direct Known Subclasses:
GenericPatternMatcher

public abstract class BaseMatcher<Match extends IPatternMatch> extends QueryResultWrapper implements InterpreterMatcher<Match>
Base implementation of ViatraQueryMatcher.
  • Field Details

  • Constructor Details

  • Method Details

    • setBackend

      protected void setBackend(InterpreterEngine engine, IQueryResultProvider resultProvider, IMatcherCapability capabilities)
      Specified by:
      setBackend in class QueryResultWrapper
      Since:
      1.4
    • arrayToMatch

      protected abstract Match arrayToMatch(Object[] parameters)
      Converts the array representation of a pattern match to an immutable Match object.
    • arrayToMatchMutable

      protected abstract Match arrayToMatchMutable(Object[] parameters)
      Converts the array representation of a pattern match to a mutable Match object.
    • matchToArray

      protected Object[] matchToArray(Match partialMatch)
      Converts the Match object of a pattern match to the array representation.
    • tupleToMatch

      protected abstract Match tupleToMatch(Tuple t)
    • emptyArray

      protected Object[] emptyArray()
    • getPositionOfParameter

      public Integer getPositionOfParameter(String parameterName)
      Description copied from interface: InterpreterMatcher
      Returns the index of the symbolic parameter with the given name.
      Specified by:
      getPositionOfParameter in interface InterpreterMatcher<Match extends IPatternMatch>
    • getParameterNames

      public List<String> getParameterNames()
      Description copied from interface: InterpreterMatcher
      Returns the array of symbolic parameter names.
      Specified by:
      getParameterNames in interface InterpreterMatcher<Match extends IPatternMatch>
    • getAllMatches

      public Collection<Match> getAllMatches()
      Description copied from interface: InterpreterMatcher
      Returns the set of all pattern matches.
      Specified by:
      getAllMatches in interface InterpreterMatcher<Match extends IPatternMatch>
      Returns:
      matches represented as a Match object.
    • streamAllMatches

      public Stream<Match> streamAllMatches()
      Description copied from interface: InterpreterMatcher
      Returns a stream of all pattern matches.

      WARNING If the result set changes while the stream is evaluated, the set of matches included in the stream are unspecified. In such cases, either rely on InterpreterMatcher.getAllMatches() or collect the results of the stream in end-user code.

      Specified by:
      streamAllMatches in interface InterpreterMatcher<Match extends IPatternMatch>
      Returns:
      matches represented as a Match object.
    • rawStreamAllMatches

      protected Stream<Match> rawStreamAllMatches(Object[] parameters)
      Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
      Parameters:
      parameters - array where each non-null element binds the corresponding pattern parameter to a fixed value.
      Returns:
      matches represented as a Match object.
      Since:
      2.0
    • getAllMatches

      public Collection<Match> getAllMatches(Match partialMatch)
      Description copied from interface: InterpreterMatcher
      Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
      Specified by:
      getAllMatches in interface InterpreterMatcher<Match extends IPatternMatch>
      Parameters:
      partialMatch - a partial match of the pattern where each non-null field binds the corresponding pattern parameter to a fixed value.
      Returns:
      matches represented as a Match object.
    • streamAllMatches

      public Stream<Match> streamAllMatches(Match partialMatch)
      Description copied from interface: InterpreterMatcher
      Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.

      WARNING If the result set changes while the stream is evaluated, the set of matches included in the stream are unspecified. In such cases, either rely on InterpreterMatcher.getAllMatches() or collect the results of the stream in end-user code.

      Specified by:
      streamAllMatches in interface InterpreterMatcher<Match extends IPatternMatch>
      Parameters:
      partialMatch - a partial match of the pattern where each non-null field binds the corresponding pattern parameter to a fixed value.
      Returns:
      matches represented as a Match object.
    • getOneArbitraryMatch

      public Optional<Match> getOneArbitraryMatch()
      Description copied from interface: InterpreterMatcher
      Returns an arbitrarily chosen pattern match. Neither determinism nor randomness of selection is guaranteed.
      Specified by:
      getOneArbitraryMatch in interface InterpreterMatcher<Match extends IPatternMatch>
      Returns:
      a match represented as a Match object, or an empty Optional if no match is found.
    • rawGetOneArbitraryMatch

      protected Optional<Match> rawGetOneArbitraryMatch(Object[] parameters)
      Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. Neither determinism nor randomness of selection is guaranteed.
      Parameters:
      parameters - array where each non-null element binds the corresponding pattern parameter to a fixed value.
      Returns:
      a match represented as a Match object, or null if no match is found.
      Since:
      2.0
    • getOneArbitraryMatch

      public Optional<Match> getOneArbitraryMatch(Match partialMatch)
      Description copied from interface: InterpreterMatcher
      Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. Neither determinism nor randomness of selection is guaranteed.
      Specified by:
      getOneArbitraryMatch in interface InterpreterMatcher<Match extends IPatternMatch>
      Parameters:
      partialMatch - a partial match of the pattern where each non-null field binds the corresponding pattern parameter to a fixed value.
      Returns:
      a match represented as a Match object, or an empty Optional if no match is found.
    • rawHasMatch

      protected boolean rawHasMatch(Object[] parameters)
      Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, under any possible substitution of the unspecified parameters.
      Parameters:
      parameters - array where each non-null element binds the corresponding pattern parameter to a fixed value.
      Returns:
      true if the input is a valid (partial) match of the pattern.
    • hasMatch

      public boolean hasMatch()
      Description copied from interface: InterpreterMatcher
      Indicates whether the query has any kind of matches.
      Specified by:
      hasMatch in interface InterpreterMatcher<Match extends IPatternMatch>
      Returns:
      true if there exists a valid match of the pattern.
    • hasMatch

      public boolean hasMatch(Match partialMatch)
      Description copied from interface: InterpreterMatcher
      Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, under any possible substitution of the unspecified parameters (if any).
      Specified by:
      hasMatch in interface InterpreterMatcher<Match extends IPatternMatch>
      Parameters:
      partialMatch - a (partial) match of the pattern where each non-null field binds the corresponding pattern parameter to a fixed value.
      Returns:
      true if the input is a valid (partial) match of the pattern.
    • countMatches

      public int countMatches()
      Description copied from interface: InterpreterMatcher
      Returns the number of all pattern matches.
      Specified by:
      countMatches in interface InterpreterMatcher<Match extends IPatternMatch>
      Returns:
      the number of pattern matches found.
    • rawCountMatches

      protected int rawCountMatches(Object[] parameters)
      Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
      Parameters:
      parameters - array where each non-null element binds the corresponding pattern parameter to a fixed value.
      Returns:
      the number of pattern matches found.
    • countMatches

      public int countMatches(Match partialMatch)
      Description copied from interface: InterpreterMatcher
      Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
      Specified by:
      countMatches in interface InterpreterMatcher<Match extends IPatternMatch>
      Parameters:
      partialMatch - a partial match of the pattern where each non-null field binds the corresponding pattern parameter to a fixed value.
      Returns:
      the number of pattern matches found.
    • rawForEachMatch

      protected void rawForEachMatch(Object[] parameters, Consumer<? super Match> processor)
      Executes the given processor on each match of the pattern that conforms to the given fixed values of some parameters.
      Parameters:
      parameters - array where each non-null element binds the corresponding pattern parameter to a fixed value.
      action - the action that will process each pattern match.
      Since:
      2.0
    • forEachMatch

      public void forEachMatch(Consumer<? super Match> processor)
      Description copied from interface: InterpreterMatcher
      Executes the given processor on each match of the pattern.
      Specified by:
      forEachMatch in interface InterpreterMatcher<Match extends IPatternMatch>
      Parameters:
      processor - the action that will process each pattern match.
    • forEachMatch

      public void forEachMatch(Match match, Consumer<? super Match> processor)
      Description copied from interface: InterpreterMatcher
      Executes the given processor on each match of the pattern that conforms to the given fixed values of some parameters.
      Specified by:
      forEachMatch in interface InterpreterMatcher<Match extends IPatternMatch>
      Parameters:
      match - array where each non-null element binds the corresponding pattern parameter to a fixed value.
      processor - the action that will process each pattern match.
    • forOneArbitraryMatch

      public boolean forOneArbitraryMatch(Consumer<? super Match> processor)
      Description copied from interface: InterpreterMatcher
      Executes the given processor on an arbitrarily chosen match of the pattern. Neither determinism nor randomness of selection is guaranteed.
      Specified by:
      forOneArbitraryMatch in interface InterpreterMatcher<Match extends IPatternMatch>
      Parameters:
      processor - the action that will process the selected match.
      Returns:
      true if the pattern has at least one match, false if the processor was not invoked
    • forOneArbitraryMatch

      public boolean forOneArbitraryMatch(Match partialMatch, Consumer<? super Match> processor)
      Description copied from interface: InterpreterMatcher
      Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. Neither determinism nor randomness of selection is guaranteed.
      Specified by:
      forOneArbitraryMatch in interface InterpreterMatcher<Match extends IPatternMatch>
      Parameters:
      partialMatch - array where each non-null element binds the corresponding pattern parameter to a fixed value.
      processor - the action that will process the selected match.
      Returns:
      true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
    • rawForOneArbitraryMatch

      protected boolean rawForOneArbitraryMatch(Object[] parameters, Consumer<? super Match> processor)
      Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. Neither determinism nor randomness of selection is guaranteed.
      Parameters:
      parameters - array where each non-null element binds the corresponding pattern parameter to a fixed value.
      processor - the action that will process the selected match.
      Returns:
      true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
      Since:
      2.0
    • newEmptyMatch

      public Match newEmptyMatch()
      Description copied from interface: InterpreterMatcher
      Returns an empty, mutable Match for the matcher. Fields of the mutable match can be filled to create a partial match, usable as matcher input. This can be used to call the matcher with a partial match even if the specific class of the matcher or the match is unknown.
      Specified by:
      newEmptyMatch in interface InterpreterMatcher<Match extends IPatternMatch>
      Returns:
      the empty match
    • newMatch

      public Match newMatch(Object... parameters)
      Description copied from interface: InterpreterMatcher
      Returns a new (partial) Match object for the matcher. This can be used e.g. to call the matcher with a partial match.

      The returned match will be immutable. Use InterpreterMatcher.newEmptyMatch() to obtain a mutable match object.

      Specified by:
      newMatch in interface InterpreterMatcher<Match extends IPatternMatch>
      Parameters:
      parameters - the fixed value of pattern parameters, or null if not bound.
      Returns:
      the (partial) match object.
    • getAllValues

      public Set<Object> getAllValues(String parameterName)
      Description copied from interface: InterpreterMatcher
      Retrieve the set of values that occur in matches for the given parameterName.
      Specified by:
      getAllValues in interface InterpreterMatcher<Match extends IPatternMatch>
      Parameters:
      parameterName - name of the parameter for which values are returned
      Returns:
      the Set of all values for the given parameter, null if the parameter with the given name does not exists, empty set if there are no matches
    • getAllValues

      public Set<Object> getAllValues(String parameterName, Match partialMatch)
      Description copied from interface: InterpreterMatcher
      Retrieve the set of values that occur in matches for the given parameterName, that conforms to the given fixed values of some parameters.
      Specified by:
      getAllValues in interface InterpreterMatcher<Match extends IPatternMatch>
      Parameters:
      parameterName - name of the parameter for which values are returned
      partialMatch - a partial match of the pattern where each non-null field binds the corresponding pattern parameter to a fixed value.
      Returns:
      the Set of all values for the given parameter, null if the parameter with the given name does not exists or if the parameter with the given name is set in partialMatch, empty set if there are no matches
    • rawStreamAllValues

      protected Stream<Object> rawStreamAllValues(int position, Object[] parameters)
      Retrieve a stream of values that occur in matches for the given parameterName, that conforms to the given fixed values of some parameters.
      Parameters:
      position - position of the parameter for which values are returned
      parameters - a parameter array corresponding to a partial match of the pattern where each non-null field binds the corresponding pattern parameter to a fixed value.
      Returns:
      the stream of all values in the given position
      Throws:
      IllegalArgumentException - if length of parameters array does not equal to number of parameters
      IndexOutOfBoundsException - if position is not appropriate for the current parameter size
      Since:
      2.0
    • rawAccumulateAllValues

      protected <T> void rawAccumulateAllValues(int position, Object[] parameters, Set<T> accumulator)
      Uses an existing set to accumulate all values of the parameter with the given name. Since it is a protected method, no error checking or input validation is performed!
      Parameters:
      position - position of the parameter for which values are returned
      parameters - a parameter array corresponding to a partial match of the pattern where each non-null field binds the corresponding pattern parameter to a fixed value.
      accumulator - the existing set to fill with the values
    • getEngine

      public InterpreterEngine getEngine()
      Description copied from interface: InterpreterMatcher
      Returns the engine that the matcher uses.
      Specified by:
      getEngine in interface InterpreterMatcher<Match extends IPatternMatch>
      Returns:
      the engine
    • getSpecification

      public IQuerySpecification<? extends BaseMatcher<Match>> getSpecification()
      Description copied from interface: InterpreterMatcher
      The pattern that will be matched.
      Specified by:
      getSpecification in interface InterpreterMatcher<Match extends IPatternMatch>
    • getPatternName

      public String getPatternName()
      Description copied from interface: InterpreterMatcher
      Fully qualified name of the pattern.
      Specified by:
      getPatternName in interface InterpreterMatcher<Match extends IPatternMatch>
    • getCapabilities

      public IMatcherCapability getCapabilities()
      Since:
      1.4