Updated Branches:
  refs/heads/develop aa4de7ac8 -> 6f23021eb

allow configuring KiWi with a configuration object, deprecated old constructors


Project: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/commit/484a5255
Tree: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/tree/484a5255
Diff: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/diff/484a5255

Branch: refs/heads/develop
Commit: 484a5255d3fb8cc26ceec364dc4c8af5edb1f147
Parents: 25f18e9
Author: Sebastian Schaffert <[email protected]>
Authored: Fri May 17 11:08:05 2013 +0200
Committer: Sebastian Schaffert <[email protected]>
Committed: Fri May 17 11:08:05 2013 +0200

----------------------------------------------------------------------
 .../marmotta/kiwi/config/KiWiConfiguration.java    |   57 +++++++++++
 .../marmotta/kiwi/persistence/KiWiPersistence.java |   75 +++++++--------
 .../org/apache/marmotta/kiwi/sail/KiWiStore.java   |    8 ++-
 .../services/triplestore/SesameServiceImpl.java    |    6 +-
 .../src/main/resources/config-defaults.properties  |    3 +
 .../main/resources/config-descriptions.properties  |    3 +-
 6 files changed, 111 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/484a5255/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/config/KiWiConfiguration.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/config/KiWiConfiguration.java
 
b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/config/KiWiConfiguration.java
index ca3a05c..510abb8 100644
--- 
a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/config/KiWiConfiguration.java
+++ 
b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/config/KiWiConfiguration.java
@@ -33,20 +33,53 @@ import org.apache.marmotta.kiwi.persistence.KiWiDialect;
  */
 public class KiWiConfiguration {
 
+    /**
+     * A unique name for identifying this instance of KiWiPersistence. Can be 
used in case there are several
+     * instances running in the same environment.
+     */
     private String name;
     private String jdbcUrl;
     private String dbUser;
     private String dbPassword;
+
+    /**
+     * The default context to use when no explicit context is given in 
createStatement. The KiWi triple store
+     * does not support null values for the context of a triple, so this URL 
must be set to an appropriate value
+     */
+    private String defaultContext;
+
+    /**
+     * The context to use for storing all inferred triples. The value set here 
will override all contexts
+     * given to addInferredTriple, because KiWi always stores all inferred 
triples in the same context.
+     */
+    private String inferredContext;
+
+
+    /**
+     * The SQL dialect to use
+     */
     private KiWiDialect dialect;
 
+    /**
+     * A flag indicating if the query logging (Tomcat JDBC SlowQueryReport) is 
enabled or not.
+     */
+    private boolean queryLoggingEnabled = false;
+
     public KiWiConfiguration(String name, String jdbcUrl, String dbUser, 
String dbPassword, KiWiDialect dialect) {
+        this(name, jdbcUrl, dbUser, dbPassword, dialect, null, null);
+    }
+
+    public KiWiConfiguration(String name, String jdbcUrl, String dbUser, 
String dbPassword, KiWiDialect dialect, String defaultContext, String 
inferredContext) {
         this.dbPassword = dbPassword;
         this.dbUser = dbUser;
         this.dialect = dialect;
         this.jdbcUrl = jdbcUrl;
         this.name = name;
+        this.defaultContext = defaultContext;
+        this.inferredContext = inferredContext;
     }
 
+
     public String getDbPassword() {
         return dbPassword;
     }
@@ -66,4 +99,28 @@ public class KiWiConfiguration {
     public String getName() {
         return name;
     }
+
+    public boolean isQueryLoggingEnabled() {
+        return queryLoggingEnabled;
+    }
+
+    public void setQueryLoggingEnabled(boolean queryLoggingEnabled) {
+        this.queryLoggingEnabled = queryLoggingEnabled;
+    }
+
+    public String getDefaultContext() {
+        return defaultContext;
+    }
+
+    public void setDefaultContext(String defaultContext) {
+        this.defaultContext = defaultContext;
+    }
+
+    public String getInferredContext() {
+        return inferredContext;
+    }
+
+    public void setInferredContext(String inferredContext) {
+        this.inferredContext = inferredContext;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/484a5255/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiPersistence.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiPersistence.java
 
b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiPersistence.java
index 70950eb..e4206a2 100644
--- 
a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiPersistence.java
+++ 
b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiPersistence.java
@@ -18,6 +18,7 @@
 package org.apache.marmotta.kiwi.persistence;
 
 import org.apache.marmotta.kiwi.caching.KiWiCacheManager;
+import org.apache.marmotta.kiwi.config.KiWiConfiguration;
 import org.apache.marmotta.kiwi.model.rdf.KiWiNode;
 import org.apache.marmotta.kiwi.model.rdf.KiWiResource;
 import org.apache.marmotta.kiwi.model.rdf.KiWiUriResource;
@@ -51,34 +52,31 @@ public class KiWiPersistence {
     private static int KIWI_ID = 0;
 
     /**
-     * A unique name for identifying this instance of KiWiPersistence. Can be 
used in case there are several
-     * instances running in the same environment.
-     */
-    private String name;
-
-
-    /**
      * The connection pool for managing JDBC connections
      */
     private DataSource connectionPool;
 
-    /**
-     * The SQL dialect to use
-     */
-    private KiWiDialect           dialect;
-
     private PoolProperties        poolConfig;
 
     private KiWiCacheManager      cacheManager;
 
     private KiWiGarbageCollector  garbageCollector;
 
+    /**
+     * The KiWi configuration for this persistence.
+     */
+    private KiWiConfiguration     configuration;
+
+    @Deprecated
     public KiWiPersistence(String name, String jdbcUrl, String db_user, String 
db_password, KiWiDialect dialect) {
-        this.name       = name;
-        this.dialect    = dialect;
+        this(new KiWiConfiguration(name,jdbcUrl,db_user,db_password,dialect));
+    }
+
+    public KiWiPersistence(KiWiConfiguration configuration) {
+        this.configuration = configuration;
 
         // init JDBC connection pool
-        initConnectionPool(jdbcUrl, db_user, db_password);
+        initConnectionPool();
 
         // init EHCache caches
         initCachePool();
@@ -95,7 +93,7 @@ public class KiWiPersistence {
     }
 
     public KiWiDialect getDialect() {
-        return dialect;
+        return configuration.getDialect();
     }
 
     public KiWiCacheManager getCacheManager() {
@@ -104,17 +102,17 @@ public class KiWiPersistence {
 
 
     private void initCachePool() {
-        cacheManager = new KiWiCacheManager(name);
+        cacheManager = new KiWiCacheManager(configuration.getName());
     }
 
 
-    private void initConnectionPool(String jdbcUrl, String db_user, String 
db_password) {
+    private void initConnectionPool() {
         poolConfig = new PoolProperties();
         poolConfig.setName("kiwi-" + (++KIWI_ID));
-        poolConfig.setUrl(jdbcUrl);
-        poolConfig.setDriverClassName(dialect.getDriverClass());
-        poolConfig.setUsername(db_user);
-        poolConfig.setPassword(db_password);
+        poolConfig.setUrl(configuration.getJdbcUrl());
+        
poolConfig.setDriverClassName(configuration.getDialect().getDriverClass());
+        poolConfig.setUsername(configuration.getDbUser());
+        poolConfig.setPassword(configuration.getDbPassword());
         
poolConfig.setDefaultTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
         poolConfig.setCommitOnReturn(true);
         /*
@@ -123,17 +121,18 @@ public class KiWiPersistence {
         */
 
         // interceptors
-/*
-        poolConfig.setJdbcInterceptors(
-                "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;"   +
-                        
"org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer;" +
-                        
"org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport"
-        );
-*/
-        poolConfig.setJdbcInterceptors(
-                "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;"   +
-                "org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"
-        );
+        if(configuration.isQueryLoggingEnabled()) {
+            poolConfig.setJdbcInterceptors(
+                    "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;" 
  +
+                    
"org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer;" +
+                    "org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport"
+            );
+        } else {
+            poolConfig.setJdbcInterceptors(
+                    "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;" 
  +
+                    
"org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"
+            );
+        }
 
         if(log.isDebugEnabled()) {
             poolConfig.setSuspectTimeout(30);
@@ -196,14 +195,14 @@ public class KiWiPersistence {
                 log.info("creating new KiWi database ...");
 
                 ScriptRunner runner = new 
ScriptRunner(connection.getJDBCConnection(), false, false);
-                runner.runScript(new 
StringReader(dialect.getCreateScript(scriptName)));
+                runner.runScript(new 
StringReader(configuration.getDialect().getCreateScript(scriptName)));
 
             } else {
                 int version = connection.getDatabaseVersion();
 
-                String updateScript = 
dialect.getMigrationScript(version,scriptName);
+                String updateScript = 
configuration.getDialect().getMigrationScript(version,scriptName);
                 if(updateScript != null && updateScript.length() > 0) {
-                    log.info("upgrading existing KiWi database from version {} 
to version {}", version, dialect.getVersion());
+                    log.info("upgrading existing KiWi database from version {} 
to version {}", version, configuration.getDialect().getVersion());
 
                     ScriptRunner runner = new 
ScriptRunner(connection.getJDBCConnection(), false, false);
                     runner.runScript(new StringReader(updateScript));
@@ -264,7 +263,7 @@ public class KiWiPersistence {
                 }
 
                 ScriptRunner runner = new 
ScriptRunner(connection.getJDBCConnection(), false, false);
-                runner.runScript(new 
StringReader(dialect.getDropScript(scriptName)));
+                runner.runScript(new 
StringReader(configuration.getDialect().getDropScript(scriptName)));
 
 
                 if(log.isDebugEnabled()) {
@@ -298,7 +297,7 @@ public class KiWiPersistence {
      */
     public KiWiConnection getConnection() throws SQLException {
         if(connectionPool != null) {
-            return new KiWiConnection(this,dialect,cacheManager);
+            return new 
KiWiConnection(this,configuration.getDialect(),cacheManager);
         } else {
             throw new SQLException("connection pool is closed, database 
connections not available");
         }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/484a5255/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java
 
b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java
index 3c71e2c..b6db0fc 100644
--- 
a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java
+++ 
b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java
@@ -18,6 +18,7 @@
 package org.apache.marmotta.kiwi.sail;
 
 import com.google.common.collect.MapMaker;
+import org.apache.marmotta.kiwi.config.KiWiConfiguration;
 import org.apache.marmotta.kiwi.model.caching.IntArray;
 import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.KiWiPersistence;
@@ -101,8 +102,13 @@ public class KiWiStore extends NotifyingSailBase {
 
     }
 
+    @Deprecated
     public KiWiStore(String name, String jdbcUrl, String db_user, String 
db_password, KiWiDialect dialect, String defaultContext, String 
inferredContext) {
-       this(new KiWiPersistence(name,jdbcUrl,db_user,db_password,dialect), 
defaultContext, inferredContext);
+       this(new KiWiConfiguration(name,jdbcUrl,db_user,db_password,dialect, 
defaultContext, inferredContext));
+    }
+
+    public KiWiStore(KiWiConfiguration configuration) {
+        this(new KiWiPersistence(configuration), 
configuration.getDefaultContext(), configuration.getInferredContext());
     }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/484a5255/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/triplestore/SesameServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/triplestore/SesameServiceImpl.java
 
b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/triplestore/SesameServiceImpl.java
index b29036f..9c60ab4 100644
--- 
a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/triplestore/SesameServiceImpl.java
+++ 
b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/triplestore/SesameServiceImpl.java
@@ -18,6 +18,7 @@
 package org.apache.marmotta.platform.core.services.triplestore;
 
 import 
edu.emory.mathcs.backport.java.util.concurrent.locks.ReentrantReadWriteLock;
+import org.apache.marmotta.kiwi.config.KiWiConfiguration;
 import org.apache.marmotta.platform.core.api.config.ConfigurationService;
 import org.apache.marmotta.platform.core.api.triplestore.NotifyingSailProvider;
 import org.apache.marmotta.platform.core.api.triplestore.SesameService;
@@ -148,7 +149,10 @@ public class SesameServiceImpl implements SesameService {
             String dbUser  = 
configurationService.getStringConfiguration("database.user");
             String dbPass  = 
configurationService.getStringConfiguration("database.password");
 
-            store = new KiWiStore("lmf", jdbcUrl, dbUser, dbPass, dialect, 
configurationService.getDefaultContext(), 
configurationService.getInferredContext());
+            KiWiConfiguration configuration = new KiWiConfiguration("lmf", 
jdbcUrl, dbUser, dbPass, dialect, configurationService.getDefaultContext(), 
configurationService.getInferredContext());
+            
configuration.setQueryLoggingEnabled(configurationService.getBooleanConfiguration("database.debug.slowqueries",false));
+
+            store = new KiWiStore(configuration);
 
             tsail = new KiWiTransactionalSail(store);
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/484a5255/platform/marmotta-core/src/main/resources/config-defaults.properties
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-core/src/main/resources/config-defaults.properties 
b/platform/marmotta-core/src/main/resources/config-defaults.properties
index 6a5dcc8..4fadcf2 100644
--- a/platform/marmotta-core/src/main/resources/config-defaults.properties
+++ b/platform/marmotta-core/src/main/resources/config-defaults.properties
@@ -158,6 +158,9 @@ database.password =
 # the database mode (create, update or validate)
 database.mode =
 
+# report slow queries in the log (not thread safe)
+database.debug.slowqueries = false
+
 # Hibernate-specific configuration for H2
 database.h2.driver = org.h2.Driver
 database.h2.url = 
jdbc:h2:/tmp/kiwi/db/kiwi;MVCC=true;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=10

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/484a5255/platform/marmotta-core/src/main/resources/config-descriptions.properties
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-core/src/main/resources/config-descriptions.properties 
b/platform/marmotta-core/src/main/resources/config-descriptions.properties
index 913ba5b..e260dda 100644
--- a/platform/marmotta-core/src/main/resources/config-descriptions.properties
+++ b/platform/marmotta-core/src/main/resources/config-descriptions.properties
@@ -162,7 +162,8 @@ database.password.type = java.lang.String("password")
 database.mode.description = the database mode (create, update, validate or off)
 database.mode.type = java.lang.Enum("create"|"update"|"validate"|"off")
 
-
+database.debug.slowqueries.description = enable reporting of slow database 
queries (produces additional overhead and is not thread safe)
+database.debug.slowqueries.type = java.lang.Boolean
 
 ###############################################################################
 # LMF importer configuration

Reply via email to