Package org.openrdf.sail.memory.config

Source Code of org.openrdf.sail.memory.config.MemoryStoreConfig

/*
* Copyright Aduna (http://www.aduna-software.com/) (c) 2007.
*
* Licensed under the Aduna BSD-style license.
*/
package org.openrdf.sail.memory.config;

import static org.openrdf.sail.memory.config.MemoryStoreSchema.PERSIST;
import static org.openrdf.sail.memory.config.MemoryStoreSchema.SYNC_DELAY;

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 MemoryStoreConfig extends SailImplConfigBase {

  private boolean persist = false;

  private long syncDelay = 0L;

  public MemoryStoreConfig() {
    super(MemoryStoreFactory.SAIL_TYPE);
  }

  public MemoryStoreConfig(boolean persist) {
    this();
    setPersist(persist);
  }

  public MemoryStoreConfig(boolean persist, long syncDelay) {
    this(persist);
    setSyncDelay(syncDelay);
  }

  public boolean getPersist() {
    return persist;
  }

  public void setPersist(boolean persist) {
    this.persist = persist;
  }

  public long getSyncDelay() {
    return syncDelay;
  }

  public void setSyncDelay(long syncDelay) {
    this.syncDelay = syncDelay;
  }

  @Override
  public Resource export(Model model) {
    Resource implNode = super.export(model);

    ValueFactoryImpl vf = ValueFactoryImpl.getInstance();

    if (persist) {
      model.add(implNode, PERSIST, vf.createLiteral(persist));
    }

    if (syncDelay != 0) {
      model.add(implNode, SYNC_DELAY, vf.createLiteral(syncDelay));
    }

    return implNode;
  }

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

    try {
      Literal persistValue = model.filter(implNode, PERSIST, null).objectLiteral();
      if (persistValue != null) {
        try {
          setPersist((persistValue).booleanValue());
        }
        catch (IllegalArgumentException e) {
          throw new StoreConfigException("Boolean value required for " + PERSIST + " property, found "
              + persistValue);
        }
      }

      Literal syncDelayValue = model.filter(implNode, SYNC_DELAY, null).objectLiteral();
      if (syncDelayValue != null) {
        try {
          setSyncDelay((syncDelayValue).longValue());
        }
        catch (NumberFormatException e) {
          throw new StoreConfigException("Long integer value required for " + SYNC_DELAY
              + " property, found " + syncDelayValue);
        }
      }
    }
    catch (ModelException e) {
      throw new StoreConfigException(e.getMessage(), e);
    }
  }
}
TOP

Related Classes of org.openrdf.sail.memory.config.MemoryStoreConfig

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.