/* * Copyright Aduna (http://www.aduna-software.com/) (c) 2007. * * Licensed under the Aduna BSD-style license. */ package org.openrdf.sail.nativerdf.config; import static org.openrdf.sail.nativerdf.config.NativeStoreSchema.FORCE_SYNC; import static org.openrdf.sail.nativerdf.config.NativeStoreSchema.TRIPLE_INDEXES; import org.openrdf.model.Graph; import org.openrdf.model.Literal; import org.openrdf.model.Resource; import org.openrdf.model.util.GraphUtil; import org.openrdf.model.util.GraphUtilException; import org.openrdf.sail.config.SailConfigException; import org.openrdf.sail.config.SailImplConfigBase; /** * @author Arjohn Kampman */ public class NativeStoreConfig extends SailImplConfigBase { /*-----------* * Variables * *-----------*/ private String tripleIndexes; private boolean forceSync = false; /*--------------* * Constructors * *--------------*/ public NativeStoreConfig() { super(NativeStoreFactory.SAIL_TYPE); } public NativeStoreConfig(String tripleIndexes) { this(); setTripleIndexes(tripleIndexes); } public NativeStoreConfig(String tripleIndexes, boolean forceSync) { this(tripleIndexes); setForceSync(forceSync); } /*---------* * Methods * *---------*/ public String getTripleIndexes() { return tripleIndexes; } public void setTripleIndexes(String tripleIndexes) { this.tripleIndexes = tripleIndexes; } public boolean getForceSync() { return forceSync; } public void setForceSync(boolean forceSync) { this.forceSync = forceSync; } @Override public Resource export(Graph graph) { Resource implNode = super.export(graph); if (tripleIndexes != null) { graph.add(implNode, TRIPLE_INDEXES, graph.getValueFactory().createLiteral(tripleIndexes)); } if (forceSync) { graph.add(implNode, FORCE_SYNC, graph.getValueFactory().createLiteral(forceSync)); } return implNode; } @Override public void parse(Graph graph, Resource implNode) throws SailConfigException { super.parse(graph, implNode); try { Literal tripleIndexLit = GraphUtil.getOptionalObjectLiteral(graph, implNode, TRIPLE_INDEXES); if (tripleIndexLit != null) { setTripleIndexes((tripleIndexLit).getLabel()); } Literal forceSyncLit = GraphUtil.getOptionalObjectLiteral(graph, implNode, FORCE_SYNC); if (forceSyncLit != null) { try { setForceSync(forceSyncLit.booleanValue()); } catch (IllegalArgumentException e) { throw new SailConfigException("Boolean value required for " + FORCE_SYNC + " property, found " + forceSyncLit); } } } catch (GraphUtilException e) { throw new SailConfigException(e.getMessage(), e); } } }