From 26b03973152b63efceb81bbb88ff1e420e452214 Mon Sep 17 00:00:00 2001 From: alaskowski <alaskowski@ethz.ch> Date: Fri, 20 Jan 2023 11:34:16 +0100 Subject: [PATCH] SSDM-13329 Moved openbis_benchmark to a new repository: https://sissource.ethz.ch/openbis/openbis-private/TOOLS/openbis-benchmark --- gradle/settings.gradle | 7 +- openbis_benchmark/.gitignore | 5 - openbis_benchmark/README.md | 5 - openbis_benchmark/build.gradle | 30 - openbis_benchmark/conf/config-dev-load.json | 15 - openbis_benchmark/conf/config-dev.json | 186 - openbis_benchmark/config-default.json | 186 - .../gradle/wrapper/gradle-wrapper.jar | Bin 55616 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 - openbis_benchmark/gradlew | 188 - openbis_benchmark/gradlew.bat | 100 - .../java/ch/ethz/sis/benchmark/Benchmark.java | 107 - .../ethz/sis/benchmark/BenchmarkConfig.java | 106 - .../benchmark/impl/GlobalSearchBenchmark.java | 63 - .../impl/IApplicationServerApiWrapper.java | 7 - .../sis/benchmark/impl/ListBenchmark.java | 79 - .../sis/benchmark/impl/LoadBenchmark.java | 231 - .../ApplicationServerApiPostgresWrapper.java | 1098 -- .../sis/benchmark/impl/jdbc/SQLExecutor.java | 145 - .../sis/benchmark/impl/jdbc/SQLQueries.java | 231 - .../benchmark/util/RandomValueGenerator.java | 36 - .../ethz/sis/benchmark/util/RandomWord.java | 30 - .../benchmark/util/google-10000-english.txt | 10000 ---------------- .../ch/ethz/sis/json/JSONObjectMapper.java | 12 - .../sis/json/jackson/JacksonObjectMapper.java | 52 - .../java/ch/ethz/sis/logging/LogFactory.java | 5 - .../ethz/sis/logging/LogFactoryFactory.java | 7 - .../java/ch/ethz/sis/logging/LogManager.java | 22 - .../main/java/ch/ethz/sis/logging/Logger.java | 18 - .../sis/logging/log4j/Log4J2LogFactory.java | 15 - .../ethz/sis/logging/log4j/Log4JLogger.java | 59 - .../ch/ethz/sis/ssl/SslCertificateHelper.java | 215 - .../main/java/ch/ethz/sis/startup/Main.java | 112 - .../benchmark/util/google-10000-english.txt | 10000 ---------------- .../src/main/resources/log4j2.xml | 17 - 35 files changed, 3 insertions(+), 23391 deletions(-) delete mode 100644 openbis_benchmark/.gitignore delete mode 100644 openbis_benchmark/README.md delete mode 100644 openbis_benchmark/build.gradle delete mode 100644 openbis_benchmark/conf/config-dev-load.json delete mode 100644 openbis_benchmark/conf/config-dev.json delete mode 100644 openbis_benchmark/config-default.json delete mode 100644 openbis_benchmark/gradle/wrapper/gradle-wrapper.jar delete mode 100644 openbis_benchmark/gradle/wrapper/gradle-wrapper.properties delete mode 100755 openbis_benchmark/gradlew delete mode 100644 openbis_benchmark/gradlew.bat delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/Benchmark.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/BenchmarkConfig.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/GlobalSearchBenchmark.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/IApplicationServerApiWrapper.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/ListBenchmark.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/LoadBenchmark.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/jdbc/ApplicationServerApiPostgresWrapper.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/jdbc/SQLExecutor.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/jdbc/SQLQueries.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/util/RandomValueGenerator.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/util/RandomWord.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/util/google-10000-english.txt delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/json/JSONObjectMapper.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/json/jackson/JacksonObjectMapper.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/logging/LogFactory.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/logging/LogFactoryFactory.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/logging/LogManager.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/logging/Logger.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/logging/log4j/Log4J2LogFactory.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/logging/log4j/Log4JLogger.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/ssl/SslCertificateHelper.java delete mode 100644 openbis_benchmark/src/main/java/ch/ethz/sis/startup/Main.java delete mode 100644 openbis_benchmark/src/main/resources/ch/ethz/sis/benchmark/util/google-10000-english.txt delete mode 100644 openbis_benchmark/src/main/resources/log4j2.xml diff --git a/gradle/settings.gradle b/gradle/settings.gradle index d29899caeb4..9ce1438eb1c 100644 --- a/gradle/settings.gradle +++ b/gradle/settings.gradle @@ -1,5 +1,4 @@ includeFlat 'commonbase', 'common', 'openbis_api', 'openbis-common', 'authentication', 'dbmigration', 'openbis', - 'datastore_server', 'screening', - 'openbis_standard_technologies', 'installation', 'image_readers', 'ui-test', 'js-test', 'datamover', - 'big_data_link_server', 'openbis_ng_ui', 'microservice_server_template', - 'openbis_statistics_server', 'openbis_benchmark' \ No newline at end of file + 'datastore_server', 'screening', 'openbis_standard_technologies', 'installation', + 'image_readers', 'ui-test', 'js-test', 'datamover', 'big_data_link_server', 'openbis_ng_ui', + 'microservice_server_template', 'openbis_statistics_server' \ No newline at end of file diff --git a/openbis_benchmark/.gitignore b/openbis_benchmark/.gitignore deleted file mode 100644 index e18173b1bb0..00000000000 --- a/openbis_benchmark/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -/build/ -/bin/ -/.idea/ -*.iml -*.eml \ No newline at end of file diff --git a/openbis_benchmark/README.md b/openbis_benchmark/README.md deleted file mode 100644 index 533b2df6312..00000000000 --- a/openbis_benchmark/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# openBIS Benchmark # - -## Introduction ## - -It benchmarks openBIS, please create a sample type as show in benchmark-sample.png \ No newline at end of file diff --git a/openbis_benchmark/build.gradle b/openbis_benchmark/build.gradle deleted file mode 100644 index d7a1443e9a0..00000000000 --- a/openbis_benchmark/build.gradle +++ /dev/null @@ -1,30 +0,0 @@ -apply plugin: 'java' -apply plugin: 'application' - -applicationDefaultJvmArgs = ["-Xms2048m", "-Xmx2048m"] - -repositories { - ivy { - ivyPattern "https://sissource.ethz.ch/openbis/openbis-public/openbis-ivy/-/raw/main/[organisation]/[module]/[revision]/ivy.xml" - artifactPattern "https://sissource.ethz.ch/openbis/openbis-public/openbis-ivy/-/raw/main/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]" - } -} - -dependencies { - implementation 'log4j:log4j-api:2.10.0', - 'log4j:log4j-core:2.10.0', - 'fasterxml:jackson-annotations:2.0.2', - 'fasterxml:jackson-core:2.0.2', - 'fasterxml:jackson-databind:2.0.2', - 'postgresql:postgresql:42.5.0', - 'openbis:openbis-v3-api-batteries-included:20.10.1' -} - -mainClassName = "ch.ethz.sis.startup.Main" - -distZip { - into(project.name) { - from './conf' - include '*' - } -} \ No newline at end of file diff --git a/openbis_benchmark/conf/config-dev-load.json b/openbis_benchmark/conf/config-dev-load.json deleted file mode 100644 index 5d59ea01ec2..00000000000 --- a/openbis_benchmark/conf/config-dev-load.json +++ /dev/null @@ -1,15 +0,0 @@ -[{ - "className" : "ch.ethz.sis.benchmark.impl.LoadBenchmark", - "user" : "admin", - "password" : "changeit", - "openbisURL" : "http://localhost:8888/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "http://localhost:8888/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 1, - "parameters" : { - "SPACES_TO_CREATE" : 1, - "SAMPLES_TO_CREATE" : 50000, - "PROPERTIES_NUMBER" : 50 - } -}] \ No newline at end of file diff --git a/openbis_benchmark/conf/config-dev.json b/openbis_benchmark/conf/config-dev.json deleted file mode 100644 index 388260b86c0..00000000000 --- a/openbis_benchmark/conf/config-dev.json +++ /dev/null @@ -1,186 +0,0 @@ -[{ - "className" : "ch.ethz.sis.benchmark.impl.LoadBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 1, - "parameters" : { - "SPACES_TO_CREATE" : 4, - "SAMPLES_TO_CREATE" : 20000 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.LoadBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 5, - "parameters" : { - "SPACES_TO_CREATE" : 4, - "SAMPLES_TO_CREATE" : 20000 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.LoadBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 10, - "parameters" : { - "SPACES_TO_CREATE" : 4, - "SAMPLES_TO_CREATE" : 20000 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.LoadBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 20, - "parameters" : { - "SPACES_TO_CREATE" : 4, - "SAMPLES_TO_CREATE" : 20000 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.LoadBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 50, - "parameters" : { - "SPACES_TO_CREATE" : 4, - "SAMPLES_TO_CREATE" : 20000 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.GlobalSearchBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 1, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.GlobalSearchBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 5, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.GlobalSearchBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 10, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.GlobalSearchBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 20, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.GlobalSearchBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 50, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.ListBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 1, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.ListBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 5, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.ListBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 10, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.ListBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 20, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.ListBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 50, - "parameters" : { - "ITERATIONS" : 10 - } -}] \ No newline at end of file diff --git a/openbis_benchmark/config-default.json b/openbis_benchmark/config-default.json deleted file mode 100644 index 388260b86c0..00000000000 --- a/openbis_benchmark/config-default.json +++ /dev/null @@ -1,186 +0,0 @@ -[{ - "className" : "ch.ethz.sis.benchmark.impl.LoadBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 1, - "parameters" : { - "SPACES_TO_CREATE" : 4, - "SAMPLES_TO_CREATE" : 20000 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.LoadBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 5, - "parameters" : { - "SPACES_TO_CREATE" : 4, - "SAMPLES_TO_CREATE" : 20000 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.LoadBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 10, - "parameters" : { - "SPACES_TO_CREATE" : 4, - "SAMPLES_TO_CREATE" : 20000 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.LoadBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 20, - "parameters" : { - "SPACES_TO_CREATE" : 4, - "SAMPLES_TO_CREATE" : 20000 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.LoadBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 50, - "parameters" : { - "SPACES_TO_CREATE" : 4, - "SAMPLES_TO_CREATE" : 20000 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.GlobalSearchBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 1, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.GlobalSearchBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 5, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.GlobalSearchBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 10, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.GlobalSearchBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 20, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.GlobalSearchBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 50, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.ListBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 1, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.ListBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 5, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.ListBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 10, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.ListBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 20, - "parameters" : { - "ITERATIONS" : 10 - } -}, { - "className" : "ch.ethz.sis.benchmark.impl.ListBenchmark", - "user" : "test", - "password" : "test", - "openbisURL" : "https://openbis-polyhub.ethz.ch/openbis/openbis/rmi-application-server-v3", - "openbisTimeout" : "3600000", - "datastoreURL" : "https://openbis-polyhub.ethz.ch/datastore_server/rmi-data-store-server-v3", - "datastoreTimeout" : "3600000", - "threads" : 50, - "parameters" : { - "ITERATIONS" : 10 - } -}] \ No newline at end of file diff --git a/openbis_benchmark/gradle/wrapper/gradle-wrapper.jar b/openbis_benchmark/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 5c2d1cf016b3885f6930543d57b744ea8c220a1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55616 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 I5eVr20d63LbpQYW diff --git a/openbis_benchmark/gradle/wrapper/gradle-wrapper.properties b/openbis_benchmark/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 7745c4ec463..00000000000 --- a/openbis_benchmark/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://sissource.ethz.ch/openbis/openbis-public/openbis-ivy/-/raw/main/gradle/distribution/7.4/gradle-7.4-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/openbis_benchmark/gradlew b/openbis_benchmark/gradlew deleted file mode 100755 index 83f2acfdc31..00000000000 --- a/openbis_benchmark/gradlew +++ /dev/null @@ -1,188 +0,0 @@ -#!/usr/bin/env sh - -# -# Copyright 2015 the original author or authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn () { - echo "$*" -} - -die () { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - -exec "$JAVACMD" "$@" diff --git a/openbis_benchmark/gradlew.bat b/openbis_benchmark/gradlew.bat deleted file mode 100644 index 24467a141f7..00000000000 --- a/openbis_benchmark/gradlew.bat +++ /dev/null @@ -1,100 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/Benchmark.java b/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/Benchmark.java deleted file mode 100644 index c44c3fffcc4..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/Benchmark.java +++ /dev/null @@ -1,107 +0,0 @@ -package ch.ethz.sis.benchmark; - -import ch.ethz.sis.benchmark.impl.IApplicationServerApiWrapper; -import ch.ethz.sis.logging.LogManager; -import ch.ethz.sis.logging.Logger; -import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi; -import ch.ethz.sis.ssl.SslCertificateHelper; -import ch.systemsx.cisd.common.spring.HttpInvokerUtils; - -public abstract class Benchmark -{ - protected BenchmarkConfig configuration; - protected Logger logger; - protected IApplicationServerApi v3; - protected IApplicationServerApiWrapper v3Wrapper; - protected String sessionToken; - - protected long maxOpTime = Long.MIN_VALUE; - protected long minOpTime = Long.MAX_VALUE; - protected long numOps = 0; - protected long totalOpTime = 0; - - protected void addOperation(long start, long end, int size) { - long total = end - start; - totalOpTime += total; - numOps++; - if(total < minOpTime) { - minOpTime = total; - } - if(total > maxOpTime) { - maxOpTime = total; - } - logger.info("REPORT SINGLE\t" + size + "\t" + total); - } - - public void start() { - logger = LogManager.getLogger(this.getClass()); - logger.traceAccess(null, configuration); - logger.info("REPORT THREAD\ttotalOpTime\tnumOps\tavgOpTime\tmaxOpTime\tminOpTime"); - logger.info("REPORT SINGLE\topSize\topTime"); - try { - startInternal(); - } catch(Throwable throwable) { - logger.catching(throwable); - } - logger.traceExit(configuration); - if(numOps > 0) { - logger.info("REPORT THREAD\t" + totalOpTime + "\t" + numOps + "\t" + (totalOpTime/numOps) + "\t" + maxOpTime + "\t" + minOpTime); - } else { - logger.info("REPORT THREAD\tNO-OP"); - } - - } - - public abstract void startInternal() throws Exception; - - public IApplicationServerApi login() { - if(v3 == null) { - v3 = HttpInvokerUtils.createServiceStub(IApplicationServerApi.class, getConfiguration().getOpenbisURL(), getConfiguration().getOpenbisTimeout()); - if (v3Wrapper != null) { - v3Wrapper.setInstance(v3); - v3 = v3Wrapper; - v3Wrapper = null; - } - sessionToken = v3.login(getConfiguration().getUser(), getConfiguration().getPassword()); - } - return v3; - } - - public void logout() { - v3.logout(sessionToken); - v3 = null; - sessionToken = null; - } - - public BenchmarkConfig getConfiguration() - { - return configuration; - } - - public void setConfiguration(BenchmarkConfig serviceConfig) - { - this.configuration = serviceConfig; - SslCertificateHelper.trustAnyCertificate(getConfiguration().getOpenbisURL()); - SslCertificateHelper.trustAnyCertificate(getConfiguration().getDatastoreURL()); - } - - public long getMaxOpTime() { - return maxOpTime; - } - - public long getMinOpTime() { - return minOpTime; - } - - public long getNumOps() { - return numOps; - } - - public long getTotalOpTime() { - return totalOpTime; - } - - public long getAVGOpTime() { - return totalOpTime/numOps; - } -} diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/BenchmarkConfig.java b/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/BenchmarkConfig.java deleted file mode 100644 index 08893ba9253..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/BenchmarkConfig.java +++ /dev/null @@ -1,106 +0,0 @@ -package ch.ethz.sis.benchmark; - -import java.util.HashMap; - -public class BenchmarkConfig -{ - private String className; - private String user; - private String password; - private String openbisURL; - private int openbisTimeout; - private String datastoreURL; - private int datastoreTimeout; - private HashMap<String, String> parameters; - private int threads; - - public BenchmarkConfig() { - } - - public String getClassName() { - return className; - } - - public void setClassName(String className) { - this.className = className; - } - - public String getUser() { - return user; - } - - public void setUser(String user) { - this.user = user; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - - public String getOpenbisURL() { - return openbisURL; - } - - public void setOpenbisURL(String openbisURL) { - this.openbisURL = openbisURL; - } - - public int getOpenbisTimeout() { - return openbisTimeout; - } - - public void setOpenbisTimeout(int openbisTimeout) { - this.openbisTimeout = openbisTimeout; - } - - public String getDatastoreURL() { - return datastoreURL; - } - - public void setDatastoreURL(String datastoreURL) { - this.datastoreURL = datastoreURL; - } - - public int getDatastoreTimeout() { - return datastoreTimeout; - } - - public void setDatastoreTimeout(int datastoreTimeout) { - this.datastoreTimeout = datastoreTimeout; - } - - public HashMap<String, String> getParameters() { - return parameters; - } - - public void setParameters(HashMap<String, String> parameters) { - this.parameters = parameters; - } - - public int getThreads() { - return threads; - } - - public void setThreads(int threads) { - this.threads = threads; - } - - @Override - public String toString() { - return "BenchmarkConfig{" + - "className='" + className + '\'' + - ", user='" + user + '\'' + - ", password='" + password + '\'' + - ", openbisURL='" + openbisURL + '\'' + - ", openbisTimeout=" + openbisTimeout + - ", datastoreURL='" + datastoreURL + '\'' + - ", datastoreTimeout=" + datastoreTimeout + - ", parameters=" + parameters + - ", threads=" + threads + - '}'; - } -} diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/GlobalSearchBenchmark.java b/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/GlobalSearchBenchmark.java deleted file mode 100644 index 07cf4d6821e..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/GlobalSearchBenchmark.java +++ /dev/null @@ -1,63 +0,0 @@ -package ch.ethz.sis.benchmark.impl; - -import ch.ethz.sis.benchmark.Benchmark; -import ch.ethz.sis.benchmark.util.RandomWord; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchResult; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.global.GlobalSearchObject; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.global.fetchoptions.GlobalSearchObjectFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.global.search.GlobalSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleFetchOptions; - -public class GlobalSearchBenchmark extends Benchmark { - - private enum Parameters { ITERATIONS, THREADS } - - @Override - public void startInternal() throws Exception { - int iterations = Integer.parseInt(this.getConfiguration().getParameters().get(Parameters.ITERATIONS.name())); - long laps = 0; - for(int i = 0; i < iterations; i++) { - String word = RandomWord.getRandomWord(); - GlobalSearchCriteria criteria = new GlobalSearchCriteria(); - criteria.withText().thatContains(word); - - GlobalSearchObjectFetchOptions options = new GlobalSearchObjectFetchOptions(); - options.from(0); - options.count(25); - - SampleFetchOptions sampleFetchOptions = options.withSample(); - sampleFetchOptions.withSpace(); - sampleFetchOptions.withType(); - sampleFetchOptions.withRegistrator(); - sampleFetchOptions.withModifier(); - sampleFetchOptions.withExperiment(); - sampleFetchOptions.withProperties(); - - ExperimentFetchOptions experimentFetchOptions = options.withExperiment(); - experimentFetchOptions.withType(); - experimentFetchOptions.withRegistrator(); - experimentFetchOptions.withModifier(); - experimentFetchOptions.withProperties(); - - DataSetFetchOptions dataSetFetchOptions = options.withDataSet(); - dataSetFetchOptions.withType(); - dataSetFetchOptions.withRegistrator(); - dataSetFetchOptions.withModifier(); - dataSetFetchOptions.withProperties(); - - login(); - long start = System.currentTimeMillis(); - SearchResult<GlobalSearchObject> objects = v3.searchGlobally(sessionToken, criteria, options); - long end = System.currentTimeMillis(); - addOperation(start, end, objects.getTotalCount()); - long lap = end - start; - laps += lap; - logout(); - //logger.info("Found " + objects.getTotalCount() + " objects containting '" + word+ "' in " + lap + " millis."); - } - //logger.info("Done " + iterations + " global searches in " + laps + " millis, " + (laps/iterations) + " millis/search avg"); - } - -} diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/IApplicationServerApiWrapper.java b/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/IApplicationServerApiWrapper.java deleted file mode 100644 index db92dd5d68c..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/IApplicationServerApiWrapper.java +++ /dev/null @@ -1,7 +0,0 @@ -package ch.ethz.sis.benchmark.impl; - -import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi; - -public interface IApplicationServerApiWrapper extends IApplicationServerApi { - void setInstance(IApplicationServerApi instance); -} diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/ListBenchmark.java b/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/ListBenchmark.java deleted file mode 100644 index ac042995121..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/ListBenchmark.java +++ /dev/null @@ -1,79 +0,0 @@ -package ch.ethz.sis.benchmark.impl; - -import java.util.Collections; -import java.util.List; - -import ch.ethz.sis.benchmark.Benchmark; -import ch.ethz.sis.benchmark.util.RandomValueGenerator; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchResult; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.Experiment; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.Sample; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.Space; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.fetchoptions.SpaceFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.search.SpaceSearchCriteria; - -public class ListBenchmark extends Benchmark { - - private enum Parameters { ITERATIONS, THREADS } - - @Override - public void startInternal() throws Exception { - login(); - int iterations = Integer.parseInt(this.getConfiguration().getParameters().get(Parameters.ITERATIONS.name())); - long start = System.currentTimeMillis(); - List<Space> spaces = v3.searchSpaces(sessionToken, new SpaceSearchCriteria(), new SpaceFetchOptions()).getObjects(); - long end = System.currentTimeMillis(); - //logger.info("Found " + spaces.size() + " spaces in " + (end-start) + " millis."); - final RandomValueGenerator<Space> random = new RandomValueGenerator<>(); - random.addAll(spaces); - logout(); - - long laps = 0; - for(int i = 0; i < iterations; i++) { - login(); - - List<Experiment> experiments = Collections.emptyList(); - Space space = null; - long lapStart1 = System.currentTimeMillis(); - while(experiments.isEmpty()) { - space = random.getRandom(); - ExperimentSearchCriteria experimentSearchCriteria = new ExperimentSearchCriteria(); - experimentSearchCriteria.withProject().withSpace().withCode().thatEquals(space.getCode()); - ExperimentFetchOptions experimentFetchOptions = new ExperimentFetchOptions(); - experiments = v3.searchExperiments(sessionToken, experimentSearchCriteria, experimentFetchOptions).getObjects(); - } - long lapEnd1 = System.currentTimeMillis(); - Experiment experiment = experiments.get(0); - //logger.info("Found experiment '" + experiment.getPermId().getPermId()+ "' from space " + space.getCode() + " in " + (lapEnd1-lapStart1) + " millis."); - - SampleSearchCriteria criteria = new SampleSearchCriteria(); - criteria.withExperiment().withPermId().thatEquals(experiment.getPermId().getPermId()); - - SampleFetchOptions options = new SampleFetchOptions(); - options.from(0); - options.count(25); - options.withType(); - options.withSpace(); - options.withRegistrator(); - options.withModifier(); - options.withProperties(); - options.withParents(); - options.withChildren(); - - long lapStart2 = System.currentTimeMillis(); - SearchResult<Sample> samples = v3.searchSamples(sessionToken, criteria, options); - long lapEnd2 = System.currentTimeMillis(); - addOperation(lapStart2, lapEnd2, samples.getTotalCount()); - long lap = lapEnd2 - lapStart2; - laps += lap; - //logger.info("Found " + samples.getTotalCount() + " objects in experiment '" + experiment.getPermId().getPermId()+ "' from space " + space.getCode() + " in " + lap + " millis."); - logout(); - } - //logger.info("Done " + (iterations) + " experiment object lists in " + laps + " millis, " + ((laps)/(iterations)) + " millis/search avg"); - } - -} diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/LoadBenchmark.java b/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/LoadBenchmark.java deleted file mode 100644 index b9f2c7839db..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/LoadBenchmark.java +++ /dev/null @@ -1,231 +0,0 @@ -package ch.ethz.sis.benchmark.impl; - -import java.rmi.server.UID; -import java.util.*; - -import ch.ethz.sis.benchmark.Benchmark; -import ch.ethz.sis.benchmark.impl.jdbc.ApplicationServerApiPostgresWrapper; -import ch.ethz.sis.benchmark.util.RandomValueGenerator; -import ch.ethz.sis.benchmark.util.RandomWord; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.CreationId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.create.ExperimentCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.create.ExperimentTypeCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentIdentifier; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.create.ProjectCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectIdentifier; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.SampleType; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.create.SampleCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.create.SampleTypeCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleTypeFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SampleIdentifier; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleTypeSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.create.SpaceCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.DataType; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.create.PropertyAssignmentCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.create.PropertyTypeCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.id.PropertyTypePermId; - -public class LoadBenchmark extends Benchmark { - - private enum Parameters { SPACES_TO_CREATE, SAMPLES_TO_CREATE, PROPERTIES_NUMBER, USE_DATABASE, DATABASE_URL, DATABASE_USER, DATABASE_PASS, SET_SAMPLES_RELATIONSHIPS } - private enum Prefix { SPACE_, COLLECTION_, PROJECT_, OBJECT_ } - - @Override - public void startInternal() throws Exception { - login(); - - String propertyTypeCode = "BENCHMARK_STRING_"; - EntityTypePermId sampleTypeCode = new EntityTypePermId("BENCHMARK_OBJECT"); - EntityTypePermId experimentTypeCode = new EntityTypePermId("BENCHMARK_COLLECTION"); - - SampleTypeSearchCriteria stsc = new SampleTypeSearchCriteria(); - stsc.withCode().thatEquals(sampleTypeCode.getPermId()); - SampleTypeFetchOptions stfo = new SampleTypeFetchOptions(); - List<SampleType> types = v3.searchSampleTypes(sessionToken, stsc, stfo).getObjects(); - - int propertiesNumber = Integer.parseInt(Optional.ofNullable(this.getConfiguration().getParameters().get(Parameters.PROPERTIES_NUMBER.name())).orElse("2")); - - if(types.isEmpty()) { - // - // Setup - Create Property Types - // - List<PropertyTypeCreation> propertyTypeCreations = new ArrayList<>(propertiesNumber); - for(int i = 0; i < propertiesNumber; i++) { - int propertyNumber = i + 1; - PropertyTypeCreation propertyTypeCreation = new PropertyTypeCreation(); - propertyTypeCreation.setCode(propertyTypeCode + propertyNumber); - propertyTypeCreation.setDataType(DataType.MULTILINE_VARCHAR); - propertyTypeCreation.setLabel("Benchmark String " + propertyNumber + " label"); - propertyTypeCreation.setDescription("Benchmark String " + propertyNumber + " description"); - propertyTypeCreations.add(propertyTypeCreation); - } - - v3.createPropertyTypes(sessionToken, propertyTypeCreations); - - // - // Setup - Create Sample Type - // - - SampleTypeCreation sampleTypeCreation = new SampleTypeCreation(); - sampleTypeCreation.setCode(sampleTypeCode.getPermId()); - - List<PropertyAssignmentCreation> propertyAssignments = new ArrayList<>(propertiesNumber); - for(int i = 0; i < propertiesNumber; i++) { - int propertyNumber = i + 1; - PropertyAssignmentCreation propertyAssignmentCreation = new PropertyAssignmentCreation(); - propertyAssignmentCreation.setPropertyTypeId(new PropertyTypePermId(propertyTypeCode + propertyNumber)); - propertyAssignments.add(propertyAssignmentCreation); - } - - sampleTypeCreation.setPropertyAssignments(propertyAssignments); - - v3.createSampleTypes(sessionToken, Arrays.asList(sampleTypeCreation)); - - // - // Setup - Create Experiment Type - // - - ExperimentTypeCreation experimentTypeCreation = new ExperimentTypeCreation(); - experimentTypeCreation.setCode(experimentTypeCode.getPermId()); - - v3.createExperimentTypes(sessionToken, Arrays.asList(experimentTypeCreation)); - } - - // - // Setup - Create codes - // - Set<String> codes = new HashSet<String>(); - int spacesToCreate = Integer.parseInt(this.getConfiguration().getParameters().get(Parameters.SPACES_TO_CREATE.name())); - for(int i = 0; i < spacesToCreate; i++) { - String code = null; - while(code == null || codes.contains(code)) { - code = RandomWord.getRandomWord() + "_" + RandomWord.getRandomWord(); - } - codes.add(code); - } - RandomValueGenerator<String> randomValueGenerator = new RandomValueGenerator<>(); - randomValueGenerator.addAll(codes); - - // - // Part 1 - Creating Spaces - // - - List<SpaceCreation> spaceCreations = new ArrayList<SpaceCreation>(); - for(String code:codes) { - SpaceCreation creation = new SpaceCreation(); - creation.setCode(Prefix.SPACE_ + code); - spaceCreations.add(creation); - } - long start1 = System.currentTimeMillis(); - v3.createSpaces(sessionToken, spaceCreations); - long end1 = System.currentTimeMillis(); - //logger.info("Create " + spacesToCreate + " Spaces took: " + (end1-start1) + " millis - " + ((end1-start1)/spacesToCreate) + " millis/space"); - - // - // Part 2 - Creating Projects - // - List<ProjectCreation> projectCreations = new ArrayList<ProjectCreation>(); - for(String code:codes) { - ProjectCreation creation = new ProjectCreation(); - creation.setCode(Prefix.PROJECT_ + code); - creation.setSpaceId(new SpacePermId(Prefix.SPACE_ + code)); - projectCreations.add(creation); - } - long start2 = System.currentTimeMillis(); - v3.createProjects(sessionToken, projectCreations); - long end2 = System.currentTimeMillis(); - //logger.info("Create " + spacesToCreate + " Projects took: " + (end2-start2) + " millis - " + ((end2-start2)/spacesToCreate) + " millis/project"); - - // - // Part 3 - Creating Experiments - // - List<ExperimentCreation> experimentCreations = new ArrayList<ExperimentCreation>(); - for(String code:codes) { - ExperimentCreation creation = new ExperimentCreation(); - creation.setCode(Prefix.COLLECTION_ + code); - creation.setProjectId(new ProjectIdentifier("/" + Prefix.SPACE_ + code + "/" + Prefix.PROJECT_ + code)); - creation.setTypeId(experimentTypeCode); - experimentCreations.add(creation); - } - long start3 = System.currentTimeMillis(); - v3.createExperiments(sessionToken, experimentCreations); - long end3 = System.currentTimeMillis(); - //logger.info("Create " + spacesToCreate + " Collections took: " + (end3-start3) + " millis - " + ((end3-start3)/spacesToCreate) + " millis/collection"); - - logout(); - // - // Part 4 - Creating Samples - // - long start4 = System.currentTimeMillis(); - - Set<String> sampleCodes = new HashSet<String>(); - int sampleBatchSize = 5000; - int samplesToCreate = Integer.parseInt(this.getConfiguration().getParameters().get(Parameters.SAMPLES_TO_CREATE.name())); - List<SampleCreation> sampleCreations = new ArrayList<SampleCreation>(); - boolean setSamplesRelationships = Boolean.parseBoolean(this.getConfiguration().getParameters().get( - Parameters.SET_SAMPLES_RELATIONSHIPS.name())); - int relationshipsIndex = 0; - for(int i = 0; i < samplesToCreate; i++) { - SampleCreation sampleCreation = new SampleCreation(); - String sampleCode = null; - while(sampleCode == null || sampleCodes.contains(sampleCode)) { - sampleCode = "SAMPLE_" + RandomWord.getRandomWord() + "_" + RandomWord.getRandomWord() + "_" + RandomWord.getRandomWord(); - } - sampleCreation.setCreationId(new CreationId(UUID.randomUUID().toString())); - sampleCreation.setTypeId(sampleTypeCode); - sampleCreation.setCode(sampleCode); - - for(int j = 0; j < propertiesNumber; j++) { - int propertyNumber = j + 1; - sampleCreation.setProperty(propertyTypeCode + propertyNumber, RandomWord.getRandomWord() + " " + RandomWord.getRandomWord()); - } - - String code = randomValueGenerator.getRandom(); - sampleCreation.setSpaceId(new SpacePermId(Prefix.SPACE_ + code)); // Spaces are distributed randomly - sampleCreation.setProjectId(new ProjectIdentifier("/" + Prefix.SPACE_ + code + "/" + Prefix.PROJECT_ + code)); - sampleCreation.setExperimentId(new ExperimentIdentifier("/" + Prefix.SPACE_ + code + "/" + Prefix.PROJECT_ + code + "/" + Prefix.COLLECTION_ + code)); - sampleCreations.add(sampleCreation); - - if (setSamplesRelationships && relationshipsIndex % 5 == 4) - { - SampleCreation sampleCreation1 = sampleCreations.get(relationshipsIndex - 1); - SampleCreation sampleCreation2 = sampleCreations.get(relationshipsIndex - 2); - SampleCreation sampleCreation3 = sampleCreations.get(relationshipsIndex - 3); - SampleCreation sampleCreation4 = sampleCreations.get(relationshipsIndex - 4); - - sampleCreation2.setParentIds(Arrays.asList(sampleCreation1.getCreationId())); - sampleCreation3.setParentIds(Arrays.asList(sampleCreation1.getCreationId())); - sampleCreation4.setParentIds(Arrays.asList(sampleCreation2.getCreationId())); - } - - relationshipsIndex++; - - if(samplesToCreate > sampleBatchSize && (i+1) % sampleBatchSize == 0 || // Every 5000, send to openBIS - samplesToCreate <= sampleBatchSize && samplesToCreate == sampleCreations.size()) { // If less than 5000, send to openBIS - // Use JDBC If requested - boolean useDatabase = Boolean.parseBoolean(this.getConfiguration().getParameters().get(Parameters.USE_DATABASE.name())); - if (useDatabase) { - String databaseURL = this.getConfiguration().getParameters().get(Parameters.DATABASE_URL.name()); - String databaseUser = this.getConfiguration().getParameters().get(Parameters.DATABASE_USER.name()); - String databasePass = this.getConfiguration().getParameters().get(Parameters.DATABASE_PASS.name()); - this.v3Wrapper = new ApplicationServerApiPostgresWrapper(databaseURL, databaseUser, databasePass); - } - // - login(); - long lapStart4 = System.currentTimeMillis(); - v3.createSamples(sessionToken, sampleCreations); - long lapEnd4 = System.currentTimeMillis(); - addOperation(lapStart4, lapEnd4, sampleCreations.size()); - logout(); - //logger.info("Create " + sampleCreations.size() + " Samples took: " + (lapEnd4 - lapStart4) + " millis - " + ((lapEnd4-lapStart4)/sampleCreations.size()) + " millis/sample"); - sampleCreations.clear(); - relationshipsIndex = 0; - } - } - long end4 = System.currentTimeMillis(); - //logger.info("Create " + samplesToCreate + " Samples took: " + (end4-start4) + " millis - " + ((end4-start4)/samplesToCreate) + " millis/sample"); - } - -} diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/jdbc/ApplicationServerApiPostgresWrapper.java b/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/jdbc/ApplicationServerApiPostgresWrapper.java deleted file mode 100644 index 7bbb1b60efc..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/jdbc/ApplicationServerApiPostgresWrapper.java +++ /dev/null @@ -1,1098 +0,0 @@ -package ch.ethz.sis.benchmark.impl.jdbc; - -import ch.ethz.sis.benchmark.impl.IApplicationServerApiWrapper; -import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.authorizationgroup.AuthorizationGroup; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.authorizationgroup.create.AuthorizationGroupCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.authorizationgroup.delete.AuthorizationGroupDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.authorizationgroup.fetchoptions.AuthorizationGroupFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.authorizationgroup.id.AuthorizationGroupPermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.authorizationgroup.id.IAuthorizationGroupId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.authorizationgroup.search.AuthorizationGroupSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.authorizationgroup.update.AuthorizationGroupUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.TableModel; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.IObjectId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.operation.IOperation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchResult; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSet; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSetType; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.archive.DataSetArchiveOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.create.DataSetCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.create.DataSetTypeCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.delete.DataSetDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.delete.DataSetTypeDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetTypeFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.DataSetPermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.IDataSetId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.lock.DataSetLockOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetTypeSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.unarchive.DataSetUnarchiveOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.unlock.DataSetUnlockOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.update.DataSetTypeUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.update.DataSetUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.datastore.DataStore; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.datastore.fetchoptions.DataStoreFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.datastore.search.DataStoreSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.Deletion; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.fetchoptions.DeletionFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.id.IDeletionId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.search.DeletionSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.EntityKind; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.IEntityTypeId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.Experiment; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.ExperimentType; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.create.ExperimentCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.create.ExperimentTypeCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.delete.ExperimentDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.delete.ExperimentTypeDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentTypeFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentIdentifier; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentPermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.IExperimentId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentTypeSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.update.ExperimentTypeUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.update.ExperimentUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.ExternalDms; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.create.ExternalDmsCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.delete.ExternalDmsDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.fetchoptions.ExternalDmsFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.id.ExternalDmsPermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.id.IExternalDmsId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.search.ExternalDmsSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.update.ExternalDmsUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.global.GlobalSearchObject; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.global.fetchoptions.GlobalSearchObjectFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.global.search.GlobalSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.Material; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.MaterialType; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.create.MaterialCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.create.MaterialTypeCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.delete.MaterialDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.delete.MaterialTypeDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.fetchoptions.MaterialFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.fetchoptions.MaterialTypeFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.id.IMaterialId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.id.MaterialPermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.search.MaterialSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.search.MaterialTypeSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.update.MaterialTypeUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.update.MaterialUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.objectkindmodification.ObjectKindModification; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.objectkindmodification.fetchoptions.ObjectKindModificationFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.objectkindmodification.search.ObjectKindModificationSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.IOperationExecutionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.IOperationExecutionResults; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.OperationExecution; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.delete.OperationExecutionDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.fetchoptions.OperationExecutionFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.id.IOperationExecutionId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.search.OperationExecutionSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.update.OperationExecutionUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.person.Person; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.person.create.PersonCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.person.delete.PersonDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.person.fetchoptions.PersonFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.person.id.IPersonId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.person.id.PersonPermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.person.search.PersonSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.person.update.PersonUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.Plugin; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.create.PluginCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.delete.PluginDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.evaluate.PluginEvaluationOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.evaluate.PluginEvaluationResult; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.fetchoptions.PluginFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.id.IPluginId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.id.PluginPermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.search.PluginSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.update.PluginUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.Project; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.create.ProjectCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.delete.ProjectDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.fetchoptions.ProjectFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.IProjectId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectIdentifier; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectPermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.search.ProjectSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.update.ProjectUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyAssignment; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyType; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.create.PropertyTypeCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.delete.PropertyTypeDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.fetchoptions.PropertyAssignmentFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.fetchoptions.PropertyTypeFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.id.IPropertyTypeId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.id.PropertyTypePermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.search.PropertyAssignmentSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.search.PropertyTypeSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.update.PropertyTypeUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.query.Query; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.query.QueryDatabase; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.query.create.QueryCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.query.delete.QueryDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.query.execute.QueryExecutionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.query.execute.SqlExecutionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.query.fetchoptions.QueryDatabaseFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.query.fetchoptions.QueryFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.query.id.IQueryDatabaseId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.query.id.IQueryId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.query.id.QueryTechId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.query.search.QueryDatabaseSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.query.search.QuerySearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.query.update.QueryUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.rights.Rights; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.rights.fetchoptions.RightsFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.roleassignment.RoleAssignment; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.roleassignment.create.RoleAssignmentCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.roleassignment.delete.RoleAssignmentDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.roleassignment.fetchoptions.RoleAssignmentFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.roleassignment.id.IRoleAssignmentId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.roleassignment.id.RoleAssignmentTechId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.roleassignment.search.RoleAssignmentSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.Sample; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.SampleType; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.create.SampleCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.create.SampleTypeCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.delete.SampleDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.delete.SampleTypeDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleTypeFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.ISampleId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleTypeSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.update.SampleTypeUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.update.SampleUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.semanticannotation.SemanticAnnotation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.semanticannotation.create.SemanticAnnotationCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.semanticannotation.delete.SemanticAnnotationDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.semanticannotation.fetchoptions.SemanticAnnotationFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.semanticannotation.id.ISemanticAnnotationId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.semanticannotation.id.SemanticAnnotationPermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.semanticannotation.search.SemanticAnnotationSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.semanticannotation.update.SemanticAnnotationUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.*; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.execute.AggregationServiceExecutionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.execute.ProcessingServiceExecutionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.execute.ReportingServiceExecutionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.execute.SearchDomainServiceExecutionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions.*; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.ICustomASServiceId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.IDssServiceId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.search.*; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.session.SessionInformation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.Space; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.create.SpaceCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.delete.SpaceDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.fetchoptions.SpaceFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.ISpaceId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.search.SpaceSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.update.SpaceUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.Tag; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.create.TagCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.delete.TagDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.fetchoptions.TagFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.ITagId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.TagPermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.search.TagSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.update.TagUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.Vocabulary; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.VocabularyTerm; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.create.VocabularyCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.create.VocabularyTermCreation; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.delete.VocabularyDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.delete.VocabularyTermDeletionOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.fetchoptions.VocabularyFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.fetchoptions.VocabularyTermFetchOptions; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.IVocabularyId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.IVocabularyTermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.VocabularyPermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.VocabularyTermPermId; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.search.VocabularySearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.search.VocabularyTermSearchCriteria; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.update.VocabularyTermUpdate; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.update.VocabularyUpdate; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; -import java.util.*; -import java.util.stream.Collectors; - -public class ApplicationServerApiPostgresWrapper implements IApplicationServerApiWrapper { - - private IApplicationServerApi instance; - private String databaseURL; - private String databaseUser; - private String databasePass; - private Connection connection; - - public ApplicationServerApiPostgresWrapper(String databaseURL, - String databaseUser, - String databasePass) throws SQLException { - // - this.databaseURL = databaseURL; - this.databaseUser = databaseUser; - this.databasePass = databasePass; - DriverManager.registerDriver(new org.postgresql.Driver()); - // - } - - - public void setInstance(IApplicationServerApi instance) { - this.instance = instance; - } - - @Override - public String login(String s, String s1) { - // - try { - connection = DriverManager.getConnection(databaseURL, databaseUser, databasePass); - } catch (Throwable t) { - throw new RuntimeException(t); - } - // - return instance.login(s, s1); - } - - @Override - public String loginAs(String s, String s1, String s2) { - return instance.loginAs(s, s1, s2); - } - - @Override - public String loginAsAnonymousUser() { - return instance.loginAsAnonymousUser(); - } - - @Override - public void logout(String s) { - // - try { - connection.close(); - } catch (Throwable t) { - throw new RuntimeException(t); - } - // - instance.logout(s); - } - - @Override - public SessionInformation getSessionInformation(String s) { - return instance.getSessionInformation(s); - } - - @Override - public boolean isSessionActive(String s) { - return instance.isSessionActive(s); - } - - @Override - public List<SpacePermId> createSpaces(String s, List<SpaceCreation> list) { - return instance.createSpaces(s, list); - } - - @Override - public List<ProjectPermId> createProjects(String s, List<ProjectCreation> list) { - return instance.createProjects(s, list); - } - - @Override - public List<ExperimentPermId> createExperiments(String s, List<ExperimentCreation> list) { - return instance.createExperiments(s, list); - } - - @Override - public List<EntityTypePermId> createExperimentTypes(String s, List<ExperimentTypeCreation> list) { - return instance.createExperimentTypes(s, list); - } - - @Override - public List<SamplePermId> createSamples(String s, List<SampleCreation> list) { - long start = System.currentTimeMillis(); - Set<String> spaceCodes = list.stream().map(sc -> ((SpacePermId) sc.getSpaceId()).getPermId()).collect(Collectors.toSet()); - Map<String, Long> spaceIdsByCode = SQLQueries.getSpaceIds(connection, spaceCodes); - - Set<String> projectIdentifiers = list.stream().map(sc -> ((ProjectIdentifier) sc.getProjectId() != null)?((ProjectIdentifier) sc.getProjectId()).getIdentifier():null).collect(Collectors.toSet()); - - Map<String, Long> projectIdsByIdentifier = Map.of(); - if(!projectIdentifiers.contains(null)) { - projectIdsByIdentifier = SQLQueries.getProjectIds(connection, projectIdentifiers, spaceIdsByCode); - } - - Set<String> experimentIdentifiers = list.stream().map(sc -> ((ExperimentIdentifier) sc.getExperimentId() != null)?((ExperimentIdentifier) sc.getExperimentId()).getIdentifier():null).collect(Collectors.toSet()); - Map<String, Long> experimentIdsByIdentifier = Map.of(); - if(!experimentIdentifiers.contains(null)) { - experimentIdsByIdentifier = SQLQueries.getExperimentIds(connection, experimentIdentifiers, projectIdsByIdentifier); - } - - Set<String> sampleTypeCodes = list.stream().map(sc -> ((EntityTypePermId) sc.getTypeId()).getPermId()).collect(Collectors.toSet()); - Map<String, Long> sampleTypeIdsByCode = SQLQueries.getTypeIds(connection, sampleTypeCodes); - - Set<String> propertyTypeCodes = list.stream().flatMap(sc -> sc.getProperties().keySet().stream()).collect(Collectors.toSet()); - Map<String, Long> propertyTypeIdsByCode = SQLQueries.getPropertyTypeIds(connection, propertyTypeCodes); - - SessionInformation sessionInformation = instance.getSessionInformation(s); - String user_id = sessionInformation.getPerson().getUserId(); - Long personId = SQLQueries.getPersonId(connection, user_id); - - Set<String> stIdsptIds = new HashSet<>(); - for (SampleCreation sampleCreation:list) { - Long sampleTypeId = sampleTypeIdsByCode.get(((EntityTypePermId) sampleCreation.getTypeId()).getPermId()); - for (String propertyCode:sampleCreation.getProperties().keySet()) { - Long propertyTypeId = propertyTypeIdsByCode.get(propertyCode); - stIdsptIds.add(sampleTypeId + ":" + propertyTypeId); - } - } - Map<String, Long> stIdsptIdsByReference = SQLQueries.getSampleTypePropertyTypeIds(connection, stIdsptIds); - - List<SamplePermId> permIds = new ArrayList<>(list.size()); - - List<Long> nextIds = SQLQueries.nextSampleIds(connection, list.size()); - - List<List<Object>> sampleInsertArgs = new ArrayList<>(); - List<List<Object>> samplePropertiesInsertArgs = new ArrayList<>(); - for (int idx = 0; idx < list.size(); idx++) { - SampleCreation sampleCreation = list.get(idx); - - Long id = nextIds.get(idx); - String perm_id = UUID.randomUUID().toString(); - permIds.add(new SamplePermId(perm_id)); - String code = sampleCreation.getCode(); - Long proj_id = null; - if (sampleCreation.getProjectId() != null) { - proj_id = projectIdsByIdentifier.get(((ProjectIdentifier) sampleCreation.getProjectId()).getIdentifier()); - } - Long expe_id = null; - if (sampleCreation.getExperimentId() != null) { - expe_id = experimentIdsByIdentifier.get(((ExperimentIdentifier) sampleCreation.getExperimentId()).getIdentifier()); - } - Long saty_id = sampleTypeIdsByCode.get(((EntityTypePermId)sampleCreation.getTypeId()).getPermId()); - Long pers_id_registerer = personId; - Long modification_timestamp = personId; - Long space_id = spaceIdsByCode.get(((SpacePermId) sampleCreation.getSpaceId()).getPermId()); - sampleInsertArgs.add(Arrays.asList(id, perm_id, code, proj_id, expe_id, saty_id, pers_id_registerer, modification_timestamp, space_id)); - - Long sampleTypeId = sampleTypeIdsByCode.get(((EntityTypePermId) sampleCreation.getTypeId()).getPermId()); - for (String propertyCode:sampleCreation.getProperties().keySet()) { - Long propertyTypeId = propertyTypeIdsByCode.get(propertyCode); - String reference = sampleTypeId + ":" + propertyTypeId; - samplePropertiesInsertArgs.add(Arrays.asList(id, stIdsptIdsByReference.get(reference), sampleCreation.getProperties().get(propertyCode), pers_id_registerer, modification_timestamp)); - } - } - - try { - connection.setAutoCommit(false); - - long end = System.currentTimeMillis(); - System.out.println("ApplicationServerApiPostgresWrapper.createSamples Preparation Took: " + (end-start)/1000 + " sec"); - int inserts = SQLQueries.insertSamples(connection, sampleInsertArgs); - long end2 = System.currentTimeMillis(); - System.out.println("ApplicationServerApiPostgresWrapper.createSamples inserts Took: " + (end2-end)/1000 + " sec"); - int propertyInserts = SQLQueries.insertSamplesProperties(connection, samplePropertiesInsertArgs); - long end3 = System.currentTimeMillis(); - System.out.println("ApplicationServerApiPostgresWrapper.createSamples property inserts Took: " + (end3-end2)/1000 + " sec"); - System.out.println("ApplicationServerApiPostgresWrapper.createSamples Total: " + (end3-start)/1000 + " sec"); - System.out.println("ApplicationServerApiPostgresWrapper.createSamples Total: " + list.size()/((end3-start)/1000) + " samples/sec"); - - connection.commit(); - } catch (Exception ex) { - try { - connection.rollback(); - } catch (Exception ex2) {} - } finally { - try { - connection.setAutoCommit(true); - } catch (Exception ex3) {} - } - - return permIds; - } - - @Override - public List<EntityTypePermId> createSampleTypes(String s, List<SampleTypeCreation> list) { - return instance.createSampleTypes(s, list); - } - - @Override - public List<DataSetPermId> createDataSets(String s, List<DataSetCreation> list) { - return instance.createDataSets(s, list); - } - - @Override - public List<EntityTypePermId> createDataSetTypes(String s, List<DataSetTypeCreation> list) { - return instance.createDataSetTypes(s, list); - } - - @Override - public List<MaterialPermId> createMaterials(String s, List<MaterialCreation> list) { - return instance.createMaterials(s, list); - } - - @Override - public List<EntityTypePermId> createMaterialTypes(String s, List<MaterialTypeCreation> list) { - return instance.createMaterialTypes(s, list); - } - - @Override - public List<PropertyTypePermId> createPropertyTypes(String s, List<PropertyTypeCreation> list) { - return instance.createPropertyTypes(s, list); - } - - @Override - public List<PluginPermId> createPlugins(String s, List<PluginCreation> list) { - return instance.createPlugins(s, list); - } - - @Override - public List<VocabularyPermId> createVocabularies(String s, List<VocabularyCreation> list) { - return instance.createVocabularies(s, list); - } - - @Override - public List<VocabularyTermPermId> createVocabularyTerms(String s, List<VocabularyTermCreation> list) { - return instance.createVocabularyTerms(s, list); - } - - @Override - public List<TagPermId> createTags(String s, List<TagCreation> list) { - return instance.createTags(s, list); - } - - @Override - public List<AuthorizationGroupPermId> createAuthorizationGroups(String s, List<AuthorizationGroupCreation> list) { - return instance.createAuthorizationGroups(s, list); - } - - @Override - public List<RoleAssignmentTechId> createRoleAssignments(String s, List<RoleAssignmentCreation> list) { - return instance.createRoleAssignments(s, list); - } - - @Override - public List<PersonPermId> createPersons(String s, List<PersonCreation> list) { - return instance.createPersons(s, list); - } - - @Override - public List<ExternalDmsPermId> createExternalDataManagementSystems(String s, List<ExternalDmsCreation> list) { - return instance.createExternalDataManagementSystems(s, list); - } - - @Override - public List<QueryTechId> createQueries(String s, List<QueryCreation> list) { - return instance.createQueries(s, list); - } - - @Override - public List<SemanticAnnotationPermId> createSemanticAnnotations(String s, List<SemanticAnnotationCreation> list) { - return instance.createSemanticAnnotations(s, list); - } - - @Override - public void updateSpaces(String s, List<SpaceUpdate> list) { - instance.updateSpaces(s, list); - } - - @Override - public void updateProjects(String s, List<ProjectUpdate> list) { - instance.updateProjects(s, list); - } - - @Override - public void updateExperiments(String s, List<ExperimentUpdate> list) { - instance.updateExperiments(s, list); - } - - @Override - public void updateExperimentTypes(String s, List<ExperimentTypeUpdate> list) { - instance.updateExperimentTypes(s, list); - } - - @Override - public void updateSamples(String s, List<SampleUpdate> list) { - instance.updateSamples(s, list); - } - - @Override - public void updateSampleTypes(String s, List<SampleTypeUpdate> list) { - instance.updateSampleTypes(s, list); - } - - @Override - public void updateDataSets(String s, List<DataSetUpdate> list) { - instance.updateDataSets(s, list); - } - - @Override - public void updateDataSetTypes(String s, List<DataSetTypeUpdate> list) { - instance.updateDataSetTypes(s, list); - } - - @Override - public void updateMaterials(String s, List<MaterialUpdate> list) { - instance.updateMaterials(s, list); - } - - @Override - public void updateMaterialTypes(String s, List<MaterialTypeUpdate> list) { - instance.updateMaterialTypes(s, list); - } - - @Override - public void updateExternalDataManagementSystems(String s, List<ExternalDmsUpdate> list) { - instance.updateExternalDataManagementSystems(s, list); - } - - @Override - public void updatePropertyTypes(String s, List<PropertyTypeUpdate> list) { - instance.updatePropertyTypes(s, list); - } - - @Override - public void updatePlugins(String s, List<PluginUpdate> list) { - instance.updatePlugins(s, list); - } - - @Override - public void updateVocabularies(String s, List<VocabularyUpdate> list) { - instance.updateVocabularies(s, list); - } - - @Override - public void updateVocabularyTerms(String s, List<VocabularyTermUpdate> list) { - instance.updateVocabularyTerms(s, list); - } - - @Override - public void updateTags(String s, List<TagUpdate> list) { - instance.updateTags(s, list); - } - - @Override - public void updateAuthorizationGroups(String s, List<AuthorizationGroupUpdate> list) { - instance.updateAuthorizationGroups(s, list); - } - - @Override - public void updatePersons(String s, List<PersonUpdate> list) { - instance.updatePersons(s, list); - } - - @Override - public void updateOperationExecutions(String s, List<OperationExecutionUpdate> list) { - instance.updateOperationExecutions(s, list); - } - - @Override - public void updateSemanticAnnotations(String s, List<SemanticAnnotationUpdate> list) { - instance.updateSemanticAnnotations(s, list); - } - - @Override - public void updateQueries(String s, List<QueryUpdate> list) { - instance.updateQueries(s, list); - - } - - @Override - public Map<IObjectId, Rights> getRights(String s, List<? extends IObjectId> list, RightsFetchOptions rightsFetchOptions) { - return instance.getRights(s, list, rightsFetchOptions); - } - - @Override - public Map<ISpaceId, Space> getSpaces(String s, List<? extends ISpaceId> list, SpaceFetchOptions spaceFetchOptions) { - return instance.getSpaces(s, list, spaceFetchOptions); - } - - @Override - public Map<IProjectId, Project> getProjects(String s, List<? extends IProjectId> list, ProjectFetchOptions projectFetchOptions) { - return instance.getProjects(s, list, projectFetchOptions); - } - - @Override - public Map<IExperimentId, Experiment> getExperiments(String s, List<? extends IExperimentId> list, ExperimentFetchOptions experimentFetchOptions) { - return instance.getExperiments(s, list, experimentFetchOptions); - } - - @Override - public Map<IEntityTypeId, ExperimentType> getExperimentTypes(String s, List<? extends IEntityTypeId> list, ExperimentTypeFetchOptions experimentTypeFetchOptions) { - return instance.getExperimentTypes(s, list, experimentTypeFetchOptions); - } - - @Override - public Map<ISampleId, Sample> getSamples(String s, List<? extends ISampleId> list, SampleFetchOptions sampleFetchOptions) { - return instance.getSamples(s, list, sampleFetchOptions); - } - - @Override - public Map<IEntityTypeId, SampleType> getSampleTypes(String s, List<? extends IEntityTypeId> list, SampleTypeFetchOptions sampleTypeFetchOptions) { - return instance.getSampleTypes(s, list, sampleTypeFetchOptions); - } - - @Override - public Map<IDataSetId, DataSet> getDataSets(String s, List<? extends IDataSetId> list, DataSetFetchOptions dataSetFetchOptions) { - return instance.getDataSets(s, list, dataSetFetchOptions); - } - - @Override - public Map<IEntityTypeId, DataSetType> getDataSetTypes(String s, List<? extends IEntityTypeId> list, DataSetTypeFetchOptions dataSetTypeFetchOptions) { - return instance.getDataSetTypes(s, list, dataSetTypeFetchOptions); - } - - @Override - public Map<IMaterialId, Material> getMaterials(String s, List<? extends IMaterialId> list, MaterialFetchOptions materialFetchOptions) { - return instance.getMaterials(s, list, materialFetchOptions); - } - - @Override - public Map<IEntityTypeId, MaterialType> getMaterialTypes(String s, List<? extends IEntityTypeId> list, MaterialTypeFetchOptions materialTypeFetchOptions) { - return instance.getMaterialTypes(s, list, materialTypeFetchOptions); - } - - @Override - public Map<IPropertyTypeId, PropertyType> getPropertyTypes(String s, List<? extends IPropertyTypeId> list, PropertyTypeFetchOptions propertyTypeFetchOptions) { - return instance.getPropertyTypes(s, list, propertyTypeFetchOptions); - } - - @Override - public Map<IPluginId, Plugin> getPlugins(String s, List<? extends IPluginId> list, PluginFetchOptions pluginFetchOptions) { - return instance.getPlugins(s, list, pluginFetchOptions); - } - - @Override - public Map<IVocabularyId, Vocabulary> getVocabularies(String s, List<? extends IVocabularyId> list, VocabularyFetchOptions vocabularyFetchOptions) { - return instance.getVocabularies(s, list, vocabularyFetchOptions); - } - - @Override - public Map<IVocabularyTermId, VocabularyTerm> getVocabularyTerms(String s, List<? extends IVocabularyTermId> list, VocabularyTermFetchOptions vocabularyTermFetchOptions) { - return instance.getVocabularyTerms(s, list, vocabularyTermFetchOptions); - } - - @Override - public Map<ITagId, Tag> getTags(String s, List<? extends ITagId> list, TagFetchOptions tagFetchOptions) { - return instance.getTags(s, list, tagFetchOptions); - } - - @Override - public Map<IAuthorizationGroupId, AuthorizationGroup> getAuthorizationGroups(String s, List<? extends IAuthorizationGroupId> list, AuthorizationGroupFetchOptions authorizationGroupFetchOptions) { - return instance.getAuthorizationGroups(s, list, authorizationGroupFetchOptions); - } - - @Override - public Map<IRoleAssignmentId, RoleAssignment> getRoleAssignments(String s, List<? extends IRoleAssignmentId> list, RoleAssignmentFetchOptions roleAssignmentFetchOptions) { - return instance.getRoleAssignments(s, list, roleAssignmentFetchOptions); - } - - @Override - public Map<IPersonId, Person> getPersons(String s, List<? extends IPersonId> list, PersonFetchOptions personFetchOptions) { - return instance.getPersons(s, list, personFetchOptions); - } - - @Override - public Map<IExternalDmsId, ExternalDms> getExternalDataManagementSystems(String s, List<? extends IExternalDmsId> list, ExternalDmsFetchOptions externalDmsFetchOptions) { - return instance.getExternalDataManagementSystems(s, list, externalDmsFetchOptions); - } - - @Override - public Map<ISemanticAnnotationId, SemanticAnnotation> getSemanticAnnotations(String s, List<? extends ISemanticAnnotationId> list, SemanticAnnotationFetchOptions semanticAnnotationFetchOptions) { - return instance.getSemanticAnnotations(s, list, semanticAnnotationFetchOptions); - } - - @Override - public Map<IOperationExecutionId, OperationExecution> getOperationExecutions(String s, List<? extends IOperationExecutionId> list, OperationExecutionFetchOptions operationExecutionFetchOptions) { - return instance.getOperationExecutions(s, list, operationExecutionFetchOptions); - } - - @Override - public Map<IQueryId, Query> getQueries(String s, List<? extends IQueryId> list, QueryFetchOptions queryFetchOptions) { - return instance.getQueries(s, list, queryFetchOptions); - } - - @Override - public Map<IQueryDatabaseId, QueryDatabase> getQueryDatabases(String s, List<? extends IQueryDatabaseId> list, QueryDatabaseFetchOptions queryDatabaseFetchOptions) { - return instance.getQueryDatabases(s, list, queryDatabaseFetchOptions); - } - - @Override - public SearchResult<Space> searchSpaces(String s, SpaceSearchCriteria spaceSearchCriteria, SpaceFetchOptions spaceFetchOptions) { - return instance.searchSpaces(s, spaceSearchCriteria, spaceFetchOptions); - } - - @Override - public SearchResult<Project> searchProjects(String s, ProjectSearchCriteria projectSearchCriteria, ProjectFetchOptions projectFetchOptions) { - return instance.searchProjects(s, projectSearchCriteria, projectFetchOptions); - } - - @Override - public SearchResult<Experiment> searchExperiments(String s, ExperimentSearchCriteria experimentSearchCriteria, ExperimentFetchOptions experimentFetchOptions) { - return instance.searchExperiments(s, experimentSearchCriteria, experimentFetchOptions); - } - - @Override - public SearchResult<ExperimentType> searchExperimentTypes(String s, ExperimentTypeSearchCriteria experimentTypeSearchCriteria, ExperimentTypeFetchOptions experimentTypeFetchOptions) { - return instance.searchExperimentTypes(s, experimentTypeSearchCriteria, experimentTypeFetchOptions); - } - - @Override - public SearchResult<Sample> searchSamples(String s, SampleSearchCriteria sampleSearchCriteria, SampleFetchOptions sampleFetchOptions) { - return instance.searchSamples(s, sampleSearchCriteria, sampleFetchOptions); - } - - @Override - public SearchResult<SampleType> searchSampleTypes(String s, SampleTypeSearchCriteria sampleTypeSearchCriteria, SampleTypeFetchOptions sampleTypeFetchOptions) { - return instance.searchSampleTypes(s, sampleTypeSearchCriteria, sampleTypeFetchOptions); - } - - @Override - public SearchResult<DataSet> searchDataSets(String s, DataSetSearchCriteria dataSetSearchCriteria, DataSetFetchOptions dataSetFetchOptions) { - return instance.searchDataSets(s, dataSetSearchCriteria, dataSetFetchOptions); - } - - @Override - public SearchResult<DataSetType> searchDataSetTypes(String s, DataSetTypeSearchCriteria dataSetTypeSearchCriteria, DataSetTypeFetchOptions dataSetTypeFetchOptions) { - return instance.searchDataSetTypes(s, dataSetTypeSearchCriteria, dataSetTypeFetchOptions); - } - - @Override - public SearchResult<Material> searchMaterials(String s, MaterialSearchCriteria materialSearchCriteria, MaterialFetchOptions materialFetchOptions) { - return instance.searchMaterials(s, materialSearchCriteria, materialFetchOptions); - } - - @Override - public SearchResult<ExternalDms> searchExternalDataManagementSystems(String s, ExternalDmsSearchCriteria externalDmsSearchCriteria, ExternalDmsFetchOptions externalDmsFetchOptions) { - return instance.searchExternalDataManagementSystems(s, externalDmsSearchCriteria, externalDmsFetchOptions); - } - - @Override - public SearchResult<MaterialType> searchMaterialTypes(String s, MaterialTypeSearchCriteria materialTypeSearchCriteria, MaterialTypeFetchOptions materialTypeFetchOptions) { - return instance.searchMaterialTypes(s, materialTypeSearchCriteria, materialTypeFetchOptions); - } - - @Override - public SearchResult<Plugin> searchPlugins(String s, PluginSearchCriteria pluginSearchCriteria, PluginFetchOptions pluginFetchOptions) { - return instance.searchPlugins(s, pluginSearchCriteria, pluginFetchOptions); - } - - @Override - public SearchResult<Vocabulary> searchVocabularies(String s, VocabularySearchCriteria vocabularySearchCriteria, VocabularyFetchOptions vocabularyFetchOptions) { - return instance.searchVocabularies(s, vocabularySearchCriteria, vocabularyFetchOptions); - } - - @Override - public SearchResult<VocabularyTerm> searchVocabularyTerms(String s, VocabularyTermSearchCriteria vocabularyTermSearchCriteria, VocabularyTermFetchOptions vocabularyTermFetchOptions) { - return instance.searchVocabularyTerms(s, vocabularyTermSearchCriteria, vocabularyTermFetchOptions); - } - - @Override - public SearchResult<Tag> searchTags(String s, TagSearchCriteria tagSearchCriteria, TagFetchOptions tagFetchOptions) { - return instance.searchTags(s, tagSearchCriteria, tagFetchOptions); - } - - @Override - public SearchResult<AuthorizationGroup> searchAuthorizationGroups(String s, AuthorizationGroupSearchCriteria authorizationGroupSearchCriteria, AuthorizationGroupFetchOptions authorizationGroupFetchOptions) { - return instance.searchAuthorizationGroups(s, authorizationGroupSearchCriteria, authorizationGroupFetchOptions); - } - - @Override - public SearchResult<RoleAssignment> searchRoleAssignments(String s, RoleAssignmentSearchCriteria roleAssignmentSearchCriteria, RoleAssignmentFetchOptions roleAssignmentFetchOptions) { - return instance.searchRoleAssignments(s, roleAssignmentSearchCriteria, roleAssignmentFetchOptions); - } - - @Override - public SearchResult<Person> searchPersons(String s, PersonSearchCriteria personSearchCriteria, PersonFetchOptions personFetchOptions) { - return instance.searchPersons(s, personSearchCriteria, personFetchOptions); - } - - @Override - public SearchResult<CustomASService> searchCustomASServices(String s, CustomASServiceSearchCriteria customASServiceSearchCriteria, CustomASServiceFetchOptions customASServiceFetchOptions) { - return instance.searchCustomASServices(s, customASServiceSearchCriteria, customASServiceFetchOptions); - } - - @Override - public SearchResult<SearchDomainService> searchSearchDomainServices(String s, SearchDomainServiceSearchCriteria searchDomainServiceSearchCriteria, SearchDomainServiceFetchOptions searchDomainServiceFetchOptions) { - return instance.searchSearchDomainServices(s, searchDomainServiceSearchCriteria, searchDomainServiceFetchOptions); - } - - @Override - public SearchResult<AggregationService> searchAggregationServices(String s, AggregationServiceSearchCriteria aggregationServiceSearchCriteria, AggregationServiceFetchOptions aggregationServiceFetchOptions) { - return instance.searchAggregationServices(s, aggregationServiceSearchCriteria, aggregationServiceFetchOptions); - } - - @Override - public SearchResult<ReportingService> searchReportingServices(String s, ReportingServiceSearchCriteria reportingServiceSearchCriteria, ReportingServiceFetchOptions reportingServiceFetchOptions) { - return instance.searchReportingServices(s, reportingServiceSearchCriteria, reportingServiceFetchOptions); - } - - @Override - public SearchResult<ProcessingService> searchProcessingServices(String s, ProcessingServiceSearchCriteria processingServiceSearchCriteria, ProcessingServiceFetchOptions processingServiceFetchOptions) { - return instance.searchProcessingServices(s, processingServiceSearchCriteria, processingServiceFetchOptions); - } - - @Override - public SearchResult<ObjectKindModification> searchObjectKindModifications(String s, ObjectKindModificationSearchCriteria objectKindModificationSearchCriteria, ObjectKindModificationFetchOptions objectKindModificationFetchOptions) { - return instance.searchObjectKindModifications(s, objectKindModificationSearchCriteria, objectKindModificationFetchOptions); - } - - @Override - public SearchResult<GlobalSearchObject> searchGlobally(String s, GlobalSearchCriteria globalSearchCriteria, GlobalSearchObjectFetchOptions globalSearchObjectFetchOptions) { - return instance.searchGlobally(s, globalSearchCriteria, globalSearchObjectFetchOptions); - } - - @Override - public SearchResult<OperationExecution> searchOperationExecutions(String s, OperationExecutionSearchCriteria operationExecutionSearchCriteria, OperationExecutionFetchOptions operationExecutionFetchOptions) { - return instance.searchOperationExecutions(s, operationExecutionSearchCriteria, operationExecutionFetchOptions); - } - - @Override - public SearchResult<DataStore> searchDataStores(String s, DataStoreSearchCriteria dataStoreSearchCriteria, DataStoreFetchOptions dataStoreFetchOptions) { - return instance.searchDataStores(s, dataStoreSearchCriteria, dataStoreFetchOptions); - } - - @Override - public SearchResult<SemanticAnnotation> searchSemanticAnnotations(String s, SemanticAnnotationSearchCriteria semanticAnnotationSearchCriteria, SemanticAnnotationFetchOptions semanticAnnotationFetchOptions) { - return instance.searchSemanticAnnotations(s, semanticAnnotationSearchCriteria, semanticAnnotationFetchOptions); - } - - @Override - public SearchResult<PropertyType> searchPropertyTypes(String s, PropertyTypeSearchCriteria propertyTypeSearchCriteria, PropertyTypeFetchOptions propertyTypeFetchOptions) { - return instance.searchPropertyTypes(s, propertyTypeSearchCriteria, propertyTypeFetchOptions); - } - - @Override - public SearchResult<PropertyAssignment> searchPropertyAssignments(String s, PropertyAssignmentSearchCriteria propertyAssignmentSearchCriteria, PropertyAssignmentFetchOptions propertyAssignmentFetchOptions) { - return instance.searchPropertyAssignments(s, propertyAssignmentSearchCriteria, propertyAssignmentFetchOptions); - } - - @Override - public SearchResult<Query> searchQueries(String s, QuerySearchCriteria querySearchCriteria, QueryFetchOptions queryFetchOptions) { - return instance.searchQueries(s, querySearchCriteria, queryFetchOptions); - } - - @Override - public SearchResult<QueryDatabase> searchQueryDatabases(String s, QueryDatabaseSearchCriteria queryDatabaseSearchCriteria, QueryDatabaseFetchOptions queryDatabaseFetchOptions) { - return instance.searchQueryDatabases(s, queryDatabaseSearchCriteria, queryDatabaseFetchOptions); - } - - @Override - public void deleteSpaces(String s, List<? extends ISpaceId> list, SpaceDeletionOptions spaceDeletionOptions) { - instance.deleteSpaces(s, list, spaceDeletionOptions); - } - - @Override - public void deleteProjects(String s, List<? extends IProjectId> list, ProjectDeletionOptions projectDeletionOptions) { - instance.deleteProjects(s, list, projectDeletionOptions); - } - - @Override - public IDeletionId deleteExperiments(String s, List<? extends IExperimentId> list, ExperimentDeletionOptions experimentDeletionOptions) { - return instance.deleteExperiments(s, list, experimentDeletionOptions); - } - - @Override - public IDeletionId deleteSamples(String s, List<? extends ISampleId> list, SampleDeletionOptions sampleDeletionOptions) { - return instance.deleteSamples(s, list, sampleDeletionOptions); - } - - @Override - public IDeletionId deleteDataSets(String s, List<? extends IDataSetId> list, DataSetDeletionOptions dataSetDeletionOptions) { - return instance.deleteDataSets(s, list, dataSetDeletionOptions); - } - - @Override - public void deleteMaterials(String s, List<? extends IMaterialId> list, MaterialDeletionOptions materialDeletionOptions) { - instance.deleteMaterials(s, list, materialDeletionOptions); - } - - @Override - public void deletePlugins(String s, List<? extends IPluginId> list, PluginDeletionOptions pluginDeletionOptions) { - instance.deletePlugins(s, list, pluginDeletionOptions); - } - - @Override - public void deletePropertyTypes(String s, List<? extends IPropertyTypeId> list, PropertyTypeDeletionOptions propertyTypeDeletionOptions) { - instance.deletePropertyTypes(s, list, propertyTypeDeletionOptions); - } - - @Override - public void deleteVocabularies(String s, List<? extends IVocabularyId> list, VocabularyDeletionOptions vocabularyDeletionOptions) { - instance.deleteVocabularies(s, list, vocabularyDeletionOptions); - } - - @Override - public void deleteVocabularyTerms(String s, List<? extends IVocabularyTermId> list, VocabularyTermDeletionOptions vocabularyTermDeletionOptions) { - instance.deleteVocabularyTerms(s, list, vocabularyTermDeletionOptions); - } - - @Override - public void deleteExperimentTypes(String s, List<? extends IEntityTypeId> list, ExperimentTypeDeletionOptions experimentTypeDeletionOptions) { - instance.deleteExperimentTypes(s, list, experimentTypeDeletionOptions); - } - - @Override - public void deleteSampleTypes(String s, List<? extends IEntityTypeId> list, SampleTypeDeletionOptions sampleTypeDeletionOptions) { - instance.deleteSampleTypes(s, list, sampleTypeDeletionOptions); - } - - @Override - public void deleteDataSetTypes(String s, List<? extends IEntityTypeId> list, DataSetTypeDeletionOptions dataSetTypeDeletionOptions) { - instance.deleteDataSetTypes(s, list, dataSetTypeDeletionOptions); - } - - @Override - public void deleteMaterialTypes(String s, List<? extends IEntityTypeId> list, MaterialTypeDeletionOptions materialTypeDeletionOptions) { - instance.deleteMaterialTypes(s, list, materialTypeDeletionOptions); - } - - @Override - public void deleteExternalDataManagementSystems(String s, List<? extends IExternalDmsId> list, ExternalDmsDeletionOptions externalDmsDeletionOptions) { - instance.deleteExternalDataManagementSystems(s, list, externalDmsDeletionOptions); - } - - @Override - public void deleteTags(String s, List<? extends ITagId> list, TagDeletionOptions tagDeletionOptions) { - instance.deleteTags(s, list, tagDeletionOptions); - } - - @Override - public void deleteAuthorizationGroups(String s, List<? extends IAuthorizationGroupId> list, AuthorizationGroupDeletionOptions authorizationGroupDeletionOptions) { - instance.deleteAuthorizationGroups(s, list, authorizationGroupDeletionOptions); - } - - @Override - public void deleteRoleAssignments(String s, List<? extends IRoleAssignmentId> list, RoleAssignmentDeletionOptions roleAssignmentDeletionOptions) { - instance.deleteRoleAssignments(s, list, roleAssignmentDeletionOptions); - } - - @Override - public void deleteOperationExecutions(String s, List<? extends IOperationExecutionId> list, OperationExecutionDeletionOptions operationExecutionDeletionOptions) { - instance.deleteOperationExecutions(s, list, operationExecutionDeletionOptions); - } - - @Override - public void deleteSemanticAnnotations(String s, List<? extends ISemanticAnnotationId> list, SemanticAnnotationDeletionOptions semanticAnnotationDeletionOptions) { - instance.deleteSemanticAnnotations(s, list, semanticAnnotationDeletionOptions); - } - - @Override - public void deleteQueries(String s, List<? extends IQueryId> list, QueryDeletionOptions queryDeletionOptions) { - instance.deleteQueries(s, list, queryDeletionOptions); - } - - @Override - public void deletePersons(String s, List<? extends IPersonId> list, PersonDeletionOptions personDeletionOptions) { - instance.deletePersons(s, list, personDeletionOptions); - } - - @Override - public SearchResult<Deletion> searchDeletions(String s, DeletionSearchCriteria deletionSearchCriteria, DeletionFetchOptions deletionFetchOptions) { - return instance.searchDeletions(s, deletionSearchCriteria, deletionFetchOptions); - } - - @Override - public void revertDeletions(String s, List<? extends IDeletionId> list) { - instance.revertDeletions(s, list); - } - - @Override - public void confirmDeletions(String s, List<? extends IDeletionId> list) { - instance.confirmDeletions(s, list); - } - - @Override - public Object executeCustomASService(String s, ICustomASServiceId iCustomASServiceId, CustomASServiceExecutionOptions customASServiceExecutionOptions) { - return instance.executeCustomASService(s, iCustomASServiceId, customASServiceExecutionOptions); - } - - @Override - public SearchResult<SearchDomainServiceExecutionResult> executeSearchDomainService(String s, SearchDomainServiceExecutionOptions searchDomainServiceExecutionOptions) { - return instance.executeSearchDomainService(s, searchDomainServiceExecutionOptions); - } - - @Override - public TableModel executeAggregationService(String s, IDssServiceId iDssServiceId, AggregationServiceExecutionOptions aggregationServiceExecutionOptions) { - return instance.executeAggregationService(s, iDssServiceId, aggregationServiceExecutionOptions); - } - - @Override - public TableModel executeReportingService(String s, IDssServiceId iDssServiceId, ReportingServiceExecutionOptions reportingServiceExecutionOptions) { - return instance.executeReportingService(s, iDssServiceId, reportingServiceExecutionOptions); - } - - @Override - public void executeProcessingService(String s, IDssServiceId iDssServiceId, ProcessingServiceExecutionOptions processingServiceExecutionOptions) { - instance.executeProcessingService(s, iDssServiceId, processingServiceExecutionOptions); - } - - @Override - public TableModel executeQuery(String s, IQueryId iQueryId, QueryExecutionOptions queryExecutionOptions) { - return instance.executeQuery(s, iQueryId, queryExecutionOptions); - } - - @Override - public TableModel executeSql(String s, String s1, SqlExecutionOptions sqlExecutionOptions) { - return instance.executeSql(s, s1, sqlExecutionOptions); - } - - @Override - public PluginEvaluationResult evaluatePlugin(String s, PluginEvaluationOptions pluginEvaluationOptions) { - return instance.evaluatePlugin(s, pluginEvaluationOptions); - } - - @Override - public void archiveDataSets(String s, List<? extends IDataSetId> list, DataSetArchiveOptions dataSetArchiveOptions) { - instance.archiveDataSets(s, list, dataSetArchiveOptions); - } - - @Override - public void unarchiveDataSets(String s, List<? extends IDataSetId> list, DataSetUnarchiveOptions dataSetUnarchiveOptions) { - instance.unarchiveDataSets(s, list, dataSetUnarchiveOptions); - } - - @Override - public void lockDataSets(String s, List<? extends IDataSetId> list, DataSetLockOptions dataSetLockOptions) { - instance.lockDataSets(s, list, dataSetLockOptions); - } - - @Override - public void unlockDataSets(String s, List<? extends IDataSetId> list, DataSetUnlockOptions dataSetUnlockOptions) { - instance.unlockDataSets(s, list, dataSetUnlockOptions); - } - - @Override - public IOperationExecutionResults executeOperations(String s, List<? extends IOperation> list, IOperationExecutionOptions iOperationExecutionOptions) { - return instance.executeOperations(s, list, iOperationExecutionOptions); - } - - @Override - public Map<String, String> getServerInformation(String s) { - return instance.getServerInformation(s); - } - - @Override - public List<String> createPermIdStrings(String s, int i) { - return instance.createPermIdStrings(s, i); - } - - @Override - public List<String> createCodes(String s, String s1, EntityKind entityKind, int i) { - return instance.createCodes(s, s1, entityKind, i); - } - - @Override - public int getMajorVersion() { - return instance.getMajorVersion(); - } - - @Override - public int getMinorVersion() { - return instance.getMinorVersion(); - } -} diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/jdbc/SQLExecutor.java b/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/jdbc/SQLExecutor.java deleted file mode 100644 index b95e3a45944..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/jdbc/SQLExecutor.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.ethz.sis.benchmark.impl.jdbc; - -import ch.ethz.sis.logging.LogManager; -import ch.ethz.sis.logging.Logger; - -import java.sql.*; -import java.util.Date; -import java.util.*; - -public class SQLExecutor -{ - - private static Logger logger = LogManager.getLogger(SQLExecutor.class); - - private static final Map<Class<?>, String> TYPE_CONVERSION_MAP = new HashMap<>(); - - static - { - TYPE_CONVERSION_MAP.put(Boolean.class, "boolean"); - - TYPE_CONVERSION_MAP.put(Character.class, "character"); - TYPE_CONVERSION_MAP.put(String.class, "varchar"); - - TYPE_CONVERSION_MAP.put(Double.class, "float8"); - TYPE_CONVERSION_MAP.put(Float.class, "float4"); - - TYPE_CONVERSION_MAP.put(Long.class, "int8"); - TYPE_CONVERSION_MAP.put(Integer.class, "int4"); - TYPE_CONVERSION_MAP.put(Short.class, "int2"); - TYPE_CONVERSION_MAP.put(Byte.class, "int2"); - } - - public static int executeUpdate( - final Connection connection, - final String sqlUpdate, - final List<List<Object>> parametersBatch) { - logger.info("QUERY: " + sqlUpdate); - - int results = 0; - try (final PreparedStatement preparedStatement = connection.prepareStatement(sqlUpdate)) - { - for (List<Object> parameters : parametersBatch) { - setArgsForPreparedStatement(parameters, preparedStatement); - preparedStatement.addBatch(); - int[] batchResults = preparedStatement.executeBatch(); - for (int result : batchResults) { - results += result; - } - } - } catch (SQLException ex) - { - throw new RuntimeException(ex); - } - logger.info("RESULTS COUNT: " + results); - return results; - } - - public static List<Map<String, Object>> executeQuery(final Connection connection, final String sqlQuery, final List<Object> parameters) { - - logger.info("QUERY: " + sqlQuery); - - final List<Map<String, Object>> results = new ArrayList<>(); - try (final PreparedStatement preparedStatement = connection.prepareStatement(sqlQuery)) - { - setArgsForPreparedStatement(parameters, preparedStatement); - - try (final ResultSet resultSet = preparedStatement.executeQuery()) - { - final ResultSetMetaData resultSetMetaData = resultSet.getMetaData(); - final int columnCount = resultSetMetaData.getColumnCount(); - final List<String> columnNames = new ArrayList<>(columnCount); - for (int index = 0; index < columnCount; index++) - { - columnNames.add(resultSetMetaData.getColumnName(index + 1)); - } - - while (resultSet.next()) - { - final Map<String, Object> row = new HashMap<>(); - for (final String columnName : columnNames) - { - row.put(columnName, resultSet.getObject(columnName)); - } - results.add(row); - } - } - } catch (SQLException ex) - { - throw new RuntimeException(ex); - } - - logger.info("RESULTS COUNT: " + results.size()); - return results; - } - - private static void setArgsForPreparedStatement(final List<Object> args, final PreparedStatement preparedStatement) throws SQLException - { - for (int index = 0; index < args.size(); index++) - { - final Object object = args.get(index); - if (object != null && object.getClass().isArray()) - { - final Object[] objectArray = (Object[]) object; - final Class<?> arrayObjectType = object.getClass().getComponentType(); - final String psqlType = TYPE_CONVERSION_MAP.get(arrayObjectType); - - if (psqlType == null) - { - throw new IllegalArgumentException("JDBCSQLExecutor don't support arrays of type: " + object.getClass().getName() - + " - With elements of type: " + arrayObjectType.getName() + " - Data: " + Arrays.toString(objectArray)); - } - - preparedStatement.setArray(index + 1, preparedStatement.getConnection().createArrayOf(psqlType, objectArray)); - } else if (object instanceof Date) - { - final Date date = (Date) object; - preparedStatement.setTimestamp(index + 1, new Timestamp(date.getTime())); - } else if (object instanceof Calendar) - { - final Calendar calendar = (Calendar) object; - preparedStatement.setTimestamp(index + 1, new Timestamp(calendar.getTimeInMillis()), calendar); - } else - { - preparedStatement.setObject(index + 1, object); - } - } - } - -} diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/jdbc/SQLQueries.java b/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/jdbc/SQLQueries.java deleted file mode 100644 index 34e353a7673..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/impl/jdbc/SQLQueries.java +++ /dev/null @@ -1,231 +0,0 @@ -package ch.ethz.sis.benchmark.impl.jdbc; - -import java.sql.Connection; -import java.util.*; - -public class SQLQueries { - - // - // Help Query methods - // - - public static Map<String, Long> getIds(Connection connection, String QUERY, Collection<String> codes) { - Map<String, Long> idsByCode = new HashMap<>(); - - ArrayList arg = new ArrayList(); - arg.add(codes.toArray(new String[0])); - - List<Map<String, Object>> idsWithCodes = SQLExecutor.executeQuery(connection, QUERY, arg); - for (Map<String, Object> idsWithCode:idsWithCodes) { - idsByCode.put((String) idsWithCode.get("code"), (Long) idsWithCode.get("id")); - } - - return idsByCode; - } - - // - // Query methods - // - - private static final String SELECT_SPACES = "SELECT id, code FROM spaces WHERE code IN(SELECT * FROM unnest(?))"; - - public static Map<String, Long> getSpaceIds(Connection connection, Collection<String> spaceCodes) { - return getIds(connection, SELECT_SPACES, spaceCodes); - } - - private static final String SELECT_PROJECTS = "SELECT id, code, space_id FROM projects WHERE FALSE"; - - public static Map<String, Long> getProjectIds(Connection connection, Collection<String> projectIdentifiers, Map<String, Long> spaceIdsByCode) { - Map<Long, String> spaceCodeByIds = revertMap(spaceIdsByCode); - Map<String, Long> projectIdsByIdentifier = new HashMap<>(); - - StringBuilder SELECT_PROJECTS_WITH_ORS = new StringBuilder(SELECT_PROJECTS); - for (String projectIdentifier:projectIdentifiers) { - Long space_id = spaceIdsByCode.get(projectIdentifier.split("/")[1]); - String code = projectIdentifier.split("/")[2]; - SELECT_PROJECTS_WITH_ORS.append(" OR space_id = " + space_id + " AND code = '" + code + "'"); - } - List<Map<String, Object>> projectIdsWithCodes = SQLExecutor.executeQuery(connection, SELECT_PROJECTS_WITH_ORS.toString(), Arrays.asList()); - for (Map<String, Object> projectIdsWithCode:projectIdsWithCodes) { - projectIdsByIdentifier.put("/" + spaceCodeByIds.get(projectIdsWithCode.get("space_id")) + "/" + projectIdsWithCode.get("code"), (Long) projectIdsWithCode.get("id")); - } - - return projectIdsByIdentifier; - } - - private static final String SELECT_EXPERIMENTS = "SELECT id, code, proj_id FROM experiments_all WHERE FALSE"; - - public static Map<String, Long> getExperimentIds(Connection connection, Collection<String> experimentIdentifiers, Map<String, Long> projectIdsByIdentifier) { - Map<Long, String> projectIdentifiersByIds = revertMap(projectIdsByIdentifier); - Map<String, Long> experimentIdsByIdentifier = new HashMap<>(); - - StringBuilder SELECT_EXPERIMENTS_WITH_ORS = new StringBuilder(SELECT_EXPERIMENTS); - for (String experimentIdentifier:experimentIdentifiers) { - String projectIdentifier = "/" + experimentIdentifier.split("/")[1] + "/" + experimentIdentifier.split("/")[2]; - Long proj_id = projectIdsByIdentifier.get(projectIdentifier); - String code = experimentIdentifier.split("/")[3]; - SELECT_EXPERIMENTS_WITH_ORS.append(" OR (proj_id = " + proj_id + " AND code = '" + code + "')"); - } - List<Map<String, Object>> experimentIdsWithCodes = SQLExecutor.executeQuery(connection, SELECT_EXPERIMENTS_WITH_ORS.toString(), Arrays.asList()); - for (Map<String, Object> experimentIdsWithCode:experimentIdsWithCodes) { - experimentIdsByIdentifier.put(projectIdentifiersByIds.get(experimentIdsWithCode.get("proj_id")) + "/" + experimentIdsWithCode.get("code"), (Long) experimentIdsWithCode.get("id")); - } - - return experimentIdsByIdentifier; - } - - private static final String SELECT_TYPES = "SELECT id, code FROM sample_types WHERE code IN(SELECT * FROM unnest(?))"; - - public static Map<String, Long> getTypeIds(Connection connection, Collection<String> sampleTypeCodes) { - return getIds(connection, SELECT_TYPES, sampleTypeCodes); - } - - private static final String SELECT_PROPERTY_TYPES = "SELECT id, code FROM property_types WHERE code IN(SELECT * FROM unnest(?))"; - - public static Map<String, Long> getPropertyTypeIds(Connection connection, Collection<String> propertyTypeCodes) { - return getIds(connection, SELECT_PROPERTY_TYPES, propertyTypeCodes); - } - - private static final String SELECT_PERSON = "SELECT id FROM persons WHERE user_id = ?"; - - public static Long getPersonId(Connection connection, String user_id) { - Map<String, Object> personId = SQLExecutor.executeQuery(connection, SELECT_PERSON, Arrays.asList(user_id)).get(0); - return (Long) personId.get("id"); - } - -// /* -// * samples_all table has several CONSTRAINTS that get executed on INSERT that chain more inserts that ara impossible due to a missing FK -// * Because of that, all this contraints are actually doing nothing more than forcing the system to first insert the row and then do an update -// * -// * Example: -// * INSERT INTO samples_all(id, perm_id, code, proj_id, expe_id, saty_id, registration_timestamp, modification_timestamp, pers_id_registerer, pers_id_modifier, space_id) VALUES(nextval('sample_id_seq'), 'fd4e9cec-ed92-455a-accd-8ff41ed83c6b', 'SAMPLE_lcd_nascar_adams', 17, 17, 2, NOW(), NOW(), 2, 2, 14) was aborted: ERROR: insert or update on table "experiment_relationships_history" violates foreign key constraint "exrelh_samp_fk" -// * Detail: Key (samp_id)=(6) is not present in table "samples_all". Call getNextException to see other errors in the batch. -// */ -// -// private static final String SAMPLE_INITIAL_INSERT = "INSERT INTO samples_all(id, perm_id, code, saty_id, registration_timestamp, modification_timestamp, pers_id_registerer, pers_id_modifier) VALUES(?, ?, ?, ?, NOW(), NOW(), ?, ?)"; -// -// private static final String SAMPLE_UPDATE_INSERT = "UPDATE samples_all SET proj_id = ?, expe_id = ?, space_id = ? WHERE id = ?"; -// -// // private static final String SAMPLE_INSERT = "INSERT INTO samples_all(id, perm_id, code, proj_id, expe_id, saty_id, registration_timestamp, modification_timestamp, pers_id_registerer, pers_id_modifier, space_id) VALUES(?, ?, ?, ?, ?, ?, NOW(), NOW(), ?, ?, ?)"; -// -// public static int insertSamplesOLD(Connection connection, List<List<Object>> samplesInsertArgs) { -// List<List<Object>> SAMPLE_INITIAL_INSERT_ARGS = new ArrayList<>(); -// List<List<Object>> SAMPLE_UPDATE_INSERT_ARGS = new ArrayList<>(); -// -// // perm_id, code, proj_id, expe_id, saty_id, pers_id_registerer, pers_id_modifier, space_id -// for (List<Object> sampleInsertArgs:samplesInsertArgs) { -// // perm_id, code, saty_id, pers_id_registerer, pers_id_modifier -// List<Object> SAMPLE_INITIAL_INSERT_ARG = new ArrayList<>(); -// SAMPLE_INITIAL_INSERT_ARG.add(sampleInsertArgs.get(0)); -// SAMPLE_INITIAL_INSERT_ARG.add(sampleInsertArgs.get(1)); -// SAMPLE_INITIAL_INSERT_ARG.add(sampleInsertArgs.get(2)); -// SAMPLE_INITIAL_INSERT_ARG.add(sampleInsertArgs.get(5)); -// SAMPLE_INITIAL_INSERT_ARG.add(sampleInsertArgs.get(6)); -// SAMPLE_INITIAL_INSERT_ARG.add(sampleInsertArgs.get(7)); -// SAMPLE_INITIAL_INSERT_ARGS.add(SAMPLE_INITIAL_INSERT_ARG); -// -// // proj_id = ?, expe_id, = ?, space_id = ? WHERE permId = ? -// List<Object> SAMPLE_UPDATE_INSERT_ARG = new ArrayList<>(); -// SAMPLE_UPDATE_INSERT_ARG.add(sampleInsertArgs.get(3)); -// SAMPLE_UPDATE_INSERT_ARG.add(sampleInsertArgs.get(4)); -// SAMPLE_UPDATE_INSERT_ARG.add(sampleInsertArgs.get(8)); -// SAMPLE_UPDATE_INSERT_ARG.add(sampleInsertArgs.get(0)); -// SAMPLE_UPDATE_INSERT_ARGS.add(SAMPLE_UPDATE_INSERT_ARG); -// } -// try { -// connection.setAutoCommit(false); -// SQLExecutor.executeUpdate(connection, SAMPLE_INITIAL_INSERT, SAMPLE_INITIAL_INSERT_ARGS); -// SQLExecutor.executeUpdate(connection, SAMPLE_UPDATE_INSERT, SAMPLE_UPDATE_INSERT_ARGS); -// connection.commit(); -// } catch (Exception ex) { -// try { -// connection.rollback(); -// } catch (Exception ex2) {} -// } finally { -// try { -// connection.setAutoCommit(true); -// } catch (Exception ex3) {} -// } -// -// return samplesInsertArgs.size(); -// } - - private static final String SAMPLE_INSERT_HIBERNATE = "insert into samples (code, samp_id_part_of, cont_frozen, del_id, expe_frozen, expe_id, frozen, frozen_for_children, frozen_for_comp, frozen_for_data, frozen_for_parents, modification_timestamp, pers_id_modifier, orig_del, perm_id, proj_id, proj_frozen, pers_id_registerer, saty_id, space_id, space_frozen, version, id) values (?, NULL, FALSE, NULL, FALSE, ?, FALSE, FALSE, FALSE, FALSE, FALSE, NOW(), ?, NULL, ?, ?, FALSE, ?, ?, ?, FALSE, 1, ?)"; - - // code, expe_id, pers_id_modifier, perm_id, proj_id, pers_id_registerer, saty_id, space_id, version, id - - public static int insertSamples(Connection connection, List<List<Object>> samplesInsertArgs) { - List<List<Object>> SAMPLE_HIBERNATE_INSERT_ARGS = new ArrayList<>(); - for (List<Object> sampleInsertArgs:samplesInsertArgs) { - List<Object> SAMPLE_HIBERNATE_INSERT_ARG = new ArrayList<>(); - SAMPLE_HIBERNATE_INSERT_ARG.add(sampleInsertArgs.get(2)); - SAMPLE_HIBERNATE_INSERT_ARG.add(sampleInsertArgs.get(4)); - SAMPLE_HIBERNATE_INSERT_ARG.add(sampleInsertArgs.get(6)); - SAMPLE_HIBERNATE_INSERT_ARG.add(sampleInsertArgs.get(1)); - SAMPLE_HIBERNATE_INSERT_ARG.add(sampleInsertArgs.get(3)); - SAMPLE_HIBERNATE_INSERT_ARG.add(sampleInsertArgs.get(6)); - SAMPLE_HIBERNATE_INSERT_ARG.add(sampleInsertArgs.get(5)); - SAMPLE_HIBERNATE_INSERT_ARG.add(sampleInsertArgs.get(8)); - SAMPLE_HIBERNATE_INSERT_ARG.add(sampleInsertArgs.get(0)); - SAMPLE_HIBERNATE_INSERT_ARGS.add(SAMPLE_HIBERNATE_INSERT_ARG); - } - SQLExecutor.executeUpdate(connection, SAMPLE_INSERT_HIBERNATE, SAMPLE_HIBERNATE_INSERT_ARGS); - - return samplesInsertArgs.size(); - } - - private static final String NEXT_SAMPLE_IDS = "SELECT setval('sample_id_seq', nextval('sample_id_seq') + 5000, true)"; - - public static List<Long> nextSampleIds(Connection connection, int number) { - List<Map<String, Object>> lastRes = SQLExecutor.executeQuery(connection, NEXT_SAMPLE_IDS, Arrays.asList()); - long last = (Long) lastRes.get(0).get("setval"); - long first = last - number; - List<Long> results = new ArrayList<>(number); - for (int i = 0; i < number; i++) { - results.add(first + 1 + i); - } - return results; - } - - private static final String SELECT_STPT = "SELECT id, saty_id, prty_id FROM sample_type_property_types WHERE FALSE"; - - public static Map<String, Long> getSampleTypePropertyTypeIds(Connection connection, Collection<String> sampleType_propertyTypes) { - Map<String, Long> sampleTypePropertyTypeIdsByIdentifier = new HashMap<>(); - - StringBuilder SELECT_STPT_WITH_ORS = new StringBuilder(SELECT_STPT); - for (String sampleType_propertyType:sampleType_propertyTypes) { - SELECT_STPT_WITH_ORS.append(" OR (saty_id = " + sampleType_propertyType.split(":")[0] + " AND prty_id = " + sampleType_propertyType.split(":")[1] + ")"); - } - - List<Map<String, Object>> sampleTypePropertyTypeIdsWithReferences = SQLExecutor.executeQuery(connection, SELECT_STPT_WITH_ORS.toString(), Arrays.asList()); - for (Map<String, Object> sampleTypePropertyTypeIdsWithReference:sampleTypePropertyTypeIdsWithReferences) { - sampleTypePropertyTypeIdsByIdentifier.put( - sampleTypePropertyTypeIdsWithReference.get("saty_id") + ":" + sampleTypePropertyTypeIdsWithReference.get("prty_id") - , - (Long) sampleTypePropertyTypeIdsWithReference.get("id") - ); - } - - return sampleTypePropertyTypeIdsByIdentifier; - } - - private static final String SAMPLE_PROPERTIES_INSERT = "INSERT INTO sample_properties(id, samp_id, stpt_id, value, registration_timestamp, modification_timestamp, pers_id_registerer, pers_id_author) VALUES(nextval('sample_property_id_seq'), ?, ?, ?, NOW(), NOW(), ?, ?)"; - - public static int insertSamplesProperties(Connection connection, List<List<Object>> samplesPropertiesArgs) { - SQLExecutor.executeUpdate(connection, SAMPLE_PROPERTIES_INSERT, samplesPropertiesArgs); - return samplesPropertiesArgs.size(); - } - - // - // Utility methods - // - - private static <VALUE, KEY> Map<VALUE,KEY> revertMap(Map<KEY, VALUE> map) { - Map<VALUE, KEY> rMap = new HashMap<>(map.size()); - for (KEY key:map.keySet()) { - rMap.put(map.get(key), key); - } - return rMap; - } - -} diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/util/RandomValueGenerator.java b/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/util/RandomValueGenerator.java deleted file mode 100644 index b1b2bb5d95d..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/util/RandomValueGenerator.java +++ /dev/null @@ -1,36 +0,0 @@ -package ch.ethz.sis.benchmark.util; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ThreadLocalRandom; - -public class RandomValueGenerator<V> { - public List<V> valuesAsList = new ArrayList<>(); - public Set<V> valuesAsMap = Collections.newSetFromMap(new ConcurrentHashMap<>()); - - public synchronized void add(V value) { - if(!valuesAsMap.contains(value)) { - valuesAsMap.add(value); - valuesAsList.add(value); - } - } - - public synchronized void addAll(Collection<V> values) { - for(V value:values) { - add(value); - } - } - - public synchronized boolean contains(V value) { - return valuesAsMap.contains(value); - } - - public synchronized V getRandom() { - return valuesAsList.get(ThreadLocalRandom.current().nextInt(0, valuesAsList.size())); - } - -} diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/util/RandomWord.java b/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/util/RandomWord.java deleted file mode 100644 index 007b8911e77..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/util/RandomWord.java +++ /dev/null @@ -1,30 +0,0 @@ -package ch.ethz.sis.benchmark.util; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; - -public class RandomWord { - - private static final RandomValueGenerator<String> words = new RandomValueGenerator<>(); - - static { - InputStream in = RandomWord.class.getResourceAsStream("google-10000-english.txt"); - BufferedReader reader = new BufferedReader(new InputStreamReader(in)); - String line = null; - try { - while((line = reader.readLine()) != null) { - words.add(line); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - private RandomWord() {} - - public static String getRandomWord() { - return words.getRandom(); - } -} diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/util/google-10000-english.txt b/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/util/google-10000-english.txt deleted file mode 100644 index 3164d7bf96a..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/benchmark/util/google-10000-english.txt +++ /dev/null @@ -1,10000 +0,0 @@ -the -of -and -to -a -in -for -is -on -that -by -this -with -i -you -it -not -or -be -are -from -at -as -your -all -have -new -more -an -was -we -will -home -can -us -about -if -page -my -has -search -free -but -our -one -other -do -no -information -time -they -site -he -up -may -what -which -their -news -out -use -any -there -see -only -so -his -when -contact -here -business -who -web -also -now -help -get -pm -view -online -c -e -first -am -been -would -how -were -me -s -services -some -these -click -its -like -service -x -than -find -price -date -back -top -people -had -list -name -just -over -state -year -day -into -email -two -health -n -world -re -next -used -go -b -work -last -most -products -music -buy -data -make -them -should -product -system -post -her -city -t -add -policy -number -such -please -available -copyright -support -message -after -best -software -then -jan -good -video -well -d -where -info -rights -public -books -high -school -through -m -each -links -she -review -years -order -very -privacy -book -items -company -r -read -group -sex -need -many -user -said -de -does -set -under -general -research -university -january -mail -full -map -reviews -program -life -know -games -way -days -management -p -part -could -great -united -hotel -real -f -item -international -center -ebay -must -store -travel -comments -made -development -report -off -member -details -line -terms -before -hotels -did -send -right -type -because -local -those -using -results -office -education -national -car -design -take -posted -internet -address -community -within -states -area -want -phone -dvd -shipping -reserved -subject -between -forum -family -l -long -based -w -code -show -o -even -black -check -special -prices -website -index -being -women -much -sign -file -link -open -today -technology -south -case -project -same -pages -uk -version -section -own -found -sports -house -related -security -both -g -county -american -photo -game -members -power -while -care -network -down -computer -systems -three -total -place -end -following -download -h -him -without -per -access -think -north -resources -current -posts -big -media -law -control -water -history -pictures -size -art -personal -since -including -guide -shop -directory -board -location -change -white -text -small -rating -rate -government -children -during -usa -return -students -v -shopping -account -times -sites -level -digital -profile -previous -form -events -love -old -john -main -call -hours -image -department -title -description -non -k -y -insurance -another -why -shall -property -class -cd -still -money -quality -every -listing -content -country -private -little -visit -save -tools -low -reply -customer -december -compare -movies -include -college -value -article -york -man -card -jobs -provide -j -food -source -author -different -press -u -learn -sale -around -print -course -job -canada -process -teen -room -stock -training -too -credit -point -join -science -men -categories -advanced -west -sales -look -english -left -team -estate -box -conditions -select -windows -photos -gay -thread -week -category -note -live -large -gallery -table -register -however -june -october -november -market -library -really -action -start -series -model -features -air -industry -plan -human -provided -tv -yes -required -second -hot -accessories -cost -movie -forums -march -la -september -better -say -questions -july -yahoo -going -medical -test -friend -come -dec -server -pc -study -application -cart -staff -articles -san -feedback -again -play -looking -issues -april -never -users -complete -street -topic -comment -financial -things -working -against -standard -tax -person -below -mobile -less -got -blog -party -payment -equipment -login -student -let -programs -offers -legal -above -recent -park -stores -side -act -problem -red -give -memory -performance -social -q -august -quote -language -story -sell -options -experience -rates -create -key -body -young -america -important -field -few -east -paper -single -ii -age -activities -club -example -girls -additional -password -z -latest -something -road -gift -question -changes -night -ca -hard -texas -oct -pay -four -poker -status -browse -issue -range -building -seller -court -february -always -result -audio -light -write -war -nov -offer -blue -groups -al -easy -given -files -event -release -analysis -request -fax -china -making -picture -needs -possible -might -professional -yet -month -major -star -areas -future -space -committee -hand -sun -cards -problems -london -washington -meeting -rss -become -interest -id -child -keep -enter -california -porn -share -similar -garden -schools -million -added -reference -companies -listed -baby -learning -energy -run -delivery -net -popular -term -film -stories -put -computers -journal -reports -co -try -welcome -central -images -president -notice -god -original -head -radio -until -cell -color -self -council -away -includes -track -australia -discussion -archive -once -others -entertainment -agreement -format -least -society -months -log -safety -friends -sure -faq -trade -edition -cars -messages -marketing -tell -further -updated -association -able -having -provides -david -fun -already -green -studies -close -common -drive -specific -several -gold -feb -living -sep -collection -called -short -arts -lot -ask -display -limited -powered -solutions -means -director -daily -beach -past -natural -whether -due -et -electronics -five -upon -period -planning -database -says -official -weather -mar -land -average -done -technical -window -france -pro -region -island -record -direct -microsoft -conference -environment -records -st -district -calendar -costs -style -url -front -statement -update -parts -aug -ever -downloads -early -miles -sound -resource -present -applications -either -ago -document -word -works -material -bill -apr -written -talk -federal -hosting -rules -final -adult -tickets -thing -centre -requirements -via -cheap -nude -kids -finance -true -minutes -else -mark -third -rock -gifts -europe -reading -topics -bad -individual -tips -plus -auto -cover -usually -edit -together -videos -percent -fast -function -fact -unit -getting -global -tech -meet -far -economic -en -player -projects -lyrics -often -subscribe -submit -germany -amount -watch -included -feel -though -bank -risk -thanks -everything -deals -various -words -linux -jul -production -commercial -james -weight -town -heart -advertising -received -choose -treatment -newsletter -archives -points -knowledge -magazine -error -camera -jun -girl -currently -construction -toys -registered -clear -golf -receive -domain -methods -chapter -makes -protection -policies -loan -wide -beauty -manager -india -position -taken -sort -listings -models -michael -known -half -cases -step -engineering -florida -simple -quick -none -wireless -license -paul -friday -lake -whole -annual -published -later -basic -sony -shows -corporate -google -church -method -purchase -customers -active -response -practice -hardware -figure -materials -fire -holiday -chat -enough -designed -along -among -death -writing -speed -html -countries -loss -face -brand -discount -higher -effects -created -remember -standards -oil -bit -yellow -political -increase -advertise -kingdom -base -near -environmental -thought -stuff -french -storage -oh -japan -doing -loans -shoes -entry -stay -nature -orders -availability -africa -summary -turn -mean -growth -notes -agency -king -monday -european -activity -copy -although -drug -pics -western -income -force -cash -employment -overall -bay -river -commission -ad -package -contents -seen -players -engine -port -album -regional -stop -supplies -started -administration -bar -institute -views -plans -double -dog -build -screen -exchange -types -soon -sponsored -lines -electronic -continue -across -benefits -needed -season -apply -someone -held -ny -anything -printer -condition -effective -believe -organization -effect -asked -eur -mind -sunday -selection -casino -pdf -lost -tour -menu -volume -cross -anyone -mortgage -hope -silver -corporation -wish -inside -solution -mature -role -rather -weeks -addition -came -supply -nothing -certain -usr -executive -running -lower -necessary -union -jewelry -according -dc -clothing -mon -com -particular -fine -names -robert -homepage -hour -gas -skills -six -bush -islands -advice -career -military -rental -decision -leave -british -teens -pre -huge -sat -woman -facilities -zip -bid -kind -sellers -middle -move -cable -opportunities -taking -values -division -coming -tuesday -object -lesbian -appropriate -machine -logo -length -actually -nice -score -statistics -client -ok -returns -capital -follow -sample -investment -sent -shown -saturday -christmas -england -culture -band -flash -ms -lead -george -choice -went -starting -registration -fri -thursday -courses -consumer -hi -airport -foreign -artist -outside -furniture -levels -channel -letter -mode -phones -ideas -wednesday -structure -fund -summer -allow -degree -contract -button -releases -wed -homes -super -male -matter -custom -virginia -almost -took -located -multiple -asian -distribution -editor -inn -industrial -cause -potential -song -cnet -ltd -los -hp -focus -late -fall -featured -idea -rooms -female -responsible -inc -communications -win -associated -thomas -primary -cancer -numbers -reason -tool -browser -spring -foundation -answer -voice -eg -friendly -schedule -documents -communication -purpose -feature -bed -comes -police -everyone -independent -ip -approach -cameras -brown -physical -operating -hill -maps -medicine -deal -hold -ratings -chicago -forms -glass -happy -tue -smith -wanted -developed -thank -safe -unique -survey -prior -telephone -sport -ready -feed -animal -sources -mexico -population -pa -regular -secure -navigation -operations -therefore -ass -simply -evidence -station -christian -round -paypal -favorite -understand -option -master -valley -recently -probably -thu -rentals -sea -built -publications -blood -cut -worldwide -improve -connection -publisher -hall -larger -anti -networks -earth -parents -nokia -impact -transfer -introduction -kitchen -strong -tel -carolina -wedding -properties -hospital -ground -overview -ship -accommodation -owners -disease -tx -excellent -paid -italy -perfect -hair -opportunity -kit -classic -basis -command -cities -william -express -anal -award -distance -tree -peter -assessment -ensure -thus -wall -ie -involved -el -extra -especially -interface -pussy -partners -budget -rated -guides -success -maximum -ma -operation -existing -quite -selected -boy -amazon -patients -restaurants -beautiful -warning -wine -locations -horse -vote -forward -flowers -stars -significant -lists -technologies -owner -retail -animals -useful -directly -manufacturer -ways -est -son -providing -rule -mac -housing -takes -iii -gmt -bring -catalog -searches -max -trying -mother -authority -considered -told -xml -traffic -programme -joined -input -strategy -feet -agent -valid -bin -modern -senior -ireland -sexy -teaching -door -grand -testing -trial -charge -units -instead -canadian -cool -normal -wrote -enterprise -ships -entire -educational -md -leading -metal -positive -fl -fitness -chinese -opinion -mb -asia -football -abstract -uses -output -funds -mr -greater -likely -develop -employees -artists -alternative -processing -responsibility -resolution -java -guest -seems -publication -pass -relations -trust -van -contains -session -multi -photography -republic -fees -components -vacation -century -academic -assistance -completed -skin -graphics -indian -prev -ads -mary -il -expected -ring -grade -dating -pacific -mountain -organizations -pop -filter -mailing -vehicle -longer -consider -int -northern -behind -panel -floor -german -buying -match -proposed -default -require -iraq -boys -outdoor -deep -morning -otherwise -allows -rest -protein -plant -reported -hit -transportation -mm -pool -mini -politics -partner -disclaimer -authors -boards -faculty -parties -fish -membership -mission -eye -string -sense -modified -pack -released -stage -internal -goods -recommended -born -unless -richard -detailed -japanese -race -approved -background -target -except -character -usb -maintenance -ability -maybe -functions -ed -moving -brands -places -php -pretty -trademarks -phentermine -spain -southern -yourself -etc -winter -rape -battery -youth -pressure -submitted -boston -incest -debt -keywords -medium -television -interested -core -break -purposes -throughout -sets -dance -wood -msn -itself -defined -papers -playing -awards -fee -studio -reader -virtual -device -established -answers -rent -las -remote -dark -programming -external -apple -le -regarding -instructions -min -offered -theory -enjoy -remove -aid -surface -minimum -visual -host -variety -teachers -isbn -martin -manual -block -subjects -agents -increased -repair -fair -civil -steel -understanding -songs -fixed -wrong -beginning -hands -associates -finally -az -updates -desktop -classes -paris -ohio -gets -sector -capacity -requires -jersey -un -fat -fully -father -electric -saw -instruments -quotes -officer -driver -businesses -dead -respect -unknown -specified -restaurant -mike -trip -pst -worth -mi -procedures -poor -teacher -xxx -eyes -relationship -workers -farm -fucking -georgia -peace -traditional -campus -tom -showing -creative -coast -benefit -progress -funding -devices -lord -grant -sub -agree -fiction -hear -sometimes -watches -careers -beyond -goes -families -led -museum -themselves -fan -transport -interesting -blogs -wife -evaluation -accepted -former -implementation -ten -hits -zone -complex -th -cat -galleries -references -die -presented -jack -flat -flow -agencies -literature -respective -parent -spanish -michigan -columbia -setting -dr -scale -stand -economy -highest -helpful -monthly -critical -frame -musical -definition -secretary -angeles -networking -path -australian -employee -chief -gives -kb -bottom -magazines -packages -detail -francisco -laws -changed -pet -heard -begin -individuals -colorado -royal -clean -switch -russian -largest -african -guy -titles -relevant -guidelines -justice -connect -bible -dev -cup -basket -applied -weekly -vol -installation -described -demand -pp -suite -vegas -na -square -chris -attention -advance -skip -diet -army -auction -gear -lee -os -difference -allowed -correct -charles -nation -selling -lots -piece -sheet -firm -seven -older -illinois -regulations -elements -species -jump -cells -module -resort -facility -random -pricing -dvds -certificate -minister -motion -looks -fashion -directions -visitors -documentation -monitor -trading -forest -calls -whose -coverage -couple -giving -chance -vision -ball -ending -clients -actions -listen -discuss -accept -automotive -naked -goal -successful -sold -wind -communities -clinical -situation -sciences -markets -lowest -highly -publishing -appear -emergency -developing -lives -currency -leather -determine -milf -temperature -palm -announcements -patient -actual -historical -stone -bob -commerce -ringtones -perhaps -persons -difficult -scientific -satellite -fit -tests -village -accounts -amateur -ex -met -pain -xbox -particularly -factors -coffee -www -settings -cum -buyer -cultural -steve -easily -oral -ford -poster -edge -functional -root -au -fi -closed -holidays -ice -pink -zealand -balance -monitoring -graduate -replies -shot -nc -architecture -initial -label -thinking -scott -llc -sec -recommend -canon -hardcore -league -waste -minute -bus -provider -optional -dictionary -cold -accounting -manufacturing -sections -chair -fishing -effort -phase -fields -bag -fantasy -po -letters -motor -va -professor -context -install -shirt -apparel -generally -continued -foot -mass -crime -count -breast -techniques -ibm -rd -johnson -sc -quickly -dollars -websites -religion -claim -driving -permission -surgery -patch -heat -wild -measures -generation -kansas -miss -chemical -doctor -task -reduce -brought -himself -nor -component -enable -exercise -bug -santa -mid -guarantee -leader -diamond -israel -se -processes -soft -servers -alone -meetings -seconds -jones -arizona -keyword -interests -flight -congress -fuel -username -walk -fuck -produced -italian -paperback -classifieds -wait -supported -pocket -saint -rose -freedom -argument -competition -creating -jim -drugs -joint -premium -providers -fresh -characters -attorney -upgrade -di -factor -growing -thousands -km -stream -apartments -pick -hearing -eastern -auctions -therapy -entries -dates -generated -signed -upper -administrative -serious -prime -samsung -limit -began -louis -steps -errors -shops -bondage -del -efforts -informed -ga -ac -thoughts -creek -ft -worked -quantity -urban -practices -sorted -reporting -essential -myself -tours -platform -load -affiliate -labor -immediately -admin -nursing -defense -machines -designated -tags -heavy -covered -recovery -joe -guys -integrated -configuration -cock -merchant -comprehensive -expert -universal -protect -drop -solid -cds -presentation -languages -became -orange -compliance -vehicles -prevent -theme -rich -im -campaign -marine -improvement -vs -guitar -finding -pennsylvania -examples -ipod -saying -spirit -ar -claims -porno -challenge -motorola -acceptance -strategies -mo -seem -affairs -touch -intended -towards -sa -goals -hire -election -suggest -branch -charges -serve -affiliates -reasons -magic -mount -smart -talking -gave -ones -latin -multimedia -xp -tits -avoid -certified -manage -corner -rank -computing -oregon -element -birth -virus -abuse -interactive -requests -separate -quarter -procedure -leadership -tables -define -racing -religious -facts -breakfast -kong -column -plants -faith -chain -developer -identify -avenue -missing -died -approximately -domestic -sitemap -recommendations -moved -houston -reach -comparison -mental -viewed -moment -extended -sequence -inch -attack -sorry -centers -opening -damage -lab -reserve -recipes -cvs -gamma -plastic -produce -snow -placed -truth -counter -failure -follows -eu -weekend -dollar -camp -ontario -automatically -des -minnesota -films -bridge -native -fill -williams -movement -printing -baseball -owned -approval -draft -chart -played -contacts -cc -jesus -readers -clubs -lcd -wa -jackson -equal -adventure -matching -offering -shirts -profit -leaders -posters -institutions -assistant -variable -ave -dj -advertisement -expect -parking -headlines -yesterday -compared -determined -wholesale -workshop -russia -gone -codes -kinds -extension -seattle -statements -golden -completely -teams -fort -cm -wi -lighting -senate -forces -funny -brother -gene -turned -portable -tried -electrical -applicable -disc -returned -pattern -ct -hentai -boat -named -theatre -laser -earlier -manufacturers -sponsor -classical -icon -warranty -dedicated -indiana -direction -harry -basketball -objects -ends -delete -evening -assembly -nuclear -taxes -mouse -signal -criminal -issued -brain -sexual -wisconsin -powerful -dream -obtained -false -da -cast -flower -felt -personnel -passed -supplied -identified -falls -pic -soul -aids -opinions -promote -stated -stats -hawaii -professionals -appears -carry -flag -decided -nj -covers -hr -em -advantage -hello -designs -maintain -tourism -priority -newsletters -adults -clips -savings -iv -graphic -atom -payments -rw -estimated -binding -brief -ended -winning -eight -anonymous -iron -straight -script -served -wants -miscellaneous -prepared -void -dining -alert -integration -atlanta -dakota -tag -interview -mix -framework -disk -installed -queen -vhs -credits -clearly -fix -handle -sweet -desk -criteria -pubmed -dave -massachusetts -diego -hong -vice -associate -ne -truck -behavior -enlarge -ray -frequently -revenue -measure -changing -votes -du -duty -looked -discussions -bear -gain -festival -laboratory -ocean -flights -experts -signs -lack -depth -iowa -whatever -logged -laptop -vintage -train -exactly -dry -explore -maryland -spa -concept -nearly -eligible -checkout -reality -forgot -handling -origin -knew -gaming -feeds -billion -destination -scotland -faster -intelligence -dallas -bought -con -ups -nations -route -followed -specifications -broken -tripadvisor -frank -alaska -zoom -blow -battle -residential -anime -speak -decisions -industries -protocol -query -clip -partnership -editorial -nt -expression -es -equity -provisions -speech -wire -principles -suggestions -rural -shared -sounds -replacement -tape -strategic -judge -spam -economics -acid -bytes -cent -forced -compatible -fight -apartment -height -null -zero -speaker -filed -gb -netherlands -obtain -bc -consulting -recreation -offices -designer -remain -managed -pr -failed -marriage -roll -korea -banks -fr -participants -secret -bath -aa -kelly -leads -negative -austin -favorites -toronto -theater -springs -missouri -andrew -var -perform -healthy -translation -estimates -font -assets -injury -mt -joseph -ministry -drivers -lawyer -figures -married -protected -proposal -sharing -philadelphia -portal -waiting -birthday -beta -fail -gratis -banking -officials -brian -toward -won -slightly -assist -conduct -contained -lingerie -shemale -legislation -calling -parameters -jazz -serving -bags -profiles -miami -comics -matters -houses -doc -postal -relationships -tennessee -wear -controls -breaking -combined -ultimate -wales -representative -frequency -introduced -minor -finish -departments -residents -noted -displayed -mom -reduced -physics -rare -spent -performed -extreme -samples -davis -daniel -bars -reviewed -row -oz -forecast -removed -helps -singles -administrator -cycle -amounts -contain -accuracy -dual -rise -usd -sleep -mg -bird -pharmacy -brazil -creation -static -scene -hunter -addresses -lady -crystal -famous -writer -chairman -violence -fans -oklahoma -speakers -drink -academy -dynamic -gender -eat -permanent -agriculture -dell -cleaning -constitutes -portfolio -practical -delivered -collectibles -infrastructure -exclusive -seat -concerns -colour -vendor -originally -intel -utilities -philosophy -regulation -officers -reduction -aim -bids -referred -supports -nutrition -recording -regions -junior -toll -les -cape -ann -rings -meaning -tip -secondary -wonderful -mine -ladies -henry -ticket -announced -guess -agreed -prevention -whom -ski -soccer -math -import -posting -presence -instant -mentioned -automatic -healthcare -viewing -maintained -ch -increasing -majority -connected -christ -dan -dogs -sd -directors -aspects -austria -ahead -moon -participation -scheme -utility -preview -fly -manner -matrix -containing -combination -devel -amendment -despite -strength -guaranteed -turkey -libraries -proper -distributed -degrees -singapore -enterprises -delta -fear -seeking -inches -phoenix -rs -convention -shares -principal -daughter -standing -voyeur -comfort -colors -wars -cisco -ordering -kept -alpha -appeal -cruise -bonus -certification -previously -hey -bookmark -buildings -specials -beat -disney -household -batteries -adobe -smoking -bbc -becomes -drives -arms -alabama -tea -improved -trees -avg -achieve -positions -dress -subscription -dealer -contemporary -sky -utah -nearby -rom -carried -happen -exposure -panasonic -hide -permalink -signature -gambling -refer -miller -provision -outdoors -clothes -caused -luxury -babes -frames -viagra -certainly -indeed -newspaper -toy -circuit -layer -printed -slow -removal -easier -src -liability -trademark -hip -printers -faqs -nine -adding -kentucky -mostly -eric -spot -taylor -trackback -prints -spend -factory -interior -revised -grow -americans -optical -promotion -relative -amazing -clock -dot -hiv -identity -suites -conversion -feeling -hidden -reasonable -victoria -serial -relief -revision -broadband -influence -ratio -pda -importance -rain -onto -dsl -planet -webmaster -copies -recipe -zum -permit -seeing -proof -dna -diff -tennis -bass -prescription -bedroom -empty -instance -hole -pets -ride -licensed -orlando -specifically -tim -bureau -maine -sql -represent -conservation -pair -ideal -specs -recorded -don -pieces -finished -parks -dinner -lawyers -sydney -stress -cream -ss -runs -trends -yeah -discover -sexo -ap -patterns -boxes -louisiana -hills -javascript -fourth -nm -advisor -mn -marketplace -nd -evil -aware -wilson -shape -evolution -irish -certificates -objectives -stations -suggested -gps -op -remains -acc -greatest -firms -concerned -euro -operator -structures -generic -encyclopedia -usage -cap -ink -charts -continuing -mixed -census -interracial -peak -tn -competitive -exist -wheel -transit -dick -suppliers -salt -compact -poetry -lights -tracking -angel -bell -keeping -preparation -attempt -receiving -matches -accordance -width -noise -engines -forget -array -discussed -accurate -stephen -elizabeth -climate -reservations -pin -playstation -alcohol -greek -instruction -managing -annotation -sister -raw -differences -walking -explain -smaller -newest -establish -gnu -happened -expressed -jeff -extent -sharp -lesbians -ben -lane -paragraph -kill -mathematics -aol -compensation -ce -export -managers -aircraft -modules -sweden -conflict -conducted -versions -employer -occur -percentage -knows -mississippi -describe -concern -backup -requested -citizens -connecticut -heritage -personals -immediate -holding -trouble -spread -coach -kevin -agricultural -expand -supporting -audience -assigned -jordan -collections -ages -participate -plug -specialist -cook -affect -virgin -experienced -investigation -raised -hat -institution -directed -dealers -searching -sporting -helping -perl -affected -lib -bike -totally -plate -expenses -indicate -blonde -ab -proceedings -favourite -transmission -anderson -utc -characteristics -der -lose -organic -seek -experiences -albums -cheats -extremely -verzeichnis -contracts -guests -hosted -diseases -concerning -developers -equivalent -chemistry -tony -neighborhood -nevada -kits -thailand -variables -agenda -anyway -continues -tracks -advisory -cam -curriculum -logic -template -prince -circle -soil -grants -anywhere -psychology -responses -atlantic -wet -circumstances -edward -investor -identification -ram -leaving -wildlife -appliances -matt -elementary -cooking -speaking -sponsors -fox -unlimited -respond -sizes -plain -exit -entered -iran -arm -keys -launch -wave -checking -costa -belgium -printable -holy -acts -guidance -mesh -trail -enforcement -symbol -crafts -highway -buddy -hardcover -observed -dean -setup -poll -booking -glossary -fiscal -celebrity -styles -denver -unix -filled -bond -channels -ericsson -appendix -notify -blues -chocolate -pub -portion -scope -hampshire -supplier -cables -cotton -bluetooth -controlled -requirement -authorities -biology -dental -killed -border -ancient -debate -representatives -starts -pregnancy -causes -arkansas -biography -leisure -attractions -learned -transactions -notebook -explorer -historic -attached -opened -tm -husband -disabled -authorized -crazy -upcoming -britain -concert -retirement -scores -financing -efficiency -sp -comedy -adopted -efficient -weblog -linear -commitment -specialty -bears -jean -hop -carrier -edited -constant -visa -mouth -jewish -meter -linked -portland -interviews -concepts -nh -gun -reflect -pure -deliver -wonder -hell -lessons -fruit -begins -qualified -reform -lens -alerts -treated -discovery -draw -mysql -classified -relating -assume -confidence -alliance -fm -confirm -warm -neither -lewis -howard -offline -leaves -engineer -lifestyle -consistent -replace -clearance -connections -inventory -converter -suck -organisation -babe -checks -reached -becoming -blowjob -safari -objective -indicated -sugar -crew -legs -sam -stick -securities -allen -pdt -relation -enabled -genre -slide -montana -volunteer -tested -rear -democratic -enhance -switzerland -exact -bound -parameter -adapter -processor -node -formal -dimensions -contribute -lock -hockey -storm -micro -colleges -laptops -mile -showed -challenges -editors -mens -threads -bowl -supreme -brothers -recognition -presents -ref -tank -submission -dolls -estimate -encourage -navy -kid -regulatory -inspection -consumers -cancel -limits -territory -transaction -manchester -weapons -paint -delay -pilot -outlet -contributions -continuous -db -czech -resulting -cambridge -initiative -novel -pan -execution -disability -increases -ultra -winner -idaho -contractor -ph -episode -examination -potter -dish -plays -bulletin -ia -pt -indicates -modify -oxford -adam -truly -epinions -painting -committed -extensive -affordable -universe -candidate -databases -patent -slot -psp -outstanding -ha -eating -perspective -planned -watching -lodge -messenger -mirror -tournament -consideration -ds -discounts -sterling -sessions -kernel -boobs -stocks -buyers -journals -gray -catalogue -ea -jennifer -antonio -charged -broad -taiwan -und -chosen -demo -greece -lg -swiss -sarah -clark -labour -hate -terminal -publishers -nights -behalf -caribbean -liquid -rice -nebraska -loop -salary -reservation -foods -gourmet -guard -properly -orleans -saving -nfl -remaining -empire -resume -twenty -newly -raise -prepare -avatar -gary -depending -illegal -expansion -vary -hundreds -rome -arab -lincoln -helped -premier -tomorrow -purchased -milk -decide -consent -drama -visiting -performing -downtown -keyboard -contest -collected -nw -bands -boot -suitable -ff -absolutely -millions -lunch -dildo -audit -push -chamber -guinea -findings -muscle -featuring -iso -implement -clicking -scheduled -polls -typical -tower -yours -sum -misc -calculator -significantly -chicken -temporary -attend -shower -alan -sending -jason -tonight -dear -sufficient -holdem -shell -province -catholic -oak -vat -awareness -vancouver -governor -beer -seemed -contribution -measurement -swimming -spyware -formula -constitution -packaging -solar -jose -catch -jane -pakistan -ps -reliable -consultation -northwest -sir -doubt -earn -finder -unable -periods -classroom -tasks -democracy -attacks -kim -wallpaper -merchandise -const -resistance -doors -symptoms -resorts -biggest -memorial -visitor -twin -forth -insert -baltimore -gateway -ky -dont -alumni -drawing -candidates -charlotte -ordered -biological -fighting -transition -happens -preferences -spy -romance -instrument -bruce -split -themes -powers -heaven -br -bits -pregnant -twice -classification -focused -egypt -physician -hollywood -bargain -wikipedia -cellular -norway -vermont -asking -blocks -normally -lo -spiritual -hunting -diabetes -suit -ml -shift -chip -res -sit -bodies -photographs -cutting -wow -simon -writers -marks -flexible -loved -favourites -mapping -numerous -relatively -birds -satisfaction -represents -char -indexed -pittsburgh -superior -preferred -saved -paying -cartoon -shots -intellectual -moore -granted -choices -carbon -spending -comfortable -magnetic -interaction -listening -effectively -registry -crisis -outlook -massive -denmark -employed -bright -treat -header -cs -poverty -formed -piano -echo -que -grid -sheets -patrick -experimental -puerto -revolution -consolidation -displays -plasma -allowing -earnings -voip -mystery -landscape -dependent -mechanical -journey -delaware -bidding -consultants -risks -banner -applicant -charter -fig -barbara -cooperation -counties -acquisition -ports -implemented -sf -directories -recognized -dreams -blogger -notification -kg -licensing -stands -teach -occurred -textbooks -rapid -pull -hairy -diversity -cleveland -ut -reverse -deposit -seminar -investments -latina -nasa -wheels -sexcam -specify -accessibility -dutch -sensitive -templates -formats -tab -depends -boots -holds -router -concrete -si -editing -poland -folder -womens -css -completion -upload -pulse -universities -technique -contractors -milfhunter -voting -courts -notices -subscriptions -calculate -mc -detroit -alexander -broadcast -converted -metro -toshiba -anniversary -improvements -strip -specification -pearl -accident -nick -accessible -accessory -resident -plot -qty -possibly -airline -typically -representation -regard -pump -exists -arrangements -smooth -conferences -uniprotkb -beastiality -strike -consumption -birmingham -flashing -lp -narrow -afternoon -threat -surveys -sitting -putting -consultant -controller -ownership -committees -penis -legislative -researchers -vietnam -trailer -anne -castle -gardens -missed -malaysia -unsubscribe -antique -labels -willing -bio -molecular -upskirt -acting -heads -stored -exam -logos -residence -attorneys -milfs -antiques -density -hundred -ryan -operators -strange -sustainable -philippines -statistical -beds -breasts -mention -innovation -pcs -employers -grey -parallel -honda -amended -operate -bills -bold -bathroom -stable -opera -definitions -von -doctors -lesson -cinema -asset -ag -scan -elections -drinking -blowjobs -reaction -blank -enhanced -entitled -severe -generate -stainless -newspapers -hospitals -vi -deluxe -humor -aged -monitors -exception -lived -duration -bulk -successfully -indonesia -pursuant -sci -fabric -edt -visits -primarily -tight -domains -capabilities -pmid -contrast -recommendation -flying -recruitment -sin -berlin -cute -organized -ba -para -siemens -adoption -improving -cr -expensive -meant -capture -pounds -buffalo -organisations -plane -pg -explained -seed -programmes -desire -expertise -mechanism -camping -ee -jewellery -meets -welfare -peer -caught -eventually -marked -driven -measured -medline -bottle -agreements -considering -innovative -marshall -massage -rubber -conclusion -closing -tampa -thousand -meat -legend -grace -susan -ing -ks -adams -python -monster -alex -bang -villa -bone -columns -disorders -bugs -collaboration -hamilton -detection -ftp -cookies -inner -formation -tutorial -med -engineers -entity -cruises -gate -holder -proposals -moderator -sw -tutorials -settlement -portugal -lawrence -roman -duties -valuable -erotic -tone -collectables -ethics -forever -dragon -busy -captain -fantastic -imagine -brings -heating -leg -neck -hd -wing -governments -purchasing -scripts -abc -stereo -appointed -taste -dealing -commit -tiny -operational -rail -airlines -liberal -livecam -jay -trips -gap -sides -tube -turns -corresponding -descriptions -cache -belt -jacket -determination -animation -oracle -er -matthew -lease -productions -aviation -hobbies -proud -excess -disaster -console -commands -jr -telecommunications -instructor -giant -achieved -injuries -shipped -bestiality -seats -approaches -biz -alarm -voltage -anthony -nintendo -usual -loading -stamps -appeared -franklin -angle -rob -vinyl -highlights -mining -designers -melbourne -ongoing -worst -imaging -betting -scientists -liberty -wyoming -blackjack -argentina -era -convert -possibility -analyst -commissioner -dangerous -garage -exciting -reliability -thongs -gcc -unfortunately -respectively -volunteers -attachment -ringtone -finland -morgan -derived -pleasure -honor -asp -oriented -eagle -desktops -pants -columbus -nurse -prayer -appointment -workshops -hurricane -quiet -luck -postage -producer -represented -mortgages -dial -responsibilities -cheese -comic -carefully -jet -productivity -investors -crown -par -underground -diagnosis -maker -crack -principle -picks -vacations -gang -semester -calculated -cumshot -fetish -applies -casinos -appearance -smoke -apache -filters -incorporated -nv -craft -cake -notebooks -apart -fellow -blind -lounge -mad -algorithm -semi -coins -andy -gross -strongly -cafe -valentine -hilton -ken -proteins -horror -su -exp -familiar -capable -douglas -debian -till -involving -pen -investing -christopher -admission -epson -shoe -elected -carrying -victory -sand -madison -terrorism -joy -editions -cpu -mainly -ethnic -ran -parliament -actor -finds -seal -situations -fifth -allocated -citizen -vertical -corrections -structural -municipal -describes -prize -sr -occurs -jon -absolute -disabilities -consists -anytime -substance -prohibited -addressed -lies -pipe -soldiers -nr -guardian -lecture -simulation -layout -initiatives -ill -concentration -classics -lbs -lay -interpretation -horses -lol -dirty -deck -wayne -donate -taught -bankruptcy -mp -worker -optimization -alive -temple -substances -prove -discovered -wings -breaks -genetic -restrictions -participating -waters -promise -thin -exhibition -prefer -ridge -cabinet -modem -harris -mph -bringing -sick -dose -evaluate -tiffany -tropical -collect -bet -composition -toyota -streets -nationwide -vector -definitely -shaved -turning -buffer -purple -existence -commentary -larry -limousines -developments -def -immigration -destinations -lets -mutual -pipeline -necessarily -syntax -li -attribute -prison -skill -chairs -nl -everyday -apparently -surrounding -mountains -moves -popularity -inquiry -ethernet -checked -exhibit -throw -trend -sierra -visible -cats -desert -postposted -ya -oldest -rhode -nba -busty -coordinator -obviously -mercury -steven -handbook -greg -navigate -worse -summit -victims -epa -spaces -fundamental -burning -escape -coupons -somewhat -receiver -substantial -tr -progressive -cialis -bb -boats -glance -scottish -championship -arcade -richmond -sacramento -impossible -ron -russell -tells -obvious -fiber -depression -graph -covering -platinum -judgment -bedrooms -talks -filing -foster -modeling -passing -awarded -testimonials -trials -tissue -nz -memorabilia -clinton -masters -bonds -cartridge -alberta -explanation -folk -org -commons -cincinnati -subsection -fraud -electricity -permitted -spectrum -arrival -okay -pottery -emphasis -roger -aspect -workplace -awesome -mexican -confirmed -counts -priced -wallpapers -hist -crash -lift -desired -inter -closer -assumes -heights -shadow -riding -infection -firefox -lisa -expense -grove -eligibility -venture -clinic -korean -healing -princess -mall -entering -packet -spray -studios -involvement -dad -buttons -placement -observations -vbulletin -funded -thompson -winners -extend -roads -subsequent -pat -dublin -rolling -fell -motorcycle -yard -disclosure -establishment -memories -nelson -te -arrived -creates -faces -tourist -cocks -av -mayor -murder -sean -adequate -senator -yield -presentations -grades -cartoons -pour -digest -reg -lodging -tion -dust -hence -wiki -entirely -replaced -radar -rescue -undergraduate -losses -combat -reducing -stopped -occupation -lakes -butt -donations -associations -citysearch -closely -radiation -diary -seriously -kings -shooting -kent -adds -nsw -ear -flags -pci -baker -launched -elsewhere -pollution -conservative -guestbook -shock -effectiveness -walls -abroad -ebony -tie -ward -drawn -arthur -ian -visited -roof -walker -demonstrate -atmosphere -suggests -kiss -beast -ra -operated -experiment -targets -overseas -purchases -dodge -counsel -federation -pizza -invited -yards -assignment -chemicals -gordon -mod -farmers -rc -queries -bmw -rush -ukraine -absence -nearest -cluster -vendors -mpeg -whereas -yoga -serves -woods -surprise -lamp -rico -partial -shoppers -phil -everybody -couples -nashville -ranking -jokes -cst -http -ceo -simpson -twiki -sublime -counseling -palace -acceptable -satisfied -glad -wins -measurements -verify -globe -trusted -copper -milwaukee -rack -medication -warehouse -shareware -ec -rep -dicke -kerry -receipt -supposed -ordinary -nobody -ghost -violation -configure -stability -mit -applying -southwest -boss -pride -institutional -expectations -independence -knowing -reporter -metabolism -keith -champion -cloudy -linda -ross -personally -chile -anna -plenty -solo -sentence -throat -ignore -maria -uniform -excellence -wealth -tall -rm -somewhere -vacuum -dancing -attributes -recognize -brass -writes -plaza -pdas -outcomes -survival -quest -publish -sri -screening -toe -thumbnail -trans -jonathan -whenever -nova -lifetime -api -pioneer -booty -forgotten -acrobat -plates -acres -venue -athletic -thermal -essays -behaviour -vital -telling -fairly -coastal -config -cf -charity -intelligent -edinburgh -vt -excel -modes -obligation -campbell -wake -stupid -harbor -hungary -traveler -urw -segment -realize -regardless -lan -enemy -puzzle -rising -aluminum -wells -wishlist -opens -insight -sms -shit -restricted -republican -secrets -lucky -latter -merchants -thick -trailers -repeat -syndrome -philips -attendance -penalty -drum -glasses -enables -nec -iraqi -builder -vista -jessica -chips -terry -flood -foto -ease -arguments -amsterdam -orgy -arena -adventures -pupils -stewart -announcement -tabs -outcome -xx -appreciate -expanded -casual -grown -polish -lovely -extras -gm -centres -jerry -clause -smile -lands -ri -troops -indoor -bulgaria -armed -broker -charger -regularly -believed -pine -cooling -tend -gulf -rt -rick -trucks -cp -mechanisms -divorce -laura -shopper -tokyo -partly -nikon -customize -tradition -candy -pills -tiger -donald -folks -sensor -exposed -telecom -hunt -angels -deputy -indicators -sealed -thai -emissions -physicians -loaded -fred -complaint -scenes -experiments -balls -afghanistan -dd -boost -spanking -scholarship -governance -mill -founded -supplements -chronic -icons -tranny -moral -den -catering -aud -finger -keeps -pound -locate -camcorder -pl -trained -burn -implementing -roses -labs -ourselves -bread -tobacco -wooden -motors -tough -roberts -incident -gonna -dynamics -lie -crm -rf -conversation -decrease -cumshots -chest -pension -billy -revenues -emerging -worship -bukkake -capability -ak -fe -craig -herself -producing -churches -precision -damages -reserves -contributed -solve -shorts -reproduction -minority -td -diverse -amp -ingredients -sb -ah -johnny -sole -franchise -recorder -complaints -facing -sm -nancy -promotions -tones -passion -rehabilitation -maintaining -sight -laid -clay -defence -patches -weak -refund -usc -towns -environments -trembl -divided -blvd -reception -amd -wise -emails -cyprus -wv -odds -correctly -insider -seminars -consequences -makers -hearts -geography -appearing -integrity -worry -ns -discrimination -eve -carter -legacy -marc -pleased -danger -vitamin -widely -processed -phrase -genuine -raising -implications -functionality -paradise -hybrid -reads -roles -intermediate -emotional -sons -leaf -pad -glory -platforms -ja -bigger -billing -diesel -versus -combine -overnight -geographic -exceed -bs -rod -saudi -fault -cuba -hrs -preliminary -districts -introduce -silk -promotional -kate -chevrolet -babies -bi -karen -compiled -romantic -revealed -specialists -generator -albert -examine -jimmy -graham -suspension -bristol -margaret -compaq -sad -correction -wolf -slowly -authentication -communicate -rugby -supplement -showtimes -cal -portions -infant -promoting -sectors -samuel -fluid -grounds -fits -kick -regards -meal -ta -hurt -machinery -bandwidth -unlike -equation -baskets -probability -pot -dimension -wright -img -barry -proven -schedules -admissions -cached -warren -slip -studied -reviewer -involves -quarterly -rpm -profits -devil -grass -comply -marie -florist -illustrated -cherry -continental -alternate -deutsch -achievement -limitations -kenya -webcam -cuts -funeral -nutten -earrings -enjoyed -automated -chapters -pee -charlie -quebec -nipples -passenger -convenient -dennis -mars -francis -tvs -sized -manga -noticed -socket -silent -literary -egg -mhz -signals -caps -orientation -pill -theft -childhood -swing -symbols -lat -meta -humans -analog -facial -choosing -talent -dated -flexibility -seeker -wisdom -shoot -boundary -mint -packard -offset -payday -philip -elite -gi -spin -holders -believes -swedish -poems -deadline -jurisdiction -robot -displaying -witness -collins -equipped -stages -encouraged -sur -winds -powder -broadway -acquired -assess -wash -cartridges -stones -entrance -gnome -roots -declaration -losing -attempts -gadgets -noble -glasgow -automation -impacts -rev -gospel -advantages -shore -loves -induced -ll -knight -preparing -loose -aims -recipient -linking -extensions -appeals -cl -earned -illness -islamic -athletics -southeast -ieee -ho -alternatives -pending -parker -determining -lebanon -corp -personalized -kennedy -gt -sh -conditioning -teenage -soap -ae -triple -cooper -nyc -vincent -jam -secured -unusual -answered -partnerships -destruction -slots -increasingly -migration -disorder -routine -toolbar -basically -rocks -conventional -titans -applicants -wearing -axis -sought -genes -mounted -habitat -firewall -median -guns -scanner -herein -occupational -animated -horny -judicial -rio -hs -adjustment -hero -integer -treatments -bachelor -attitude -camcorders -engaged -falling -basics -montreal -carpet -rv -struct -lenses -binary -genetics -attended -difficulty -punk -collective -coalition -pi -dropped -enrollment -duke -walter -ai -pace -besides -wage -producers -ot -collector -arc -hosts -interfaces -advertisers -moments -atlas -strings -dawn -representing -observation -feels -torture -carl -deleted -coat -mitchell -mrs -rica -restoration -convenience -returning -ralph -opposition -container -yr -defendant -warner -confirmation -app -embedded -inkjet -supervisor -wizard -corps -actors -liver -peripherals -liable -brochure -morris -bestsellers -petition -eminem -recall -antenna -picked -assumed -departure -minneapolis -belief -killing -bikini -memphis -shoulder -decor -lookup -texts -harvard -brokers -roy -ion -diameter -ottawa -doll -ic -podcast -tit -seasons -peru -interactions -refine -bidder -singer -evans -herald -literacy -fails -aging -nike -intervention -pissing -fed -plugin -attraction -diving -invite -modification -alice -latinas -suppose -customized -reed -involve -moderate -terror -younger -thirty -mice -opposite -understood -rapidly -dealtime -ban -temp -intro -mercedes -zus -assurance -fisting -clerk -happening -vast -mills -outline -amendments -tramadol -holland -receives -jeans -metropolitan -compilation -verification -fonts -ent -odd -wrap -refers -mood -favor -veterans -quiz -mx -sigma -gr -attractive -xhtml -occasion -recordings -jefferson -victim -demands -sleeping -careful -ext -beam -gardening -obligations -arrive -orchestra -sunset -tracked -moreover -minimal -polyphonic -lottery -tops -framed -aside -outsourcing -licence -adjustable -allocation -michelle -essay -discipline -amy -ts -demonstrated -dialogue -identifying -alphabetical -camps -declared -dispatched -aaron -handheld -trace -disposal -shut -florists -packs -ge -installing -switches -romania -voluntary -ncaa -thou -consult -phd -greatly -blogging -mask -cycling -midnight -ng -commonly -pe -photographer -inform -turkish -coal -cry -messaging -pentium -quantum -murray -intent -tt -zoo -largely -pleasant -announce -constructed -additions -requiring -spoke -aka -arrow -engagement -sampling -rough -weird -tee -refinance -lion -inspired -holes -weddings -blade -suddenly -oxygen -cookie -meals -canyon -goto -meters -merely -calendars -arrangement -conclusions -passes -bibliography -pointer -compatibility -stretch -durham -furthermore -permits -cooperative -muslim -xl -neil -sleeve -netscape -cleaner -cricket -beef -feeding -stroke -township -rankings -measuring -cad -hats -robin -robinson -jacksonville -strap -headquarters -sharon -crowd -tcp -transfers -surf -olympic -transformation -remained -attachments -dv -dir -entities -customs -administrators -personality -rainbow -hook -roulette -decline -gloves -israeli -medicare -cord -skiing -cloud -facilitate -subscriber -valve -val -hewlett -explains -proceed -flickr -feelings -knife -jamaica -priorities -shelf -bookstore -timing -liked -parenting -adopt -denied -fotos -incredible -britney -freeware -fucked -donation -outer -crop -deaths -rivers -commonwealth -pharmaceutical -manhattan -tales -katrina -workforce -islam -nodes -tu -fy -thumbs -seeds -cited -lite -ghz -hub -targeted -organizational -skype -realized -twelve -founder -decade -gamecube -rr -dispute -portuguese -tired -titten -adverse -everywhere -excerpt -eng -steam -discharge -ef -drinks -ace -voices -acute -halloween -climbing -stood -sing -tons -perfume -carol -honest -albany -hazardous -restore -stack -methodology -somebody -sue -ep -housewares -reputation -resistant -democrats -recycling -hang -gbp -curve -creator -amber -qualifications -museums -coding -slideshow -tracker -variation -passage -transferred -trunk -hiking -lb -damn -pierre -jelsoft -headset -photograph -oakland -colombia -waves -camel -distributor -lamps -underlying -hood -wrestling -suicide -archived -photoshop -jp -chi -bt -arabia -gathering -projection -juice -chase -mathematical -logical -sauce -fame -extract -specialized -diagnostic -panama -indianapolis -af -payable -corporations -courtesy -criticism -automobile -confidential -rfc -statutory -accommodations -athens -northeast -downloaded -judges -sl -seo -retired -isp -remarks -detected -decades -paintings -walked -arising -nissan -bracelet -ins -eggs -juvenile -injection -yorkshire -populations -protective -afraid -acoustic -railway -cassette -initially -indicator -pointed -hb -jpg -causing -mistake -norton -locked -eliminate -tc -fusion -mineral -sunglasses -ruby -steering -beads -fortune -preference -canvas -threshold -parish -claimed -screens -cemetery -planner -croatia -flows -stadium -venezuela -exploration -mins -fewer -sequences -coupon -nurses -ssl -stem -proxy -gangbang -astronomy -lanka -opt -edwards -drew -contests -flu -translate -announces -mlb -costume -tagged -berkeley -voted -killer -bikes -gates -adjusted -rap -tune -bishop -pulled -corn -gp -shaped -compression -seasonal -establishing -farmer -counters -puts -constitutional -grew -perfectly -tin -slave -instantly -cultures -norfolk -coaching -examined -trek -encoding -litigation -submissions -oem -heroes -painted -lycos -ir -zdnet -broadcasting -horizontal -artwork -cosmetic -resulted -portrait -terrorist -informational -ethical -carriers -ecommerce -mobility -floral -builders -ties -struggle -schemes -suffering -neutral -fisher -rat -spears -prospective -dildos -bedding -ultimately -joining -heading -equally -artificial -bearing -spectacular -coordination -connector -brad -combo -seniors -worlds -guilty -affiliated -activation -naturally -haven -tablet -jury -dos -tail -subscribers -charm -lawn -violent -mitsubishi -underwear -basin -soup -potentially -ranch -constraints -crossing -inclusive -dimensional -cottage -drunk -considerable -crimes -resolved -mozilla -byte -toner -nose -latex -branches -anymore -oclc -delhi -holdings -alien -locator -selecting -processors -pantyhose -plc -broke -nepal -zimbabwe -difficulties -juan -complexity -msg -constantly -browsing -resolve -barcelona -presidential -documentary -cod -territories -melissa -moscow -thesis -thru -jews -nylon -palestinian -discs -rocky -bargains -frequent -trim -nigeria -ceiling -pixels -ensuring -hispanic -cv -cb -legislature -hospitality -gen -anybody -procurement -diamonds -espn -fleet -untitled -bunch -totals -marriott -singing -theoretical -afford -exercises -starring -referral -nhl -surveillance -optimal -quit -distinct -protocols -lung -highlight -substitute -inclusion -hopefully -brilliant -turner -sucking -cents -reuters -ti -fc -gel -todd -spoken -omega -evaluated -stayed -civic -assignments -fw -manuals -doug -sees -termination -watched -saver -thereof -grill -households -gs -redeem -rogers -grain -aaa -authentic -regime -wanna -wishes -bull -montgomery -architectural -louisville -depend -differ -macintosh -movements -ranging -monica -repairs -breath -amenities -virtually -cole -mart -candle -hanging -colored -authorization -tale -verified -lynn -formerly -projector -bp -situated -comparative -std -seeks -herbal -loving -strictly -routing -docs -stanley -psychological -surprised -retailer -vitamins -elegant -gains -renewal -vid -genealogy -opposed -deemed -scoring -expenditure -panties -brooklyn -liverpool -sisters -critics -connectivity -spots -oo -algorithms -hacker -madrid -similarly -margin -coin -bbw -solely -fake -salon -collaborative -norman -fda -excluding -turbo -headed -voters -cure -madonna -commander -arch -ni -murphy -thinks -thats -suggestion -hdtv -soldier -phillips -asin -aimed -justin -bomb -harm -interval -mirrors -spotlight -tricks -reset -brush -investigate -thy -expansys -panels -repeated -assault -connecting -spare -logistics -deer -kodak -tongue -bowling -tri -danish -pal -monkey -proportion -filename -skirt -florence -invest -honey -um -analyses -drawings -significance -scenario -ye -fs -lovers -atomic -approx -symposium -arabic -gauge -essentials -junction -protecting -nn -faced -mat -rachel -solving -transmitted -weekends -screenshots -produces -oven -ted -intensive -chains -kingston -sixth -engage -deviant -noon -switching -quoted -adapters -correspondence -farms -imports -supervision -cheat -bronze -expenditures -sandy -separation -testimony -suspect -celebrities -macro -sender -mandatory -boundaries -crucial -syndication -gym -celebration -kde -adjacent -filtering -tuition -spouse -exotic -viewer -signup -threats -luxembourg -puzzles -reaching -vb -damaged -cams -receptor -piss -laugh -joel -surgical -destroy -citation -pitch -autos -yo -premises -perry -proved -offensive -imperial -dozen -benjamin -deployment -teeth -cloth -studying -colleagues -stamp -lotus -salmon -olympus -separated -proc -cargo -tan -directive -fx -salem -mate -dl -starter -upgrades -likes -butter -pepper -weapon -luggage -burden -chef -tapes -zones -races -isle -stylish -slim -maple -luke -grocery -offshore -governing -retailers -depot -kenneth -comp -alt -pie -blend -harrison -ls -julie -occasionally -cbs -attending -emission -pete -spec -finest -realty -janet -bow -penn -recruiting -apparent -instructional -phpbb -autumn -traveling -probe -midi -permissions -biotechnology -toilet -ranked -jackets -routes -packed -excited -outreach -helen -mounting -recover -tied -lopez -balanced -prescribed -catherine -timely -talked -upskirts -debug -delayed -chuck -reproduced -hon -dale -explicit -calculation -villas -ebook -consolidated -boob -exclude -peeing -occasions -brooks -equations -newton -oils -sept -exceptional -anxiety -bingo -whilst -spatial -respondents -unto -lt -ceramic -prompt -precious -minds -annually -considerations -scanners -atm -xanax -eq -pays -cox -fingers -sunny -ebooks -delivers -je -queensland -necklace -musicians -leeds -composite -unavailable -cedar -arranged -lang -theaters -advocacy -raleigh -stud -fold -essentially -designing -threaded -uv -qualify -fingering -blair -hopes -assessments -cms -mason -diagram -burns -pumps -slut -ejaculation -footwear -sg -vic -beijing -peoples -victor -mario -pos -attach -licenses -utils -removing -advised -brunswick -spider -phys -ranges -pairs -sensitivity -trails -preservation -hudson -isolated -calgary -interim -assisted -divine -streaming -approve -chose -compound -intensity -technological -syndicate -abortion -dialog -venues -blast -wellness -calcium -newport -antivirus -addressing -pole -discounted -indians -shield -harvest -membrane -prague -previews -bangladesh -constitute -locally -concluded -pickup -desperate -mothers -nascar -iceland -demonstration -governmental -manufactured -candles -graduation -mega -bend -sailing -variations -moms -sacred -addiction -morocco -chrome -tommy -springfield -refused -brake -exterior -greeting -ecology -oliver -congo -glen -botswana -nav -delays -synthesis -olive -undefined -unemployment -cyber -verizon -scored -enhancement -newcastle -clone -dicks -velocity -lambda -relay -composed -tears -performances -oasis -baseline -cab -angry -fa -societies -silicon -brazilian -identical -petroleum -compete -ist -norwegian -lover -belong -honolulu -beatles -lips -escort -retention -exchanges -pond -rolls -thomson -barnes -soundtrack -wondering -malta -daddy -lc -ferry -rabbit -profession -seating -dam -cnn -separately -physiology -lil -collecting -das -exports -omaha -tire -participant -scholarships -recreational -dominican -chad -electron -loads -friendship -heather -passport -motel -unions -treasury -warrant -sys -solaris -frozen -occupied -josh -royalty -scales -rally -observer -sunshine -strain -drag -ceremony -somehow -arrested -expanding -provincial -investigations -icq -ripe -yamaha -rely -medications -hebrew -gained -rochester -dying -laundry -stuck -solomon -placing -stops -homework -adjust -assessed -advertiser -enabling -encryption -filling -downloadable -sophisticated -imposed -silence -scsi -focuses -soviet -possession -cu -laboratories -treaty -vocal -trainer -organ -stronger -volumes -advances -vegetables -lemon -toxic -dns -thumbnails -darkness -pty -ws -nuts -nail -bizrate -vienna -implied -span -stanford -sox -stockings -joke -respondent -packing -statute -rejected -satisfy -destroyed -shelter -chapel -gamespot -manufacture -layers -wordpress -guided -vulnerability -accountability -celebrate -accredited -appliance -compressed -bahamas -powell -mixture -zoophilia -bench -univ -tub -rider -scheduling -radius -perspectives -mortality -logging -hampton -christians -borders -therapeutic -pads -butts -inns -bobby -impressive -sheep -accordingly -architect -railroad -lectures -challenging -wines -nursery -harder -cups -ash -microwave -cheapest -accidents -travesti -relocation -stuart -contributors -salvador -ali -salad -np -monroe -tender -violations -foam -temperatures -paste -clouds -competitions -discretion -tft -tanzania -preserve -jvc -poem -vibrator -unsigned -staying -cosmetics -easter -theories -repository -praise -jeremy -venice -jo -concentrations -vibrators -estonia -christianity -veteran -streams -landing -signing -executed -katie -negotiations -realistic -dt -cgi -showcase -integral -asks -relax -namibia -generating -christina -congressional -synopsis -hardly -prairie -reunion -composer -bean -sword -absent -photographic -sells -ecuador -hoping -accessed -spirits -modifications -coral -pixel -float -colin -bias -imported -paths -bubble -por -acquire -contrary -millennium -tribune -vessel -acids -focusing -viruses -cheaper -admitted -dairy -admit -mem -fancy -equality -samoa -gc -achieving -tap -stickers -fisheries -exceptions -reactions -leasing -lauren -beliefs -ci -macromedia -companion -squad -analyze -ashley -scroll -relate -divisions -swim -wages -additionally -suffer -forests -fellowship -nano -invalid -concerts -martial -males -victorian -retain -colours -execute -tunnel -genres -cambodia -patents -copyrights -yn -chaos -lithuania -mastercard -wheat -chronicles -obtaining -beaver -updating -distribute -readings -decorative -kijiji -confused -compiler -enlargement -eagles -bases -vii -accused -bee -campaigns -unity -loud -conjunction -bride -rats -defines -airports -instances -indigenous -begun -cfr -brunette -packets -anchor -socks -validation -parade -corruption -stat -trigger -incentives -cholesterol -gathered -essex -slovenia -notified -differential -beaches -folders -dramatic -surfaces -terrible -routers -cruz -pendant -dresses -baptist -scientist -starsmerchant -hiring -clocks -arthritis -bios -females -wallace -nevertheless -reflects -taxation -fever -pmc -cuisine -surely -practitioners -transcript -myspace -theorem -inflation -thee -nb -ruth -pray -stylus -compounds -pope -drums -contracting -topless -arnold -structured -reasonably -jeep -chicks -bare -hung -cattle -mba -radical -graduates -rover -recommends -controlling -treasure -reload -distributors -flame -levitra -tanks -assuming -monetary -elderly -pit -arlington -mono -particles -floating -extraordinary -tile -indicating -bolivia -spell -hottest -stevens -coordinate -kuwait -exclusively -emily -alleged -limitation -widescreen -compile -squirting -webster -struck -rx -illustration -plymouth -warnings -construct -apps -inquiries -bridal -annex -mag -gsm -inspiration -tribal -curious -affecting -freight -rebate -meetup -eclipse -sudan -ddr -downloading -rec -shuttle -aggregate -stunning -cycles -affects -forecasts -detect -sluts -actively -ciao -ampland -knee -prep -pb -complicated -chem -fastest -butler -shopzilla -injured -decorating -payroll -cookbook -expressions -ton -courier -uploaded -shakespeare -hints -collapse -americas -connectors -twinks -unlikely -oe -gif -pros -conflicts -techno -beverage -tribute -wired -elvis -immune -latvia -travelers -forestry -barriers -cant -jd -rarely -gpl -infected -offerings -martha -genesis -barrier -argue -incorrect -trains -metals -bicycle -furnishings -letting -arise -guatemala -celtic -thereby -irc -jamie -particle -perception -minerals -advise -humidity -bottles -boxing -wy -dm -bangkok -renaissance -pathology -sara -bra -ordinance -hughes -photographers -bitch -infections -jeffrey -chess -operates -brisbane -configured -survive -oscar -festivals -menus -joan -possibilities -duck -reveal -canal -amino -phi -contributing -herbs -clinics -mls -cow -manitoba -analytical -missions -watson -lying -costumes -strict -dive -saddam -circulation -drill -offense -threesome -bryan -cet -protest -handjob -assumption -jerusalem -hobby -tries -transexuales -invention -nickname -fiji -technician -inline -executives -enquiries -washing -audi -staffing -cognitive -exploring -trick -enquiry -closure -raid -ppc -timber -volt -intense -div -playlist -registrar -showers -supporters -ruling -steady -dirt -statutes -withdrawal -myers -drops -predicted -wider -saskatchewan -jc -cancellation -plugins -enrolled -sensors -screw -ministers -publicly -hourly -blame -geneva -freebsd -veterinary -acer -prostores -reseller -dist -handed -suffered -intake -informal -relevance -incentive -butterfly -tucson -mechanics -heavily -swingers -fifty -headers -mistakes -numerical -ons -geek -uncle -defining -xnxx -counting -reflection -sink -accompanied -assure -invitation -devoted -princeton -jacob -sodium -randy -spirituality -hormone -meanwhile -proprietary -timothy -childrens -brick -grip -naval -thumbzilla -medieval -porcelain -avi -bridges -pichunter -captured -watt -thehun -decent -casting -dayton -translated -shortly -cameron -columnists -pins -carlos -reno -donna -andreas -warrior -diploma -cabin -innocent -bdsm -scanning -ide -consensus -polo -valium -copying -rpg -delivering -cordless -patricia -horn -eddie -uganda -fired -journalism -pd -prot -trivia -adidas -perth -frog -grammar -intention -syria -disagree -klein -harvey -tires -logs -undertaken -tgp -hazard -retro -leo -livesex -statewide -semiconductor -gregory -episodes -boolean -circular -anger -diy -mainland -illustrations -suits -chances -interact -snap -happiness -arg -substantially -bizarre -glenn -ur -auckland -olympics -fruits -identifier -geo -worldsex -ribbon -calculations -doe -jpeg -conducting -startup -suzuki -trinidad -ati -kissing -wal -handy -swap -exempt -crops -reduces -accomplished -calculators -geometry -impression -abs -slovakia -flip -guild -correlation -gorgeous -capitol -sim -dishes -rna -barbados -chrysler -nervous -refuse -extends -fragrance -mcdonald -replica -plumbing -brussels -tribe -neighbors -trades -superb -buzz -transparent -nuke -rid -trinity -charleston -handled -legends -boom -calm -champions -floors -selections -projectors -inappropriate -exhaust -comparing -shanghai -speaks -burton -vocational -davidson -copied -scotia -farming -gibson -pharmacies -fork -troy -ln -roller -introducing -batch -organize -appreciated -alter -nicole -latino -ghana -edges -uc -mixing -handles -skilled -fitted -albuquerque -harmony -distinguished -asthma -projected -assumptions -shareholders -twins -developmental -rip -zope -regulated -triangle -amend -anticipated -oriental -reward -windsor -zambia -completing -gmbh -buf -ld -hydrogen -webshots -sprint -comparable -chick -advocate -sims -confusion -copyrighted -tray -inputs -warranties -genome -escorts -documented -thong -medal -paperbacks -coaches -vessels -harbour -walks -sucks -sol -keyboards -sage -knives -eco -vulnerable -arrange -artistic -bat -honors -booth -indie -reflected -unified -bones -breed -detector -ignored -polar -fallen -precise -sussex -respiratory -notifications -msgid -transexual -mainstream -invoice -evaluating -lip -subcommittee -sap -gather -suse -maternity -backed -alfred -colonial -mf -carey -motels -forming -embassy -cave -journalists -danny -rebecca -slight -proceeds -indirect -amongst -wool -foundations -msgstr -arrest -volleyball -mw -adipex -horizon -nu -deeply -toolbox -ict -marina -liabilities -prizes -bosnia -browsers -decreased -patio -dp -tolerance -surfing -creativity -lloyd -describing -optics -pursue -lightning -overcome -eyed -ou -quotations -grab -inspector -attract -brighton -beans -bookmarks -ellis -disable -snake -succeed -leonard -lending -oops -reminder -nipple -xi -searched -behavioral -riverside -bathrooms -plains -sku -ht -raymond -insights -abilities -initiated -sullivan -za -midwest -karaoke -trap -lonely -fool -ve -nonprofit -lancaster -suspended -hereby -observe -julia -containers -attitudes -karl -berry -collar -simultaneously -racial -integrate -bermuda -amanda -sociology -mobiles -screenshot -exhibitions -kelkoo -confident -retrieved -exhibits -officially -consortium -dies -terrace -bacteria -pts -replied -seafood -novels -rh -rrp -recipients -playboy -ought -delicious -traditions -fg -jail -safely -finite -kidney -periodically -fixes -sends -durable -mazda -allied -throws -moisture -hungarian -roster -referring -symantec -spencer -wichita -nasdaq -uruguay -ooo -hz -transform -timer -tablets -tuning -gotten -educators -tyler -futures -vegetable -verse -highs -humanities -independently -wanting -custody -scratch -launches -ipaq -alignment -masturbating -henderson -bk -britannica -comm -ellen -competitors -nhs -rocket -aye -bullet -towers -racks -lace -nasty -visibility -latitude -consciousness -ste -tumor -ugly -deposits -beverly -mistress -encounter -trustees -watts -duncan -reprints -hart -bernard -resolutions -ment -accessing -forty -tubes -attempted -col -midlands -priest -floyd -ronald -analysts -queue -dx -sk -trance -locale -nicholas -biol -yu -bundle -hammer -invasion -witnesses -runner -rows -administered -notion -sq -skins -mailed -oc -fujitsu -spelling -arctic -exams -rewards -beneath -strengthen -defend -aj -frederick -medicaid -treo -infrared -seventh -gods -une -welsh -belly -aggressive -tex -advertisements -quarters -stolen -cia -sublimedirectory -soonest -haiti -disturbed -determines -sculpture -poly -ears -dod -wp -fist -naturals -neo -motivation -lenders -pharmacology -fitting -fixtures -bloggers -mere -agrees -passengers -quantities -petersburg -consistently -powerpoint -cons -surplus -elder -sonic -obituaries -cheers -dig -taxi -punishment -appreciation -subsequently -om -belarus -nat -zoning -gravity -providence -thumb -restriction -incorporate -backgrounds -treasurer -guitars -essence -flooring -lightweight -ethiopia -tp -mighty -athletes -humanity -transcription -jm -holmes -complications -scholars -dpi -scripting -gis -remembered -galaxy -chester -snapshot -caring -loc -worn -synthetic -shaw -vp -segments -testament -expo -dominant -twist -specifics -itunes -stomach -partially -buried -cn -newbie -minimize -darwin -ranks -wilderness -debut -generations -tournaments -bradley -deny -anatomy -bali -judy -sponsorship -headphones -fraction -trio -proceeding -cube -defects -volkswagen -uncertainty -breakdown -milton -marker -reconstruction -subsidiary -strengths -clarity -rugs -sandra -adelaide -encouraging -furnished -monaco -settled -folding -emirates -terrorists -airfare -comparisons -beneficial -distributions -vaccine -belize -crap -fate -viewpicture -promised -volvo -penny -robust -bookings -threatened -minolta -republicans -discusses -gui -porter -gras -jungle -ver -rn -responded -rim -abstracts -zen -ivory -alpine -dis -prediction -pharmaceuticals -andale -fabulous -remix -alias -thesaurus -individually -battlefield -literally -newer -kay -ecological -spice -oval -implies -cg -soma -ser -cooler -appraisal -consisting -maritime -periodic -submitting -overhead -ascii -prospect -shipment -breeding -citations -geographical -donor -mozambique -tension -href -benz -trash -shapes -wifi -tier -fwd -earl -manor -envelope -diane -homeland -disclaimers -championships -excluded -andrea -breeds -rapids -disco -sheffield -bailey -aus -endif -finishing -emotions -wellington -incoming -prospects -lexmark -cleaners -bulgarian -hwy -eternal -cashiers -guam -cite -aboriginal -remarkable -rotation -nam -preventing -productive -boulevard -eugene -ix -gdp -pig -metric -compliant -minus -penalties -bennett -imagination -hotmail -refurbished -joshua -armenia -varied -grande -closest -activated -actress -mess -conferencing -assign -armstrong -politicians -trackbacks -lit -accommodate -tigers -aurora -una -slides -milan -premiere -lender -villages -shade -chorus -christine -rhythm -digit -argued -dietary -symphony -clarke -sudden -accepting -precipitation -marilyn -lions -findlaw -ada -pools -tb -lyric -claire -isolation -speeds -sustained -matched -approximate -rope -carroll -rational -programmer -fighters -chambers -dump -greetings -inherited -warming -incomplete -vocals -chronicle -fountain -chubby -grave -legitimate -biographies -burner -yrs -foo -investigator -gba -plaintiff -finnish -gentle -bm -prisoners -deeper -muslims -hose -mediterranean -nightlife -footage -howto -worthy -reveals -architects -saints -entrepreneur -carries -sig -freelance -duo -excessive -devon -screensaver -helena -saves -regarded -valuation -unexpected -cigarette -fog -characteristic -marion -lobby -egyptian -tunisia -metallica -outlined -consequently -headline -treating -punch -appointments -str -gotta -cowboy -narrative -bahrain -enormous -karma -consist -betty -queens -academics -pubs -quantitative -shemales -lucas -screensavers -subdivision -tribes -vip -defeat -clicks -distinction -honduras -naughty -hazards -insured -harper -livestock -mardi -exemption -tenant -sustainability -cabinets -tattoo -shake -algebra -shadows -holly -formatting -silly -nutritional -yea -mercy -hartford -freely -marcus -sunrise -wrapping -mild -fur -nicaragua -weblogs -timeline -tar -belongs -rj -readily -affiliation -soc -fence -nudist -infinite -diana -ensures -relatives -lindsay -clan -legally -shame -satisfactory -revolutionary -bracelets -sync -civilian -telephony -mesa -fatal -remedy -realtors -breathing -briefly -thickness -adjustments -graphical -genius -discussing -aerospace -fighter -meaningful -flesh -retreat -adapted -barely -wherever -estates -rug -democrat -borough -maintains -failing -shortcuts -ka -retained -voyeurweb -pamela -andrews -marble -extending -jesse -specifies -hull -logitech -surrey -briefing -belkin -dem -accreditation -wav -blackberry -highland -meditation -modular -microphone -macedonia -combining -brandon -instrumental -giants -organizing -shed -balloon -moderators -winston -memo -ham -solved -tide -kazakhstan -hawaiian -standings -partition -invisible -gratuit -consoles -funk -fbi -qatar -magnet -translations -porsche -cayman -jaguar -reel -sheer -commodity -posing -wang -kilometers -rp -bind -thanksgiving -rand -hopkins -urgent -guarantees -infants -gothic -cylinder -witch -buck -indication -eh -congratulations -tba -cohen -sie -usgs -puppy -kathy -acre -graphs -surround -cigarettes -revenge -expires -enemies -lows -controllers -aqua -chen -emma -consultancy -finances -accepts -enjoying -conventions -eva -patrol -smell -pest -hc -italiano -coordinates -rca -fp -carnival -roughly -sticker -promises -responding -reef -physically -divide -stakeholders -hydrocodone -gst -consecutive -cornell -satin -bon -deserve -attempting -mailto -promo -jj -representations -chan -worried -tunes -garbage -competing -combines -mas -beth -bradford -len -phrases -kai -peninsula -chelsea -boring -reynolds -dom -jill -accurately -speeches -reaches -schema -considers -sofa -catalogs -ministries -vacancies -quizzes -parliamentary -obj -prefix -lucia -savannah -barrel -typing -nerve -dans -planets -deficit -boulder -pointing -renew -coupled -viii -myanmar -metadata -harold -circuits -floppy -texture -handbags -jar -ev -somerset -incurred -acknowledge -thoroughly -antigua -nottingham -thunder -tent -caution -identifies -questionnaire -qualification -locks -modelling -namely -miniature -dept -hack -dare -euros -interstate -pirates -aerial -hawk -consequence -rebel -systematic -perceived -origins -hired -makeup -textile -lamb -madagascar -nathan -tobago -presenting -cos -troubleshooting -uzbekistan -indexes -pac -rl -erp -centuries -gl -magnitude -ui -richardson -hindu -dh -fragrances -vocabulary -licking -earthquake -vpn -fundraising -fcc -markers -weights -albania -geological -assessing -lasting -wicked -eds -introduces -kills -roommate -webcams -pushed -webmasters -ro -df -computational -acdbentity -participated -junk -handhelds -wax -lucy -answering -hans -impressed -slope -reggae -failures -poet -conspiracy -surname -theology -nails -evident -whats -rides -rehab -epic -saturn -organizer -nut -allergy -sake -twisted -combinations -preceding -merit -enzyme -cumulative -zshops -planes -edmonton -tackle -disks -condo -pokemon -amplifier -ambien -arbitrary -prominent -retrieve -lexington -vernon -sans -worldcat -titanium -irs -fairy -builds -contacted -shaft -lean -bye -cdt -recorders -occasional -leslie -casio -deutsche -ana -postings -innovations -kitty -postcards -dude -drain -monte -fires -algeria -blessed -luis -reviewing -cardiff -cornwall -favors -potato -panic -explicitly -sticks -leone -transsexual -ez -citizenship -excuse -reforms -basement -onion -strand -pf -sandwich -uw -lawsuit -alto -informative -girlfriend -bloomberg -cheque -hierarchy -influenced -banners -reject -eau -abandoned -bd -circles -italic -beats -merry -mil -scuba -gore -complement -cult -dash -passive -mauritius -valued -cage -checklist -bangbus -requesting -courage -verde -lauderdale -scenarios -gazette -hitachi -divx -extraction -batman -elevation -hearings -coleman -hugh -lap -utilization -beverages -calibration -jake -eval -efficiently -anaheim -ping -textbook -dried -entertaining -prerequisite -luther -frontier -settle -stopping -refugees -knights -hypothesis -palmer -medicines -flux -derby -sao -peaceful -altered -pontiac -regression -doctrine -scenic -trainers -muze -enhancements -renewable -intersection -passwords -sewing -consistency -collectors -conclude -recognised -munich -oman -celebs -gmc -propose -hh -azerbaijan -lighter -rage -adsl -uh -prix -astrology -advisors -pavilion -tactics -trusts -occurring -supplemental -travelling -talented -annie -pillow -induction -derek -precisely -shorter -harley -spreading -provinces -relying -finals -paraguay -steal -parcel -refined -fd -bo -fifteen -widespread -incidence -fears -predict -boutique -acrylic -rolled -tuner -avon -incidents -peterson -rays -asn -shannon -toddler -enhancing -flavor -alike -walt -homeless -horrible -hungry -metallic -acne -blocked -interference -warriors -palestine -listprice -libs -undo -cadillac -atmospheric -malawi -wm -pk -sagem -knowledgestorm -dana -halo -ppm -curtis -parental -referenced -strikes -lesser -publicity -marathon -ant -proposition -gays -pressing -gasoline -apt -dressed -scout -belfast -exec -dealt -niagara -inf -eos -warcraft -charms -catalyst -trader -bucks -allowance -vcr -denial -uri -designation -thrown -prepaid -raises -gem -duplicate -electro -criterion -badge -wrist -civilization -analyzed -vietnamese -heath -tremendous -ballot -lexus -varying -remedies -validity -trustee -maui -handjobs -weighted -angola -squirt -performs -plastics -realm -corrected -jenny -helmet -salaries -postcard -elephant -yemen -encountered -tsunami -scholar -nickel -internationally -surrounded -psi -buses -expedia -geology -pct -wb -creatures -coating -commented -wallet -cleared -smilies -vids -accomplish -boating -drainage -shakira -corners -broader -vegetarian -rouge -yeast -yale -newfoundland -sn -qld -pas -clearing -investigated -dk -ambassador -coated -intend -stephanie -contacting -vegetation -doom -findarticles -louise -kenny -specially -owen -routines -hitting -yukon -beings -bite -issn -aquatic -reliance -habits -striking -myth -infectious -podcasts -singh -gig -gilbert -sas -ferrari -continuity -brook -fu -outputs -phenomenon -ensemble -insulin -assured -biblical -weed -conscious -accent -mysimon -eleven -wives -ambient -utilize -mileage -oecd -prostate -adaptor -auburn -unlock -hyundai -pledge -vampire -angela -relates -nitrogen -xerox -dice -merger -softball -referrals -quad -dock -differently -firewire -mods -nextel -framing -organised -musician -blocking -rwanda -sorts -integrating -vsnet -limiting -dispatch -revisions -papua -restored -hint -armor -riders -chargers -remark -dozens -varies -msie -reasoning -wn -liz -rendered -picking -charitable -guards -annotated -ccd -sv -convinced -openings -buys -burlington -replacing -researcher -watershed -councils -occupations -acknowledged -nudity -kruger -pockets -granny -pork -zu -equilibrium -viral -inquire -pipes -characterized -laden -aruba -cottages -realtor -merge -privilege -edgar -develops -qualifying -chassis -dubai -estimation -barn -pushing -llp -fleece -pediatric -boc -fare -dg -asus -pierce -allan -dressing -techrepublic -sperm -vg -bald -filme -craps -fuji -frost -leon -institutes -mold -dame -fo -sally -yacht -tracy -prefers -drilling -brochures -herb -tmp -alot -ate -breach -whale -traveller -appropriations -suspected -tomatoes -benchmark -beginners -instructors -highlighted -bedford -stationery -idle -mustang -unauthorized -clusters -antibody -competent -momentum -fin -wiring -io -pastor -mud -calvin -uni -shark -contributor -demonstrates -phases -grateful -emerald -gradually -laughing -grows -cliff -desirable -tract -ul -ballet -ol -journalist -abraham -js -bumper -afterwards -webpage -religions -garlic -hostels -shine -senegal -explosion -pn -banned -wendy -briefs -signatures -diffs -cove -mumbai -ozone -disciplines -casa -mu -daughters -conversations -radios -tariff -nvidia -opponent -pasta -simplified -muscles -serum -wrapped -swift -motherboard -runtime -inbox -focal -bibliographic -vagina -eden -distant -incl -champagne -ala -decimal -hq -deviation -superintendent -propecia -dip -nbc -samba -hostel -housewives -employ -mongolia -penguin -magical -influences -inspections -irrigation -miracle -manually -reprint -reid -wt -hydraulic -centered -robertson -flex -yearly -penetration -wound -belle -rosa -conviction -hash -omissions -writings -hamburg -lazy -mv -mpg -retrieval -qualities -cindy -lolita -fathers -carb -charging -cas -marvel -lined -cio -dow -prototype -importantly -rb -petite -apparatus -upc -terrain -dui -pens -explaining -yen -strips -gossip -rangers -nomination -empirical -mh -rotary -worm -dependence -discrete -beginner -boxed -lid -sexuality -polyester -cubic -deaf -commitments -suggesting -sapphire -kinase -skirts -mats -remainder -crawford -labeled -privileges -televisions -specializing -marking -commodities -pvc -serbia -sheriff -griffin -declined -guyana -spies -blah -mime -neighbor -motorcycles -elect -highways -thinkpad -concentrate -intimate -reproductive -preston -deadly -cunt -feof -bunny -chevy -molecules -rounds -longest -refrigerator -tions -intervals -sentences -dentists -usda -exclusion -workstation -holocaust -keen -flyer -peas -dosage -receivers -urls -customise -disposition -variance -navigator -investigators -cameroon -baking -marijuana -adaptive -computed -needle -baths -enb -gg -cathedral -brakes -og -nirvana -ko -fairfield -owns -til -invision -sticky -destiny -generous -madness -emacs -climb -blowing -fascinating -landscapes -heated -lafayette -jackie -wto -computation -hay -cardiovascular -ww -sparc -cardiac -salvation -dover -adrian -predictions -accompanying -vatican -brutal -learners -gd -selective -arbitration -configuring -token -editorials -zinc -sacrifice -seekers -guru -isa -removable -convergence -yields -gibraltar -levy -suited -numeric -anthropology -skating -kinda -aberdeen -emperor -grad -malpractice -dylan -bras -belts -blacks -educated -rebates -reporters -burke -proudly -pix -necessity -rendering -mic -inserted -pulling -basename -kyle -obesity -curves -suburban -touring -clara -vertex -bw -hepatitis -nationally -tomato -andorra -waterproof -expired -mj -travels -flush -waiver -pale -specialties -hayes -humanitarian -invitations -functioning -delight -survivor -garcia -cingular -economies -alexandria -bacterial -moses -counted -undertake -declare -continuously -johns -valves -gaps -impaired -achievements -donors -tear -jewel -teddy -lf -convertible -ata -teaches -ventures -nil -bufing -stranger -tragedy -julian -nest -pam -dryer -painful -velvet -tribunal -ruled -nato -pensions -prayers -funky -secretariat -nowhere -cop -paragraphs -gale -joins -adolescent -nominations -wesley -dim -lately -cancelled -scary -mattress -mpegs -brunei -likewise -banana -introductory -slovak -cakes -stan -reservoir -occurrence -idol -bloody -mixer -remind -wc -worcester -sbjct -demographic -charming -mai -tooth -disciplinary -annoying -respected -stays -disclose -affair -drove -washer -upset -restrict -springer -beside -mines -portraits -rebound -logan -mentor -interpreted -evaluations -fought -baghdad -elimination -metres -hypothetical -immigrants -complimentary -helicopter -pencil -freeze -hk -performer -abu -titled -commissions -sphere -powerseller -moss -ratios -concord -graduated -endorsed -ty -surprising -walnut -lance -ladder -italia -unnecessary -dramatically -liberia -sherman -cork -maximize -cj -hansen -senators -workout -mali -yugoslavia -bleeding -characterization -colon -likelihood -lanes -purse -fundamentals -contamination -mtv -endangered -compromise -masturbation -optimize -stating -dome -caroline -leu -expiration -namespace -align -peripheral -bless -engaging -negotiation -crest -opponents -triumph -nominated -confidentiality -electoral -changelog -welding -orgasm -deferred -alternatively -heel -alloy -condos -plots -polished -yang -gently -greensboro -tulsa -locking -casey -controversial -draws -fridge -blanket -bloom -qc -simpsons -lou -elliott -recovered -fraser -justify -upgrading -blades -pgp -loops -surge -frontpage -trauma -aw -tahoe -advert -possess -demanding -defensive -sip -flashers -subaru -forbidden -tf -vanilla -programmers -pj -monitored -installations -deutschland -picnic -souls -arrivals -spank -cw -practitioner -motivated -wr -dumb -smithsonian -hollow -vault -securely -examining -fioricet -groove -revelation -rg -pursuit -delegation -wires -bl -dictionaries -mails -backing -greenhouse -sleeps -vc -blake -transparency -dee -travis -wx -endless -figured -orbit -currencies -niger -bacon -survivors -positioning -heater -colony -cannon -circus -promoted -forbes -mae -moldova -mel -descending -paxil -spine -trout -enclosed -feat -temporarily -ntsc -cooked -thriller -transmit -apnic -fatty -gerald -pressed -frequencies -scanned -reflections -hunger -mariah -sic -municipality -usps -joyce -detective -surgeon -cement -experiencing -fireplace -endorsement -bg -planners -disputes -textiles -missile -intranet -closes -seq -psychiatry -persistent -deborah -conf -marco -assists -summaries -glow -gabriel -auditor -wma -aquarium -violin -prophet -cir -bracket -looksmart -isaac -oxide -oaks -magnificent -erik -colleague -naples -promptly -modems -adaptation -hu -harmful -paintball -prozac -sexually -enclosure -acm -dividend -newark -kw -paso -glucose -phantom -norm -playback -supervisors -westminster -turtle -ips -distances -absorption -treasures -dsc -warned -neural -ware -fossil -mia -hometown -badly -transcripts -apollo -wan -disappointed -persian -continually -communist -collectible -handmade -greene -entrepreneurs -robots -grenada -creations -jade -scoop -acquisitions -foul -keno -gtk -earning -mailman -sanyo -nested -biodiversity -excitement -somalia -movers -verbal -blink -presently -seas -carlo -workflow -mysterious -novelty -bryant -tiles -voyuer -librarian -subsidiaries -switched -stockholm -tamil -garmin -ru -pose -fuzzy -indonesian -grams -therapist -richards -mrna -budgets -toolkit -promising -relaxation -goat -render -carmen -ira -sen -thereafter -hardwood -erotica -temporal -sail -forge -commissioners -dense -dts -brave -forwarding -qt -awful -nightmare -airplane -reductions -southampton -istanbul -impose -organisms -sega -telescope -viewers -asbestos -portsmouth -cdna -meyer -enters -pod -savage -advancement -wu -harassment -willow -resumes -bolt -gage -throwing -existed -whore -generators -lu -wagon -barbie -dat -favour -soa -knock -urge -smtp -generates -potatoes -thorough -replication -inexpensive -kurt -receptors -peers -roland -optimum -neon -interventions -quilt -huntington -creature -ours -mounts -syracuse -internship -lone -refresh -aluminium -snowboard -beastality -webcast -michel -evanescence -subtle -coordinated -notre -shipments -maldives -stripes -firmware -antarctica -cope -shepherd -lm -canberra -cradle -chancellor -mambo -lime -kirk -flour -controversy -legendary -bool -sympathy -choir -avoiding -beautifully -blond -expects -cho -jumping -fabrics -antibodies -polymer -hygiene -wit -poultry -virtue -burst -examinations -surgeons -bouquet -immunology -promotes -mandate -wiley -departmental -bbs -spas -ind -corpus -johnston -terminology -gentleman -fibre -reproduce -convicted -shades -jets -indices -roommates -adware -qui -intl -threatening -spokesman -zoloft -activists -frankfurt -prisoner -daisy -halifax -encourages -ultram -cursor -assembled -earliest -donated -stuffed -restructuring -insects -terminals -crude -morrison -maiden -simulations -cz -sufficiently -examines -viking -myrtle -bored -cleanup -yarn -knit -conditional -mug -crossword -bother -budapest -conceptual -knitting -attacked -hl -bhutan -liechtenstein -mating -compute -redhead -arrives -translator -automobiles -tractor -allah -continent -ob -unwrap -fares -longitude -resist -challenged -telecharger -hoped -pike -safer -insertion -instrumentation -ids -hugo -wagner -constraint -groundwater -touched -strengthening -cologne -gzip -wishing -ranger -smallest -insulation -newman -marsh -ricky -ctrl -scared -theta -infringement -bent -laos -subjective -monsters -asylum -lightbox -robbie -stake -cocktail -outlets -swaziland -varieties -arbor -mediawiki -configurations -poison diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/json/JSONObjectMapper.java b/openbis_benchmark/src/main/java/ch/ethz/sis/json/JSONObjectMapper.java deleted file mode 100644 index 38b5b4aa399..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/json/JSONObjectMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package ch.ethz.sis.json; - -import java.io.FileInputStream; - -public interface JSONObjectMapper -{ - - <T> T readValue(FileInputStream src, Class<T> valueType) throws Exception; - - byte[] writeValue(Object value) throws Exception; - -} diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/json/jackson/JacksonObjectMapper.java b/openbis_benchmark/src/main/java/ch/ethz/sis/json/jackson/JacksonObjectMapper.java deleted file mode 100644 index 71b9762aa80..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/json/jackson/JacksonObjectMapper.java +++ /dev/null @@ -1,52 +0,0 @@ -package ch.ethz.sis.json.jackson; - -import java.io.FileInputStream; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; - -import ch.ethz.sis.json.JSONObjectMapper; - -public class JacksonObjectMapper implements JSONObjectMapper -{ - // - // Singleton - // - private static final JacksonObjectMapper jacksonObjectMapper; - - static - { - jacksonObjectMapper = new JacksonObjectMapper(); - } - - public static JSONObjectMapper getInstance() - { - return jacksonObjectMapper; - } - - // - // Class implementation - // - - private final ObjectMapper objectMapper; - - private JacksonObjectMapper() - { - objectMapper = new ObjectMapper(); - objectMapper.enable(SerializationFeature.INDENT_OUTPUT); - objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); - objectMapper.enableDefaultTyping(); - } - - @Override - public <T> T readValue(FileInputStream src, Class<T> valueType) throws Exception - { - return objectMapper.readValue(src, valueType); - } - - @Override - public byte[] writeValue(Object value) throws Exception - { - return objectMapper.writeValueAsBytes(value); - } -} diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/logging/LogFactory.java b/openbis_benchmark/src/main/java/ch/ethz/sis/logging/LogFactory.java deleted file mode 100644 index 9ab870f9808..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/logging/LogFactory.java +++ /dev/null @@ -1,5 +0,0 @@ -package ch.ethz.sis.logging; - -public interface LogFactory { - <T> Logger getLogger(Class<T> clazz); -} \ No newline at end of file diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/logging/LogFactoryFactory.java b/openbis_benchmark/src/main/java/ch/ethz/sis/logging/LogFactoryFactory.java deleted file mode 100644 index be6bf46db74..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/logging/LogFactoryFactory.java +++ /dev/null @@ -1,7 +0,0 @@ -package ch.ethz.sis.logging; - -public class LogFactoryFactory { - public LogFactory create(String logFactoryClass) throws Exception { - return (LogFactory) Class.forName(logFactoryClass).newInstance(); - } -} diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/logging/LogManager.java b/openbis_benchmark/src/main/java/ch/ethz/sis/logging/LogManager.java deleted file mode 100644 index 759a546054b..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/logging/LogManager.java +++ /dev/null @@ -1,22 +0,0 @@ -package ch.ethz.sis.logging; - -public class LogManager { - private static LogFactory factory; - - private static boolean isNotInitialized() { - return factory == null; - } - - public static void setLogFactory(LogFactory logFactory) { - if (isNotInitialized()) { - factory = logFactory; - } - } - - public static <T> Logger getLogger(Class<T> clazz) { - if (isNotInitialized()) { - throw new RuntimeException("LogFactory not initialized."); - } - return factory.getLogger(clazz); - } -} diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/logging/Logger.java b/openbis_benchmark/src/main/java/ch/ethz/sis/logging/Logger.java deleted file mode 100644 index b1be892bc49..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/logging/Logger.java +++ /dev/null @@ -1,18 +0,0 @@ -package ch.ethz.sis.logging; - - -public interface Logger { - // - // Trace API - Used for debugging - // - void traceAccess(String message, Object... args); - - <R> R traceExit(R arg); - - void catching(Throwable ex); - - // - // INFO API - // - void info(String message, Object... args); -} \ No newline at end of file diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/logging/log4j/Log4J2LogFactory.java b/openbis_benchmark/src/main/java/ch/ethz/sis/logging/log4j/Log4J2LogFactory.java deleted file mode 100644 index cc1d73a9394..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/logging/log4j/Log4J2LogFactory.java +++ /dev/null @@ -1,15 +0,0 @@ -package ch.ethz.sis.logging.log4j; - -import org.apache.logging.log4j.LogManager; - -import ch.ethz.sis.logging.LogFactory; -import ch.ethz.sis.logging.Logger; - -public class Log4J2LogFactory implements LogFactory -{ - @Override - public <T> Logger getLogger(Class<T> clazz) - { - return (Logger) new Log4JLogger(LogManager.getLogger(clazz)); - } -} \ No newline at end of file diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/logging/log4j/Log4JLogger.java b/openbis_benchmark/src/main/java/ch/ethz/sis/logging/log4j/Log4JLogger.java deleted file mode 100644 index c69b4d000d2..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/logging/log4j/Log4JLogger.java +++ /dev/null @@ -1,59 +0,0 @@ -package ch.ethz.sis.logging.log4j; - -import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.spi.AbstractLogger; -import org.apache.logging.log4j.spi.ExtendedLoggerWrapper; - -class Log4JLogger extends ExtendedLoggerWrapper implements ch.ethz.sis.logging.Logger -{ - - private final String FQCN; - - Log4JLogger(final Logger logger) - { - super((AbstractLogger) logger, logger.getName(), logger.getMessageFactory()); - FQCN = this.getClass().getName(); - } - - @Override - public void traceAccess(String message, Object... args) - { - this.logMessage(FQCN, - Level.TRACE, - ENTRY_MARKER, - entryMsg(message, args), - (Throwable) null); - } - - @Override - public <R> R traceExit(R result) - { - this.logMessage(FQCN, - Level.TRACE, - EXIT_MARKER, - exitMsg((String) null, result), - (Throwable) null); - return result; - } - - @Override - public void catching(Throwable ex) - { - this.logMessage(FQCN, - Level.TRACE, - CATCHING_MARKER, - catchingMsg(ex), - ex); - } - - @Override - public void info(String message, Object... args) - { - this.logMessage(FQCN, - Level.INFO, - null, - logger.getMessageFactory().newMessage(message, args), - (Throwable) null); - } -} diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/ssl/SslCertificateHelper.java b/openbis_benchmark/src/main/java/ch/ethz/sis/ssl/SslCertificateHelper.java deleted file mode 100644 index 610b8d896d2..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/ssl/SslCertificateHelper.java +++ /dev/null @@ -1,215 +0,0 @@ -package ch.ethz.sis.ssl; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.net.URL; -import java.security.KeyStore; -import java.security.cert.Certificate; - -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSession; -import javax.net.ssl.SSLSocket; -import javax.net.ssl.SSLSocketFactory; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509TrustManager; - -import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; - -/** - * Helper class for retrieving and locally storing SSL certificates from a server. - * - * @author Chandrasekhar Ramakrishnan - */ -public class SslCertificateHelper -{ - private final String serviceURL; - - private final File keystoreFile; - - private final String certificateEntryName; - - /** - * Create a helper that retrieves a certificate from the serviceURL, and stores it in a keystore file with the name "keystore" in the - * configDirectory. - * - * @param serviceURL The URL to retrieve the certificate from. - * @param keystoreFile The file where to store the certificate in. - * @param certificateEntryName The name in the keystore the certificate is stored under. - */ - public SslCertificateHelper(String serviceURL, File keystoreFile, String certificateEntryName) - { - this.serviceURL = serviceURL; - this.keystoreFile = keystoreFile; - this.certificateEntryName = certificateEntryName; - } - - public void setUpKeyStore() - { - if (serviceURL.startsWith("https")) - { - Certificate[] certificates = getServerCertificate(); - KeyStore keyStore; - try - { - keyStore = KeyStore.getInstance("JKS"); - keyStore.load(null, null); - for (int i = 0; i < certificates.length; i++) - { - keyStore.setCertificateEntry(certificateEntryName + i, certificates[i]); - } - } catch (Exception ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } - FileOutputStream fileOutputStream = null; - try - { - fileOutputStream = new FileOutputStream(keystoreFile); - keyStore.store(fileOutputStream, "changeit".toCharArray()); - fileOutputStream.close(); - System.setProperty("javax.net.ssl.trustStore", keystoreFile.getAbsolutePath()); - } catch (Exception ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } finally - { - closeQuietly(fileOutputStream); - } - } - } - - private static void closeQuietly(OutputStream output) - { - try - { - if (output != null) - { - output.close(); - } - } catch (IOException ioe) - { - // ignore - } - } - - private Certificate[] getServerCertificate() - { - workAroundABugInJava6(); - - // Create a trust manager that does not validate certificate chains - setUpAllAcceptingTrustManager(); - setUpAllAcceptingHostNameVerifier(); - SSLSocket socket = null; - try - { - URL url = new URL(serviceURL); - int port = url.getPort(); - if (port == -1) - { - port = 443; // standard port for https - } - String hostname = url.getHost(); - SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory(); - socket = (SSLSocket) factory.createSocket(hostname, port); - socket.startHandshake(); - return socket.getSession().getPeerCertificates(); - } catch (Exception e) - { - throw CheckedExceptionTunnel.wrapIfNecessary(e); - } finally - { - if (socket != null) - { - try - { - socket.close(); - } catch (IOException ex) - { - // ignored - } - } - } - } - - private void setUpAllAcceptingTrustManager() - { - TrustManager[] trustAllCerts = new TrustManager[] - { new X509TrustManager() - { - @Override - public java.security.cert.X509Certificate[] getAcceptedIssuers() - { - return null; - } - - @Override - public void checkClientTrusted(java.security.cert.X509Certificate[] certs, - String authType) - { - } - - @Override - public void checkServerTrusted(java.security.cert.X509Certificate[] certs, - String authType) - { - } - } }; - - // Install the all-trusting trust manager - try - { - SSLContext sc = SSLContext.getInstance("SSL"); - sc.init(null, trustAllCerts, new java.security.SecureRandom()); - HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); - } catch (Exception e) - { - } - } - - private void setUpAllAcceptingHostNameVerifier() - { - HostnameVerifier acceptAllHostNames = new HostnameVerifier() - { - @Override - public boolean verify(String hostname, SSLSession session) - { - return true; - } - }; - HttpsURLConnection.setDefaultHostnameVerifier(acceptAllHostNames); - } - - // WORKAROUND: see comment submitted on 31-JAN-2008 for - // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6514454 - private void workAroundABugInJava6() - { - try - { - SSLContext.getInstance("SSL").createSSLEngine(); - } catch (Exception ex) - { - // Ignore this one. - } - } - - public static void trustAnyCertificate(String url) - { - if (url.startsWith("https://")) - { - try - { - File tempKeyStore = File.createTempFile("cert", "keystore"); - tempKeyStore.deleteOnExit(); - SslCertificateHelper helper = new SslCertificateHelper(url, tempKeyStore, "cert"); - helper.setUpKeyStore(); - } catch (IOException ioex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ioex); - } - } - } -} \ No newline at end of file diff --git a/openbis_benchmark/src/main/java/ch/ethz/sis/startup/Main.java b/openbis_benchmark/src/main/java/ch/ethz/sis/startup/Main.java deleted file mode 100644 index ea8796db60a..00000000000 --- a/openbis_benchmark/src/main/java/ch/ethz/sis/startup/Main.java +++ /dev/null @@ -1,112 +0,0 @@ -package ch.ethz.sis.startup; - -import java.io.File; -import java.io.FileInputStream; -import java.util.ArrayList; -import java.util.List; - -import ch.ethz.sis.benchmark.Benchmark; -import ch.ethz.sis.benchmark.BenchmarkConfig; -import ch.ethz.sis.json.jackson.JacksonObjectMapper; -import ch.ethz.sis.logging.LogManager; -import ch.ethz.sis.logging.Logger; -import ch.ethz.sis.logging.log4j.Log4J2LogFactory; - -public class Main -{ - static - { - // Configuring Logging - LogManager.setLogFactory(new Log4J2LogFactory()); - } - - private static Logger logger = LogManager.getLogger(Main.class); - - public static void main(String[] args) throws Exception - { - logger.info("Current Workspace: " + (new File("").getAbsolutePath())); - File configFile; - if (args.length < 1) - { - configFile = new File("../openbis_benchmark/conf/config-dev.json"); - if(configFile.exists()) { - logger.info("No arguments given, starting with development config file: " + (configFile.getAbsolutePath())); - } else { - configFile = new File("./config-default.json"); - if(configFile.exists()) { - logger.info("No arguments given, starting with default config file: " + (configFile.getAbsolutePath())); - } - } - } else - { - configFile = new File(args[0]); - } - - BenchmarkConfig[] benchmarkConfigs = JacksonObjectMapper.getInstance().readValue(new FileInputStream(configFile), BenchmarkConfig[].class); - logger.info("REPORT MAIN\ttotalRealTime\taggAVGOpTime\ttotalOpTime\tnumOps\tavgOpTime\tmaxOpTime\tminOpTime"); - for(BenchmarkConfig benchmarkConfig:benchmarkConfigs) { // For each benchmark - logger.traceAccess(null, benchmarkConfig); - long start = System.currentTimeMillis(); - List<BenchmarkThread> threadsToJoin = new ArrayList<>(); - for(int t = 0; t < benchmarkConfig.getThreads(); t++) { - BenchmarkThread thread = new BenchmarkThread(benchmarkConfig) { - public void run() { - benchmark.start(); - } - }; - threadsToJoin.add(thread); - thread.start(); - } - - for(BenchmarkThread thread:threadsToJoin) { - thread.join(); - } - long end = System.currentTimeMillis(); - logger.traceExit(benchmarkConfig); - logger.info("Benchmark took: " + (end-start) + " millis"); - logJointStats(start, end, threadsToJoin); - } - } - - private static abstract class BenchmarkThread extends Thread { - protected Benchmark benchmark; - - public BenchmarkThread(BenchmarkConfig benchmarkConfig) { - super(); - try { - benchmark = (Benchmark) Class.forName(benchmarkConfig.getClassName()).newInstance(); - benchmark.setConfiguration(benchmarkConfig); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public Benchmark getBenchmark() { - return benchmark; - } - } - - private static void logJointStats(long start, long end, List<BenchmarkThread> benchmarkThreads) { - long maxOpTime = Long.MIN_VALUE; - long minOpTime = Long.MAX_VALUE; - long numOps = 0; - long totalOpTime = 0; - - for(BenchmarkThread benchmarkThread:benchmarkThreads) { - totalOpTime += benchmarkThread.getBenchmark().getTotalOpTime(); - numOps += benchmarkThread.getBenchmark().getNumOps(); - if(benchmarkThread.getBenchmark().getMinOpTime() < minOpTime) { - minOpTime = benchmarkThread.getBenchmark().getMinOpTime(); - } - if(benchmarkThread.getBenchmark().getMaxOpTime() > maxOpTime) { - maxOpTime = benchmarkThread.getBenchmark().getMaxOpTime(); - } - } - - if(numOps > 0) { - logger.info("REPORT MAIN\t" + (end-start) + "\t" + ((end-start)/numOps) + "\t" + totalOpTime + "\t" + numOps + "\t" + (totalOpTime/numOps) + "\t" + maxOpTime + "\t" + minOpTime); - } else { - logger.info("REPORT MAIN\tNO-OP"); - } - } -} diff --git a/openbis_benchmark/src/main/resources/ch/ethz/sis/benchmark/util/google-10000-english.txt b/openbis_benchmark/src/main/resources/ch/ethz/sis/benchmark/util/google-10000-english.txt deleted file mode 100644 index 3164d7bf96a..00000000000 --- a/openbis_benchmark/src/main/resources/ch/ethz/sis/benchmark/util/google-10000-english.txt +++ /dev/null @@ -1,10000 +0,0 @@ -the -of -and -to -a -in -for -is -on -that -by -this -with -i -you -it -not -or -be -are -from -at -as -your -all -have -new -more -an -was -we -will -home -can -us -about -if -page -my -has -search -free -but -our -one -other -do -no -information -time -they -site -he -up -may -what -which -their -news -out -use -any -there -see -only -so -his -when -contact -here -business -who -web -also -now -help -get -pm -view -online -c -e -first -am -been -would -how -were -me -s -services -some -these -click -its -like -service -x -than -find -price -date -back -top -people -had -list -name -just -over -state -year -day -into -email -two -health -n -world -re -next -used -go -b -work -last -most -products -music -buy -data -make -them -should -product -system -post -her -city -t -add -policy -number -such -please -available -copyright -support -message -after -best -software -then -jan -good -video -well -d -where -info -rights -public -books -high -school -through -m -each -links -she -review -years -order -very -privacy -book -items -company -r -read -group -sex -need -many -user -said -de -does -set -under -general -research -university -january -mail -full -map -reviews -program -life -know -games -way -days -management -p -part -could -great -united -hotel -real -f -item -international -center -ebay -must -store -travel -comments -made -development -report -off -member -details -line -terms -before -hotels -did -send -right -type -because -local -those -using -results -office -education -national -car -design -take -posted -internet -address -community -within -states -area -want -phone -dvd -shipping -reserved -subject -between -forum -family -l -long -based -w -code -show -o -even -black -check -special -prices -website -index -being -women -much -sign -file -link -open -today -technology -south -case -project -same -pages -uk -version -section -own -found -sports -house -related -security -both -g -county -american -photo -game -members -power -while -care -network -down -computer -systems -three -total -place -end -following -download -h -him -without -per -access -think -north -resources -current -posts -big -media -law -control -water -history -pictures -size -art -personal -since -including -guide -shop -directory -board -location -change -white -text -small -rating -rate -government -children -during -usa -return -students -v -shopping -account -times -sites -level -digital -profile -previous -form -events -love -old -john -main -call -hours -image -department -title -description -non -k -y -insurance -another -why -shall -property -class -cd -still -money -quality -every -listing -content -country -private -little -visit -save -tools -low -reply -customer -december -compare -movies -include -college -value -article -york -man -card -jobs -provide -j -food -source -author -different -press -u -learn -sale -around -print -course -job -canada -process -teen -room -stock -training -too -credit -point -join -science -men -categories -advanced -west -sales -look -english -left -team -estate -box -conditions -select -windows -photos -gay -thread -week -category -note -live -large -gallery -table -register -however -june -october -november -market -library -really -action -start -series -model -features -air -industry -plan -human -provided -tv -yes -required -second -hot -accessories -cost -movie -forums -march -la -september -better -say -questions -july -yahoo -going -medical -test -friend -come -dec -server -pc -study -application -cart -staff -articles -san -feedback -again -play -looking -issues -april -never -users -complete -street -topic -comment -financial -things -working -against -standard -tax -person -below -mobile -less -got -blog -party -payment -equipment -login -student -let -programs -offers -legal -above -recent -park -stores -side -act -problem -red -give -memory -performance -social -q -august -quote -language -story -sell -options -experience -rates -create -key -body -young -america -important -field -few -east -paper -single -ii -age -activities -club -example -girls -additional -password -z -latest -something -road -gift -question -changes -night -ca -hard -texas -oct -pay -four -poker -status -browse -issue -range -building -seller -court -february -always -result -audio -light -write -war -nov -offer -blue -groups -al -easy -given -files -event -release -analysis -request -fax -china -making -picture -needs -possible -might -professional -yet -month -major -star -areas -future -space -committee -hand -sun -cards -problems -london -washington -meeting -rss -become -interest -id -child -keep -enter -california -porn -share -similar -garden -schools -million -added -reference -companies -listed -baby -learning -energy -run -delivery -net -popular -term -film -stories -put -computers -journal -reports -co -try -welcome -central -images -president -notice -god -original -head -radio -until -cell -color -self -council -away -includes -track -australia -discussion -archive -once -others -entertainment -agreement -format -least -society -months -log -safety -friends -sure -faq -trade -edition -cars -messages -marketing -tell -further -updated -association -able -having -provides -david -fun -already -green -studies -close -common -drive -specific -several -gold -feb -living -sep -collection -called -short -arts -lot -ask -display -limited -powered -solutions -means -director -daily -beach -past -natural -whether -due -et -electronics -five -upon -period -planning -database -says -official -weather -mar -land -average -done -technical -window -france -pro -region -island -record -direct -microsoft -conference -environment -records -st -district -calendar -costs -style -url -front -statement -update -parts -aug -ever -downloads -early -miles -sound -resource -present -applications -either -ago -document -word -works -material -bill -apr -written -talk -federal -hosting -rules -final -adult -tickets -thing -centre -requirements -via -cheap -nude -kids -finance -true -minutes -else -mark -third -rock -gifts -europe -reading -topics -bad -individual -tips -plus -auto -cover -usually -edit -together -videos -percent -fast -function -fact -unit -getting -global -tech -meet -far -economic -en -player -projects -lyrics -often -subscribe -submit -germany -amount -watch -included -feel -though -bank -risk -thanks -everything -deals -various -words -linux -jul -production -commercial -james -weight -town -heart -advertising -received -choose -treatment -newsletter -archives -points -knowledge -magazine -error -camera -jun -girl -currently -construction -toys -registered -clear -golf -receive -domain -methods -chapter -makes -protection -policies -loan -wide -beauty -manager -india -position -taken -sort -listings -models -michael -known -half -cases -step -engineering -florida -simple -quick -none -wireless -license -paul -friday -lake -whole -annual -published -later -basic -sony -shows -corporate -google -church -method -purchase -customers -active -response -practice -hardware -figure -materials -fire -holiday -chat -enough -designed -along -among -death -writing -speed -html -countries -loss -face -brand -discount -higher -effects -created -remember -standards -oil -bit -yellow -political -increase -advertise -kingdom -base -near -environmental -thought -stuff -french -storage -oh -japan -doing -loans -shoes -entry -stay -nature -orders -availability -africa -summary -turn -mean -growth -notes -agency -king -monday -european -activity -copy -although -drug -pics -western -income -force -cash -employment -overall -bay -river -commission -ad -package -contents -seen -players -engine -port -album -regional -stop -supplies -started -administration -bar -institute -views -plans -double -dog -build -screen -exchange -types -soon -sponsored -lines -electronic -continue -across -benefits -needed -season -apply -someone -held -ny -anything -printer -condition -effective -believe -organization -effect -asked -eur -mind -sunday -selection -casino -pdf -lost -tour -menu -volume -cross -anyone -mortgage -hope -silver -corporation -wish -inside -solution -mature -role -rather -weeks -addition -came -supply -nothing -certain -usr -executive -running -lower -necessary -union -jewelry -according -dc -clothing -mon -com -particular -fine -names -robert -homepage -hour -gas -skills -six -bush -islands -advice -career -military -rental -decision -leave -british -teens -pre -huge -sat -woman -facilities -zip -bid -kind -sellers -middle -move -cable -opportunities -taking -values -division -coming -tuesday -object -lesbian -appropriate -machine -logo -length -actually -nice -score -statistics -client -ok -returns -capital -follow -sample -investment -sent -shown -saturday -christmas -england -culture -band -flash -ms -lead -george -choice -went -starting -registration -fri -thursday -courses -consumer -hi -airport -foreign -artist -outside -furniture -levels -channel -letter -mode -phones -ideas -wednesday -structure -fund -summer -allow -degree -contract -button -releases -wed -homes -super -male -matter -custom -virginia -almost -took -located -multiple -asian -distribution -editor -inn -industrial -cause -potential -song -cnet -ltd -los -hp -focus -late -fall -featured -idea -rooms -female -responsible -inc -communications -win -associated -thomas -primary -cancer -numbers -reason -tool -browser -spring -foundation -answer -voice -eg -friendly -schedule -documents -communication -purpose -feature -bed -comes -police -everyone -independent -ip -approach -cameras -brown -physical -operating -hill -maps -medicine -deal -hold -ratings -chicago -forms -glass -happy -tue -smith -wanted -developed -thank -safe -unique -survey -prior -telephone -sport -ready -feed -animal -sources -mexico -population -pa -regular -secure -navigation -operations -therefore -ass -simply -evidence -station -christian -round -paypal -favorite -understand -option -master -valley -recently -probably -thu -rentals -sea -built -publications -blood -cut -worldwide -improve -connection -publisher -hall -larger -anti -networks -earth -parents -nokia -impact -transfer -introduction -kitchen -strong -tel -carolina -wedding -properties -hospital -ground -overview -ship -accommodation -owners -disease -tx -excellent -paid -italy -perfect -hair -opportunity -kit -classic -basis -command -cities -william -express -anal -award -distance -tree -peter -assessment -ensure -thus -wall -ie -involved -el -extra -especially -interface -pussy -partners -budget -rated -guides -success -maximum -ma -operation -existing -quite -selected -boy -amazon -patients -restaurants -beautiful -warning -wine -locations -horse -vote -forward -flowers -stars -significant -lists -technologies -owner -retail -animals -useful -directly -manufacturer -ways -est -son -providing -rule -mac -housing -takes -iii -gmt -bring -catalog -searches -max -trying -mother -authority -considered -told -xml -traffic -programme -joined -input -strategy -feet -agent -valid -bin -modern -senior -ireland -sexy -teaching -door -grand -testing -trial -charge -units -instead -canadian -cool -normal -wrote -enterprise -ships -entire -educational -md -leading -metal -positive -fl -fitness -chinese -opinion -mb -asia -football -abstract -uses -output -funds -mr -greater -likely -develop -employees -artists -alternative -processing -responsibility -resolution -java -guest -seems -publication -pass -relations -trust -van -contains -session -multi -photography -republic -fees -components -vacation -century -academic -assistance -completed -skin -graphics -indian -prev -ads -mary -il -expected -ring -grade -dating -pacific -mountain -organizations -pop -filter -mailing -vehicle -longer -consider -int -northern -behind -panel -floor -german -buying -match -proposed -default -require -iraq -boys -outdoor -deep -morning -otherwise -allows -rest -protein -plant -reported -hit -transportation -mm -pool -mini -politics -partner -disclaimer -authors -boards -faculty -parties -fish -membership -mission -eye -string -sense -modified -pack -released -stage -internal -goods -recommended -born -unless -richard -detailed -japanese -race -approved -background -target -except -character -usb -maintenance -ability -maybe -functions -ed -moving -brands -places -php -pretty -trademarks -phentermine -spain -southern -yourself -etc -winter -rape -battery -youth -pressure -submitted -boston -incest -debt -keywords -medium -television -interested -core -break -purposes -throughout -sets -dance -wood -msn -itself -defined -papers -playing -awards -fee -studio -reader -virtual -device -established -answers -rent -las -remote -dark -programming -external -apple -le -regarding -instructions -min -offered -theory -enjoy -remove -aid -surface -minimum -visual -host -variety -teachers -isbn -martin -manual -block -subjects -agents -increased -repair -fair -civil -steel -understanding -songs -fixed -wrong -beginning -hands -associates -finally -az -updates -desktop -classes -paris -ohio -gets -sector -capacity -requires -jersey -un -fat -fully -father -electric -saw -instruments -quotes -officer -driver -businesses -dead -respect -unknown -specified -restaurant -mike -trip -pst -worth -mi -procedures -poor -teacher -xxx -eyes -relationship -workers -farm -fucking -georgia -peace -traditional -campus -tom -showing -creative -coast -benefit -progress -funding -devices -lord -grant -sub -agree -fiction -hear -sometimes -watches -careers -beyond -goes -families -led -museum -themselves -fan -transport -interesting -blogs -wife -evaluation -accepted -former -implementation -ten -hits -zone -complex -th -cat -galleries -references -die -presented -jack -flat -flow -agencies -literature -respective -parent -spanish -michigan -columbia -setting -dr -scale -stand -economy -highest -helpful -monthly -critical -frame -musical -definition -secretary -angeles -networking -path -australian -employee -chief -gives -kb -bottom -magazines -packages -detail -francisco -laws -changed -pet -heard -begin -individuals -colorado -royal -clean -switch -russian -largest -african -guy -titles -relevant -guidelines -justice -connect -bible -dev -cup -basket -applied -weekly -vol -installation -described -demand -pp -suite -vegas -na -square -chris -attention -advance -skip -diet -army -auction -gear -lee -os -difference -allowed -correct -charles -nation -selling -lots -piece -sheet -firm -seven -older -illinois -regulations -elements -species -jump -cells -module -resort -facility -random -pricing -dvds -certificate -minister -motion -looks -fashion -directions -visitors -documentation -monitor -trading -forest -calls -whose -coverage -couple -giving -chance -vision -ball -ending -clients -actions -listen -discuss -accept -automotive -naked -goal -successful -sold -wind -communities -clinical -situation -sciences -markets -lowest -highly -publishing -appear -emergency -developing -lives -currency -leather -determine -milf -temperature -palm -announcements -patient -actual -historical -stone -bob -commerce -ringtones -perhaps -persons -difficult -scientific -satellite -fit -tests -village -accounts -amateur -ex -met -pain -xbox -particularly -factors -coffee -www -settings -cum -buyer -cultural -steve -easily -oral -ford -poster -edge -functional -root -au -fi -closed -holidays -ice -pink -zealand -balance -monitoring -graduate -replies -shot -nc -architecture -initial -label -thinking -scott -llc -sec -recommend -canon -hardcore -league -waste -minute -bus -provider -optional -dictionary -cold -accounting -manufacturing -sections -chair -fishing -effort -phase -fields -bag -fantasy -po -letters -motor -va -professor -context -install -shirt -apparel -generally -continued -foot -mass -crime -count -breast -techniques -ibm -rd -johnson -sc -quickly -dollars -websites -religion -claim -driving -permission -surgery -patch -heat -wild -measures -generation -kansas -miss -chemical -doctor -task -reduce -brought -himself -nor -component -enable -exercise -bug -santa -mid -guarantee -leader -diamond -israel -se -processes -soft -servers -alone -meetings -seconds -jones -arizona -keyword -interests -flight -congress -fuel -username -walk -fuck -produced -italian -paperback -classifieds -wait -supported -pocket -saint -rose -freedom -argument -competition -creating -jim -drugs -joint -premium -providers -fresh -characters -attorney -upgrade -di -factor -growing -thousands -km -stream -apartments -pick -hearing -eastern -auctions -therapy -entries -dates -generated -signed -upper -administrative -serious -prime -samsung -limit -began -louis -steps -errors -shops -bondage -del -efforts -informed -ga -ac -thoughts -creek -ft -worked -quantity -urban -practices -sorted -reporting -essential -myself -tours -platform -load -affiliate -labor -immediately -admin -nursing -defense -machines -designated -tags -heavy -covered -recovery -joe -guys -integrated -configuration -cock -merchant -comprehensive -expert -universal -protect -drop -solid -cds -presentation -languages -became -orange -compliance -vehicles -prevent -theme -rich -im -campaign -marine -improvement -vs -guitar -finding -pennsylvania -examples -ipod -saying -spirit -ar -claims -porno -challenge -motorola -acceptance -strategies -mo -seem -affairs -touch -intended -towards -sa -goals -hire -election -suggest -branch -charges -serve -affiliates -reasons -magic -mount -smart -talking -gave -ones -latin -multimedia -xp -tits -avoid -certified -manage -corner -rank -computing -oregon -element -birth -virus -abuse -interactive -requests -separate -quarter -procedure -leadership -tables -define -racing -religious -facts -breakfast -kong -column -plants -faith -chain -developer -identify -avenue -missing -died -approximately -domestic -sitemap -recommendations -moved -houston -reach -comparison -mental -viewed -moment -extended -sequence -inch -attack -sorry -centers -opening -damage -lab -reserve -recipes -cvs -gamma -plastic -produce -snow -placed -truth -counter -failure -follows -eu -weekend -dollar -camp -ontario -automatically -des -minnesota -films -bridge -native -fill -williams -movement -printing -baseball -owned -approval -draft -chart -played -contacts -cc -jesus -readers -clubs -lcd -wa -jackson -equal -adventure -matching -offering -shirts -profit -leaders -posters -institutions -assistant -variable -ave -dj -advertisement -expect -parking -headlines -yesterday -compared -determined -wholesale -workshop -russia -gone -codes -kinds -extension -seattle -statements -golden -completely -teams -fort -cm -wi -lighting -senate -forces -funny -brother -gene -turned -portable -tried -electrical -applicable -disc -returned -pattern -ct -hentai -boat -named -theatre -laser -earlier -manufacturers -sponsor -classical -icon -warranty -dedicated -indiana -direction -harry -basketball -objects -ends -delete -evening -assembly -nuclear -taxes -mouse -signal -criminal -issued -brain -sexual -wisconsin -powerful -dream -obtained -false -da -cast -flower -felt -personnel -passed -supplied -identified -falls -pic -soul -aids -opinions -promote -stated -stats -hawaii -professionals -appears -carry -flag -decided -nj -covers -hr -em -advantage -hello -designs -maintain -tourism -priority -newsletters -adults -clips -savings -iv -graphic -atom -payments -rw -estimated -binding -brief -ended -winning -eight -anonymous -iron -straight -script -served -wants -miscellaneous -prepared -void -dining -alert -integration -atlanta -dakota -tag -interview -mix -framework -disk -installed -queen -vhs -credits -clearly -fix -handle -sweet -desk -criteria -pubmed -dave -massachusetts -diego -hong -vice -associate -ne -truck -behavior -enlarge -ray -frequently -revenue -measure -changing -votes -du -duty -looked -discussions -bear -gain -festival -laboratory -ocean -flights -experts -signs -lack -depth -iowa -whatever -logged -laptop -vintage -train -exactly -dry -explore -maryland -spa -concept -nearly -eligible -checkout -reality -forgot -handling -origin -knew -gaming -feeds -billion -destination -scotland -faster -intelligence -dallas -bought -con -ups -nations -route -followed -specifications -broken -tripadvisor -frank -alaska -zoom -blow -battle -residential -anime -speak -decisions -industries -protocol -query -clip -partnership -editorial -nt -expression -es -equity -provisions -speech -wire -principles -suggestions -rural -shared -sounds -replacement -tape -strategic -judge -spam -economics -acid -bytes -cent -forced -compatible -fight -apartment -height -null -zero -speaker -filed -gb -netherlands -obtain -bc -consulting -recreation -offices -designer -remain -managed -pr -failed -marriage -roll -korea -banks -fr -participants -secret -bath -aa -kelly -leads -negative -austin -favorites -toronto -theater -springs -missouri -andrew -var -perform -healthy -translation -estimates -font -assets -injury -mt -joseph -ministry -drivers -lawyer -figures -married -protected -proposal -sharing -philadelphia -portal -waiting -birthday -beta -fail -gratis -banking -officials -brian -toward -won -slightly -assist -conduct -contained -lingerie -shemale -legislation -calling -parameters -jazz -serving -bags -profiles -miami -comics -matters -houses -doc -postal -relationships -tennessee -wear -controls -breaking -combined -ultimate -wales -representative -frequency -introduced -minor -finish -departments -residents -noted -displayed -mom -reduced -physics -rare -spent -performed -extreme -samples -davis -daniel -bars -reviewed -row -oz -forecast -removed -helps -singles -administrator -cycle -amounts -contain -accuracy -dual -rise -usd -sleep -mg -bird -pharmacy -brazil -creation -static -scene -hunter -addresses -lady -crystal -famous -writer -chairman -violence -fans -oklahoma -speakers -drink -academy -dynamic -gender -eat -permanent -agriculture -dell -cleaning -constitutes -portfolio -practical -delivered -collectibles -infrastructure -exclusive -seat -concerns -colour -vendor -originally -intel -utilities -philosophy -regulation -officers -reduction -aim -bids -referred -supports -nutrition -recording -regions -junior -toll -les -cape -ann -rings -meaning -tip -secondary -wonderful -mine -ladies -henry -ticket -announced -guess -agreed -prevention -whom -ski -soccer -math -import -posting -presence -instant -mentioned -automatic -healthcare -viewing -maintained -ch -increasing -majority -connected -christ -dan -dogs -sd -directors -aspects -austria -ahead -moon -participation -scheme -utility -preview -fly -manner -matrix -containing -combination -devel -amendment -despite -strength -guaranteed -turkey -libraries -proper -distributed -degrees -singapore -enterprises -delta -fear -seeking -inches -phoenix -rs -convention -shares -principal -daughter -standing -voyeur -comfort -colors -wars -cisco -ordering -kept -alpha -appeal -cruise -bonus -certification -previously -hey -bookmark -buildings -specials -beat -disney -household -batteries -adobe -smoking -bbc -becomes -drives -arms -alabama -tea -improved -trees -avg -achieve -positions -dress -subscription -dealer -contemporary -sky -utah -nearby -rom -carried -happen -exposure -panasonic -hide -permalink -signature -gambling -refer -miller -provision -outdoors -clothes -caused -luxury -babes -frames -viagra -certainly -indeed -newspaper -toy -circuit -layer -printed -slow -removal -easier -src -liability -trademark -hip -printers -faqs -nine -adding -kentucky -mostly -eric -spot -taylor -trackback -prints -spend -factory -interior -revised -grow -americans -optical -promotion -relative -amazing -clock -dot -hiv -identity -suites -conversion -feeling -hidden -reasonable -victoria -serial -relief -revision -broadband -influence -ratio -pda -importance -rain -onto -dsl -planet -webmaster -copies -recipe -zum -permit -seeing -proof -dna -diff -tennis -bass -prescription -bedroom -empty -instance -hole -pets -ride -licensed -orlando -specifically -tim -bureau -maine -sql -represent -conservation -pair -ideal -specs -recorded -don -pieces -finished -parks -dinner -lawyers -sydney -stress -cream -ss -runs -trends -yeah -discover -sexo -ap -patterns -boxes -louisiana -hills -javascript -fourth -nm -advisor -mn -marketplace -nd -evil -aware -wilson -shape -evolution -irish -certificates -objectives -stations -suggested -gps -op -remains -acc -greatest -firms -concerned -euro -operator -structures -generic -encyclopedia -usage -cap -ink -charts -continuing -mixed -census -interracial -peak -tn -competitive -exist -wheel -transit -dick -suppliers -salt -compact -poetry -lights -tracking -angel -bell -keeping -preparation -attempt -receiving -matches -accordance -width -noise -engines -forget -array -discussed -accurate -stephen -elizabeth -climate -reservations -pin -playstation -alcohol -greek -instruction -managing -annotation -sister -raw -differences -walking -explain -smaller -newest -establish -gnu -happened -expressed -jeff -extent -sharp -lesbians -ben -lane -paragraph -kill -mathematics -aol -compensation -ce -export -managers -aircraft -modules -sweden -conflict -conducted -versions -employer -occur -percentage -knows -mississippi -describe -concern -backup -requested -citizens -connecticut -heritage -personals -immediate -holding -trouble -spread -coach -kevin -agricultural -expand -supporting -audience -assigned -jordan -collections -ages -participate -plug -specialist -cook -affect -virgin -experienced -investigation -raised -hat -institution -directed -dealers -searching -sporting -helping -perl -affected -lib -bike -totally -plate -expenses -indicate -blonde -ab -proceedings -favourite -transmission -anderson -utc -characteristics -der -lose -organic -seek -experiences -albums -cheats -extremely -verzeichnis -contracts -guests -hosted -diseases -concerning -developers -equivalent -chemistry -tony -neighborhood -nevada -kits -thailand -variables -agenda -anyway -continues -tracks -advisory -cam -curriculum -logic -template -prince -circle -soil -grants -anywhere -psychology -responses -atlantic -wet -circumstances -edward -investor -identification -ram -leaving -wildlife -appliances -matt -elementary -cooking -speaking -sponsors -fox -unlimited -respond -sizes -plain -exit -entered -iran -arm -keys -launch -wave -checking -costa -belgium -printable -holy -acts -guidance -mesh -trail -enforcement -symbol -crafts -highway -buddy -hardcover -observed -dean -setup -poll -booking -glossary -fiscal -celebrity -styles -denver -unix -filled -bond -channels -ericsson -appendix -notify -blues -chocolate -pub -portion -scope -hampshire -supplier -cables -cotton -bluetooth -controlled -requirement -authorities -biology -dental -killed -border -ancient -debate -representatives -starts -pregnancy -causes -arkansas -biography -leisure -attractions -learned -transactions -notebook -explorer -historic -attached -opened -tm -husband -disabled -authorized -crazy -upcoming -britain -concert -retirement -scores -financing -efficiency -sp -comedy -adopted -efficient -weblog -linear -commitment -specialty -bears -jean -hop -carrier -edited -constant -visa -mouth -jewish -meter -linked -portland -interviews -concepts -nh -gun -reflect -pure -deliver -wonder -hell -lessons -fruit -begins -qualified -reform -lens -alerts -treated -discovery -draw -mysql -classified -relating -assume -confidence -alliance -fm -confirm -warm -neither -lewis -howard -offline -leaves -engineer -lifestyle -consistent -replace -clearance -connections -inventory -converter -suck -organisation -babe -checks -reached -becoming -blowjob -safari -objective -indicated -sugar -crew -legs -sam -stick -securities -allen -pdt -relation -enabled -genre -slide -montana -volunteer -tested -rear -democratic -enhance -switzerland -exact -bound -parameter -adapter -processor -node -formal -dimensions -contribute -lock -hockey -storm -micro -colleges -laptops -mile -showed -challenges -editors -mens -threads -bowl -supreme -brothers -recognition -presents -ref -tank -submission -dolls -estimate -encourage -navy -kid -regulatory -inspection -consumers -cancel -limits -territory -transaction -manchester -weapons -paint -delay -pilot -outlet -contributions -continuous -db -czech -resulting -cambridge -initiative -novel -pan -execution -disability -increases -ultra -winner -idaho -contractor -ph -episode -examination -potter -dish -plays -bulletin -ia -pt -indicates -modify -oxford -adam -truly -epinions -painting -committed -extensive -affordable -universe -candidate -databases -patent -slot -psp -outstanding -ha -eating -perspective -planned -watching -lodge -messenger -mirror -tournament -consideration -ds -discounts -sterling -sessions -kernel -boobs -stocks -buyers -journals -gray -catalogue -ea -jennifer -antonio -charged -broad -taiwan -und -chosen -demo -greece -lg -swiss -sarah -clark -labour -hate -terminal -publishers -nights -behalf -caribbean -liquid -rice -nebraska -loop -salary -reservation -foods -gourmet -guard -properly -orleans -saving -nfl -remaining -empire -resume -twenty -newly -raise -prepare -avatar -gary -depending -illegal -expansion -vary -hundreds -rome -arab -lincoln -helped -premier -tomorrow -purchased -milk -decide -consent -drama -visiting -performing -downtown -keyboard -contest -collected -nw -bands -boot -suitable -ff -absolutely -millions -lunch -dildo -audit -push -chamber -guinea -findings -muscle -featuring -iso -implement -clicking -scheduled -polls -typical -tower -yours -sum -misc -calculator -significantly -chicken -temporary -attend -shower -alan -sending -jason -tonight -dear -sufficient -holdem -shell -province -catholic -oak -vat -awareness -vancouver -governor -beer -seemed -contribution -measurement -swimming -spyware -formula -constitution -packaging -solar -jose -catch -jane -pakistan -ps -reliable -consultation -northwest -sir -doubt -earn -finder -unable -periods -classroom -tasks -democracy -attacks -kim -wallpaper -merchandise -const -resistance -doors -symptoms -resorts -biggest -memorial -visitor -twin -forth -insert -baltimore -gateway -ky -dont -alumni -drawing -candidates -charlotte -ordered -biological -fighting -transition -happens -preferences -spy -romance -instrument -bruce -split -themes -powers -heaven -br -bits -pregnant -twice -classification -focused -egypt -physician -hollywood -bargain -wikipedia -cellular -norway -vermont -asking -blocks -normally -lo -spiritual -hunting -diabetes -suit -ml -shift -chip -res -sit -bodies -photographs -cutting -wow -simon -writers -marks -flexible -loved -favourites -mapping -numerous -relatively -birds -satisfaction -represents -char -indexed -pittsburgh -superior -preferred -saved -paying -cartoon -shots -intellectual -moore -granted -choices -carbon -spending -comfortable -magnetic -interaction -listening -effectively -registry -crisis -outlook -massive -denmark -employed -bright -treat -header -cs -poverty -formed -piano -echo -que -grid -sheets -patrick -experimental -puerto -revolution -consolidation -displays -plasma -allowing -earnings -voip -mystery -landscape -dependent -mechanical -journey -delaware -bidding -consultants -risks -banner -applicant -charter -fig -barbara -cooperation -counties -acquisition -ports -implemented -sf -directories -recognized -dreams -blogger -notification -kg -licensing -stands -teach -occurred -textbooks -rapid -pull -hairy -diversity -cleveland -ut -reverse -deposit -seminar -investments -latina -nasa -wheels -sexcam -specify -accessibility -dutch -sensitive -templates -formats -tab -depends -boots -holds -router -concrete -si -editing -poland -folder -womens -css -completion -upload -pulse -universities -technique -contractors -milfhunter -voting -courts -notices -subscriptions -calculate -mc -detroit -alexander -broadcast -converted -metro -toshiba -anniversary -improvements -strip -specification -pearl -accident -nick -accessible -accessory -resident -plot -qty -possibly -airline -typically -representation -regard -pump -exists -arrangements -smooth -conferences -uniprotkb -beastiality -strike -consumption -birmingham -flashing -lp -narrow -afternoon -threat -surveys -sitting -putting -consultant -controller -ownership -committees -penis -legislative -researchers -vietnam -trailer -anne -castle -gardens -missed -malaysia -unsubscribe -antique -labels -willing -bio -molecular -upskirt -acting -heads -stored -exam -logos -residence -attorneys -milfs -antiques -density -hundred -ryan -operators -strange -sustainable -philippines -statistical -beds -breasts -mention -innovation -pcs -employers -grey -parallel -honda -amended -operate -bills -bold -bathroom -stable -opera -definitions -von -doctors -lesson -cinema -asset -ag -scan -elections -drinking -blowjobs -reaction -blank -enhanced -entitled -severe -generate -stainless -newspapers -hospitals -vi -deluxe -humor -aged -monitors -exception -lived -duration -bulk -successfully -indonesia -pursuant -sci -fabric -edt -visits -primarily -tight -domains -capabilities -pmid -contrast -recommendation -flying -recruitment -sin -berlin -cute -organized -ba -para -siemens -adoption -improving -cr -expensive -meant -capture -pounds -buffalo -organisations -plane -pg -explained -seed -programmes -desire -expertise -mechanism -camping -ee -jewellery -meets -welfare -peer -caught -eventually -marked -driven -measured -medline -bottle -agreements -considering -innovative -marshall -massage -rubber -conclusion -closing -tampa -thousand -meat -legend -grace -susan -ing -ks -adams -python -monster -alex -bang -villa -bone -columns -disorders -bugs -collaboration -hamilton -detection -ftp -cookies -inner -formation -tutorial -med -engineers -entity -cruises -gate -holder -proposals -moderator -sw -tutorials -settlement -portugal -lawrence -roman -duties -valuable -erotic -tone -collectables -ethics -forever -dragon -busy -captain -fantastic -imagine -brings -heating -leg -neck -hd -wing -governments -purchasing -scripts -abc -stereo -appointed -taste -dealing -commit -tiny -operational -rail -airlines -liberal -livecam -jay -trips -gap -sides -tube -turns -corresponding -descriptions -cache -belt -jacket -determination -animation -oracle -er -matthew -lease -productions -aviation -hobbies -proud -excess -disaster -console -commands -jr -telecommunications -instructor -giant -achieved -injuries -shipped -bestiality -seats -approaches -biz -alarm -voltage -anthony -nintendo -usual -loading -stamps -appeared -franklin -angle -rob -vinyl -highlights -mining -designers -melbourne -ongoing -worst -imaging -betting -scientists -liberty -wyoming -blackjack -argentina -era -convert -possibility -analyst -commissioner -dangerous -garage -exciting -reliability -thongs -gcc -unfortunately -respectively -volunteers -attachment -ringtone -finland -morgan -derived -pleasure -honor -asp -oriented -eagle -desktops -pants -columbus -nurse -prayer -appointment -workshops -hurricane -quiet -luck -postage -producer -represented -mortgages -dial -responsibilities -cheese -comic -carefully -jet -productivity -investors -crown -par -underground -diagnosis -maker -crack -principle -picks -vacations -gang -semester -calculated -cumshot -fetish -applies -casinos -appearance -smoke -apache -filters -incorporated -nv -craft -cake -notebooks -apart -fellow -blind -lounge -mad -algorithm -semi -coins -andy -gross -strongly -cafe -valentine -hilton -ken -proteins -horror -su -exp -familiar -capable -douglas -debian -till -involving -pen -investing -christopher -admission -epson -shoe -elected -carrying -victory -sand -madison -terrorism -joy -editions -cpu -mainly -ethnic -ran -parliament -actor -finds -seal -situations -fifth -allocated -citizen -vertical -corrections -structural -municipal -describes -prize -sr -occurs -jon -absolute -disabilities -consists -anytime -substance -prohibited -addressed -lies -pipe -soldiers -nr -guardian -lecture -simulation -layout -initiatives -ill -concentration -classics -lbs -lay -interpretation -horses -lol -dirty -deck -wayne -donate -taught -bankruptcy -mp -worker -optimization -alive -temple -substances -prove -discovered -wings -breaks -genetic -restrictions -participating -waters -promise -thin -exhibition -prefer -ridge -cabinet -modem -harris -mph -bringing -sick -dose -evaluate -tiffany -tropical -collect -bet -composition -toyota -streets -nationwide -vector -definitely -shaved -turning -buffer -purple -existence -commentary -larry -limousines -developments -def -immigration -destinations -lets -mutual -pipeline -necessarily -syntax -li -attribute -prison -skill -chairs -nl -everyday -apparently -surrounding -mountains -moves -popularity -inquiry -ethernet -checked -exhibit -throw -trend -sierra -visible -cats -desert -postposted -ya -oldest -rhode -nba -busty -coordinator -obviously -mercury -steven -handbook -greg -navigate -worse -summit -victims -epa -spaces -fundamental -burning -escape -coupons -somewhat -receiver -substantial -tr -progressive -cialis -bb -boats -glance -scottish -championship -arcade -richmond -sacramento -impossible -ron -russell -tells -obvious -fiber -depression -graph -covering -platinum -judgment -bedrooms -talks -filing -foster -modeling -passing -awarded -testimonials -trials -tissue -nz -memorabilia -clinton -masters -bonds -cartridge -alberta -explanation -folk -org -commons -cincinnati -subsection -fraud -electricity -permitted -spectrum -arrival -okay -pottery -emphasis -roger -aspect -workplace -awesome -mexican -confirmed -counts -priced -wallpapers -hist -crash -lift -desired -inter -closer -assumes -heights -shadow -riding -infection -firefox -lisa -expense -grove -eligibility -venture -clinic -korean -healing -princess -mall -entering -packet -spray -studios -involvement -dad -buttons -placement -observations -vbulletin -funded -thompson -winners -extend -roads -subsequent -pat -dublin -rolling -fell -motorcycle -yard -disclosure -establishment -memories -nelson -te -arrived -creates -faces -tourist -cocks -av -mayor -murder -sean -adequate -senator -yield -presentations -grades -cartoons -pour -digest -reg -lodging -tion -dust -hence -wiki -entirely -replaced -radar -rescue -undergraduate -losses -combat -reducing -stopped -occupation -lakes -butt -donations -associations -citysearch -closely -radiation -diary -seriously -kings -shooting -kent -adds -nsw -ear -flags -pci -baker -launched -elsewhere -pollution -conservative -guestbook -shock -effectiveness -walls -abroad -ebony -tie -ward -drawn -arthur -ian -visited -roof -walker -demonstrate -atmosphere -suggests -kiss -beast -ra -operated -experiment -targets -overseas -purchases -dodge -counsel -federation -pizza -invited -yards -assignment -chemicals -gordon -mod -farmers -rc -queries -bmw -rush -ukraine -absence -nearest -cluster -vendors -mpeg -whereas -yoga -serves -woods -surprise -lamp -rico -partial -shoppers -phil -everybody -couples -nashville -ranking -jokes -cst -http -ceo -simpson -twiki -sublime -counseling -palace -acceptable -satisfied -glad -wins -measurements -verify -globe -trusted -copper -milwaukee -rack -medication -warehouse -shareware -ec -rep -dicke -kerry -receipt -supposed -ordinary -nobody -ghost -violation -configure -stability -mit -applying -southwest -boss -pride -institutional -expectations -independence -knowing -reporter -metabolism -keith -champion -cloudy -linda -ross -personally -chile -anna -plenty -solo -sentence -throat -ignore -maria -uniform -excellence -wealth -tall -rm -somewhere -vacuum -dancing -attributes -recognize -brass -writes -plaza -pdas -outcomes -survival -quest -publish -sri -screening -toe -thumbnail -trans -jonathan -whenever -nova -lifetime -api -pioneer -booty -forgotten -acrobat -plates -acres -venue -athletic -thermal -essays -behaviour -vital -telling -fairly -coastal -config -cf -charity -intelligent -edinburgh -vt -excel -modes -obligation -campbell -wake -stupid -harbor -hungary -traveler -urw -segment -realize -regardless -lan -enemy -puzzle -rising -aluminum -wells -wishlist -opens -insight -sms -shit -restricted -republican -secrets -lucky -latter -merchants -thick -trailers -repeat -syndrome -philips -attendance -penalty -drum -glasses -enables -nec -iraqi -builder -vista -jessica -chips -terry -flood -foto -ease -arguments -amsterdam -orgy -arena -adventures -pupils -stewart -announcement -tabs -outcome -xx -appreciate -expanded -casual -grown -polish -lovely -extras -gm -centres -jerry -clause -smile -lands -ri -troops -indoor -bulgaria -armed -broker -charger -regularly -believed -pine -cooling -tend -gulf -rt -rick -trucks -cp -mechanisms -divorce -laura -shopper -tokyo -partly -nikon -customize -tradition -candy -pills -tiger -donald -folks -sensor -exposed -telecom -hunt -angels -deputy -indicators -sealed -thai -emissions -physicians -loaded -fred -complaint -scenes -experiments -balls -afghanistan -dd -boost -spanking -scholarship -governance -mill -founded -supplements -chronic -icons -tranny -moral -den -catering -aud -finger -keeps -pound -locate -camcorder -pl -trained -burn -implementing -roses -labs -ourselves -bread -tobacco -wooden -motors -tough -roberts -incident -gonna -dynamics -lie -crm -rf -conversation -decrease -cumshots -chest -pension -billy -revenues -emerging -worship -bukkake -capability -ak -fe -craig -herself -producing -churches -precision -damages -reserves -contributed -solve -shorts -reproduction -minority -td -diverse -amp -ingredients -sb -ah -johnny -sole -franchise -recorder -complaints -facing -sm -nancy -promotions -tones -passion -rehabilitation -maintaining -sight -laid -clay -defence -patches -weak -refund -usc -towns -environments -trembl -divided -blvd -reception -amd -wise -emails -cyprus -wv -odds -correctly -insider -seminars -consequences -makers -hearts -geography -appearing -integrity -worry -ns -discrimination -eve -carter -legacy -marc -pleased -danger -vitamin -widely -processed -phrase -genuine -raising -implications -functionality -paradise -hybrid -reads -roles -intermediate -emotional -sons -leaf -pad -glory -platforms -ja -bigger -billing -diesel -versus -combine -overnight -geographic -exceed -bs -rod -saudi -fault -cuba -hrs -preliminary -districts -introduce -silk -promotional -kate -chevrolet -babies -bi -karen -compiled -romantic -revealed -specialists -generator -albert -examine -jimmy -graham -suspension -bristol -margaret -compaq -sad -correction -wolf -slowly -authentication -communicate -rugby -supplement -showtimes -cal -portions -infant -promoting -sectors -samuel -fluid -grounds -fits -kick -regards -meal -ta -hurt -machinery -bandwidth -unlike -equation -baskets -probability -pot -dimension -wright -img -barry -proven -schedules -admissions -cached -warren -slip -studied -reviewer -involves -quarterly -rpm -profits -devil -grass -comply -marie -florist -illustrated -cherry -continental -alternate -deutsch -achievement -limitations -kenya -webcam -cuts -funeral -nutten -earrings -enjoyed -automated -chapters -pee -charlie -quebec -nipples -passenger -convenient -dennis -mars -francis -tvs -sized -manga -noticed -socket -silent -literary -egg -mhz -signals -caps -orientation -pill -theft -childhood -swing -symbols -lat -meta -humans -analog -facial -choosing -talent -dated -flexibility -seeker -wisdom -shoot -boundary -mint -packard -offset -payday -philip -elite -gi -spin -holders -believes -swedish -poems -deadline -jurisdiction -robot -displaying -witness -collins -equipped -stages -encouraged -sur -winds -powder -broadway -acquired -assess -wash -cartridges -stones -entrance -gnome -roots -declaration -losing -attempts -gadgets -noble -glasgow -automation -impacts -rev -gospel -advantages -shore -loves -induced -ll -knight -preparing -loose -aims -recipient -linking -extensions -appeals -cl -earned -illness -islamic -athletics -southeast -ieee -ho -alternatives -pending -parker -determining -lebanon -corp -personalized -kennedy -gt -sh -conditioning -teenage -soap -ae -triple -cooper -nyc -vincent -jam -secured -unusual -answered -partnerships -destruction -slots -increasingly -migration -disorder -routine -toolbar -basically -rocks -conventional -titans -applicants -wearing -axis -sought -genes -mounted -habitat -firewall -median -guns -scanner -herein -occupational -animated -horny -judicial -rio -hs -adjustment -hero -integer -treatments -bachelor -attitude -camcorders -engaged -falling -basics -montreal -carpet -rv -struct -lenses -binary -genetics -attended -difficulty -punk -collective -coalition -pi -dropped -enrollment -duke -walter -ai -pace -besides -wage -producers -ot -collector -arc -hosts -interfaces -advertisers -moments -atlas -strings -dawn -representing -observation -feels -torture -carl -deleted -coat -mitchell -mrs -rica -restoration -convenience -returning -ralph -opposition -container -yr -defendant -warner -confirmation -app -embedded -inkjet -supervisor -wizard -corps -actors -liver -peripherals -liable -brochure -morris -bestsellers -petition -eminem -recall -antenna -picked -assumed -departure -minneapolis -belief -killing -bikini -memphis -shoulder -decor -lookup -texts -harvard -brokers -roy -ion -diameter -ottawa -doll -ic -podcast -tit -seasons -peru -interactions -refine -bidder -singer -evans -herald -literacy -fails -aging -nike -intervention -pissing -fed -plugin -attraction -diving -invite -modification -alice -latinas -suppose -customized -reed -involve -moderate -terror -younger -thirty -mice -opposite -understood -rapidly -dealtime -ban -temp -intro -mercedes -zus -assurance -fisting -clerk -happening -vast -mills -outline -amendments -tramadol -holland -receives -jeans -metropolitan -compilation -verification -fonts -ent -odd -wrap -refers -mood -favor -veterans -quiz -mx -sigma -gr -attractive -xhtml -occasion -recordings -jefferson -victim -demands -sleeping -careful -ext -beam -gardening -obligations -arrive -orchestra -sunset -tracked -moreover -minimal -polyphonic -lottery -tops -framed -aside -outsourcing -licence -adjustable -allocation -michelle -essay -discipline -amy -ts -demonstrated -dialogue -identifying -alphabetical -camps -declared -dispatched -aaron -handheld -trace -disposal -shut -florists -packs -ge -installing -switches -romania -voluntary -ncaa -thou -consult -phd -greatly -blogging -mask -cycling -midnight -ng -commonly -pe -photographer -inform -turkish -coal -cry -messaging -pentium -quantum -murray -intent -tt -zoo -largely -pleasant -announce -constructed -additions -requiring -spoke -aka -arrow -engagement -sampling -rough -weird -tee -refinance -lion -inspired -holes -weddings -blade -suddenly -oxygen -cookie -meals -canyon -goto -meters -merely -calendars -arrangement -conclusions -passes -bibliography -pointer -compatibility -stretch -durham -furthermore -permits -cooperative -muslim -xl -neil -sleeve -netscape -cleaner -cricket -beef -feeding -stroke -township -rankings -measuring -cad -hats -robin -robinson -jacksonville -strap -headquarters -sharon -crowd -tcp -transfers -surf -olympic -transformation -remained -attachments -dv -dir -entities -customs -administrators -personality -rainbow -hook -roulette -decline -gloves -israeli -medicare -cord -skiing -cloud -facilitate -subscriber -valve -val -hewlett -explains -proceed -flickr -feelings -knife -jamaica -priorities -shelf -bookstore -timing -liked -parenting -adopt -denied -fotos -incredible -britney -freeware -fucked -donation -outer -crop -deaths -rivers -commonwealth -pharmaceutical -manhattan -tales -katrina -workforce -islam -nodes -tu -fy -thumbs -seeds -cited -lite -ghz -hub -targeted -organizational -skype -realized -twelve -founder -decade -gamecube -rr -dispute -portuguese -tired -titten -adverse -everywhere -excerpt -eng -steam -discharge -ef -drinks -ace -voices -acute -halloween -climbing -stood -sing -tons -perfume -carol -honest -albany -hazardous -restore -stack -methodology -somebody -sue -ep -housewares -reputation -resistant -democrats -recycling -hang -gbp -curve -creator -amber -qualifications -museums -coding -slideshow -tracker -variation -passage -transferred -trunk -hiking -lb -damn -pierre -jelsoft -headset -photograph -oakland -colombia -waves -camel -distributor -lamps -underlying -hood -wrestling -suicide -archived -photoshop -jp -chi -bt -arabia -gathering -projection -juice -chase -mathematical -logical -sauce -fame -extract -specialized -diagnostic -panama -indianapolis -af -payable -corporations -courtesy -criticism -automobile -confidential -rfc -statutory -accommodations -athens -northeast -downloaded -judges -sl -seo -retired -isp -remarks -detected -decades -paintings -walked -arising -nissan -bracelet -ins -eggs -juvenile -injection -yorkshire -populations -protective -afraid -acoustic -railway -cassette -initially -indicator -pointed -hb -jpg -causing -mistake -norton -locked -eliminate -tc -fusion -mineral -sunglasses -ruby -steering -beads -fortune -preference -canvas -threshold -parish -claimed -screens -cemetery -planner -croatia -flows -stadium -venezuela -exploration -mins -fewer -sequences -coupon -nurses -ssl -stem -proxy -gangbang -astronomy -lanka -opt -edwards -drew -contests -flu -translate -announces -mlb -costume -tagged -berkeley -voted -killer -bikes -gates -adjusted -rap -tune -bishop -pulled -corn -gp -shaped -compression -seasonal -establishing -farmer -counters -puts -constitutional -grew -perfectly -tin -slave -instantly -cultures -norfolk -coaching -examined -trek -encoding -litigation -submissions -oem -heroes -painted -lycos -ir -zdnet -broadcasting -horizontal -artwork -cosmetic -resulted -portrait -terrorist -informational -ethical -carriers -ecommerce -mobility -floral -builders -ties -struggle -schemes -suffering -neutral -fisher -rat -spears -prospective -dildos -bedding -ultimately -joining -heading -equally -artificial -bearing -spectacular -coordination -connector -brad -combo -seniors -worlds -guilty -affiliated -activation -naturally -haven -tablet -jury -dos -tail -subscribers -charm -lawn -violent -mitsubishi -underwear -basin -soup -potentially -ranch -constraints -crossing -inclusive -dimensional -cottage -drunk -considerable -crimes -resolved -mozilla -byte -toner -nose -latex -branches -anymore -oclc -delhi -holdings -alien -locator -selecting -processors -pantyhose -plc -broke -nepal -zimbabwe -difficulties -juan -complexity -msg -constantly -browsing -resolve -barcelona -presidential -documentary -cod -territories -melissa -moscow -thesis -thru -jews -nylon -palestinian -discs -rocky -bargains -frequent -trim -nigeria -ceiling -pixels -ensuring -hispanic -cv -cb -legislature -hospitality -gen -anybody -procurement -diamonds -espn -fleet -untitled -bunch -totals -marriott -singing -theoretical -afford -exercises -starring -referral -nhl -surveillance -optimal -quit -distinct -protocols -lung -highlight -substitute -inclusion -hopefully -brilliant -turner -sucking -cents -reuters -ti -fc -gel -todd -spoken -omega -evaluated -stayed -civic -assignments -fw -manuals -doug -sees -termination -watched -saver -thereof -grill -households -gs -redeem -rogers -grain -aaa -authentic -regime -wanna -wishes -bull -montgomery -architectural -louisville -depend -differ -macintosh -movements -ranging -monica -repairs -breath -amenities -virtually -cole -mart -candle -hanging -colored -authorization -tale -verified -lynn -formerly -projector -bp -situated -comparative -std -seeks -herbal -loving -strictly -routing -docs -stanley -psychological -surprised -retailer -vitamins -elegant -gains -renewal -vid -genealogy -opposed -deemed -scoring -expenditure -panties -brooklyn -liverpool -sisters -critics -connectivity -spots -oo -algorithms -hacker -madrid -similarly -margin -coin -bbw -solely -fake -salon -collaborative -norman -fda -excluding -turbo -headed -voters -cure -madonna -commander -arch -ni -murphy -thinks -thats -suggestion -hdtv -soldier -phillips -asin -aimed -justin -bomb -harm -interval -mirrors -spotlight -tricks -reset -brush -investigate -thy -expansys -panels -repeated -assault -connecting -spare -logistics -deer -kodak -tongue -bowling -tri -danish -pal -monkey -proportion -filename -skirt -florence -invest -honey -um -analyses -drawings -significance -scenario -ye -fs -lovers -atomic -approx -symposium -arabic -gauge -essentials -junction -protecting -nn -faced -mat -rachel -solving -transmitted -weekends -screenshots -produces -oven -ted -intensive -chains -kingston -sixth -engage -deviant -noon -switching -quoted -adapters -correspondence -farms -imports -supervision -cheat -bronze -expenditures -sandy -separation -testimony -suspect -celebrities -macro -sender -mandatory -boundaries -crucial -syndication -gym -celebration -kde -adjacent -filtering -tuition -spouse -exotic -viewer -signup -threats -luxembourg -puzzles -reaching -vb -damaged -cams -receptor -piss -laugh -joel -surgical -destroy -citation -pitch -autos -yo -premises -perry -proved -offensive -imperial -dozen -benjamin -deployment -teeth -cloth -studying -colleagues -stamp -lotus -salmon -olympus -separated -proc -cargo -tan -directive -fx -salem -mate -dl -starter -upgrades -likes -butter -pepper -weapon -luggage -burden -chef -tapes -zones -races -isle -stylish -slim -maple -luke -grocery -offshore -governing -retailers -depot -kenneth -comp -alt -pie -blend -harrison -ls -julie -occasionally -cbs -attending -emission -pete -spec -finest -realty -janet -bow -penn -recruiting -apparent -instructional -phpbb -autumn -traveling -probe -midi -permissions -biotechnology -toilet -ranked -jackets -routes -packed -excited -outreach -helen -mounting -recover -tied -lopez -balanced -prescribed -catherine -timely -talked -upskirts -debug -delayed -chuck -reproduced -hon -dale -explicit -calculation -villas -ebook -consolidated -boob -exclude -peeing -occasions -brooks -equations -newton -oils -sept -exceptional -anxiety -bingo -whilst -spatial -respondents -unto -lt -ceramic -prompt -precious -minds -annually -considerations -scanners -atm -xanax -eq -pays -cox -fingers -sunny -ebooks -delivers -je -queensland -necklace -musicians -leeds -composite -unavailable -cedar -arranged -lang -theaters -advocacy -raleigh -stud -fold -essentially -designing -threaded -uv -qualify -fingering -blair -hopes -assessments -cms -mason -diagram -burns -pumps -slut -ejaculation -footwear -sg -vic -beijing -peoples -victor -mario -pos -attach -licenses -utils -removing -advised -brunswick -spider -phys -ranges -pairs -sensitivity -trails -preservation -hudson -isolated -calgary -interim -assisted -divine -streaming -approve -chose -compound -intensity -technological -syndicate -abortion -dialog -venues -blast -wellness -calcium -newport -antivirus -addressing -pole -discounted -indians -shield -harvest -membrane -prague -previews -bangladesh -constitute -locally -concluded -pickup -desperate -mothers -nascar -iceland -demonstration -governmental -manufactured -candles -graduation -mega -bend -sailing -variations -moms -sacred -addiction -morocco -chrome -tommy -springfield -refused -brake -exterior -greeting -ecology -oliver -congo -glen -botswana -nav -delays -synthesis -olive -undefined -unemployment -cyber -verizon -scored -enhancement -newcastle -clone -dicks -velocity -lambda -relay -composed -tears -performances -oasis -baseline -cab -angry -fa -societies -silicon -brazilian -identical -petroleum -compete -ist -norwegian -lover -belong -honolulu -beatles -lips -escort -retention -exchanges -pond -rolls -thomson -barnes -soundtrack -wondering -malta -daddy -lc -ferry -rabbit -profession -seating -dam -cnn -separately -physiology -lil -collecting -das -exports -omaha -tire -participant -scholarships -recreational -dominican -chad -electron -loads -friendship -heather -passport -motel -unions -treasury -warrant -sys -solaris -frozen -occupied -josh -royalty -scales -rally -observer -sunshine -strain -drag -ceremony -somehow -arrested -expanding -provincial -investigations -icq -ripe -yamaha -rely -medications -hebrew -gained -rochester -dying -laundry -stuck -solomon -placing -stops -homework -adjust -assessed -advertiser -enabling -encryption -filling -downloadable -sophisticated -imposed -silence -scsi -focuses -soviet -possession -cu -laboratories -treaty -vocal -trainer -organ -stronger -volumes -advances -vegetables -lemon -toxic -dns -thumbnails -darkness -pty -ws -nuts -nail -bizrate -vienna -implied -span -stanford -sox -stockings -joke -respondent -packing -statute -rejected -satisfy -destroyed -shelter -chapel -gamespot -manufacture -layers -wordpress -guided -vulnerability -accountability -celebrate -accredited -appliance -compressed -bahamas -powell -mixture -zoophilia -bench -univ -tub -rider -scheduling -radius -perspectives -mortality -logging -hampton -christians -borders -therapeutic -pads -butts -inns -bobby -impressive -sheep -accordingly -architect -railroad -lectures -challenging -wines -nursery -harder -cups -ash -microwave -cheapest -accidents -travesti -relocation -stuart -contributors -salvador -ali -salad -np -monroe -tender -violations -foam -temperatures -paste -clouds -competitions -discretion -tft -tanzania -preserve -jvc -poem -vibrator -unsigned -staying -cosmetics -easter -theories -repository -praise -jeremy -venice -jo -concentrations -vibrators -estonia -christianity -veteran -streams -landing -signing -executed -katie -negotiations -realistic -dt -cgi -showcase -integral -asks -relax -namibia -generating -christina -congressional -synopsis -hardly -prairie -reunion -composer -bean -sword -absent -photographic -sells -ecuador -hoping -accessed -spirits -modifications -coral -pixel -float -colin -bias -imported -paths -bubble -por -acquire -contrary -millennium -tribune -vessel -acids -focusing -viruses -cheaper -admitted -dairy -admit -mem -fancy -equality -samoa -gc -achieving -tap -stickers -fisheries -exceptions -reactions -leasing -lauren -beliefs -ci -macromedia -companion -squad -analyze -ashley -scroll -relate -divisions -swim -wages -additionally -suffer -forests -fellowship -nano -invalid -concerts -martial -males -victorian -retain -colours -execute -tunnel -genres -cambodia -patents -copyrights -yn -chaos -lithuania -mastercard -wheat -chronicles -obtaining -beaver -updating -distribute -readings -decorative -kijiji -confused -compiler -enlargement -eagles -bases -vii -accused -bee -campaigns -unity -loud -conjunction -bride -rats -defines -airports -instances -indigenous -begun -cfr -brunette -packets -anchor -socks -validation -parade -corruption -stat -trigger -incentives -cholesterol -gathered -essex -slovenia -notified -differential -beaches -folders -dramatic -surfaces -terrible -routers -cruz -pendant -dresses -baptist -scientist -starsmerchant -hiring -clocks -arthritis -bios -females -wallace -nevertheless -reflects -taxation -fever -pmc -cuisine -surely -practitioners -transcript -myspace -theorem -inflation -thee -nb -ruth -pray -stylus -compounds -pope -drums -contracting -topless -arnold -structured -reasonably -jeep -chicks -bare -hung -cattle -mba -radical -graduates -rover -recommends -controlling -treasure -reload -distributors -flame -levitra -tanks -assuming -monetary -elderly -pit -arlington -mono -particles -floating -extraordinary -tile -indicating -bolivia -spell -hottest -stevens -coordinate -kuwait -exclusively -emily -alleged -limitation -widescreen -compile -squirting -webster -struck -rx -illustration -plymouth -warnings -construct -apps -inquiries -bridal -annex -mag -gsm -inspiration -tribal -curious -affecting -freight -rebate -meetup -eclipse -sudan -ddr -downloading -rec -shuttle -aggregate -stunning -cycles -affects -forecasts -detect -sluts -actively -ciao -ampland -knee -prep -pb -complicated -chem -fastest -butler -shopzilla -injured -decorating -payroll -cookbook -expressions -ton -courier -uploaded -shakespeare -hints -collapse -americas -connectors -twinks -unlikely -oe -gif -pros -conflicts -techno -beverage -tribute -wired -elvis -immune -latvia -travelers -forestry -barriers -cant -jd -rarely -gpl -infected -offerings -martha -genesis -barrier -argue -incorrect -trains -metals -bicycle -furnishings -letting -arise -guatemala -celtic -thereby -irc -jamie -particle -perception -minerals -advise -humidity -bottles -boxing -wy -dm -bangkok -renaissance -pathology -sara -bra -ordinance -hughes -photographers -bitch -infections -jeffrey -chess -operates -brisbane -configured -survive -oscar -festivals -menus -joan -possibilities -duck -reveal -canal -amino -phi -contributing -herbs -clinics -mls -cow -manitoba -analytical -missions -watson -lying -costumes -strict -dive -saddam -circulation -drill -offense -threesome -bryan -cet -protest -handjob -assumption -jerusalem -hobby -tries -transexuales -invention -nickname -fiji -technician -inline -executives -enquiries -washing -audi -staffing -cognitive -exploring -trick -enquiry -closure -raid -ppc -timber -volt -intense -div -playlist -registrar -showers -supporters -ruling -steady -dirt -statutes -withdrawal -myers -drops -predicted -wider -saskatchewan -jc -cancellation -plugins -enrolled -sensors -screw -ministers -publicly -hourly -blame -geneva -freebsd -veterinary -acer -prostores -reseller -dist -handed -suffered -intake -informal -relevance -incentive -butterfly -tucson -mechanics -heavily -swingers -fifty -headers -mistakes -numerical -ons -geek -uncle -defining -xnxx -counting -reflection -sink -accompanied -assure -invitation -devoted -princeton -jacob -sodium -randy -spirituality -hormone -meanwhile -proprietary -timothy -childrens -brick -grip -naval -thumbzilla -medieval -porcelain -avi -bridges -pichunter -captured -watt -thehun -decent -casting -dayton -translated -shortly -cameron -columnists -pins -carlos -reno -donna -andreas -warrior -diploma -cabin -innocent -bdsm -scanning -ide -consensus -polo -valium -copying -rpg -delivering -cordless -patricia -horn -eddie -uganda -fired -journalism -pd -prot -trivia -adidas -perth -frog -grammar -intention -syria -disagree -klein -harvey -tires -logs -undertaken -tgp -hazard -retro -leo -livesex -statewide -semiconductor -gregory -episodes -boolean -circular -anger -diy -mainland -illustrations -suits -chances -interact -snap -happiness -arg -substantially -bizarre -glenn -ur -auckland -olympics -fruits -identifier -geo -worldsex -ribbon -calculations -doe -jpeg -conducting -startup -suzuki -trinidad -ati -kissing -wal -handy -swap -exempt -crops -reduces -accomplished -calculators -geometry -impression -abs -slovakia -flip -guild -correlation -gorgeous -capitol -sim -dishes -rna -barbados -chrysler -nervous -refuse -extends -fragrance -mcdonald -replica -plumbing -brussels -tribe -neighbors -trades -superb -buzz -transparent -nuke -rid -trinity -charleston -handled -legends -boom -calm -champions -floors -selections -projectors -inappropriate -exhaust -comparing -shanghai -speaks -burton -vocational -davidson -copied -scotia -farming -gibson -pharmacies -fork -troy -ln -roller -introducing -batch -organize -appreciated -alter -nicole -latino -ghana -edges -uc -mixing -handles -skilled -fitted -albuquerque -harmony -distinguished -asthma -projected -assumptions -shareholders -twins -developmental -rip -zope -regulated -triangle -amend -anticipated -oriental -reward -windsor -zambia -completing -gmbh -buf -ld -hydrogen -webshots -sprint -comparable -chick -advocate -sims -confusion -copyrighted -tray -inputs -warranties -genome -escorts -documented -thong -medal -paperbacks -coaches -vessels -harbour -walks -sucks -sol -keyboards -sage -knives -eco -vulnerable -arrange -artistic -bat -honors -booth -indie -reflected -unified -bones -breed -detector -ignored -polar -fallen -precise -sussex -respiratory -notifications -msgid -transexual -mainstream -invoice -evaluating -lip -subcommittee -sap -gather -suse -maternity -backed -alfred -colonial -mf -carey -motels -forming -embassy -cave -journalists -danny -rebecca -slight -proceeds -indirect -amongst -wool -foundations -msgstr -arrest -volleyball -mw -adipex -horizon -nu -deeply -toolbox -ict -marina -liabilities -prizes -bosnia -browsers -decreased -patio -dp -tolerance -surfing -creativity -lloyd -describing -optics -pursue -lightning -overcome -eyed -ou -quotations -grab -inspector -attract -brighton -beans -bookmarks -ellis -disable -snake -succeed -leonard -lending -oops -reminder -nipple -xi -searched -behavioral -riverside -bathrooms -plains -sku -ht -raymond -insights -abilities -initiated -sullivan -za -midwest -karaoke -trap -lonely -fool -ve -nonprofit -lancaster -suspended -hereby -observe -julia -containers -attitudes -karl -berry -collar -simultaneously -racial -integrate -bermuda -amanda -sociology -mobiles -screenshot -exhibitions -kelkoo -confident -retrieved -exhibits -officially -consortium -dies -terrace -bacteria -pts -replied -seafood -novels -rh -rrp -recipients -playboy -ought -delicious -traditions -fg -jail -safely -finite -kidney -periodically -fixes -sends -durable -mazda -allied -throws -moisture -hungarian -roster -referring -symantec -spencer -wichita -nasdaq -uruguay -ooo -hz -transform -timer -tablets -tuning -gotten -educators -tyler -futures -vegetable -verse -highs -humanities -independently -wanting -custody -scratch -launches -ipaq -alignment -masturbating -henderson -bk -britannica -comm -ellen -competitors -nhs -rocket -aye -bullet -towers -racks -lace -nasty -visibility -latitude -consciousness -ste -tumor -ugly -deposits -beverly -mistress -encounter -trustees -watts -duncan -reprints -hart -bernard -resolutions -ment -accessing -forty -tubes -attempted -col -midlands -priest -floyd -ronald -analysts -queue -dx -sk -trance -locale -nicholas -biol -yu -bundle -hammer -invasion -witnesses -runner -rows -administered -notion -sq -skins -mailed -oc -fujitsu -spelling -arctic -exams -rewards -beneath -strengthen -defend -aj -frederick -medicaid -treo -infrared -seventh -gods -une -welsh -belly -aggressive -tex -advertisements -quarters -stolen -cia -sublimedirectory -soonest -haiti -disturbed -determines -sculpture -poly -ears -dod -wp -fist -naturals -neo -motivation -lenders -pharmacology -fitting -fixtures -bloggers -mere -agrees -passengers -quantities -petersburg -consistently -powerpoint -cons -surplus -elder -sonic -obituaries -cheers -dig -taxi -punishment -appreciation -subsequently -om -belarus -nat -zoning -gravity -providence -thumb -restriction -incorporate -backgrounds -treasurer -guitars -essence -flooring -lightweight -ethiopia -tp -mighty -athletes -humanity -transcription -jm -holmes -complications -scholars -dpi -scripting -gis -remembered -galaxy -chester -snapshot -caring -loc -worn -synthetic -shaw -vp -segments -testament -expo -dominant -twist -specifics -itunes -stomach -partially -buried -cn -newbie -minimize -darwin -ranks -wilderness -debut -generations -tournaments -bradley -deny -anatomy -bali -judy -sponsorship -headphones -fraction -trio -proceeding -cube -defects -volkswagen -uncertainty -breakdown -milton -marker -reconstruction -subsidiary -strengths -clarity -rugs -sandra -adelaide -encouraging -furnished -monaco -settled -folding -emirates -terrorists -airfare -comparisons -beneficial -distributions -vaccine -belize -crap -fate -viewpicture -promised -volvo -penny -robust -bookings -threatened -minolta -republicans -discusses -gui -porter -gras -jungle -ver -rn -responded -rim -abstracts -zen -ivory -alpine -dis -prediction -pharmaceuticals -andale -fabulous -remix -alias -thesaurus -individually -battlefield -literally -newer -kay -ecological -spice -oval -implies -cg -soma -ser -cooler -appraisal -consisting -maritime -periodic -submitting -overhead -ascii -prospect -shipment -breeding -citations -geographical -donor -mozambique -tension -href -benz -trash -shapes -wifi -tier -fwd -earl -manor -envelope -diane -homeland -disclaimers -championships -excluded -andrea -breeds -rapids -disco -sheffield -bailey -aus -endif -finishing -emotions -wellington -incoming -prospects -lexmark -cleaners -bulgarian -hwy -eternal -cashiers -guam -cite -aboriginal -remarkable -rotation -nam -preventing -productive -boulevard -eugene -ix -gdp -pig -metric -compliant -minus -penalties -bennett -imagination -hotmail -refurbished -joshua -armenia -varied -grande -closest -activated -actress -mess -conferencing -assign -armstrong -politicians -trackbacks -lit -accommodate -tigers -aurora -una -slides -milan -premiere -lender -villages -shade -chorus -christine -rhythm -digit -argued -dietary -symphony -clarke -sudden -accepting -precipitation -marilyn -lions -findlaw -ada -pools -tb -lyric -claire -isolation -speeds -sustained -matched -approximate -rope -carroll -rational -programmer -fighters -chambers -dump -greetings -inherited -warming -incomplete -vocals -chronicle -fountain -chubby -grave -legitimate -biographies -burner -yrs -foo -investigator -gba -plaintiff -finnish -gentle -bm -prisoners -deeper -muslims -hose -mediterranean -nightlife -footage -howto -worthy -reveals -architects -saints -entrepreneur -carries -sig -freelance -duo -excessive -devon -screensaver -helena -saves -regarded -valuation -unexpected -cigarette -fog -characteristic -marion -lobby -egyptian -tunisia -metallica -outlined -consequently -headline -treating -punch -appointments -str -gotta -cowboy -narrative -bahrain -enormous -karma -consist -betty -queens -academics -pubs -quantitative -shemales -lucas -screensavers -subdivision -tribes -vip -defeat -clicks -distinction -honduras -naughty -hazards -insured -harper -livestock -mardi -exemption -tenant -sustainability -cabinets -tattoo -shake -algebra -shadows -holly -formatting -silly -nutritional -yea -mercy -hartford -freely -marcus -sunrise -wrapping -mild -fur -nicaragua -weblogs -timeline -tar -belongs -rj -readily -affiliation -soc -fence -nudist -infinite -diana -ensures -relatives -lindsay -clan -legally -shame -satisfactory -revolutionary -bracelets -sync -civilian -telephony -mesa -fatal -remedy -realtors -breathing -briefly -thickness -adjustments -graphical -genius -discussing -aerospace -fighter -meaningful -flesh -retreat -adapted -barely -wherever -estates -rug -democrat -borough -maintains -failing -shortcuts -ka -retained -voyeurweb -pamela -andrews -marble -extending -jesse -specifies -hull -logitech -surrey -briefing -belkin -dem -accreditation -wav -blackberry -highland -meditation -modular -microphone -macedonia -combining -brandon -instrumental -giants -organizing -shed -balloon -moderators -winston -memo -ham -solved -tide -kazakhstan -hawaiian -standings -partition -invisible -gratuit -consoles -funk -fbi -qatar -magnet -translations -porsche -cayman -jaguar -reel -sheer -commodity -posing -wang -kilometers -rp -bind -thanksgiving -rand -hopkins -urgent -guarantees -infants -gothic -cylinder -witch -buck -indication -eh -congratulations -tba -cohen -sie -usgs -puppy -kathy -acre -graphs -surround -cigarettes -revenge -expires -enemies -lows -controllers -aqua -chen -emma -consultancy -finances -accepts -enjoying -conventions -eva -patrol -smell -pest -hc -italiano -coordinates -rca -fp -carnival -roughly -sticker -promises -responding -reef -physically -divide -stakeholders -hydrocodone -gst -consecutive -cornell -satin -bon -deserve -attempting -mailto -promo -jj -representations -chan -worried -tunes -garbage -competing -combines -mas -beth -bradford -len -phrases -kai -peninsula -chelsea -boring -reynolds -dom -jill -accurately -speeches -reaches -schema -considers -sofa -catalogs -ministries -vacancies -quizzes -parliamentary -obj -prefix -lucia -savannah -barrel -typing -nerve -dans -planets -deficit -boulder -pointing -renew -coupled -viii -myanmar -metadata -harold -circuits -floppy -texture -handbags -jar -ev -somerset -incurred -acknowledge -thoroughly -antigua -nottingham -thunder -tent -caution -identifies -questionnaire -qualification -locks -modelling -namely -miniature -dept -hack -dare -euros -interstate -pirates -aerial -hawk -consequence -rebel -systematic -perceived -origins -hired -makeup -textile -lamb -madagascar -nathan -tobago -presenting -cos -troubleshooting -uzbekistan -indexes -pac -rl -erp -centuries -gl -magnitude -ui -richardson -hindu -dh -fragrances -vocabulary -licking -earthquake -vpn -fundraising -fcc -markers -weights -albania -geological -assessing -lasting -wicked -eds -introduces -kills -roommate -webcams -pushed -webmasters -ro -df -computational -acdbentity -participated -junk -handhelds -wax -lucy -answering -hans -impressed -slope -reggae -failures -poet -conspiracy -surname -theology -nails -evident -whats -rides -rehab -epic -saturn -organizer -nut -allergy -sake -twisted -combinations -preceding -merit -enzyme -cumulative -zshops -planes -edmonton -tackle -disks -condo -pokemon -amplifier -ambien -arbitrary -prominent -retrieve -lexington -vernon -sans -worldcat -titanium -irs -fairy -builds -contacted -shaft -lean -bye -cdt -recorders -occasional -leslie -casio -deutsche -ana -postings -innovations -kitty -postcards -dude -drain -monte -fires -algeria -blessed -luis -reviewing -cardiff -cornwall -favors -potato -panic -explicitly -sticks -leone -transsexual -ez -citizenship -excuse -reforms -basement -onion -strand -pf -sandwich -uw -lawsuit -alto -informative -girlfriend -bloomberg -cheque -hierarchy -influenced -banners -reject -eau -abandoned -bd -circles -italic -beats -merry -mil -scuba -gore -complement -cult -dash -passive -mauritius -valued -cage -checklist -bangbus -requesting -courage -verde -lauderdale -scenarios -gazette -hitachi -divx -extraction -batman -elevation -hearings -coleman -hugh -lap -utilization -beverages -calibration -jake -eval -efficiently -anaheim -ping -textbook -dried -entertaining -prerequisite -luther -frontier -settle -stopping -refugees -knights -hypothesis -palmer -medicines -flux -derby -sao -peaceful -altered -pontiac -regression -doctrine -scenic -trainers -muze -enhancements -renewable -intersection -passwords -sewing -consistency -collectors -conclude -recognised -munich -oman -celebs -gmc -propose -hh -azerbaijan -lighter -rage -adsl -uh -prix -astrology -advisors -pavilion -tactics -trusts -occurring -supplemental -travelling -talented -annie -pillow -induction -derek -precisely -shorter -harley -spreading -provinces -relying -finals -paraguay -steal -parcel -refined -fd -bo -fifteen -widespread -incidence -fears -predict -boutique -acrylic -rolled -tuner -avon -incidents -peterson -rays -asn -shannon -toddler -enhancing -flavor -alike -walt -homeless -horrible -hungry -metallic -acne -blocked -interference -warriors -palestine -listprice -libs -undo -cadillac -atmospheric -malawi -wm -pk -sagem -knowledgestorm -dana -halo -ppm -curtis -parental -referenced -strikes -lesser -publicity -marathon -ant -proposition -gays -pressing -gasoline -apt -dressed -scout -belfast -exec -dealt -niagara -inf -eos -warcraft -charms -catalyst -trader -bucks -allowance -vcr -denial -uri -designation -thrown -prepaid -raises -gem -duplicate -electro -criterion -badge -wrist -civilization -analyzed -vietnamese -heath -tremendous -ballot -lexus -varying -remedies -validity -trustee -maui -handjobs -weighted -angola -squirt -performs -plastics -realm -corrected -jenny -helmet -salaries -postcard -elephant -yemen -encountered -tsunami -scholar -nickel -internationally -surrounded -psi -buses -expedia -geology -pct -wb -creatures -coating -commented -wallet -cleared -smilies -vids -accomplish -boating -drainage -shakira -corners -broader -vegetarian -rouge -yeast -yale -newfoundland -sn -qld -pas -clearing -investigated -dk -ambassador -coated -intend -stephanie -contacting -vegetation -doom -findarticles -louise -kenny -specially -owen -routines -hitting -yukon -beings -bite -issn -aquatic -reliance -habits -striking -myth -infectious -podcasts -singh -gig -gilbert -sas -ferrari -continuity -brook -fu -outputs -phenomenon -ensemble -insulin -assured -biblical -weed -conscious -accent -mysimon -eleven -wives -ambient -utilize -mileage -oecd -prostate -adaptor -auburn -unlock -hyundai -pledge -vampire -angela -relates -nitrogen -xerox -dice -merger -softball -referrals -quad -dock -differently -firewire -mods -nextel -framing -organised -musician -blocking -rwanda -sorts -integrating -vsnet -limiting -dispatch -revisions -papua -restored -hint -armor -riders -chargers -remark -dozens -varies -msie -reasoning -wn -liz -rendered -picking -charitable -guards -annotated -ccd -sv -convinced -openings -buys -burlington -replacing -researcher -watershed -councils -occupations -acknowledged -nudity -kruger -pockets -granny -pork -zu -equilibrium -viral -inquire -pipes -characterized -laden -aruba -cottages -realtor -merge -privilege -edgar -develops -qualifying -chassis -dubai -estimation -barn -pushing -llp -fleece -pediatric -boc -fare -dg -asus -pierce -allan -dressing -techrepublic -sperm -vg -bald -filme -craps -fuji -frost -leon -institutes -mold -dame -fo -sally -yacht -tracy -prefers -drilling -brochures -herb -tmp -alot -ate -breach -whale -traveller -appropriations -suspected -tomatoes -benchmark -beginners -instructors -highlighted -bedford -stationery -idle -mustang -unauthorized -clusters -antibody -competent -momentum -fin -wiring -io -pastor -mud -calvin -uni -shark -contributor -demonstrates -phases -grateful -emerald -gradually -laughing -grows -cliff -desirable -tract -ul -ballet -ol -journalist -abraham -js -bumper -afterwards -webpage -religions -garlic -hostels -shine -senegal -explosion -pn -banned -wendy -briefs -signatures -diffs -cove -mumbai -ozone -disciplines -casa -mu -daughters -conversations -radios -tariff -nvidia -opponent -pasta -simplified -muscles -serum -wrapped -swift -motherboard -runtime -inbox -focal -bibliographic -vagina -eden -distant -incl -champagne -ala -decimal -hq -deviation -superintendent -propecia -dip -nbc -samba -hostel -housewives -employ -mongolia -penguin -magical -influences -inspections -irrigation -miracle -manually -reprint -reid -wt -hydraulic -centered -robertson -flex -yearly -penetration -wound -belle -rosa -conviction -hash -omissions -writings -hamburg -lazy -mv -mpg -retrieval -qualities -cindy -lolita -fathers -carb -charging -cas -marvel -lined -cio -dow -prototype -importantly -rb -petite -apparatus -upc -terrain -dui -pens -explaining -yen -strips -gossip -rangers -nomination -empirical -mh -rotary -worm -dependence -discrete -beginner -boxed -lid -sexuality -polyester -cubic -deaf -commitments -suggesting -sapphire -kinase -skirts -mats -remainder -crawford -labeled -privileges -televisions -specializing -marking -commodities -pvc -serbia -sheriff -griffin -declined -guyana -spies -blah -mime -neighbor -motorcycles -elect -highways -thinkpad -concentrate -intimate -reproductive -preston -deadly -cunt -feof -bunny -chevy -molecules -rounds -longest -refrigerator -tions -intervals -sentences -dentists -usda -exclusion -workstation -holocaust -keen -flyer -peas -dosage -receivers -urls -customise -disposition -variance -navigator -investigators -cameroon -baking -marijuana -adaptive -computed -needle -baths -enb -gg -cathedral -brakes -og -nirvana -ko -fairfield -owns -til -invision -sticky -destiny -generous -madness -emacs -climb -blowing -fascinating -landscapes -heated -lafayette -jackie -wto -computation -hay -cardiovascular -ww -sparc -cardiac -salvation -dover -adrian -predictions -accompanying -vatican -brutal -learners -gd -selective -arbitration -configuring -token -editorials -zinc -sacrifice -seekers -guru -isa -removable -convergence -yields -gibraltar -levy -suited -numeric -anthropology -skating -kinda -aberdeen -emperor -grad -malpractice -dylan -bras -belts -blacks -educated -rebates -reporters -burke -proudly -pix -necessity -rendering -mic -inserted -pulling -basename -kyle -obesity -curves -suburban -touring -clara -vertex -bw -hepatitis -nationally -tomato -andorra -waterproof -expired -mj -travels -flush -waiver -pale -specialties -hayes -humanitarian -invitations -functioning -delight -survivor -garcia -cingular -economies -alexandria -bacterial -moses -counted -undertake -declare -continuously -johns -valves -gaps -impaired -achievements -donors -tear -jewel -teddy -lf -convertible -ata -teaches -ventures -nil -bufing -stranger -tragedy -julian -nest -pam -dryer -painful -velvet -tribunal -ruled -nato -pensions -prayers -funky -secretariat -nowhere -cop -paragraphs -gale -joins -adolescent -nominations -wesley -dim -lately -cancelled -scary -mattress -mpegs -brunei -likewise -banana -introductory -slovak -cakes -stan -reservoir -occurrence -idol -bloody -mixer -remind -wc -worcester -sbjct -demographic -charming -mai -tooth -disciplinary -annoying -respected -stays -disclose -affair -drove -washer -upset -restrict -springer -beside -mines -portraits -rebound -logan -mentor -interpreted -evaluations -fought -baghdad -elimination -metres -hypothetical -immigrants -complimentary -helicopter -pencil -freeze -hk -performer -abu -titled -commissions -sphere -powerseller -moss -ratios -concord -graduated -endorsed -ty -surprising -walnut -lance -ladder -italia -unnecessary -dramatically -liberia -sherman -cork -maximize -cj -hansen -senators -workout -mali -yugoslavia -bleeding -characterization -colon -likelihood -lanes -purse -fundamentals -contamination -mtv -endangered -compromise -masturbation -optimize -stating -dome -caroline -leu -expiration -namespace -align -peripheral -bless -engaging -negotiation -crest -opponents -triumph -nominated -confidentiality -electoral -changelog -welding -orgasm -deferred -alternatively -heel -alloy -condos -plots -polished -yang -gently -greensboro -tulsa -locking -casey -controversial -draws -fridge -blanket -bloom -qc -simpsons -lou -elliott -recovered -fraser -justify -upgrading -blades -pgp -loops -surge -frontpage -trauma -aw -tahoe -advert -possess -demanding -defensive -sip -flashers -subaru -forbidden -tf -vanilla -programmers -pj -monitored -installations -deutschland -picnic -souls -arrivals -spank -cw -practitioner -motivated -wr -dumb -smithsonian -hollow -vault -securely -examining -fioricet -groove -revelation -rg -pursuit -delegation -wires -bl -dictionaries -mails -backing -greenhouse -sleeps -vc -blake -transparency -dee -travis -wx -endless -figured -orbit -currencies -niger -bacon -survivors -positioning -heater -colony -cannon -circus -promoted -forbes -mae -moldova -mel -descending -paxil -spine -trout -enclosed -feat -temporarily -ntsc -cooked -thriller -transmit -apnic -fatty -gerald -pressed -frequencies -scanned -reflections -hunger -mariah -sic -municipality -usps -joyce -detective -surgeon -cement -experiencing -fireplace -endorsement -bg -planners -disputes -textiles -missile -intranet -closes -seq -psychiatry -persistent -deborah -conf -marco -assists -summaries -glow -gabriel -auditor -wma -aquarium -violin -prophet -cir -bracket -looksmart -isaac -oxide -oaks -magnificent -erik -colleague -naples -promptly -modems -adaptation -hu -harmful -paintball -prozac -sexually -enclosure -acm -dividend -newark -kw -paso -glucose -phantom -norm -playback -supervisors -westminster -turtle -ips -distances -absorption -treasures -dsc -warned -neural -ware -fossil -mia -hometown -badly -transcripts -apollo -wan -disappointed -persian -continually -communist -collectible -handmade -greene -entrepreneurs -robots -grenada -creations -jade -scoop -acquisitions -foul -keno -gtk -earning -mailman -sanyo -nested -biodiversity -excitement -somalia -movers -verbal -blink -presently -seas -carlo -workflow -mysterious -novelty -bryant -tiles -voyuer -librarian -subsidiaries -switched -stockholm -tamil -garmin -ru -pose -fuzzy -indonesian -grams -therapist -richards -mrna -budgets -toolkit -promising -relaxation -goat -render -carmen -ira -sen -thereafter -hardwood -erotica -temporal -sail -forge -commissioners -dense -dts -brave -forwarding -qt -awful -nightmare -airplane -reductions -southampton -istanbul -impose -organisms -sega -telescope -viewers -asbestos -portsmouth -cdna -meyer -enters -pod -savage -advancement -wu -harassment -willow -resumes -bolt -gage -throwing -existed -whore -generators -lu -wagon -barbie -dat -favour -soa -knock -urge -smtp -generates -potatoes -thorough -replication -inexpensive -kurt -receptors -peers -roland -optimum -neon -interventions -quilt -huntington -creature -ours -mounts -syracuse -internship -lone -refresh -aluminium -snowboard -beastality -webcast -michel -evanescence -subtle -coordinated -notre -shipments -maldives -stripes -firmware -antarctica -cope -shepherd -lm -canberra -cradle -chancellor -mambo -lime -kirk -flour -controversy -legendary -bool -sympathy -choir -avoiding -beautifully -blond -expects -cho -jumping -fabrics -antibodies -polymer -hygiene -wit -poultry -virtue -burst -examinations -surgeons -bouquet -immunology -promotes -mandate -wiley -departmental -bbs -spas -ind -corpus -johnston -terminology -gentleman -fibre -reproduce -convicted -shades -jets -indices -roommates -adware -qui -intl -threatening -spokesman -zoloft -activists -frankfurt -prisoner -daisy -halifax -encourages -ultram -cursor -assembled -earliest -donated -stuffed -restructuring -insects -terminals -crude -morrison -maiden -simulations -cz -sufficiently -examines -viking -myrtle -bored -cleanup -yarn -knit -conditional -mug -crossword -bother -budapest -conceptual -knitting -attacked -hl -bhutan -liechtenstein -mating -compute -redhead -arrives -translator -automobiles -tractor -allah -continent -ob -unwrap -fares -longitude -resist -challenged -telecharger -hoped -pike -safer -insertion -instrumentation -ids -hugo -wagner -constraint -groundwater -touched -strengthening -cologne -gzip -wishing -ranger -smallest -insulation -newman -marsh -ricky -ctrl -scared -theta -infringement -bent -laos -subjective -monsters -asylum -lightbox -robbie -stake -cocktail -outlets -swaziland -varieties -arbor -mediawiki -configurations -poison diff --git a/openbis_benchmark/src/main/resources/log4j2.xml b/openbis_benchmark/src/main/resources/log4j2.xml deleted file mode 100644 index 23a16f0c6ff..00000000000 --- a/openbis_benchmark/src/main/resources/log4j2.xml +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Configuration status="INFO"> - <Appenders> - <Console name="Console" target="SYSTEM_OUT"> - <PatternLayout pattern="%msg%n" /> - </Console> - <File name="MyFile" fileName="system.log" immediateFlush="false" append="false"> - <PatternLayout pattern="%msg%n"/> - </File> - </Appenders> - <Loggers> - <Root level="debug"> - <AppenderRef ref="Console" /> - <AppenderRef ref="MyFile"/> - </Root> - </Loggers> -</Configuration> \ No newline at end of file -- GitLab