public boolean next()

in lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriTokenizer.java [245:725]


  public boolean next(final TokenKind allowedTokenKind) {
    if (allowedTokenKind == null) {
      return false;
    }

    boolean found = false;
    final int previousIndex = index;
    switch (allowedTokenKind) {
    case EOF:
      found = index >= parseString.length();
      break;

    // Constants
    case REF:
      found = nextConstant("$ref");
      break;
    case VALUE:
      found = nextConstant("$value");
      break;
    case COUNT:
      found = nextConstant("$count");
      break;
    case CROSSJOIN:
      found = nextConstant("$crossjoin");
      break;
    case ROOT:
      found = nextConstant("$root");
      break;
    case IT:
      found = nextConstant("$it");
      break;

    case APPLY:
      found = nextConstant("$apply");
      break;
    case EXPAND:
      found = nextConstant("$expand");
      break;
    case FILTER:
      found = nextConstant("$filter");
      break;
    case LEVELS:
      found = nextConstant("$levels");
      break;
    case ORDERBY:
      found = nextConstant("$orderby");
      break;
    case SEARCH:
      found = nextConstant("$search");
      break;
    case SELECT:
      found = nextConstant("$select");
      break;
    case SKIP:
      found = nextConstant("$skip");
      break;
    case TOP:
      found = nextConstant("$top");
      break;

    case ANY:
      found = nextConstant("any");
      break;
    case ALL:
      found = nextConstant("all");
      break;

    case OPEN:
      found = nextCharacter('(');
      break;
    case CLOSE:
      found = nextCharacter(')');
      break;
    case COMMA:
      found = nextCharacter(',');
      break;
    case SEMI:
      found = nextCharacter(';');
      break;
    case COLON:
      found = nextCharacter(':');
      break;
    case DOT:
      found = nextCharacter('.');
      break;
    case SLASH:
      found = nextCharacter('/');
      break;
    case EQ:
      found = nextCharacter('=');
      break;
    case STAR:
      found = nextCharacter('*');
      break;
    case PLUS:
      found = nextCharacter('+');
      break;

    case NULL:
      found = nextConstant("null");
      break;
    case MAX:
      found = nextConstant("max");
      break;

    case AVERAGE:
      found = nextConstant("average");
      break;
    case COUNTDISTINCT:
      found = nextConstant("countdistinct");
      break;
    case IDENTITY:
      found = nextConstant("identity");
      break;
    case MIN:
      found = nextConstant("min");
      break;
    case SUM:
      found = nextConstant("sum");
      break;

    case ROLLUP_ALL:
      found = nextConstant("$all");
      break;

    // Identifiers
    case ODataIdentifier:
      found = nextODataIdentifier();
      break;
    case QualifiedName:
      found = nextQualifiedName();
      break;
    case ParameterAliasName:
      found = nextParameterAliasName();
      break;

    // Primitive Values
    case BooleanValue:
      found = nextBooleanValue();
      break;
    case StringValue:
      found = nextStringValue();
      break;
    case IntegerValue:
      found = nextIntegerValue(true);
      break;
    case GuidValue:
      found = nextGuidValue();
      break;
    case DateValue:
      found = nextDateValue();
      break;
    case DateTimeOffsetValue:
      found = nextDateTimeOffsetValue();
      break;
    case TimeOfDayValue:
      found = nextTimeOfDayValue();
      break;
    case DecimalValue:
      found = nextDecimalValue();
      break;
    case DoubleValue:
      found = nextDoubleValue();
      break;
    case DurationValue:
      found = nextDurationValue();
      break;
    case BinaryValue:
      found = nextBinaryValue();
      break;
    case EnumValue:
      found = nextEnumValue();
      break;

    // Geo Values
    case GeographyPoint:
      found = nextGeoPoint(true);
      break;
    case GeometryPoint:
      found = nextGeoPoint(false);
      break;
    case GeographyLineString:
      found = nextGeoLineString(true);
      break;
    case GeometryLineString:
      found = nextGeoLineString(false);
      break;
    case GeographyPolygon:
      found = nextGeoPolygon(true);
      break;
    case GeometryPolygon:
      found = nextGeoPolygon(false);
      break;
    case GeographyMultiPoint:
      found = nextGeoMultiPoint(true);
      break;
    case GeometryMultiPoint:
      found = nextGeoMultiPoint(false);
      break;
    case GeographyMultiLineString:
      found = nextGeoMultiLineString(true);
      break;
    case GeometryMultiLineString:
      found = nextGeoMultiLineString(false);
      break;
    case GeographyMultiPolygon:
      found = nextGeoMultiPolygon(true);
      break;
    case GeometryMultiPolygon:
      found = nextGeoMultiPolygon(false);
      break;
    case GeographyCollection:
      found = nextGeoCollection(true);
      break;
    case GeometryCollection:
      found = nextGeoCollection(false);
      break;

    // Complex or Collection Value
    case jsonArrayOrObject:
      found = nextJsonArrayOrObject();
      break;

    // Search
    case Word:
      found = nextWord();
      break;
    case Phrase:
      found = nextPhrase();
      break;

    // Operators in Search Expressions
    case OrOperatorSearch:
      found = nextBinaryOperator("OR");
      break;
    case AndOperatorSearch:
      found = nextAndOperatorSearch();
      break;
    case NotOperatorSearch:
      found = nextUnaryOperator("NOT");
      break;

    // Operators
    case OrOperator:
      found = nextBinaryOperator("or");
      break;
    case AndOperator:
      found = nextBinaryOperator("and");
      break;
    case EqualsOperator:
      found = nextBinaryOperator("eq");
      break;
    case NotEqualsOperator:
      found = nextBinaryOperator("ne");
      break;
    case GreaterThanOperator:
      found = nextBinaryOperator("gt");
      break;
    case GreaterThanOrEqualsOperator:
      found = nextBinaryOperator("ge");
      break;
    case LessThanOperator:
      found = nextBinaryOperator("lt");
      break;
    case LessThanOrEqualsOperator:
      found = nextBinaryOperator("le");
      break;
    case HasOperator:
      found = nextBinaryOperator("has");
      break;
    case InOperator:
      found = nextBinaryOperator("in");
      break;
    case AddOperator:
      found = nextBinaryOperator("add");
      break;
    case SubOperator:
      found = nextBinaryOperator("sub");
      break;
    case MulOperator:
      found = nextBinaryOperator("mul");
      break;
    case DivOperator:
      found = nextBinaryOperator("div");
      break;
    case ModOperator:
      found = nextBinaryOperator("mod");
      break;
    case MinusOperator:
      // To avoid unnecessary minus operators for negative numbers, we have to check what follows the minus sign.
      found = nextCharacter('-') && !nextDigit() && !nextConstant("INF");
      break;
    case NotOperator:
      found = nextUnaryOperator("not");
      break;

    // Operators for the aggregation extension
    case AsOperator:
      found = nextBinaryOperator("as");
      break;
    case FromOperator:
      found = nextBinaryOperator("from");
      break;
    case WithOperator:
      found = nextBinaryOperator("with");
      break;

    // Methods
    case CastMethod:
      found = nextMethod("cast");
      break;
    case CeilingMethod:
      found = nextMethod("ceiling");
      break;
    case ConcatMethod:
      found = nextMethod("concat");
      break;
    case ContainsMethod:
      found = nextMethod("contains");
      break;
    case DateMethod:
      found = nextMethod("date");
      break;
    case DayMethod:
      found = nextMethod("day");
      break;
    case EndswithMethod:
      found = nextMethod("endswith");
      break;
    case FloorMethod:
      found = nextMethod("floor");
      break;
    case FractionalsecondsMethod:
      found = nextMethod("fractionalseconds");
      break;
    case GeoDistanceMethod:
      found = nextMethod("geo.distance");
      break;
    case GeoIntersectsMethod:
      found = nextMethod("geo.intersects");
      break;
    case GeoLengthMethod:
      found = nextMethod("geo.length");
      break;
    case HourMethod:
      found = nextMethod("hour");
      break;
    case IndexofMethod:
      found = nextMethod("indexof");
      break;
    case IsofMethod:
      found = nextMethod("isof");
      break;
    case LengthMethod:
      found = nextMethod("length");
      break;
    case MaxdatetimeMethod:
      found = nextMethod("maxdatetime");
      break;
    case MindatetimeMethod:
      found = nextMethod("mindatetime");
      break;
    case MinuteMethod:
      found = nextMethod("minute");
      break;
    case MonthMethod:
      found = nextMethod("month");
      break;
    case NowMethod:
      found = nextMethod("now");
      break;
    case RoundMethod:
      found = nextMethod("round");
      break;
    case SecondMethod:
      found = nextMethod("second");
      break;
    case StartswithMethod:
      found = nextMethod("startswith");
      break;
    case SubstringMethod:
      found = nextMethod("substring");
      break;
    case TimeMethod:
      found = nextMethod("time");
      break;
    case TolowerMethod:
      found = nextMethod("tolower");
      break;
    case TotaloffsetminutesMethod:
      found = nextMethod("totaloffsetminutes");
      break;
    case TotalsecondsMethod:
      found = nextMethod("totalseconds");
      break;
    case ToupperMethod:
      found = nextMethod("toupper");
      break;
    case TrimMethod:
      found = nextMethod("trim");
      break;
    case YearMethod:
      found = nextMethod("year");
      break;
    case SubstringofMethod:
      found = nextMethod("substringof");
      break;

    // Method for the aggregation extension
    case IsDefinedMethod:
      found = nextMethod("isdefined");
      break;

    // Transformations for the aggregation extension
    case AggregateTrafo:
      found = nextMethod("aggregate");
      break;
    case BottomCountTrafo:
      found = nextMethod("bottomcount");
      break;
    case BottomPercentTrafo:
      found = nextMethod("bottompercent");
      break;
    case BottomSumTrafo:
      found = nextMethod("bottomsum");
      break;
    case ComputeTrafo:
      found = nextMethod("compute");
      break;
    case ExpandTrafo:
      found = nextMethod("expand");
      break;
    case FilterTrafo:
      found = nextMethod("filter");
      break;
    case GroupByTrafo:
      found = nextMethod("groupby");
      break;
    case SearchTrafo:
      found = nextMethod("search");
      break;
    case TopCountTrafo:
      found = nextMethod("topcount");
      break;
    case TopPercentTrafo:
      found = nextMethod("toppercent");
      break;
    case TopSumTrafo:
      found = nextMethod("topsum");
      break;
    case OrderByTrafo:
    	found = nextMethod("orderby");
    	break;
    case TopTrafo:
    	found = nextMethod("top");
    	break;
    case SkipTrafo:
    	found = nextMethod("skip");
    	break;

    // Roll-up specification for the aggregation extension
    case RollUpSpec:
      found = nextMethod("rollup");
      break;

    // Suffixes
    case AscSuffix:
      found = nextSuffix("asc");
      break;
    case DescSuffix:
      found = nextSuffix("desc");
      break;
    }

    if (found) {
      startIndex = previousIndex;
    } else {
      index = previousIndex;
    }
    return found;
  }