-
Notifications
You must be signed in to change notification settings - Fork 399
Expand file tree
/
Copy pathAbstractInsertGenerator.java
More file actions
43 lines (35 loc) · 1.28 KB
/
AbstractInsertGenerator.java
File metadata and controls
43 lines (35 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package sqlancer.common.gen;
import java.util.List;
import java.util.stream.Collectors;
import sqlancer.Randomly;
import sqlancer.common.schema.AbstractTableColumn;
public abstract class AbstractInsertGenerator<C extends AbstractTableColumn<?, ?>> extends AbstractGenerator {
protected void appendColumnList(List<C> columns) {
sb.append("(");
sb.append(columns.stream().map(AbstractTableColumn::getName).collect(Collectors.joining(", ")));
sb.append(")");
}
protected void buildInsertInto(String tableName, List<C> columns) {
sb.append("INSERT INTO ");
sb.append(tableName);
appendColumnList(columns);
sb.append(" VALUES ");
insertColumns(columns);
}
protected void insertColumns(List<C> columns) {
for (int nrRows = 0; nrRows < Randomly.smallNumber() + 1; nrRows++) {
if (nrRows != 0) {
sb.append(", ");
}
sb.append("(");
for (int nrColumn = 0; nrColumn < columns.size(); nrColumn++) {
if (nrColumn != 0) {
sb.append(", ");
}
insertValue(columns.get(nrColumn));
}
sb.append(")");
}
}
protected abstract void insertValue(C column);
}