/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
/*
* AbstractTree.java
*
* Created on 29. Januar 2007, 14:55
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package Sirius.server.localserver.tree;
import Sirius.server.middleware.types.Node;
import Sirius.server.newuser.User;
import Sirius.server.newuser.UserGroup;
import Sirius.server.newuser.permission.Policy;
import java.sql.SQLException;
/**
* DOCUMENT ME!
*
* @author schlob
* @version $Revision$, $Date$
*/
public interface AbstractTree {
//~ Methods ----------------------------------------------------------------
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws SQLException DOCUMENT ME!
*/
int getNextNodeID() throws SQLException;
/**
* public boolean copySubTree(Sirius.server.middleware.types.Node root, User user) throws Throwable;
*
* @param from DOCUMENT ME!
* @param to DOCUMENT ME!
* @param user DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws Throwable DOCUMENT ME!
*/
boolean deleteLink(Sirius.server.middleware.types.Node from, Sirius.server.middleware.types.Node to, User user)
throws Throwable;
/**
* DOCUMENT ME!
*
* @param father DOCUMENT ME!
* @param child DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws Throwable DOCUMENT ME!
*/
boolean addLink(int father, int child) throws Throwable;
/**
* DOCUMENT ME!
*
* @param from DOCUMENT ME!
* @param to DOCUMENT ME!
* @param user DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws Throwable DOCUMENT ME!
*/
boolean addLink(Sirius.server.middleware.types.Node from, Sirius.server.middleware.types.Node to, User user)
throws Throwable;
/**
* DOCUMENT ME!
*
* @param node DOCUMENT ME!
* @param user DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws Throwable DOCUMENT ME!
*/
boolean deleteNode(Sirius.server.middleware.types.Node node, User user) throws Throwable;
/**
* DOCUMENT ME!
*
* @param node DOCUMENT ME!
* @param parent DOCUMENT ME!
* @param user DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws Throwable DOCUMENT ME!
*/
Sirius.server.middleware.types.Node addNode(
Sirius.server.middleware.types.Node node,
Sirius.server.middleware.types.Link parent,
User user) throws Throwable;
/**
* DOCUMENT ME!
*
* @param nodeID DOCUMENT ME!
* @param ug DOCUMENT ME!
* @param parentPolicy DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws Throwable DOCUMENT ME!
*/
NodeReferenceList getChildren(int nodeID, UserGroup ug, Policy parentPolicy) throws Throwable;
/**
* DOCUMENT ME!
*
* @param node DOCUMENT ME!
* @param ug DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws Throwable DOCUMENT ME!
*/
NodeReferenceList getChildren(Node node, UserGroup ug) throws Throwable;
/**
* DOCUMENT ME!
*
* @param ug DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws Throwable DOCUMENT ME!
*/
Node[] getClassTreeNodes(UserGroup ug) throws Throwable;
/**
* DOCUMENT ME!
*
* @param nodeId DOCUMENT ME!
* @param parentNodeId DOCUMENT ME!
*
* @throws Throwable DOCUMENT ME!
*/
void inheritNodePermission(int nodeId, int parentNodeId) throws Throwable;
/**
* DOCUMENT ME!
*
* @param objectID DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws Throwable DOCUMENT ME!
*/
boolean hasNodes(String objectID) throws Throwable;
/**
* DOCUMENT ME!
*
* @param ug DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws Throwable DOCUMENT ME!
*/
Node[] getTopNodes(UserGroup ug) throws Throwable;
/**
* public java.util.ArrayList<Node> getObjectNodes(String objectID,UserGroup ug) throws Throwable;
*
* @param nodeID DOCUMENT ME!
* @param ug DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws Throwable DOCUMENT ME!
*/
Node getNode(int nodeID, UserGroup ug) throws Throwable;
/**
* DOCUMENT ME!
*
* @param nodeID DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws Throwable DOCUMENT ME!
*/
boolean nodeIsLeaf(int nodeID) throws Throwable;
}