public String asCql()

in query-builder/src/main/java/com/datastax/dse/driver/internal/querybuilder/schema/DefaultCreateDseTable.java [321:419]


  public String asCql() {
    StringBuilder builder = new StringBuilder();

    builder.append("CREATE TABLE ");
    if (ifNotExists) {
      builder.append("IF NOT EXISTS ");
    }

    CqlHelper.qualify(keyspace, tableName, builder);

    if (columnsInOrder.isEmpty()) {
      // no columns provided yet.
      return builder.toString();
    }

    boolean singlePrimaryKey = partitionKeyColumns.size() == 1 && clusteringKeyColumns.size() == 0;

    builder.append(" (");

    boolean first = true;
    for (Map.Entry<CqlIdentifier, DataType> column : columnsInOrder.entrySet()) {
      if (first) {
        first = false;
      } else {
        builder.append(',');
      }
      builder
          .append(column.getKey().asCql(true))
          .append(' ')
          .append(column.getValue().asCql(true, true));

      if (singlePrimaryKey && partitionKeyColumns.contains(column.getKey())) {
        builder.append(" PRIMARY KEY");
      } else if (staticColumns.contains(column.getKey())) {
        builder.append(" STATIC");
      }
    }

    if (!singlePrimaryKey) {
      builder.append(",");
      CqlHelper.buildPrimaryKey(partitionKeyColumns, clusteringKeyColumns, builder);
    }

    builder.append(')');

    boolean firstOption = true;

    if (compactStorage) {
      firstOption = false;
      builder.append(" WITH COMPACT STORAGE");
    }

    if (!orderings.isEmpty()) {
      if (firstOption) {
        builder.append(" WITH ");
        firstOption = false;
      } else {
        builder.append(" AND ");
      }
      builder.append("CLUSTERING ORDER BY (");
      boolean firstClustering = true;

      for (Map.Entry<CqlIdentifier, ClusteringOrder> ordering : orderings.entrySet()) {
        if (firstClustering) {
          firstClustering = false;
        } else {
          builder.append(',');
        }
        builder
            .append(ordering.getKey().asCql(true))
            .append(' ')
            .append(ordering.getValue().toString());
      }

      builder.append(')');
    }

    if (vertexOperation != null) {
      if (firstOption) {
        builder.append(" WITH ");
        firstOption = false;
      } else {
        builder.append(" AND ");
      }
      vertexOperation.append(builder);
    } else if (edgeOperation != null) {
      if (firstOption) {
        builder.append(" WITH ");
        firstOption = false;
      } else {
        builder.append(" AND ");
      }
      edgeOperation.append(builder);
    }

    builder.append(OptionsUtils.buildOptions(options, firstOption));

    return builder.toString();
  }