public int getNumColumns()

in tools/template_based_query_generation/src/main/java/data/Table.java [60:175]


  public int getNumColumns() {
    return this.schema.size();

   /**
   *
   * @param type
   * @return name of random column of given type
   */
  public String getRandomColumn(String columnName, DataType type) {
    List<MutablePair<String, DataType>> columns = new ArrayList<>();
    for (MutablePair<String, DataType> col: this.schema) {
      if (col.getRight() == type) columns.add(col);
    }
    int newColumnProbability = Utils.getRandomInteger(columns.size());
    // add new column of specified datatype with probability 1/(n+1)
    // where n is the number of existing columns of that datatype
    if (newColumnProbability == 0) {
      addColumn(columnName, type);
      return columnName;
    }
    MutablePair<String, DataType> p = Utils.getRandomElement(columns);
    return p.getLeft();
  }

  /**
   *
   * @param type
   * @return name of random column of given type
   */
  public String getRandomColumn(String columnName, DataType type) {
    List<MutablePair<String, DataType>> columns = new ArrayList<>();
    for (MutablePair<String, DataType> col: this.schema) {
      if (col.getRight() == type) columns.add(col);
    }
    int newColumnProbability = Utils.getRandomInteger(columns.size());
    // add new column of specified datatype with probability 1/(n+1)
    // where n is the number of existing columns of that datatype
    if (newColumnProbability == 0) {
      addColumn(columnName, type);
      return columnName;
    }
    MutablePair<String, DataType> p = Utils.getRandomElement(columns);
    return p.getLeft();
  }

  /**
   *
   * @param numRows number of rows of data to generate
   * @param dataType type of data to generate
   * @return column of data with type dataType and numRows rows
   * @throws IllegalArgumentException
   */
  public List<?> generateColumn(int numRows, DataType dataType) throws IllegalArgumentException {
    if (dataType.isIntegerType()) {
      List<Integer> data = new ArrayList<>();
      for (int i = 0; i < numRows; i++) {
        data.add(Utils.generateRandomIntegerData(dataType));
      }
      return data;
    } else if (dataType.isLongType()) {
      List<Long> data = new ArrayList<>();
      for (int i = 0; i < numRows; i++) {
        data.add(Utils.generateRandomLongData(dataType));
      }
      return data;
    } else if (dataType.isDoubleType()) {
      List<Double> data = new ArrayList<>();
      for (int i = 0; i < numRows; i++) {
        data.add(Utils.generateRandomDoubleData(dataType));
      }
      return data;
    } else if (dataType.isBigDecimalType()) {
      List<BigDecimal> data = new ArrayList<>();
      for (int i = 0; i < numRows; i++) {
        data.add(Utils.generateRandomBigDecimalData(dataType));
      }
      return data;
    } else if (dataType.isStringType()) {
      List<String> data = new ArrayList<>();
      for (int i = 0; i < numRows; i++) {
        data.add(Utils.generateRandomStringData(dataType));
      }
      return data;
    } else if (dataType.isBooleanType()) {
      List<Boolean> data = new ArrayList<>();
      for (int i = 0; i < numRows; i++) {
        data.add(Utils.generateRandomBooleanData(dataType));
      }
      return data;
    } else {
      throw new IllegalArgumentException("invalid datatype");
    }
  }

  /**
   *
   * @return sample data with number of rows being number of rows in table
   */
  public List<List<?>> generateData() {
    return generateData(this.numRows);
  }

  /**
   *
   * @param numRows number of rows to generate
   * @return sample data with number of rows being numRows
   */
  public List<List<?>> generateData(int numRows) {
    List<List<?>> data = new ArrayList<>();
    for (int i = 0; i < this.schema.size(); i++) {
      List<?> column = this.generateColumn(numRows, this.schema.get(i).getRight());
      data.add(column);
    }
    return data;
  }
}