/******************************************************************************* * Copyright (c) 2007, 2010 Association for Decentralized Information Management * in Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.db; import org.simantics.databoard.binding.Binding; import org.simantics.db.exception.BindingException; import org.simantics.db.exception.ClusterSetExistException; import org.simantics.db.exception.DatabaseException; import org.simantics.db.exception.ManyObjectsForFunctionalRelationException; import org.simantics.db.exception.ResourceNotFoundException; import org.simantics.db.exception.ServiceException; import org.simantics.db.request.AsyncMultiRead; import org.simantics.db.request.Write; import org.simantics.db.request.WriteOnly; import org.simantics.db.request.WriteTraits; /** * For accessing and manipulating the graph data. * * Instantiated by Session for use only during a transaction. * * @author Antti Villberg * @see AsyncMultiRead * @see Resource * @see Statement */ public interface WriteOnlyGraph extends ServiceLocator, MetadataI { Resource getRootLibrary(); /** * Gets a builtin resource. For a list of builtin resources see TODO Wiki * * @param uri the identifier * @return the resource * @throws ResourceNotFoundException if resouce was not found * @throws ServiceException on connection and database failures * @see AsyncReadGraph#forBuiltin */ Resource getBuiltin(String id) throws ResourceNotFoundException, ServiceException; /** * Creates a new resource. * @throws ServiceException * * @returns the new resource */ Resource newResource() throws ServiceException; /** * Creates a resource into the specified cluster. * * @param clusterId the ID of the cluster to create the resource into * @throws ServiceException * @returns the new resource */ Resource newResource(long clusterId) throws ServiceException; /** * Creates a resource into the specified cluster set. * * @param clusterSet identifies the cluster set which must exist. * @throws ServiceException * @throws ClusterSetExistException if cluster set does not exist. * @returns the new resource * @see #newClusterSet */ Resource newResource(Resource clusterSet) throws ServiceException, ClusterSetExistException; /** * Creates a new cluster set. * * @param clusterSet identifies the created cluster set. * @throws ServiceException * @throws ClusterSetExistException if cluster set exists already. */ void newClusterSet(Resource clusterSet) throws ServiceException, ClusterSetExistException; /** * Sets cluster set to be used for {@link #newResource()} method. * If cluster set is null then newResource behaves as before. * * @param clusterSet * @return old cluster set. * @throws ServiceException */ Resource setClusterSet4NewResource(Resource clusterSet) throws ServiceException; /** * Makes sure that the statements (s,p,o) and (o,i,s) are found in the * graph. It is not asserted that p is an inverse relation of i, this is * assumed and considered to be the client's responsibility. * *
* If no inverse relation (o,i,s) is desired, null
may be given as inverse.
*