-
Notifications
You must be signed in to change notification settings - Fork 4
/
Rdf4jCreateRepositoryModule.java
97 lines (78 loc) · 3.52 KB
/
Rdf4jCreateRepositoryModule.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package cz.cvut.spipes.modules;
import cz.cvut.spipes.constants.KBSS_MODULE;
import cz.cvut.spipes.engine.ExecutionContext;
import org.apache.jena.rdf.model.Property;
import org.apache.jena.rdf.model.ResourceFactory;
import org.eclipse.rdf4j.repository.config.RepositoryConfig;
import org.eclipse.rdf4j.repository.manager.RemoteRepositoryManager;
import org.eclipse.rdf4j.repository.manager.RepositoryManager;
import org.eclipse.rdf4j.repository.sail.config.SailRepositoryConfig;
import org.eclipse.rdf4j.sail.nativerdf.config.NativeStoreConfig;
import java.util.Objects;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Rdf4jCreateRepositoryModule extends AbstractModule {
private static final Logger LOG = LoggerFactory.getLogger(Rdf4jUpdateModule.class.getName());
private static final String TYPE_URI = KBSS_MODULE.getURI() + "rdf4j-create-repository";
private static final String PROPERTY_PREFIX_URI = KBSS_MODULE.getURI() + "rdf4j";
/**
* URL of the Rdf4j server
*/
static final Property P_RDF4J_SERVER_URL = getParameter("p-rdf4j-server-url");
private String rdf4jServerURL;
/**
* Rdf4j repository ID
*/
static final Property P_RDF4J_REPOSITORY_NAME = getParameter("p-rdf4j-repository-name");
private String rdf4jRepositoryName;
/**
* Don't try to create new repository if it already exists
*/
static final Property P_RDF4J_IGNORE_IF_EXISTS = getParameter("p-rdf4j-ignore-if-exists");
private boolean rdf4jIgnoreIfExists;
public String getRdf4jServerURL() {
return rdf4jServerURL;
}
public void setRdf4jServerURL(String rdf4jServerURL) {
this.rdf4jServerURL = rdf4jServerURL;
}
public String getRdf4jRepositoryName() {
return rdf4jRepositoryName;
}
public void setRdf4jRepositoryName(String rdf4jRepositoryName) {
this.rdf4jRepositoryName = rdf4jRepositoryName;
}
private static Property getParameter(final String name) {
return ResourceFactory.createProperty(PROPERTY_PREFIX_URI + "/" + name);
}
@Override
ExecutionContext executeSelf() {
NativeStoreConfig nativeStoreConfig = new NativeStoreConfig();
SailRepositoryConfig sailRepositoryConfig = new SailRepositoryConfig(nativeStoreConfig);
RepositoryManager repositoryManager = new RemoteRepositoryManager(rdf4jServerURL);
repositoryManager.init();
LOG.info("Server url:{}, Repsitory name:{}, Ignore if repository exist:{}.",
rdf4jServerURL,
rdf4jRepositoryName,
rdf4jIgnoreIfExists);
if(rdf4jIgnoreIfExists && repositoryManager.hasRepositoryConfig(rdf4jRepositoryName)){
LOG.info("Repository \"{}\" already exists",
rdf4jRepositoryName);
return executionContext;
}
RepositoryConfig repositoryConfig = new RepositoryConfig(rdf4jRepositoryName,sailRepositoryConfig);
repositoryManager.addRepositoryConfig(repositoryConfig);
repositoryManager.getRepository(rdf4jRepositoryName).init();
return executionContext;
}
@Override
public String getTypeURI() {
return TYPE_URI;
}
@Override
public void loadConfiguration() {
rdf4jServerURL = getEffectiveValue(P_RDF4J_SERVER_URL).asLiteral().getString();
rdf4jRepositoryName = getEffectiveValue(P_RDF4J_REPOSITORY_NAME).asLiteral().getString();
rdf4jIgnoreIfExists = (Objects.equals(getEffectiveValue(P_RDF4J_IGNORE_IF_EXISTS).asLiteral().getString(), "true"));
}
}