diff --git a/cube-manager-api/pom.xml b/cube-manager-api/pom.xml index eb3faf4..d933f49 100644 --- a/cube-manager-api/pom.xml +++ b/cube-manager-api/pom.xml @@ -4,7 +4,7 @@ org.gcube.data.analysis.tabulardata cube-manager-parent - 3.5.2-SNAPSHOT + 3.5.3-SNAPSHOT cube-manager-api Cube Manager API diff --git a/cube-manager-data/pom.xml b/cube-manager-data/pom.xml index c7e51ca..0ff7290 100644 --- a/cube-manager-data/pom.xml +++ b/cube-manager-data/pom.xml @@ -4,7 +4,7 @@ org.gcube.data.analysis.tabulardata cube-manager-parent - 3.5.2-SNAPSHOT + 3.5.3-SNAPSHOT cube-manager-data Cube Manager Data @@ -27,12 +27,6 @@ 7.0.41 - - commons-lang - commons-lang - 20030203.000129 - - postgresql postgresql diff --git a/cube-manager-data/src/main/java/org/gcube/data/analysis/tabulardata/cube/data/SQLDatabaseWrangler.java b/cube-manager-data/src/main/java/org/gcube/data/analysis/tabulardata/cube/data/SQLDatabaseWrangler.java index efa8832..6fe3455 100644 --- a/cube-manager-data/src/main/java/org/gcube/data/analysis/tabulardata/cube/data/SQLDatabaseWrangler.java +++ b/cube-manager-data/src/main/java/org/gcube/data/analysis/tabulardata/cube/data/SQLDatabaseWrangler.java @@ -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); + } + } } diff --git a/cube-manager-metadata/pom.xml b/cube-manager-metadata/pom.xml index 37ca31d..63556c3 100644 --- a/cube-manager-metadata/pom.xml +++ b/cube-manager-metadata/pom.xml @@ -4,7 +4,7 @@ org.gcube.data.analysis.tabulardata cube-manager-parent - 3.5.2-SNAPSHOT + 3.5.3-SNAPSHOT cube-manager-metadata Cube Manager Metadata diff --git a/cube-manager/pom.xml b/cube-manager/pom.xml index bbff2ad..ed08e7c 100644 --- a/cube-manager/pom.xml +++ b/cube-manager/pom.xml @@ -4,7 +4,7 @@ org.gcube.data.analysis.tabulardata cube-manager-parent - 3.5.2-SNAPSHOT + 3.5.3-SNAPSHOT cube-manager Cube Manager diff --git a/cube-manager/src/main/java/org/gcube/data/analysis/tabulardata/cube/tablemanagers/DefaultTableCreator.java b/cube-manager/src/main/java/org/gcube/data/analysis/tabulardata/cube/tablemanagers/DefaultTableCreator.java index ed8e006..2532478 100644 --- a/cube-manager/src/main/java/org/gcube/data/analysis/tabulardata/cube/tablemanagers/DefaultTableCreator.java +++ b/cube-manager/src/main/java/org/gcube/data/analysis/tabulardata/cube/tablemanagers/DefaultTableCreator.java @@ -10,8 +10,8 @@ import java.util.Set; import javax.enterprise.event.Event; -import org.apache.commons.lang.RandomStringUtils; import org.gcube.data.analysis.tabulardata.cube.data.DatabaseWrangler; +import org.gcube.data.analysis.tabulardata.cube.data.SQLDatabaseWrangler.RandomString; import org.gcube.data.analysis.tabulardata.cube.events.TableCreationEvent; import org.gcube.data.analysis.tabulardata.cube.exceptions.NoSuchTableException; import org.gcube.data.analysis.tabulardata.cube.exceptions.TableCreationException; @@ -40,6 +40,8 @@ public abstract class DefaultTableCreator implements TableCreator { private static Logger logger = LoggerFactory.getLogger(DefaultTableCreator.class); + private static RandomString randomString = new RandomString(6); + protected DatabaseWrangler dbWrangler; protected CubeMetadataWrangler mdWrangler; protected TableManager tableManager; @@ -354,7 +356,7 @@ public abstract class DefaultTableCreator implements TableCreator { public static class ColumnNameGenerator { public static String generateColumnName() { - return RandomStringUtils.random(6, true, false).toLowerCase(); + return randomString.nextString().toLowerCase(); } } diff --git a/pom.xml b/pom.xml index 46269ff..5bd2a89 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.gcube.data.analysis.tabulardata cube-manager-parent - 3.5.2-SNAPSHOT + 3.5.3-SNAPSHOT pom