Package org.openrdf.sail.dataset.config

Source Code of org.openrdf.sail.dataset.config.DatasetConfig

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

import static org.openrdf.sail.dataset.config.DatasetSchema.CLOSED;
import static org.openrdf.sail.dataset.config.DatasetSchema.DATASET;
import static org.openrdf.sail.dataset.config.DatasetSchema.GRAPH;
import static org.openrdf.sail.dataset.config.DatasetSchema.NAME;

import java.util.HashMap;
import java.util.Map;

import org.openrdf.model.BNode;
import org.openrdf.model.Model;
import org.openrdf.model.Resource;
import org.openrdf.model.URI;
import org.openrdf.model.Value;
import org.openrdf.model.ValueFactory;
import org.openrdf.model.impl.ValueFactoryImpl;
import org.openrdf.sail.config.DelegatingSailImplConfigBase;
import org.openrdf.store.StoreConfigException;

/**
* @author Arjohn Kampman
* @author James Leigh
*/
public class DatasetConfig extends DelegatingSailImplConfigBase {

  private Map<URI, String> graphs = new HashMap<URI, String>();

  private boolean closed;

  private ValueFactory vf = ValueFactoryImpl.getInstance();

  public DatasetConfig() {
    super(DatasetFactory.SAIL_TYPE);
  }

  /**
   * Absent dataset indicates the graph is known, but will be loaded
   * externally.
   */
  public void addGraph(URI name, String dataset) {
    graphs.put(name, dataset);
  }

  public void setGraphs(Map<URI, String> graphs) {
    this.graphs = graphs;
  }

  public Map<URI, String> getGraphs() {
    return graphs;
  }

  /** These are the only datasets that this repository can load. */
  public boolean isClosed() {
    return closed;
  }

  public void setClosed(boolean closed) {
    this.closed = closed;
  }

  @Override
  public Resource export(Model model) {
    Resource resource = super.export(model);
    for (Map.Entry<URI, String> e : getGraphs().entrySet()) {
      BNode node = vf.createBNode();
      model.add(resource, GRAPH, node);
      model.add(node, NAME, e.getKey());
      if (e.getValue() != null) {
        model.add(node, DATASET, vf.createLiteral(e.getValue()));
      }
    }
    model.add(resource, CLOSED, vf.createLiteral(closed));
    return resource;
  }

  @Override
  public void parse(Model model, Resource implNode)
    throws StoreConfigException
  {
    super.parse(model, implNode);
    for (Value node : model.filter(implNode, GRAPH, null).objects()) {
      URI name = model.filter((Resource)node, NAME, null).objectURI();
      String url = model.filter((Resource)node, DATASET, null).objectString();
      addGraph(name, url);
    }
    if (model.contains(implNode, CLOSED, null)) {
      closed = model.filter(implNode, CLOSED, null).objectLiteral().booleanValue();
    }
  }
}
TOP

Related Classes of org.openrdf.sail.dataset.config.DatasetConfig

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.