|
|
|
@ -9,6 +9,7 @@ import java.sql.ResultSet;
|
|
|
|
|
import java.sql.SQLException;
|
|
|
|
|
import java.sql.Statement;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Random;
|
|
|
|
|
import java.util.regex.Pattern;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.PostConstruct;
|
|
|
|
@ -17,7 +18,6 @@ import javax.inject.Inject;
|
|
|
|
|
import javax.inject.Singleton;
|
|
|
|
|
|
|
|
|
|
import org.apache.commons.dbutils.DbUtils;
|
|
|
|
|
import org.apache.commons.lang.RandomStringUtils;
|
|
|
|
|
import org.gcube.data.analysis.tabulardata.cube.data.connection.DatabaseConnectionProvider;
|
|
|
|
|
import org.gcube.data.analysis.tabulardata.cube.data.connection.admin.Admin;
|
|
|
|
|
import org.gcube.data.analysis.tabulardata.cube.data.connection.unprivileged.Unprivileged;
|
|
|
|
@ -35,6 +35,8 @@ public class SQLDatabaseWrangler implements DatabaseWrangler {
|
|
|
|
|
|
|
|
|
|
private static Logger log = LoggerFactory.getLogger(SQLDatabaseWrangler.class);
|
|
|
|
|
|
|
|
|
|
private static RandomString randomString = new RandomString(32);
|
|
|
|
|
|
|
|
|
|
private DatabaseConnectionProvider adminConnectionProvider;
|
|
|
|
|
|
|
|
|
|
private DatabaseConnectionProvider unprivilegedConnectionProvider;
|
|
|
|
@ -219,7 +221,7 @@ public class SQLDatabaseWrangler implements DatabaseWrangler {
|
|
|
|
|
int count = 0;
|
|
|
|
|
|
|
|
|
|
do {
|
|
|
|
|
tableName = RandomStringUtils.random(32, true, false).toLowerCase();
|
|
|
|
|
tableName = randomString.nextString().toLowerCase();
|
|
|
|
|
log.debug("Generated table name: " + tableName);
|
|
|
|
|
Connection connection = null;
|
|
|
|
|
Statement statement = null;
|
|
|
|
@ -341,4 +343,34 @@ public class SQLDatabaseWrangler implements DatabaseWrangler {
|
|
|
|
|
public void createUniqueIndex(String tableName, String columnName) {
|
|
|
|
|
executeQuery(String.format("CREATE UNIQUE INDEX ON %s ( %s );", tableName, columnName));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static class RandomString {
|
|
|
|
|
|
|
|
|
|
private static final char[] symbols;
|
|
|
|
|
|
|
|
|
|
static {
|
|
|
|
|
StringBuilder tmp = new StringBuilder();
|
|
|
|
|
for (char ch = '0'; ch <= '9'; ++ch)
|
|
|
|
|
tmp.append(ch);
|
|
|
|
|
for (char ch = 'a'; ch <= 'z'; ++ch)
|
|
|
|
|
tmp.append(ch);
|
|
|
|
|
symbols = tmp.toString().toCharArray();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private final Random random = new Random();
|
|
|
|
|
|
|
|
|
|
private final char[] buf;
|
|
|
|
|
|
|
|
|
|
public RandomString(int length) {
|
|
|
|
|
if (length < 1)
|
|
|
|
|
throw new IllegalArgumentException("length < 1: " + length);
|
|
|
|
|
buf = new char[length];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String nextString() {
|
|
|
|
|
for (int idx = 0; idx < buf.length; ++idx)
|
|
|
|
|
buf[idx] = symbols[random.nextInt(symbols.length)];
|
|
|
|
|
return new String(buf);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|