Ejemplo n.º 1
0
  private BaseResponse executeQuery(
      final ServiceRequest request,
      boolean countRequest,
      final ODataSQLBuilder visitor,
      Query query)
      throws SQLException {
    if (countRequest) {
      return getClient().executeCount(query, visitor.getParameters());
    } else {
      String pageSize = getPageSize(request);

      QueryResponse result =
          new EntityCollectionResponse(
              request.getODataRequest().getRawBaseUri(), visitor.getContext());

      if (visitor.getContext() instanceof CrossJoinNode) {
        result =
            new CrossJoinResult(
                request.getODataRequest().getRawBaseUri(), (CrossJoinNode) visitor.getContext());
      } else if (visitor.getContext() instanceof ComplexDocumentNode) {
        ComplexDocumentNode cdn = (ComplexDocumentNode) visitor.getContext();
        result = new OperationResponseImpl(cdn.getProcedureReturn());
      }

      getClient()
          .executeSQL(
              query,
              visitor.getParameters(),
              visitor.includeTotalSize(),
              visitor.getSkip(),
              visitor.getTop(),
              visitor.getNextToken(),
              Integer.parseInt(pageSize),
              result);

      return result;
    }
  }