public static SelectQueryParams getSelectQueryParams()

in streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/ProvidedRestQueryParamConverter.java [44:106]


  public static SelectQueryParams getSelectQueryParams(ProvidedRestQueryParams params) {
    SelectQueryParams queryParameters = new SelectQueryParams(params.getMeasurementId());

    if (params.has(SupportedRestQueryParams.QP_COUNT_ONLY)
        && params.getAsBoolean(SupportedRestQueryParams.QP_COUNT_ONLY)) {
      queryParameters.withSelectParams(SelectClauseParams.from(params.getAsString(SupportedRestQueryParams.QP_COLUMNS),
                                                               true)
      );
    } else {
      queryParameters.withSelectParams(SelectClauseParams.from(params.getAsString(SupportedRestQueryParams.QP_COLUMNS),
          params.getAsString(SupportedRestQueryParams.QP_AGGREGATION_FUNCTION)));
    }

    String filterConditions = params.getAsString(SupportedRestQueryParams.QP_FILTER);

    if (hasTimeParams(params)) {
      queryParameters.withWhereParams(WhereClauseParams.from(
          params.getAsLong(SupportedRestQueryParams.QP_START_DATE),
          params.getAsLong(SupportedRestQueryParams.QP_END_DATE),
          filterConditions));
    } else if (filterConditions != null) {
      queryParameters.withWhereParams(WhereClauseParams.from(filterConditions));
    }

    if (params.has(SupportedRestQueryParams.QP_TIME_INTERVAL)) {
      String timeInterval = params.getAsString(SupportedRestQueryParams.QP_TIME_INTERVAL);
      if (!params.has(SupportedRestQueryParams.QP_GROUP_BY)) {
        queryParameters.withGroupByTimeParams(GroupByTimeClauseParams.from(timeInterval));
      } else {
        params.update(SupportedRestQueryParams.QP_GROUP_BY,
                      params.getAsString(SupportedRestQueryParams.QP_GROUP_BY) + ",time(" + timeInterval + ")");
      }

      queryParameters.withFillParams(FillClauseParams.from());
    }

    if (params.has(SupportedRestQueryParams.QP_GROUP_BY)) {
      queryParameters.withGroupByTagsParams(GroupByTagsClauseParams.from(
          params.getAsString(SupportedRestQueryParams.QP_GROUP_BY))
      );
    }


    if (params.has(SupportedRestQueryParams.QP_ORDER)) {
      String order = params.getAsString(SupportedRestQueryParams.QP_ORDER);
      if (order.equals(ORDER_DESCENDING)) {
        queryParameters.withOrderByParams(OrderByClauseParams.from(order));
      }
    }

    if (params.has(SupportedRestQueryParams.QP_LIMIT)) {
      queryParameters.withLimitParams(LimitClauseParams.from(params.getAsInt(SupportedRestQueryParams.QP_LIMIT)));
    }

    if (params.has(SupportedRestQueryParams.QP_OFFSET)) {
      queryParameters.withOffsetParams(OffsetClauseParams.from(params.getAsInt(SupportedRestQueryParams.QP_OFFSET)));
    } else if (params.has(SupportedRestQueryParams.QP_LIMIT) && params.has(SupportedRestQueryParams.QP_PAGE)) {
      queryParameters.withOffsetParams(OffsetClauseParams.from(
          params.getAsInt(SupportedRestQueryParams.QP_PAGE) * params.getAsInt(SupportedRestQueryParams.QP_LIMIT)));
    }

    return queryParameters;
  }