/*
* Copyright Aduna (http://www.aduna-software.com/) (c) 2008.
*
* Licensed under the Aduna BSD-style license.
*/
package org.openrdf.sail.rdbms.config;
import static org.openrdf.model.util.GraphUtil.getOptionalObjectLiteral;
import static org.openrdf.sail.rdbms.config.RdbmsStoreSchema.INDEXED;
import static org.openrdf.sail.rdbms.config.RdbmsStoreSchema.JDBC_DRIVER;
import static org.openrdf.sail.rdbms.config.RdbmsStoreSchema.LAYOUT;
import static org.openrdf.sail.rdbms.config.RdbmsStoreSchema.PASSWORD;
import static org.openrdf.sail.rdbms.config.RdbmsStoreSchema.URL;
import static org.openrdf.sail.rdbms.config.RdbmsStoreSchema.USER;
import org.openrdf.model.Graph;
import org.openrdf.model.Literal;
import org.openrdf.model.Resource;
import org.openrdf.model.URI;
import org.openrdf.model.util.GraphUtilException;
import org.openrdf.sail.config.SailConfigException;
import org.openrdf.sail.config.SailImplConfigBase;
/**
* Holds the JDBC Driver, URL, user, and password.
*
* @author James Leigh
*
*/
public class RdbmsStoreConfig extends SailImplConfigBase {
private String jdbcDriver;
private String url;
private String user;
private String password;
private String layout;
private String indexed;
public RdbmsStoreConfig() {
super(RdbmsStoreFactory.SAIL_TYPE);
}
public String getJdbcDriver() {
return jdbcDriver;
}
public void setJdbcDriver(String jdbcDriver) {
this.jdbcDriver = jdbcDriver;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getLayout() {
return layout;
}
public void setLayout(String layout) {
this.layout = layout;
}
public String getIndexed() {
return indexed;
}
public void setIndexed(String indexed) {
this.indexed = indexed;
}
@Override
public Resource export(Graph graph) {
Resource implNode = super.export(graph);
set(graph, implNode, JDBC_DRIVER, jdbcDriver);
set(graph, implNode, URL, url);
set(graph, implNode, USER, user);
set(graph, implNode, PASSWORD, password);
set(graph, implNode, LAYOUT, layout);
set(graph, implNode, INDEXED, indexed);
return implNode;
}
@Override
public void parse(Graph graph, Resource implNode)
throws SailConfigException
{
super.parse(graph, implNode);
try {
jdbcDriver = get(graph, implNode, JDBC_DRIVER);
url = get(graph, implNode, URL);
user = get(graph, implNode, USER);
password = get(graph, implNode, PASSWORD);
layout = get(graph, implNode, LAYOUT);
indexed = get(graph, implNode, INDEXED);
}
catch (GraphUtilException e) {
throw new SailConfigException(e.getMessage(), e);
}
}
private String get(Graph graph, Resource implNode, URI predicate)
throws GraphUtilException
{
Literal lit = getOptionalObjectLiteral(graph, implNode, predicate);
if (lit == null)
return null;
return lit.getLabel();
}
private void set(Graph graph, Resource implNode, URI predicate, String value) {
if (value != null) {
Literal lit = graph.getValueFactory().createLiteral(value);
graph.add(implNode, predicate, lit);
}
}
}