From c528271e67910fcfbe1edb588851ebdafadc6fc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Sch=C3=A4rtl?= <andreas@schaertl.me> Date: Tue, 12 May 2020 15:02:28 +0200 Subject: [PATCH] uloimport: setup of repository connection --- src/uloimport/pom.xml | 23 ++++++++ .../uloimport/importer/GraphDbImporter.java | 54 +++++++++++++++++++ .../{ => importer}/ImportException.java | 12 ++++- .../uloimport/{ => importer}/Importer.java | 4 +- 4 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 src/uloimport/src/main/java/info/kwarc/uloimport/importer/GraphDbImporter.java rename src/uloimport/src/main/java/info/kwarc/uloimport/{ => importer}/ImportException.java (67%) rename src/uloimport/src/main/java/info/kwarc/uloimport/{ => importer}/Importer.java (76%) diff --git a/src/uloimport/pom.xml b/src/uloimport/pom.xml index e8c00a9..13ea673 100644 --- a/src/uloimport/pom.xml +++ b/src/uloimport/pom.xml @@ -11,4 +11,27 @@ <maven.compiler.source>1.11</maven.compiler.source> <maven.compiler.target>1.11</maven.compiler.target> </properties> + + <dependencies> + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-core</artifactId> + <version>1.2.3</version> + </dependency> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>29.0-jre</version> + </dependency> + <dependency> + <groupId>com.ontotext.graphdb</groupId> + <artifactId>graphdb-free-runtime</artifactId> + <version>9.2.0</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>1.7.30</version> + </dependency> + </dependencies> </project> \ No newline at end of file diff --git a/src/uloimport/src/main/java/info/kwarc/uloimport/importer/GraphDbImporter.java b/src/uloimport/src/main/java/info/kwarc/uloimport/importer/GraphDbImporter.java new file mode 100644 index 0000000..f97bd19 --- /dev/null +++ b/src/uloimport/src/main/java/info/kwarc/uloimport/importer/GraphDbImporter.java @@ -0,0 +1,54 @@ +package info.kwarc.uloimport.importer; + +import org.eclipse.rdf4j.repository.Repository; +import org.eclipse.rdf4j.repository.RepositoryConnection; +import org.eclipse.rdf4j.repository.manager.RemoteRepositoryManager; +import org.eclipse.rdf4j.repository.manager.RepositoryManager; + +import java.io.InputStream; + +import static com.google.common.base.Preconditions.checkNotNull; + +/** + * {@link Importer} that uploads imported data to a GraphDB instance. + */ +public class GraphDbImporter implements Importer { + private final String serverUrl; + private final String repository; + + /** + * Construct a new GraphDbImporter that imports its data to a remote + * GraphDB instance. + * + * @param serverUrl The URL under which GraphDB is running. + * @param repository The name of the repository to dump to. + */ + public GraphDbImporter(String serverUrl, String repository) { + this.serverUrl = checkNotNull(serverUrl); + this.repository = checkNotNull(repository); + } + + @Override + public void importRdfFile(InputStream is) throws ImportException { + final RepositoryManager manager; + final Repository repository; + final RepositoryConnection connection; + + try { + manager = new RemoteRepositoryManager(this.serverUrl); + manager.init(); + + repository = manager.getRepository(this.repository); + if (repository == null) { + throw new ImportException("could not connect to repository=%s", this.repository); + } + + connection = repository.getConnection(); + } catch (Exception e) { + throw new ImportException("could not initialize database connection", e); + } + + // TODO: Handle errors during initialization. This is quite annoying + // to do with this API. + } +} diff --git a/src/uloimport/src/main/java/info/kwarc/uloimport/ImportException.java b/src/uloimport/src/main/java/info/kwarc/uloimport/importer/ImportException.java similarity index 67% rename from src/uloimport/src/main/java/info/kwarc/uloimport/ImportException.java rename to src/uloimport/src/main/java/info/kwarc/uloimport/importer/ImportException.java index 94ae358..dfd16b7 100644 --- a/src/uloimport/src/main/java/info/kwarc/uloimport/ImportException.java +++ b/src/uloimport/src/main/java/info/kwarc/uloimport/importer/ImportException.java @@ -1,4 +1,4 @@ -package info.kwarc.uloimport; +package info.kwarc.uloimport.importer; /** * An Exception caused by an import of ULO/RDF data. @@ -13,6 +13,16 @@ public class ImportException extends RuntimeException { super(message); } + /** + * Construct a new {@link ImportException} with a formatted message. + * + * @param format Format string of the message. + * @param args Arguments for the format string. + */ + public ImportException(String format, Object... args) { + super(String.format(format, args)); + } + /** * Construct a new {@link ImportException} with a message and a cause * that caused this exception. diff --git a/src/uloimport/src/main/java/info/kwarc/uloimport/Importer.java b/src/uloimport/src/main/java/info/kwarc/uloimport/importer/Importer.java similarity index 76% rename from src/uloimport/src/main/java/info/kwarc/uloimport/Importer.java rename to src/uloimport/src/main/java/info/kwarc/uloimport/importer/Importer.java index 542a11c..2727ac8 100644 --- a/src/uloimport/src/main/java/info/kwarc/uloimport/Importer.java +++ b/src/uloimport/src/main/java/info/kwarc/uloimport/importer/Importer.java @@ -1,4 +1,4 @@ -package info.kwarc.uloimport; +package info.kwarc.uloimport.importer; import java.io.InputStream; @@ -10,5 +10,5 @@ public interface Importer { * @param is The stream from which to read a single ULO/RDF file. * @throws ImportException When the import failed. */ - void importUlo(InputStream is) throws ImportException; + void importRdfFile(InputStream is) throws ImportException; } -- GitLab