Package org.openrdf.sail.nativerdf.config

Source Code of org.openrdf.sail.nativerdf.config.NativeStoreConfig

/*
* 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.Literal;
import org.openrdf.model.Model;
import org.openrdf.model.Resource;
import org.openrdf.model.impl.ValueFactoryImpl;
import org.openrdf.model.util.ModelException;
import org.openrdf.sail.config.SailImplConfigBase;
import org.openrdf.store.StoreConfigException;

/**
* @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(Model model) {
    Resource implNode = super.export(model);

    ValueFactoryImpl vf = ValueFactoryImpl.getInstance();

    if (tripleIndexes != null) {
      model.add(implNode, TRIPLE_INDEXES, vf.createLiteral(tripleIndexes));
    }
    if (forceSync) {
      model.add(implNode, FORCE_SYNC, vf.createLiteral(forceSync));
    }

    return implNode;
  }

  @Override
  public void parse(Model model, Resource implNode)
    throws StoreConfigException
  {
    super.parse(model, implNode);

    try {
      Literal tripleIndexLit = model.filter(implNode, TRIPLE_INDEXES, null).objectLiteral();
      if (tripleIndexLit != null) {
        setTripleIndexes((tripleIndexLit).getLabel());
      }

      Literal forceSyncLit = model.filter(implNode, FORCE_SYNC, null).objectLiteral();
      if (forceSyncLit != null) {
        try {
          setForceSync(forceSyncLit.booleanValue());
        }
        catch (IllegalArgumentException e) {
          throw new StoreConfigException("Boolean value required for " + FORCE_SYNC
              + " property, found " + forceSyncLit);
        }
      }
    }
    catch (ModelException e) {
      throw new StoreConfigException(e.getMessage(), e);
    }
  }
}
TOP

Related Classes of org.openrdf.sail.nativerdf.config.NativeStoreConfig

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.