You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ss...@apache.org on 2016/11/19 14:39:43 UTC
marmotta git commit: KiWi: code cleanups and improvements
Repository: marmotta
Updated Branches:
refs/heads/develop 08e6f79d5 -> 1b1e6f53c
KiWi: code cleanups and improvements
Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/1b1e6f53
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/1b1e6f53
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/1b1e6f53
Branch: refs/heads/develop
Commit: 1b1e6f53c29955ffcfa41bc8b1517a1cc4a2ed09
Parents: 08e6f79
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Sat Nov 19 15:39:24 2016 +0100
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Sat Nov 19 15:39:24 2016 +0100
----------------------------------------------------------------------
.../marmotta/kiwi/caching/CacheManager.java | 40 ++-
.../marmotta/kiwi/generator/IDGenerator.java | 4 +-
.../kiwi/generator/SnowflakeIDGenerator.java | 3 -
.../kiwi/generator/UUIDRandomIDGenerator.java | 4 +-
.../marmotta/kiwi/hashing/TripleFunnel.java | 2 +-
.../org/apache/marmotta/kiwi/io/KiWiIO.java | 176 +++++------
.../kiwi/model/rdf/KiWiDoubleLiteral.java | 4 +-
.../marmotta/kiwi/model/rdf/KiWiLiteral.java | 3 +-
.../marmotta/kiwi/model/rdf/KiWiTriple.java | 12 +-
.../kiwi/persistence/KiWiConnection.java | 315 +++++++++----------
.../kiwi/persistence/KiWiPersistence.java | 40 +--
11 files changed, 287 insertions(+), 316 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/marmotta/blob/1b1e6f53/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/caching/CacheManager.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/caching/CacheManager.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/caching/CacheManager.java
index fbce98e..fc8c001 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/caching/CacheManager.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/caching/CacheManager.java
@@ -30,14 +30,14 @@ import java.util.Map;
public interface CacheManager {
// cache name constants
- public static final String NODE_CACHE = "node-cache";
- public static final String TRIPLE_CACHE = "triple-cache";
- public static final String URI_CACHE = "uri-cache";
- public static final String BNODE_CACHE = "bnode-cache";
- public static final String LITERAL_CACHE = "literal-cache";
- public static final String NS_URI_CACHE = "namespace-uri-cache";
- public static final String NS_PREFIX_CACHE = "namespace-prefix-cache";
- public static final String REGISTRY_CACHE = "registry-cache";
+ String NODE_CACHE = "node-cache";
+ String TRIPLE_CACHE = "triple-cache";
+ String URI_CACHE = "uri-cache";
+ String BNODE_CACHE = "bnode-cache";
+ String LITERAL_CACHE = "literal-cache";
+ String NS_URI_CACHE = "namespace-uri-cache";
+ String NS_PREFIX_CACHE = "namespace-prefix-cache";
+ String REGISTRY_CACHE = "registry-cache";
/**
@@ -46,7 +46,7 @@ public interface CacheManager {
*
* @return an EHCache Cache instance containing the node id -> node mappings
*/
- public Map<Long, KiWiNode> getNodeCache();
+ Map<Long, KiWiNode> getNodeCache();
/**
@@ -55,7 +55,7 @@ public interface CacheManager {
*
* @return
*/
- public Map<Long, KiWiTriple> getTripleCache();
+ Map<Long, KiWiTriple> getTripleCache();
/**
@@ -64,7 +64,7 @@ public interface CacheManager {
*
* @return
*/
- public Map<String, KiWiUriResource> getUriCache();
+ Map<String, KiWiUriResource> getUriCache();
/**
@@ -73,7 +73,7 @@ public interface CacheManager {
*
* @return
*/
- public Map<String, KiWiAnonResource> getBNodeCache();
+ Map<String, KiWiAnonResource> getBNodeCache();
@@ -84,21 +84,21 @@ public interface CacheManager {
* @see org.apache.marmotta.commons.sesame.model.LiteralCommons#createCacheKey(String, java.util.Locale, String)
* @return
*/
- public Map<String, KiWiLiteral> getLiteralCache();
+ Map<String, KiWiLiteral> getLiteralCache();
/**
* Return the URI -> namespace cache from the cache manager. Used for looking up namespaces
* @return
*/
- public Map<String, KiWiNamespace> getNamespaceUriCache();
+ Map<String, KiWiNamespace> getNamespaceUriCache();
/**
* Return the prefix -> namespace cache from the cache manager. Used for looking up namespaces
* @return
*/
- public Map<String, KiWiNamespace> getNamespacePrefixCache();
+ Map<String, KiWiNamespace> getNamespacePrefixCache();
/**
@@ -106,7 +106,7 @@ public interface CacheManager {
* cache and should be used with care.
* @return
*/
- public Map<Long,Long> getRegistryCache();
+ Map<Long,Long> getRegistryCache();
@@ -117,18 +117,16 @@ public interface CacheManager {
* @param name
* @return
*/
- public Map getCacheByName(String name);
+ Map getCacheByName(String name);
/**
* Clear all caches managed by this cache manager.
*/
- public void clear();
+ void clear();
/**
* Shutdown this cache manager instance. Will shutdown the underlying EHCache cache manager.
*/
- public void shutdown();
-
-
+ void shutdown();
}
http://git-wip-us.apache.org/repos/asf/marmotta/blob/1b1e6f53/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/generator/IDGenerator.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/generator/IDGenerator.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/generator/IDGenerator.java
index 56cf989..5a0b37b 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/generator/IDGenerator.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/generator/IDGenerator.java
@@ -28,11 +28,11 @@ public interface IDGenerator {
* Return the next unique id for the type with the given name using the generator's id generation strategy.
* @return
*/
- public long getId();
+ long getId();
/**
* Shut down this id generator, performing any cleanups that might be necessary.
*
*/
- public void shutdown();
+ void shutdown();
}
http://git-wip-us.apache.org/repos/asf/marmotta/blob/1b1e6f53/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/generator/SnowflakeIDGenerator.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/generator/SnowflakeIDGenerator.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/generator/SnowflakeIDGenerator.java
index 0e74bf7..f2a004b 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/generator/SnowflakeIDGenerator.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/generator/SnowflakeIDGenerator.java
@@ -20,7 +20,6 @@ package org.apache.marmotta.kiwi.generator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
@@ -86,10 +85,8 @@ public class SnowflakeIDGenerator implements IDGenerator {
}
protected long getDatacenterId() throws SocketException, UnknownHostException {
- InetAddress ip = InetAddress.getLocalHost();
NetworkInterface network = null;
-
Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();
while (en.hasMoreElements()) {
NetworkInterface nint = en.nextElement();
http://git-wip-us.apache.org/repos/asf/marmotta/blob/1b1e6f53/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/generator/UUIDRandomIDGenerator.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/generator/UUIDRandomIDGenerator.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/generator/UUIDRandomIDGenerator.java
index 3dd0c98..7dc525f 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/generator/UUIDRandomIDGenerator.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/generator/UUIDRandomIDGenerator.java
@@ -39,9 +39,7 @@ public class UUIDRandomIDGenerator implements IDGenerator {
*
*/
@Override
- public void shutdown() {
-
- }
+ public void shutdown() {}
/**
* Return the next unique id for the type with the given name using the generator's id generation strategy.
http://git-wip-us.apache.org/repos/asf/marmotta/blob/1b1e6f53/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/hashing/TripleFunnel.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/hashing/TripleFunnel.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/hashing/TripleFunnel.java
index 1ebb368..44d651b 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/hashing/TripleFunnel.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/hashing/TripleFunnel.java
@@ -41,7 +41,7 @@ public class TripleFunnel implements Funnel<KiWiTriple> {
public synchronized static TripleFunnel getInstance() {
- if(instance == null) {
+ if (instance == null) {
instance = new TripleFunnel();
}
return instance;
http://git-wip-us.apache.org/repos/asf/marmotta/blob/1b1e6f53/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/io/KiWiIO.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/io/KiWiIO.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/io/KiWiIO.java
index 51254f6..b88e555 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/io/KiWiIO.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/io/KiWiIO.java
@@ -504,20 +504,20 @@ public class KiWiIO {
public static KiWiDoubleLiteral readDoubleLiteral(DataInput input) throws IOException {
long id = input.readLong();
- if(id == -1) {
+ if (id == -1) {
return null;
- } else {
- double content = input.readDouble();
+ }
- KiWiUriResource dtype = readURI(input);
+ double content = input.readDouble();
- Date created = new Date(input.readLong());
+ KiWiUriResource dtype = readURI(input);
- KiWiDoubleLiteral r = new KiWiDoubleLiteral(content, dtype, created);
- r.setId(id);
+ Date created = new Date(input.readLong());
- return r;
- }
+ KiWiDoubleLiteral r = new KiWiDoubleLiteral(content, dtype, created);
+ r.setId(id);
+
+ return r;
}
@@ -550,20 +550,20 @@ public class KiWiIO {
public static KiWiIntLiteral readIntLiteral(DataInput input) throws IOException {
long id = input.readLong();
- if(id == -1) {
+ if (id == -1) {
return null;
- } else {
- long content = input.readLong();
+ }
- KiWiUriResource dtype = readURI(input);
+ long content = input.readLong();
- Date created = new Date(input.readLong());
+ KiWiUriResource dtype = readURI(input);
- KiWiIntLiteral r = new KiWiIntLiteral(content, dtype, created);
- r.setId(id);
+ Date created = new Date(input.readLong());
- return r;
- }
+ KiWiIntLiteral r = new KiWiIntLiteral(content, dtype, created);
+ r.setId(id);
+
+ return r;
}
@@ -606,66 +606,66 @@ public class KiWiIO {
if(id == -1) {
return null;
- } else {
- String content = readContent(input);
- byte langB = input.readByte();
- String lang;
+ }
- switch (langB) {
- case LANG_EN:
- lang = "en";
- break;
- case LANG_DE:
- lang = "de";
- break;
- case LANG_FR:
- lang = "fr";
- break;
- case LANG_ES:
- lang = "es";
- break;
- case LANG_IT:
- lang = "it";
- break;
- case LANG_PT:
- lang = "pt";
- break;
- case LANG_NL:
- lang = "nl";
- break;
- case LANG_SV:
- lang = "sv";
- break;
- case LANG_NO:
- lang = "no";
- break;
- case LANG_FI:
- lang = "fi";
- break;
- case LANG_RU:
- lang = "ru";
- break;
- case LANG_DK:
- lang = "dk";
- break;
- case LANG_PL:
- lang = "pl";
- break;
- default:
- lang = DataIO.readString(input);
- }
+ String content = readContent(input);
+ byte langB = input.readByte();
+ String lang;
+
+ switch (langB) {
+ case LANG_EN:
+ lang = "en";
+ break;
+ case LANG_DE:
+ lang = "de";
+ break;
+ case LANG_FR:
+ lang = "fr";
+ break;
+ case LANG_ES:
+ lang = "es";
+ break;
+ case LANG_IT:
+ lang = "it";
+ break;
+ case LANG_PT:
+ lang = "pt";
+ break;
+ case LANG_NL:
+ lang = "nl";
+ break;
+ case LANG_SV:
+ lang = "sv";
+ break;
+ case LANG_NO:
+ lang = "no";
+ break;
+ case LANG_FI:
+ lang = "fi";
+ break;
+ case LANG_RU:
+ lang = "ru";
+ break;
+ case LANG_DK:
+ lang = "dk";
+ break;
+ case LANG_PL:
+ lang = "pl";
+ break;
+ default:
+ lang = DataIO.readString(input);
+ }
- KiWiUriResource dtype = readURI(input);
+ KiWiUriResource dtype = readURI(input);
- Date created = new Date(input.readLong());
+ Date created = new Date(input.readLong());
- KiWiStringLiteral r = new KiWiStringLiteral(content, lang != null ? Locale.forLanguageTag(lang) : null, dtype, created);
- r.setId(id);
+ KiWiStringLiteral r = new KiWiStringLiteral(content, lang != null ? Locale.forLanguageTag(lang) : null, dtype, created);
+ r.setId(id);
- return r;
- }
+ return r;
}
@@ -787,27 +787,27 @@ public class KiWiIO {
private static String readContent(DataInput in) throws IOException {
int mode = in.readByte();
- if(mode == MODE_COMPRESSED) {
- try {
- int strlen = in.readInt();
- int buflen = in.readInt();
+ if (mode != MODE_COMPRESSED) {
+ return DataIO.readString(in);
+ }
- byte[] buffer = new byte[buflen];
- in.readFully(buffer);
+ try {
+ int strlen = in.readInt();
+ int buflen = in.readInt();
- Inflater decompressor = new Inflater(true);
- decompressor.setInput(buffer);
+ byte[] buffer = new byte[buflen];
+ in.readFully(buffer);
- byte[] data = new byte[strlen];
- decompressor.inflate(data);
- decompressor.end();
+ Inflater decompressor = new Inflater(true);
+ decompressor.setInput(buffer);
- return new String(data,"UTF-8");
- } catch(DataFormatException ex) {
- throw new IllegalStateException("input data is not valid",ex);
- }
- } else {
- return DataIO.readString(in);
+ byte[] data = new byte[strlen];
+ decompressor.inflate(data);
+ decompressor.end();
+
+ return new String(data,"UTF-8");
+ } catch(DataFormatException ex) {
+ throw new IllegalStateException("input data is not valid",ex);
}
}
http://git-wip-us.apache.org/repos/asf/marmotta/blob/1b1e6f53/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiDoubleLiteral.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiDoubleLiteral.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiDoubleLiteral.java
index 0fb7ea9..22e64e8 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiDoubleLiteral.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiDoubleLiteral.java
@@ -94,7 +94,7 @@ public class KiWiDoubleLiteral extends KiWiStringLiteral {
{
if(d == (long) d)
return String.format("%d",(long)d);
- else
- return String.format("%s",d);
+
+ return String.format("%s",d);
}
}
http://git-wip-us.apache.org/repos/asf/marmotta/blob/1b1e6f53/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiLiteral.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiLiteral.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiLiteral.java
index 241dfc7..987c9d2 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiLiteral.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiLiteral.java
@@ -233,9 +233,8 @@ public abstract class KiWiLiteral extends KiWiNode implements Literal {
public String getLanguage() {
if(getLocale() != null) {
return getLocale().getLanguage().toLowerCase();
- } else {
- return null;
}
+ return null;
}
/**
http://git-wip-us.apache.org/repos/asf/marmotta/blob/1b1e6f53/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiTriple.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiTriple.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiTriple.java
index 5b108fa..31dc75a 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiTriple.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiTriple.java
@@ -17,6 +17,7 @@
*/
package org.apache.marmotta.kiwi.model.rdf;
+import com.google.common.base.Preconditions;
import org.openrdf.model.Statement;
import java.io.Serializable;
@@ -96,15 +97,17 @@ public class KiWiTriple implements Statement, Serializable {
public KiWiTriple(KiWiResource subject, KiWiUriResource predicate, KiWiNode object, KiWiResource context, Date created) {
this(created);
+
+ Preconditions.checkNotNull(subject);
+ Preconditions.checkNotNull(predicate);
+ Preconditions.checkNotNull(object);
+
this.subject = subject;
this.predicate = predicate;
this.object = object;
this.context = context;
this.deletedAt = null;
- assert(subject != null);
- assert(predicate != null);
- assert(object != null);
}
/**
@@ -285,9 +288,8 @@ public class KiWiTriple implements Statement, Serializable {
public String toString() {
if(context != null) {
return "{"+subject.toString()+" "+ predicate.toString()+" "+object.toString()+"}@"+context.toString();
- } else {
- return "{"+subject.toString()+" "+ predicate.toString()+" "+object.toString()+"}@GLOBAL";
}
+ return "{"+subject.toString()+" "+ predicate.toString()+" "+object.toString()+"}@GLOBAL";
}
/**
http://git-wip-us.apache.org/repos/asf/marmotta/blob/1b1e6f53/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java
index 712973c..f88bd14 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java
@@ -186,11 +186,11 @@ public class KiWiConnection implements AutoCloseable {
* more efficient implementations in case the queries can be answered directly from the cache.
*/
protected void requireJDBCConnection() throws SQLException {
- if(connection == null) {
+ if (connection == null) {
connection = persistence.getJDBCConnection();
connection.setAutoCommit(autoCommit);
}
- if(tripleBatch == null) {
+ if (tripleBatch == null) {
tripleBatch = new TripleTable<>();
}
}
@@ -233,7 +233,7 @@ public class KiWiConnection implements AutoCloseable {
*/
public KiWiNamespace loadNamespaceByPrefix(String prefix) throws SQLException {
KiWiNamespace element = namespacePrefixCache.get(prefix);
- if(element != null) {
+ if (element != null) {
return element;
}
@@ -249,9 +249,8 @@ public class KiWiConnection implements AutoCloseable {
try (ResultSet result = query.executeQuery()) {
if (result.next()) {
return constructNamespaceFromDatabase(result);
- } else {
- return null;
}
+ return null;
}
}
@@ -266,7 +265,7 @@ public class KiWiConnection implements AutoCloseable {
*/
public KiWiNamespace loadNamespaceByUri(String uri) throws SQLException {
KiWiNamespace element = namespaceUriCache.get(uri);
- if(element != null) {
+ if (element != null) {
return element;
}
@@ -282,9 +281,8 @@ public class KiWiConnection implements AutoCloseable {
try (ResultSet result = query.executeQuery()) {
if (result.next()) {
return constructNamespaceFromDatabase(result);
- } else {
- return null;
}
+ return null;
}
}
@@ -297,7 +295,7 @@ public class KiWiConnection implements AutoCloseable {
*/
public void storeNamespace(KiWiNamespace namespace) throws SQLException {
// TODO: add unique constraints to table
- if(namespace.getId() >= 0) {
+ if (namespace.getId() >= 0) {
log.warn("trying to store namespace which is already persisted: {}",namespace);
return;
}
@@ -324,7 +322,7 @@ public class KiWiConnection implements AutoCloseable {
* @throws SQLException in case a database error occurred
*/
public void deleteNamespace(KiWiNamespace namespace) throws SQLException {
- if(namespace.getId() < 0) {
+ if (namespace.getId() < 0) {
log.warn("trying to remove namespace which is not persisted: {}",namespace);
return;
}
@@ -351,9 +349,8 @@ public class KiWiConnection implements AutoCloseable {
try (ResultSet result = querySize.executeQuery()) {
if (result.next()) {
return result.getLong(1) + (tripleBatch != null ? tripleBatch.size() : 0);
- } else {
- return tripleBatch != null ? tripleBatch.size() : 0;
}
+ return tripleBatch != null ? tripleBatch.size() : 0;
}
}
@@ -364,7 +361,7 @@ public class KiWiConnection implements AutoCloseable {
* @throws SQLException
*/
public long getSize(KiWiResource context) throws SQLException {
- if(context.getId() < 0) {
+ if (context.getId() < 0) {
return 0;
}
@@ -376,9 +373,8 @@ public class KiWiConnection implements AutoCloseable {
try (ResultSet result = querySize.executeQuery()) {
if (result.next()) {
return result.getLong(1) + (tripleBatch != null ? tripleBatch.listTriples(null, null, null, context, false).size() : 0);
- } else {
- return tripleBatch != null ? tripleBatch.listTriples(null, null, null, context, false).size() : 0;
}
+ return tripleBatch != null ? tripleBatch.listTriples(null, null, null, context, false).size() : 0;
}
}
@@ -412,7 +408,7 @@ public class KiWiConnection implements AutoCloseable {
// look in cache
KiWiNode element = nodeCache.get(id);
- if(element != null) {
+ if (element != null) {
return element;
}
@@ -429,9 +425,8 @@ public class KiWiConnection implements AutoCloseable {
try (ResultSet result = query.executeQuery()) {
if (result.next()) {
return constructNodeFromDatabase(result);
- } else {
- return null;
}
+ return null;
}
}
@@ -502,7 +497,7 @@ public class KiWiConnection implements AutoCloseable {
private int computeBatchSize(int position, int length) {
int batchSize = QUERY_BATCH_SIZE;
- while(length - position < batchSize) {
+ while (length - position < batchSize) {
batchSize = batchSize >> 1;
}
return batchSize;
@@ -512,7 +507,7 @@ public class KiWiConnection implements AutoCloseable {
// look in cache
KiWiTriple element = tripleCache.get(id);
- if(element != null) {
+ if (element != null) {
return element;
}
@@ -528,9 +523,8 @@ public class KiWiConnection implements AutoCloseable {
try (ResultSet result = query.executeQuery()) {
if (result.next()) {
return constructTripleFromDatabase(result);
- } else {
- return null;
}
+ return null;
}
}
@@ -551,7 +545,7 @@ public class KiWiConnection implements AutoCloseable {
// look in cache
KiWiUriResource element = uriCache.get(uri);
- if(element != null) {
+ if (element != null) {
return element;
}
@@ -569,9 +563,8 @@ public class KiWiConnection implements AutoCloseable {
try (ResultSet result = query.executeQuery()) {
if (result.next()) {
return (KiWiUriResource) constructNodeFromDatabase(result);
- } else {
- return null;
}
+ return null;
}
} finally {
uriLock.unlock();
@@ -593,7 +586,7 @@ public class KiWiConnection implements AutoCloseable {
public KiWiAnonResource loadAnonResource(String id) throws SQLException {
// look in cache
KiWiAnonResource element = bnodeCache.get(id);
- if(element != null) {
+ if (element != null) {
return element;
}
@@ -612,9 +605,8 @@ public class KiWiConnection implements AutoCloseable {
try (ResultSet result = query.executeQuery()) {
if (result.next()) {
return (KiWiAnonResource) constructNodeFromDatabase(result);
- } else {
- return null;
}
+ return null;
}
} finally {
bnodeLock.unlock();
@@ -639,7 +631,7 @@ public class KiWiConnection implements AutoCloseable {
public KiWiLiteral loadLiteral(String value, String lang, KiWiUriResource ltype) throws SQLException {
// look in cache
final KiWiLiteral element = literalCache.get(LiteralCommons.createCacheKey(value,getLocale(lang), ltype));
- if(element != null) {
+ if (element != null) {
return element;
}
@@ -676,9 +668,8 @@ public class KiWiConnection implements AutoCloseable {
try (ResultSet result = query.executeQuery()) {
if (result.next()) {
return (KiWiLiteral) constructNodeFromDatabase(result);
- } else {
- return null;
}
+ return null;
}
} finally {
literalLock.unlock();
@@ -701,7 +692,7 @@ public class KiWiConnection implements AutoCloseable {
public KiWiDateLiteral loadLiteral(DateTime date) throws SQLException {
// look in cache
KiWiLiteral element = literalCache.get(LiteralCommons.createCacheKey(date.withMillisOfSecond(0),Namespaces.NS_XSD + "dateTime"));
- if(element != null && element instanceof KiWiDateLiteral) {
+ if (element != null && element instanceof KiWiDateLiteral) {
return (KiWiDateLiteral)element;
}
@@ -727,9 +718,8 @@ public class KiWiConnection implements AutoCloseable {
try (ResultSet result = query.executeQuery()) {
if (result.next()) {
return (KiWiDateLiteral) constructNodeFromDatabase(result);
- } else {
- return null;
}
+ return null;
}
} finally {
literalLock.unlock();
@@ -753,7 +743,7 @@ public class KiWiConnection implements AutoCloseable {
public KiWiIntLiteral loadLiteral(long value) throws SQLException {
// look in cache
KiWiLiteral element = literalCache.get(LiteralCommons.createCacheKey(Long.toString(value),(String)null,Namespaces.NS_XSD + "integer"));
- if(element != null && element instanceof KiWiIntLiteral) {
+ if (element != null && element instanceof KiWiIntLiteral) {
return (KiWiIntLiteral)element;
}
@@ -762,7 +752,7 @@ public class KiWiConnection implements AutoCloseable {
KiWiUriResource ltype = loadUriResource(Namespaces.NS_XSD + "integer");
// ltype not persisted
- if(ltype == null || ltype.getId() < 0) {
+ if (ltype == null || ltype.getId() < 0) {
return null;
}
@@ -780,9 +770,8 @@ public class KiWiConnection implements AutoCloseable {
try (ResultSet result = query.executeQuery()) {
if (result.next()) {
return (KiWiIntLiteral) constructNodeFromDatabase(result);
- } else {
- return null;
}
+ return null;
}
} finally {
literalLock.unlock();
@@ -805,7 +794,7 @@ public class KiWiConnection implements AutoCloseable {
public KiWiDoubleLiteral loadLiteral(double value) throws SQLException {
// look in cache
KiWiLiteral element = literalCache.get(LiteralCommons.createCacheKey(Double.toString(value), (String)null,Namespaces.NS_XSD + "double"));
- if(element != null && element instanceof KiWiDoubleLiteral) {
+ if (element != null && element instanceof KiWiDoubleLiteral) {
return (KiWiDoubleLiteral)element;
}
@@ -828,13 +817,11 @@ public class KiWiConnection implements AutoCloseable {
// run the database query and if it yields a result, construct a new node; the method call will take care of
// caching the constructed node for future calls
- KiWiNode kiWiNode = null;
try (ResultSet result = query.executeQuery()) {
if (result.next()) {
return (KiWiDoubleLiteral) constructNodeFromDatabase(result);
- } else {
- return null;
}
+ return null;
} catch (RuntimeException e) {
log.error("Unable to create KiWiDoubleLiteral for node value '{}': {}", value, e.getMessage(), e);
throw e;
@@ -860,7 +847,7 @@ public class KiWiConnection implements AutoCloseable {
public KiWiBooleanLiteral loadLiteral(boolean value) throws SQLException {
// look in cache
KiWiLiteral element = literalCache.get(LiteralCommons.createCacheKey(Boolean.toString(value),(String)null,Namespaces.NS_XSD + "boolean"));
- if(element != null && element instanceof KiWiBooleanLiteral) {
+ if (element != null && element instanceof KiWiBooleanLiteral) {
return (KiWiBooleanLiteral)element;
}
@@ -869,7 +856,7 @@ public class KiWiConnection implements AutoCloseable {
KiWiUriResource ltype = loadUriResource(Namespaces.NS_XSD + "boolean");
// ltype not persisted
- if(ltype == null || ltype.getId() < 0) {
+ if (ltype == null || ltype.getId() < 0) {
return null;
}
@@ -887,9 +874,8 @@ public class KiWiConnection implements AutoCloseable {
try (ResultSet result = query.executeQuery()) {
if (result.next()) {
return (KiWiBooleanLiteral) constructNodeFromDatabase(result);
- } else {
- return null;
}
+ return null;
}
} finally {
literalLock.unlock();
@@ -910,9 +896,9 @@ public class KiWiConnection implements AutoCloseable {
public synchronized void storeNode(KiWiNode node) throws SQLException {
// ensure the data type of a literal is persisted first
- if(node instanceof KiWiLiteral) {
+ if (node instanceof KiWiLiteral) {
KiWiLiteral literal = (KiWiLiteral)node;
- if(literal.getType() != null && literal.getType().getId() < 0) {
+ if (literal.getType() != null && literal.getType().getId() < 0) {
storeNode(literal.getType());
}
}
@@ -920,12 +906,12 @@ public class KiWiConnection implements AutoCloseable {
requireJDBCConnection();
// retrieve a new node id and set it in the node object
- if(node.getId() < 0) {
+ if (node.getId() < 0) {
node.setId(getNextSequence());
}
// distinguish the different node types and run the appropriate updates
- if(node instanceof KiWiUriResource) {
+ if (node instanceof KiWiUriResource) {
KiWiUriResource uriResource = (KiWiUriResource)node;
PreparedStatement insertNode = getPreparedStatement("store.uri");
@@ -935,7 +921,7 @@ public class KiWiConnection implements AutoCloseable {
insertNode.executeUpdate();
- } else if(node instanceof KiWiAnonResource) {
+ } else if (node instanceof KiWiAnonResource) {
KiWiAnonResource anonResource = (KiWiAnonResource)node;
PreparedStatement insertNode = getPreparedStatement("store.bnode");
@@ -944,7 +930,7 @@ public class KiWiConnection implements AutoCloseable {
insertNode.setTimestamp(3, new Timestamp(anonResource.getCreated().getTime()), calendarUTC);
insertNode.executeUpdate();
- } else if(node instanceof KiWiDateLiteral) {
+ } else if (node instanceof KiWiDateLiteral) {
KiWiDateLiteral dateLiteral = (KiWiDateLiteral)node;
PreparedStatement insertNode = getPreparedStatement("store.tliteral");
@@ -952,14 +938,14 @@ public class KiWiConnection implements AutoCloseable {
insertNode.setString(2, dateLiteral.stringValue());
insertNode.setTimestamp(3, new Timestamp(dateLiteral.getDateContent().getMillis()), calendarUTC);
insertNode.setInt(4, dateLiteral.getDateContent().getZone().getOffset(dateLiteral.getDateContent())/1000);
- if(dateLiteral.getType() != null)
+ if (dateLiteral.getType() != null)
insertNode.setLong(5,dateLiteral.getType().getId());
else
throw new IllegalStateException("a date literal must have a datatype");
insertNode.setTimestamp(6, new Timestamp(dateLiteral.getCreated().getTime()), calendarUTC);
insertNode.executeUpdate();
- } else if(node instanceof KiWiIntLiteral) {
+ } else if (node instanceof KiWiIntLiteral) {
KiWiIntLiteral intLiteral = (KiWiIntLiteral)node;
PreparedStatement insertNode = getPreparedStatement("store.iliteral");
@@ -967,48 +953,48 @@ public class KiWiConnection implements AutoCloseable {
insertNode.setString(2, intLiteral.getContent());
insertNode.setDouble(3, intLiteral.getDoubleContent());
insertNode.setLong(4, intLiteral.getIntContent());
- if(intLiteral.getType() != null)
+ if (intLiteral.getType() != null)
insertNode.setLong(5,intLiteral.getType().getId());
else
throw new IllegalStateException("an integer literal must have a datatype");
insertNode.setTimestamp(6, new Timestamp(intLiteral.getCreated().getTime()), calendarUTC);
insertNode.executeUpdate();
- } else if(node instanceof KiWiDoubleLiteral) {
+ } else if (node instanceof KiWiDoubleLiteral) {
KiWiDoubleLiteral doubleLiteral = (KiWiDoubleLiteral)node;
PreparedStatement insertNode = getPreparedStatement("store.dliteral");
insertNode.setLong(1, node.getId());
insertNode.setString(2, doubleLiteral.getContent());
insertNode.setDouble(3, doubleLiteral.getDoubleContent());
- if(doubleLiteral.getType() != null)
+ if (doubleLiteral.getType() != null)
insertNode.setLong(4,doubleLiteral.getType().getId());
else
throw new IllegalStateException("a double literal must have a datatype");
insertNode.setTimestamp(5, new Timestamp(doubleLiteral.getCreated().getTime()), calendarUTC);
insertNode.executeUpdate();
- } else if(node instanceof KiWiBooleanLiteral) {
+ } else if (node instanceof KiWiBooleanLiteral) {
KiWiBooleanLiteral booleanLiteral = (KiWiBooleanLiteral)node;
PreparedStatement insertNode = getPreparedStatement("store.bliteral");
insertNode.setLong(1,node.getId());
insertNode.setString(2, booleanLiteral.getContent());
insertNode.setBoolean(3, booleanLiteral.booleanValue());
- if(booleanLiteral.getType() != null)
+ if (booleanLiteral.getType() != null)
insertNode.setLong(4,booleanLiteral.getType().getId());
else
throw new IllegalStateException("a boolean literal must have a datatype");
insertNode.setTimestamp(5, new Timestamp(booleanLiteral.getCreated().getTime()), calendarUTC);
insertNode.executeUpdate();
- } else if(node instanceof KiWiStringLiteral) {
+ } else if (node instanceof KiWiStringLiteral) {
KiWiStringLiteral stringLiteral = (KiWiStringLiteral)node;
Double dbl_value = null;
Long lng_value = null;
- if(stringLiteral.getContent().length() < 64 && NumberUtils.isNumber(stringLiteral.getContent()))
+ if (stringLiteral.getContent().length() < 64 && NumberUtils.isNumber(stringLiteral.getContent()))
try {
dbl_value = Double.parseDouble(stringLiteral.getContent());
lng_value = Long.parseLong(stringLiteral.getContent());
@@ -1020,18 +1006,18 @@ public class KiWiConnection implements AutoCloseable {
PreparedStatement insertNode = getPreparedStatement("store.sliteral");
insertNode.setLong(1,node.getId());
insertNode.setString(2, stringLiteral.getContent());
- if(dbl_value != null) {
+ if (dbl_value != null) {
insertNode.setDouble(3, dbl_value);
} else {
insertNode.setObject(3, null);
}
- if(lng_value != null) {
+ if (lng_value != null) {
insertNode.setLong(4, lng_value);
} else {
insertNode.setObject(4, null);
}
- if(stringLiteral.getLocale() != null) {
+ if (stringLiteral.getLocale() != null) {
insertNode.setString(5, stringLiteral.getLocale().getLanguage().toLowerCase());
} else {
insertNode.setObject(5, null);
@@ -1064,11 +1050,11 @@ public class KiWiConnection implements AutoCloseable {
requireJDBCConnection();
- if(triple.getId() < 0) {
+ if (triple.getId() < 0) {
triple.setId(getNextSequence());
}
- if(deletedStatementsLog.mightContain(triple.getId())) {
+ if (deletedStatementsLog.mightContain(triple.getId())) {
// this is a hack for a concurrency problem that may occur in case the triple is removed in the
// transaction and then added again; in these cases the createStatement method might return
// an expired state of the triple because it uses its own database connection
@@ -1083,9 +1069,7 @@ public class KiWiConnection implements AutoCloseable {
try {
cacheTriple(triple);
tripleBatch.add(triple);
- if(tripleBatch.size() >= batchSize) {
- flushBatch();
- }
+ maybeFlushBatch();
} finally {
commitLock.unlock();
}
@@ -1094,7 +1078,6 @@ public class KiWiConnection implements AutoCloseable {
Preconditions.checkNotNull(triple.getPredicate().getId());
Preconditions.checkNotNull(triple.getObject().getId());
-
try {
RetryExecution<Boolean> execution = new RetryExecution<>("STORE");
execution.setUseSavepoint(true);
@@ -1106,7 +1089,7 @@ public class KiWiConnection implements AutoCloseable {
insertTriple.setLong(2,triple.getSubject().getId());
insertTriple.setLong(3,triple.getPredicate().getId());
insertTriple.setLong(4,triple.getObject().getId());
- if(triple.getContext() != null) {
+ if (triple.getContext() != null) {
insertTriple.setLong(5,triple.getContext().getId());
} else {
insertTriple.setNull(5, Types.BIGINT);
@@ -1122,7 +1105,7 @@ public class KiWiConnection implements AutoCloseable {
});
} catch(SQLException ex) {
- if("HYT00".equals(ex.getSQLState())) { // H2 table locking timeout
+ if ("HYT00".equals(ex.getSQLState())) { // H2 table locking timeout
throw new ConcurrentModificationException("the same triple was modified in concurrent transactions (triple="+triple+")");
} else {
throw ex;
@@ -1144,7 +1127,7 @@ public class KiWiConnection implements AutoCloseable {
* @return the database-id of the triple or {@code -1} if it does not exist.
*/
public synchronized long getTripleId(final KiWiResource subject, final KiWiUriResource predicate, final KiWiNode object, final KiWiResource context) throws SQLException {
- if(tripleBatch != null && tripleBatch.size() > 0) {
+ if (tripleBatch != null && tripleBatch.size() > 0) {
Collection<KiWiTriple> batched = tripleBatch.listTriples(subject,predicate,object,context, false);
if(batched.size() > 0) {
return batched.iterator().next().getId();
@@ -1156,7 +1139,7 @@ public class KiWiConnection implements AutoCloseable {
loadTripleId.setLong(1, subject.getId());
loadTripleId.setLong(2, predicate.getId());
loadTripleId.setLong(3, object.getId());
- if(context != null) {
+ if (context != null) {
loadTripleId.setLong(4, context.getId());
} else {
loadTripleId.setNull(4, Types.BIGINT);
@@ -1420,7 +1403,7 @@ public class KiWiConnection implements AutoCloseable {
final ResultSet result = queryContexts.executeQuery();
- if(tripleBatch != null && tripleBatch.size() > 0) {
+ if (tripleBatch != null && tripleBatch.size() > 0) {
return new DistinctIteration<>(
new UnionIteration<>(
new ConvertingIteration<Resource,KiWiResource,SQLException>(new IteratorIteration<Resource, SQLException>(tripleBatch.listContextIDs().iterator())) {
@@ -1557,17 +1540,16 @@ public class KiWiConnection implements AutoCloseable {
);
}
- } else {
- return new RepositoryResult<>(
- new ExceptionConvertingIteration<Statement, RepositoryException>(listTriplesInternal(subject,predicate,object,context,inferred, wildcardContext)) {
- @Override
- protected RepositoryException convert(Exception e) {
- return new RepositoryException("database error while iterating over result set",e);
- }
+ }
+ return new RepositoryResult<>(
+ new ExceptionConvertingIteration<Statement, RepositoryException>(listTriplesInternal(subject,predicate,object,context,inferred, wildcardContext)) {
+ @Override
+ protected RepositoryException convert(Exception e) {
+ return new RepositoryException("database error while iterating over result set",e);
}
+ }
- );
- }
+ );
}
/**
@@ -1654,9 +1636,8 @@ public class KiWiConnection implements AutoCloseable {
if(batch.size() > batchPosition) {
return batch.get(batchPosition++);
- } else {
- return null;
}
+ return null;
}
private void fetchBatch() throws SQLException {
@@ -1748,13 +1729,15 @@ public class KiWiConnection implements AutoCloseable {
cacheNode(result);
return result;
- } else if("bnode".equals(ntype)) {
+ }
+ if("bnode".equals(ntype)) {
KiWiAnonResource result = new KiWiAnonResource(row.getString(3), new Date(row.getTimestamp(11, calendarUTC).getTime()));
result.setId(id);
cacheNode(result);
return result;
- } else if("string".equals(ntype)) {
+ }
+ if("string".equals(ntype)) {
final KiWiStringLiteral result = new KiWiStringLiteral(row.getString(3), new Date(row.getTimestamp(11, calendarUTC).getTime()));
result.setId(id);
@@ -1767,7 +1750,8 @@ public class KiWiConnection implements AutoCloseable {
cacheNode(result);
return result;
- } else if("int".equals(ntype)) {
+ }
+ if("int".equals(ntype)) {
KiWiIntLiteral result = new KiWiIntLiteral(row.getLong(4), null, new Date(row.getTimestamp(11, calendarUTC).getTime()));
result.setId(id);
if(row.getLong(10) != 0) {
@@ -1776,7 +1760,8 @@ public class KiWiConnection implements AutoCloseable {
cacheNode(result);
return result;
- } else if("double".equals(ntype)) {
+ }
+ if("double".equals(ntype)) {
KiWiDoubleLiteral result = new KiWiDoubleLiteral(row.getDouble(5), null, new Date(row.getTimestamp(11, calendarUTC).getTime()));
result.setId(id);
if(row.getLong(10) != 0) {
@@ -1785,7 +1770,8 @@ public class KiWiConnection implements AutoCloseable {
cacheNode(result);
return result;
- } else if("boolean".equals(ntype)) {
+ }
+ if("boolean".equals(ntype)) {
KiWiBooleanLiteral result = new KiWiBooleanLiteral(row.getBoolean(8),null,new Date(row.getTimestamp(11, calendarUTC).getTime()));
result.setId(id);
@@ -1795,7 +1781,8 @@ public class KiWiConnection implements AutoCloseable {
cacheNode(result);
return result;
- } else if("date".equals(ntype)) {
+ }
+ if("date".equals(ntype)) {
KiWiDateLiteral result = new KiWiDateLiteral();
result.setCreated(new Date(row.getTimestamp(11, calendarUTC).getTime()));
@@ -1808,9 +1795,8 @@ public class KiWiConnection implements AutoCloseable {
cacheNode(result);
return result;
- } else {
- throw new IllegalArgumentException("unknown node type in database result for node id " + id + ": " + ntype);
}
+ throw new IllegalArgumentException("unknown node type in database result for node id " + id + ": " + ntype);
}
/**
@@ -1859,18 +1845,14 @@ public class KiWiConnection implements AutoCloseable {
result.setObject(batch[2]);
result.setContext((KiWiResource) batch[3]);
-// result.setSubject((KiWiResource)loadNodeById(row.getLong(2)));
-// result.setPredicate((KiWiUriResource) loadNodeById(row.getLong(3)));
-// result.setObject(loadNodeById(row.getLong(4)));
-// result.setContext((KiWiResource) loadNodeById(row.getLong(5)));
- if(row.getLong(8) != 0) {
+ if (row.getLong(8) != 0) {
result.setCreator((KiWiResource)loadNodeById(row.getLong(8)));
}
result.setDeleted(row.getBoolean(6));
result.setInferred(row.getBoolean(7));
result.setCreated(new Date(row.getTimestamp(9).getTime()));
try {
- if(row.getDate(10) != null) {
+ if (row.getDate(10) != null) {
result.setDeletedAt(new Date(row.getTimestamp(10).getTime()));
}
} catch (SQLException ex) {
@@ -1913,13 +1895,10 @@ public class KiWiConnection implements AutoCloseable {
id = row.getLong(1);
- triple = tripleCache.get(id);
-
// lookup element in cache first, so we can avoid reconstructing it if it is already there
- if(triple != null) {
- result.add(triple);
- } else {
+ triple = tripleCache.get(id);
+ if(triple == null) {
triple = new KiWiTriple();
triple.setId(id);
@@ -1928,41 +1907,40 @@ public class KiWiConnection implements AutoCloseable {
nodeIds.add(row.getLong(3));
nodeIds.add(row.getLong(4));
- if(row.getLong(5) != 0) {
+ if (row.getLong(5) != 0) {
nodeIds.add(row.getLong(5));
}
- if(row.getLong(8) != 0) {
+ if (row.getLong(8) != 0) {
nodeIds.add(row.getLong(8));
}
// remember which node ids where relevant for the triple
- tripleIds.put(id,new Long[] { row.getLong(2),row.getLong(3),row.getLong(4),row.getLong(5),row.getLong(8) });
+ tripleIds.put(id, new Long[]{row.getLong(2), row.getLong(3), row.getLong(4), row.getLong(5), row.getLong(8)});
triple.setDeleted(row.getBoolean(6));
triple.setInferred(row.getBoolean(7));
triple.setCreated(new Date(row.getTimestamp(9).getTime()));
try {
- if(row.getDate(10) != null) {
+ if (row.getDate(10) != null) {
triple.setDeletedAt(new Date(row.getTimestamp(10).getTime()));
}
} catch (SQLException ex) {
// work around a MySQL problem with null dates
// (see http://stackoverflow.com/questions/782823/handling-datetime-values-0000-00-00-000000-in-jdbc)
}
-
- result.add(triple);
}
+ result.add(triple);
}
KiWiNode[] nodes = loadNodesByIds(Longs.toArray(nodeIds));
- Map<Long,KiWiNode> nodeMap = new HashMap<>();
- for(int i=0; i<nodes.length; i++) {
+ Map<Long,KiWiNode> nodeMap = new HashMap<>(nodes.length << 1);
+ for (int i=0; i<nodes.length; i++) {
nodeMap.put(nodes[i].getId(), nodes[i]);
}
- for(KiWiTriple t : result) {
- if(tripleIds.containsKey(t.getId())) {
+ for (KiWiTriple t : result) {
+ if (tripleIds.containsKey(t.getId())) {
// need to set subject, predicate, object, context and creator
Long[] ids = tripleIds.get(t.getId());
t.setSubject((KiWiResource) nodeMap.get(ids[0]));
@@ -1976,7 +1954,6 @@ public class KiWiConnection implements AutoCloseable {
if(ids[4] != 0) {
t.setCreator((KiWiResource) nodeMap.get(ids[4]));
}
-
}
cacheTriple(t);
@@ -1990,7 +1967,7 @@ public class KiWiConnection implements AutoCloseable {
protected static Locale getLocale(String language) {
Locale locale = localeMap.get(language);
- if(locale == null && language != null && !language.isEmpty()) {
+ if (locale == null && language != null && !language.isEmpty()) {
try {
Locale.Builder builder = new Locale.Builder();
builder.setLanguageTag(language);
@@ -2015,12 +1992,12 @@ public class KiWiConnection implements AutoCloseable {
requireJDBCConnection();
PreparedStatement statement = statementCache.get(key);
- if(statement == null || statement.isClosed()) {
+ if (statement == null || statement.isClosed()) {
statement = connection.prepareStatement(dialect.getStatement(key), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
statementCache.put(key,statement);
}
statement.clearParameters();
- if(persistence.getDialect().isCursorSupported()) {
+ if (persistence.getDialect().isCursorSupported()) {
statement.setFetchSize(persistence.getConfiguration().getCursorSize());
}
return statement;
@@ -2040,7 +2017,7 @@ public class KiWiConnection implements AutoCloseable {
requireJDBCConnection();
PreparedStatement statement = statementCache.get(key+numberOfArguments);
- if(statement == null || statement.isClosed()) {
+ if (statement == null || statement.isClosed()) {
StringBuilder s = new StringBuilder();
for(int i=0; i<numberOfArguments; i++) {
if(i != 0) {
@@ -2073,26 +2050,26 @@ public class KiWiConnection implements AutoCloseable {
private void cacheNode(KiWiNode node) {
- if(node.getId() >= 0) {
+ if (node.getId() >= 0) {
nodeCache.put(node.getId(), node);
}
- if(node instanceof KiWiUriResource) {
+ if (node instanceof KiWiUriResource) {
uriCache.put(node.stringValue(), (KiWiUriResource) node);
- } else if(node instanceof KiWiAnonResource) {
+ } else if (node instanceof KiWiAnonResource) {
bnodeCache.put(node.stringValue(), (KiWiAnonResource) node);
- } else if(node instanceof KiWiLiteral) {
+ } else if (node instanceof KiWiLiteral) {
literalCache.put(LiteralCommons.createCacheKey((Literal) node), (KiWiLiteral) node);
}
}
private void cacheTriple(KiWiTriple triple) {
- if(triple.getId() >= 0) {
+ if (triple.getId() >= 0) {
tripleCache.put(triple.getId(), triple);
}
}
private void removeCachedTriple(KiWiTriple triple) {
- if(triple.getId() >= 0) {
+ if (triple.getId() >= 0) {
tripleCache.remove(triple.getId());
}
}
@@ -2132,9 +2109,8 @@ public class KiWiConnection implements AutoCloseable {
try (ResultSet result = statement.executeQuery()) {
if (result.next()) {
return result.getString(1);
- } else {
- return null;
}
+ return null;
}
}
@@ -2181,9 +2157,8 @@ public class KiWiConnection implements AutoCloseable {
try (ResultSet result = statement.executeQuery()) {
if (result.next()) {
return Integer.parseInt(result.getString(1));
- } else {
- throw new SQLException("no version information available");
}
+ throw new SQLException("no version information available");
}
}
@@ -2337,7 +2312,7 @@ public class KiWiConnection implements AutoCloseable {
* @see #setAutoCommit
*/
public void rollback() throws SQLException {
- if(tripleBatch != null && tripleBatch.size() > 0) {
+ if (tripleBatch != null && tripleBatch.size() > 0) {
synchronized (tripleBatch) {
for(KiWiTriple triple : tripleBatch) {
triple.setId(-1L);
@@ -2371,7 +2346,7 @@ public class KiWiConnection implements AutoCloseable {
* @exception java.sql.SQLException if a database access error occurs
*/
public boolean isClosed() throws SQLException {
- if(connection != null) {
+ if (connection != null) {
return connection.isClosed();
} else {
return false;
@@ -2397,10 +2372,10 @@ public class KiWiConnection implements AutoCloseable {
public void close() throws SQLException {
closed = true;
- if(connection != null) {
+ if (connection != null) {
// close all prepared statements
try {
- for(Map.Entry<String,PreparedStatement> entry : statementCache.entrySet()) {
+ for (Map.Entry<String,PreparedStatement> entry : statementCache.entrySet()) {
try {
entry.getValue().close();
} catch (SQLException ignore) {}
@@ -2413,11 +2388,14 @@ public class KiWiConnection implements AutoCloseable {
}
}
-
- int retry = 0;
+ public void maybeFlushBatch() throws SQLException {
+ if (tripleBatch.size() >= batchSize) {
+ flushBatch();
+ }
+ }
public synchronized void flushBatch() throws SQLException {
- if(batchCommit && tripleBatch != null) {
+ if (batchCommit && tripleBatch != null) {
requireJDBCConnection();
commitLock.lock();
@@ -2549,47 +2527,46 @@ public class KiWiConnection implements AutoCloseable {
}
public T execute(Connection connection, RetryCommand<T> command) throws SQLException {
- if(!closed) {
- Savepoint savepoint = null;
- if(useSavepoint) {
- savepoint = connection.setSavepoint();
+ if (closed) {
+ return null;
+ }
+
+ Savepoint savepoint = null;
+ if (useSavepoint) {
+ savepoint = connection.setSavepoint();
+ }
+ try {
+ T result = command.run();
+
+ if (useSavepoint && savepoint != null) {
+ connection.releaseSavepoint(savepoint);
}
- try {
- T result = command.run();
+ return result;
+ } catch (SQLException ex) {
+ if (retries < maxRetries && (sqlStates.size() == 0 || sqlStates.contains(ex.getSQLState()))) {
if(useSavepoint && savepoint != null) {
- connection.releaseSavepoint(savepoint);
+ connection.rollback(savepoint);
}
+ Random rnd = new Random();
+ long sleep = retryInterval - 250 + rnd.nextInt(500);
+ log.warn("{}: temporary conflict, retrying in {} ms ... (thread={}, retry={})", name, sleep, Thread.currentThread().getName(), retries);
+ try {
+ Thread.sleep(sleep);
+ } catch (InterruptedException ignore) {}
+ retries++;
+ T result = execute(connection, command);
+ retries--;
return result;
- } catch (SQLException ex) {
- if(retries < maxRetries && (sqlStates.size() == 0 || sqlStates.contains(ex.getSQLState()))) {
- if(useSavepoint && savepoint != null) {
- connection.rollback(savepoint);
- }
- Random rnd = new Random();
- long sleep = retryInterval - 250 + rnd.nextInt(500);
- log.warn("{}: temporary conflict, retrying in {} ms ... (thread={}, retry={})", name, sleep, Thread.currentThread().getName(), retries);
- try {
- Thread.sleep(sleep);
- } catch (InterruptedException ignore) {}
- retries++;
- T result = execute(connection, command);
- retries--;
+ }
- return result;
- } else {
- log.error("{}: temporary conflict could not be solved! (error: {})", name, ex.getMessage());
+ log.error("{}: temporary conflict could not be solved! (error: {})", name, ex.getMessage());
- log.debug("main exception:",ex);
- log.debug("next exception:",ex.getNextException());
- throw ex;
- }
- }
- } else {
- return null;
+ log.debug("main exception:",ex);
+ log.debug("next exception:",ex.getNextException());
+ throw ex;
}
-
}
}
http://git-wip-us.apache.org/repos/asf/marmotta/blob/1b1e6f53/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 e195bba..585caa7 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
@@ -161,7 +161,7 @@ public class KiWiPersistence {
*/
// interceptors
- if(configuration.isQueryLoggingEnabled()) {
+ if (configuration.isQueryLoggingEnabled()) {
poolConfig.setJdbcInterceptors(
"org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;" +
"org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer;" +
@@ -174,7 +174,7 @@ public class KiWiPersistence {
);
}
- if(log.isDebugEnabled()) {
+ if (log.isDebugEnabled()) {
poolConfig.setSuspectTimeout(30);
poolConfig.setLogAbandoned(true);
}
@@ -197,7 +197,7 @@ public class KiWiPersistence {
}
public void logPoolInfo() throws SQLException {
- if(connectionPool != null) {
+ if (connectionPool != null) {
log.debug("num_busy_connections: {}", connectionPool.getNumActive());
log.debug("num_idle_connections: {}", connectionPool.getNumIdle());
} else {
@@ -223,7 +223,7 @@ public class KiWiPersistence {
try {
Set<String> tables = connection.getDatabaseTables();
- if(log.isDebugEnabled()) {
+ if (log.isDebugEnabled()) {
log.debug("database tables:");
for(String table : tables) {
log.debug("- found table: {}",table);
@@ -232,10 +232,10 @@ public class KiWiPersistence {
// check existence of all tables; if the necessary tables are not there, they need to be created
boolean createNeeded = false;
- for(String tableName : checkTables) {
+ for (String tableName : checkTables) {
createNeeded = createNeeded || !tables.contains(tableName);
}
- if(createNeeded) {
+ if (createNeeded) {
log.info("creating new KiWi database ...");
ScriptRunner runner = new ScriptRunner(connection.getJDBCConnection(), false, false);
@@ -300,9 +300,9 @@ public class KiWiPersistence {
try {
Set<String> tables = connection.getDatabaseTables();
- if(log.isDebugEnabled()) {
+ if (log.isDebugEnabled()) {
log.debug("BEFORE DROP: database tables");
- for(String table : tables) {
+ for (String table : tables) {
log.debug("- found table: {}",table);
}
}
@@ -311,10 +311,10 @@ public class KiWiPersistence {
runner.runScript(new StringReader(configuration.getDialect().getDropScript(scriptName)));
- if(log.isDebugEnabled()) {
+ if (log.isDebugEnabled()) {
tables = connection.getDatabaseTables();
log.debug("AFTER DROP: database tables");
- for(String table : tables) {
+ for (String table : tables) {
log.debug("- found table: {}",table);
}
}
@@ -341,11 +341,11 @@ public class KiWiPersistence {
* @throws SQLException in case a new connection could not be established
*/
public KiWiConnection getConnection() throws SQLException {
- if(!initialized) {
+ if (!initialized) {
throw new SQLException("persistence backend not initialized; call initialise before acquiring a connection");
}
- if(connectionPool != null) {
+ if (connectionPool != null) {
KiWiConnection con = new KiWiConnection(this,configuration.getDialect(),cacheManager);
if(getDialect().isBatchSupported()) {
con.setBatchCommit(configuration.isTripleBatchCommit());
@@ -374,24 +374,24 @@ public class KiWiPersistence {
*/
public Connection getJDBCConnection(boolean maintenance) throws SQLException {
synchronized (this) {
- if(this.maintenance) {
+ if (this.maintenance) {
try {
this.wait();
} catch (InterruptedException ignore) { }
}
- if(maintenance) {
+ if (maintenance) {
this.maintenance = true;
}
}
- if(initialized && connectionPool != null) {
- Connection conn = connectionPool.getConnection();
- conn.setAutoCommit(false);
-
- return conn;
- } else {
+ if (!initialized || connectionPool == null) {
throw new SQLException("connection pool is closed, database connections not available");
}
+
+ Connection conn = connectionPool.getConnection();
+ conn.setAutoCommit(false);
+
+ return conn;
}