in tools/template_based_query_generation/src/main/java/token/TokenProvider.java [42:85]
public SkeletonPiece tokenize(String tokenExpression, Table tableChoice) {
if (tokenExpression.contains("_")) {
List<String> destructuredToken = new ArrayList<>(Arrays.asList(tokenExpression.split("_", -1)));
String expressionType = destructuredToken.get(0);
String dataTypeStringified = destructuredToken.get(1);
DataType dataType;
if (dataTypeStringified.equals("")) {
dataType = DataType.getRandomDataType();
} else {
dataType = DataType.valueOf(dataTypeStringified);
}
if (expressionType.equals("expression")) {
// generate value, function, and column with probability 1/6, 1/6, and 2/3
this.currentTable = tableChoice;
int randomExpression = Utils.getRandomInteger(5);
if (randomExpression == 0) {
return tokenize("value_" + dataTypeStringified, this.currentTable);
} else if (randomExpression == 1) {
return tokenize("function_" + dataTypeStringified, this.currentTable);
} else {
return tokenize("column_" + dataTypeStringified, this.currentTable);
}
} else if (expressionType.equals("value")) {
return generateValueExpression(dataType);
} else if (expressionType.equals("column")) {
return generateColumnExpression(dataType, this.currentTable);
} else if (expressionType.equals("function")) {
return generateFunctionExpression(dataType, this.currentTable);
} else if (expressionType.equals("condition")) {
return generateConditionExpression(dataType, this.currentTable);
}
} else if (tokenExpression.equals("tableName")) {
return generateTableNameExpression(this.currentTable);
} else if (tokenExpression.equals("chosenTableName")) {
return generateTableNameExpression(this.currentTable);
} else if (tokenExpression.equals("numRows")) {
return generateNumRowsExpression(this.currentTable);
} else if (tokenExpression.equals("schemaValues")) {
return generateSchemaValuesExpression(this.currentTable);
}
// else tokenExpression.equals("schemaData")
return generateSchemaDataExpression(this.currentTable);
}