protected int appendValues()

in core/src/main/java/com/datastax/oss/driver/internal/core/tracker/RequestLogFormatter.java [151:243]


  protected int appendValues(
      Request request,
      int maxValues,
      int maxValueLength,
      boolean addSeparator,
      StringBuilder builder) {
    if (request instanceof BatchStatement) {
      BatchStatement batch = (BatchStatement) request;
      for (BatchableStatement<?> child : batch) {
        maxValues = appendValues(child, maxValues, maxValueLength, addSeparator, builder);
        if (addSeparator) {
          addSeparator = false;
        }
        if (maxValues < 0) {
          return -1;
        }
      }
    } else if (request instanceof BoundStatement) {
      BoundStatement statement = (BoundStatement) request;
      ColumnDefinitions definitions = statement.getPreparedStatement().getVariableDefinitions();
      List<ByteBuffer> values = statement.getValues();
      assert definitions.size() == values.size();
      if (definitions.size() > 0) {
        if (addSeparator) {
          builder.append(' ');
        }
        builder.append('[');
        for (int i = 0; i < definitions.size(); i++) {
          if (i > 0) {
            builder.append(", ");
          }
          maxValues -= 1;
          if (maxValues < 0) {
            builder.append(FURTHER_VALUES_TRUNCATED);
            return -1;
          }
          builder.append(definitions.get(i).getName().asCql(true)).append('=');
          if (!statement.isSet(i)) {
            builder.append("<UNSET>");
          } else {
            ByteBuffer value = values.get(i);
            DataType type = definitions.get(i).getType();
            appendValue(value, type, maxValueLength, builder);
          }
        }
        builder.append(']');
      }
    } else if (request instanceof SimpleStatement) {
      SimpleStatement statement = (SimpleStatement) request;
      if (!statement.getPositionalValues().isEmpty()) {
        if (addSeparator) {
          builder.append(' ');
        }
        builder.append('[');
        int i = 0;
        for (Object value : statement.getPositionalValues()) {
          if (i > 0) {
            builder.append(", ");
          }
          maxValues -= 1;
          if (maxValues < 0) {
            builder.append(FURTHER_VALUES_TRUNCATED);
            return -1;
          }
          builder.append('v').append(i).append('=');
          appendValue(value, maxValueLength, builder);
          i += 1;
        }
        builder.append(']');
      } else if (!statement.getNamedValues().isEmpty()) {
        if (addSeparator) {
          builder.append(' ');
        }
        builder.append('[');
        int i = 0;
        for (Map.Entry<CqlIdentifier, Object> entry : statement.getNamedValues().entrySet()) {
          if (i > 0) {
            builder.append(", ");
          }
          maxValues -= 1;
          if (maxValues < 0) {
            builder.append(FURTHER_VALUES_TRUNCATED);
            return -1;
          }
          builder.append(entry.getKey().asCql(true)).append('=');
          appendValue(entry.getValue(), maxValueLength, builder);
          i += 1;
        }
        builder.append(']');
      }
    }
    return maxValues;
  }