package com.sequenceiq.samples.phoenix;
import static org.apache.commons.io.IOUtils.readLines;
import static org.apache.commons.lang.StringEscapeUtils.escapeSql;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
import java.util.Random;
import org.jooq.impl.DefaultDSLContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Component
@Transactional
public class Upsert {
@Autowired
private DefaultDSLContext dslContext;
@Autowired
private Random random;
private List<String> names;
public Upsert() throws IOException {
names = readLines(getClass().getResourceAsStream("/names.txt"));
}
public void fillTables() {
Locale[] locales = Locale.getAvailableLocales();
for (int i = 1; i < 1000; i++) {
String userSql = String.format("upsert into customers values (%d, '%s', %d, '%s')",
i,
escapeSql(names.get(random.nextInt(names.size() - 1))),
random.nextInt(40) + 18,
escapeSql(locales[random.nextInt(locales.length - 1)].getDisplayCountry()));
String orderSql = String.format("upsert into orders values (%d, CURRENT_DATE(), %d, %d)",
i,
i,
random.nextInt(1_000_000));
System.out.println("Execute: " + userSql);
System.out.println("Execute: " + orderSql);
dslContext.execute(userSql);
dslContext.execute(orderSql);
}
}
}