You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ja...@apache.org on 2013/10/14 12:25:28 UTC
[2/5] git commit: MARMOTTA-310 continued implementation
MARMOTTA-310 continued implementation
Project: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/commit/780948f8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/tree/780948f8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/diff/780948f8
Branch: refs/heads/develop
Commit: 780948f8cdcf04d72504b58d9888cdf06294c352
Parents: f974039
Author: Jakob Frank <ja...@apache.org>
Authored: Wed Oct 2 17:18:59 2013 +0200
Committer: Jakob Frank <ja...@apache.org>
Committed: Wed Oct 2 17:18:59 2013 +0200
----------------------------------------------------------------------
.../apache/marmotta/kiwi/loader/KiWiLoader.java | 93 +++++++++++++++-----
1 file changed, 71 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/780948f8/libraries/kiwi/kiwi-loader/src/main/java/org/apache/marmotta/kiwi/loader/KiWiLoader.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-loader/src/main/java/org/apache/marmotta/kiwi/loader/KiWiLoader.java b/libraries/kiwi/kiwi-loader/src/main/java/org/apache/marmotta/kiwi/loader/KiWiLoader.java
index 9555b6c..a93b21e 100644
--- a/libraries/kiwi/kiwi-loader/src/main/java/org/apache/marmotta/kiwi/loader/KiWiLoader.java
+++ b/libraries/kiwi/kiwi-loader/src/main/java/org/apache/marmotta/kiwi/loader/KiWiLoader.java
@@ -34,17 +34,15 @@ import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.marmotta.kiwi.config.KiWiConfiguration;
import org.apache.marmotta.kiwi.persistence.KiWiDialect;
-import org.apache.marmotta.kiwi.persistence.KiWiPersistence;
import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.reasoner.sail.KiWiReasoningSail;
import org.apache.marmotta.kiwi.sail.KiWiStore;
import org.apache.marmotta.kiwi.transactions.api.TransactionalSail;
import org.apache.marmotta.kiwi.transactions.sail.KiWiTransactionalSail;
-import org.apache.marmotta.kiwi.versioning.sail.KiWiVersioningSail;
import org.openrdf.repository.RepositoryException;
import org.openrdf.repository.sail.SailRepository;
+import org.openrdf.repository.sail.SailRepositoryConnection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -80,28 +78,54 @@ public class KiWiLoader {
CommandLineParser parser = new PosixParser();
try {
CommandLine cmd = parser.parse(options, args);
-
- final String dbCon, dbUser, dbPasswd;
- dbCon = cmd.getOptionValue('d');
- dbUser = cmd.getOptionValue('U');
-
- final KiWiDialect dialect = getDialect(cmd, dbCon);
- dbPasswd = getPassword(cmd, dbCon, dbUser);
-
- KiWiConfiguration kiwi = new KiWiConfiguration("kiwiLoader", dbCon, dbUser, dbPasswd, dialect);
-
String baseUri = endWith("http://localhost/", "/"),
context = baseUri+"context/default",
format = null;
boolean gzip = false;
+ String dbCon = null, dbUser = null, dbPasswd = null;
+ KiWiDialect dialect = null;
+
if (cmd.hasOption('c')) {
Configuration conf = new PropertiesConfiguration(cmd.getOptionValue('c'));
baseUri = endWith(conf.getString("kiwi.context", baseUri), "/");
context = conf.getString("kiwi.context", baseUri) + "context/default";
+
+ dbCon = conf.getString("database.url");
+ dbUser = conf.getString("database.user");
+ dbPasswd = conf.getString("database.password");
+
+ String dbType = conf.getString("database.type");
+ if ("h2".equalsIgnoreCase(dbType)) {
+ dialect = new H2Dialect();
+ } else if ("mysql".equalsIgnoreCase(dbType)) {
+ dialect = new MySQLDialect();
+ } else if ("postgres".equalsIgnoreCase(dbType)) {
+ dialect = new PostgreSQLDialect();
+ }
+ }
+
+ if (cmd.hasOption('d')) {
+ dbCon = cmd.getOptionValue('d');
+ }
+ if (cmd.hasOption('U')) {
+ dbUser = cmd.getOptionValue('U');
}
+ dialect = getDialect(cmd, dbCon, dialect);
+ dbPasswd = getPassword(cmd, dbCon, dbUser, dbPasswd);
+
+ if (dbCon == null || dbUser == null || dbPasswd == null || dialect == null) {
+ log.error("Cannot import without database connection!\n"
+ +"Please provide the database configuration either\n"
+ +"- in a kiwi-config file (-c), and/or\n"
+ +"- as commandline parameters (-d, -U, -P, -D");
+ System.exit(3);
+ }
+
+ KiWiConfiguration kiwi = new KiWiConfiguration("kiwiLoader", dbCon, dbUser, dbPasswd, dialect);
+
if (cmd.hasOption('b')) {
baseUri = endWith(cmd.getOptionValue('b', baseUri), "/");
context = cmd.getOptionValue('b', baseUri) + "context/default";
@@ -124,24 +148,35 @@ public class KiWiLoader {
throw new ParseException("No files to import");
}
+ log.info("Initializing KiWiLoader for {}; user: {}, password: {}", dbCon, dbUser, String.format("%"+dbPasswd.length()+"s", "*"));
KiWiLoader loader = new KiWiLoader(kiwi, baseUri, context);
loader.setVersioningEnabled(cmd.hasOption("versioning"));
loader.setReasoningEnabled(cmd.hasOption("reasoning"));
loader.initialize();
+ log.info("Starting import");
for (String inFile: inputFiles) {
+ log.info("Importing {}", inFile);
+ long start = System.currentTimeMillis();
loader.load(inFile, format, gzip);
+ long dur = System.currentTimeMillis() - start;
+ log.info("Import completed ({}): {}", inFile, dur);
}
+ log.info("Import complete, shutting down.");
loader.shutdown();
+ log.info("Exiting");
} catch (ParseException e) {
log.error(e.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp(KiWiLoader.class.getSimpleName(), options, true);
+ System.exit(1);
} catch (ConfigurationException e) {
log.error("Could not read system-config.properties: {}", e.getMessage());
+ System.exit(1);
} catch (RepositoryException e) {
log.error("Sesame-Exception: {}", e.getMessage(), e);
+ System.exit(2);
}
}
@@ -162,24 +197,37 @@ public class KiWiLoader {
}
public void load(String file, String format, boolean gzip) {
- // TODO Auto-generated method stub
-
+ try {
+ final SailRepositoryConnection con = repository.getConnection();
+ try {
+ con.begin();
+ // TODO Auto-generated method stub
+ con.commit();
+ } finally {
+ con.close();
+ }
+ } catch (RepositoryException re) {
+ log.error("RepositoryException: {}", re.getMessage());
+ }
}
public synchronized void initialize() throws RepositoryException {
if (repository != null && repository.isInitialized()) {
throw new IllegalStateException("repository already initialized");
}
- KiWiStore store = new KiWiStore((kiwi));
+ log.debug("initializing kiwi-store: {}", kiwi);
+ KiWiStore store = new KiWiStore(kiwi);
TransactionalSail tSail = new KiWiTransactionalSail(store);
if (isVersioningEnabled) {
+ log.debug("enabling versioning...");
// TODO: Add Versioning
// tSail = new KiWiVersioningSail(tSail);
log.warn("versioning not yet supported/implemented");
}
if (isReasoningEnabled) {
+ log.debug("enabling reasoner...");
// TODO: Add Reasoning
// tSail = new KiWiReasoningSail(tSail, null);
log.warn("reasoning not yet supported/implemented");
@@ -189,7 +237,7 @@ public class KiWiLoader {
repository.initialize();
}
- private static String getPassword(CommandLine cmd, String jdbc, String user) throws ParseException {
+ private static String getPassword(CommandLine cmd, String jdbc, String user, String password) throws ParseException {
if (cmd.hasOption('P')) {
if (cmd.getOptionValue('P') != null) {
return cmd.getOptionValue('P');
@@ -203,15 +251,17 @@ public class KiWiLoader {
return new String(passwordArray);
}
} else {
- return "";
+ return password;
}
}
- private static KiWiDialect getDialect(CommandLine cmd, final String dbCon)
+ private static KiWiDialect getDialect(CommandLine cmd, String dbCon, KiWiDialect dialect)
throws ParseException {
// get the dialect
final String dbDialect = cmd.getOptionValue('D');
- if (dbDialect == null) {
+ if (!cmd.hasOption('D')) {
+ return dialect;
+ } else if (dbDialect == null) {
log.info("No dialect provded, trying to guess based on dbUrl: {}", dbCon);
// try guessing
if (dbCon.startsWith("jdbc:h2:")) {
@@ -251,6 +301,7 @@ public class KiWiLoader {
final Option context = new Option("C", "context", true, "context to import into");
context.setArgName("context");
context.setArgs(1);
+ context.setOptionalArg(false);
options.addOption(context);
options.addOption("z", false, "Input file is gzip compressed");
@@ -266,13 +317,11 @@ public class KiWiLoader {
options.addOption(input);
final Option dbUrl = new Option("d", "database", true, "jdbc connection string");
- dbUrl.setRequired(true);
dbUrl.setArgName("jdbc-url");
dbUrl.setArgs(1);
options.addOption(dbUrl);
final Option dbUser = new Option("U", "user", true, "database user");
- dbUser.setRequired(true);
dbUser.setArgName("dbUser");
options.addOption(dbUser);