コード例 #1
0
  /**
   * Returns {@code true} if this model's {@linkplain #getSearchString search string} allows the use
   * of server-side sorting.
   *
   * <p>This method returns {@code false} if:
   *
   * <ul>
   *   <li>search string contains syntax error(s)
   *   <li>search string contains {@code SORTBY} syntax object
   * </ul>
   *
   * Otherwise, this method returns {@code true}.
   */
  public boolean isSearchValidForServerSideSorting() {
    ISyntaxChecker syntaxChecker = getConfigurator().getSyntaxChecker();
    if (syntaxChecker == null) {
      return true;
    }

    String search = getSearchString();
    SyntaxContainer syntaxResult = syntaxChecker.analyzeSyntaxState(search, true);

    if (syntaxResult.getError() != SyntaxError.NO_ERROR) {
      return false;
    }

    for (SyntaxObject syntaxObject : syntaxResult) {
      if (syntaxObject.getType() == SyntaxObjectType.SORTBY) {
        return false;
      }
    }

    return true;
  }