/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package Sirius.navigator.connection;
import Sirius.navigator.exception.ConnectionException;
import Sirius.server.localserver.method.MethodMap;
import Sirius.server.middleware.types.AbstractAttributeRepresentationFormater;
import Sirius.server.middleware.types.HistoryObject;
import Sirius.server.middleware.types.Link;
import Sirius.server.middleware.types.MetaClass;
import Sirius.server.middleware.types.MetaObject;
import Sirius.server.middleware.types.Node;
import Sirius.server.newuser.User;
import Sirius.server.newuser.UserException;
import Sirius.server.newuser.UserGroup;
import Sirius.server.search.store.Info;
import Sirius.server.search.store.QueryData;
import Sirius.util.image.ImageHashMap;
import java.util.Collection;
import java.util.HashMap;
import java.util.Vector;
import javax.swing.Icon;
import de.cismet.cids.server.CallServerService;
import de.cismet.cids.server.actions.ServerActionParameter;
import de.cismet.cids.server.search.CidsServerSearch;
import de.cismet.netutil.Proxy;
/**
* A singleton factory class that creates and manages connections.
*
* @author Pascal
* @version 1.0 12/22/2002
*/
public interface Connection {
//~ Methods ----------------------------------------------------------------
// Connection --------------------------------------------------------------
/**
* DOCUMENT ME!
*
* @param callserverURL DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
boolean connect(String callserverURL) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param callserverURL DOCUMENT ME!
* @param proxy DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
boolean connect(String callserverURL, Proxy proxy) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
boolean reconnect() throws ConnectionException;
/**
* DOCUMENT ME!
*/
void disconnect();
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
boolean isConnected();
/**
* Default -----------------------------------------------------------------
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
String[] getDomains() throws ConnectionException;
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*
* @deprecated DOCUMENT ME!
*/
@Deprecated
ImageHashMap getDefaultIcons() throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param name DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*
* @deprecated DOCUMENT ME!
*/
@Deprecated
Icon getDefaultIcon(String name) throws ConnectionException;
/**
* User --------------------------------------------------------------------
*
* @param userGroupLsName DOCUMENT ME!
* @param userGroupName DOCUMENT ME!
* @param userLsName DOCUMENT ME!
* @param userName DOCUMENT ME!
* @param password DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
* @throws UserException DOCUMENT ME!
*/
User getUser(String userGroupLsName, String userGroupName, String userLsName, String userName, String password)
throws ConnectionException, UserException;
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
Vector getUserGroupNames() throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param username DOCUMENT ME!
* @param domain DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
* @throws UserException DOCUMENT ME!
*/
Vector getUserGroupNames(String username, String domain) throws ConnectionException, UserException;
/**
* DOCUMENT ME!
*
* @param user DOCUMENT ME!
* @param oldPassword DOCUMENT ME!
* @param newPassword DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
* @throws UserException DOCUMENT ME!
*/
boolean changePassword(User user, String oldPassword, String newPassword) throws ConnectionException, UserException;
/**
* Node --------------------------------------------------------------------
*
* @param user DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
Node[] getRoots(User user) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param user DOCUMENT ME!
* @param domain DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
Node[] getRoots(User user, String domain) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param node DOCUMENT ME!
* @param user DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
Node[] getChildren(Node node, User user) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param user DOCUMENT ME!
* @param nodeID DOCUMENT ME!
* @param domain DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
Node getNode(User user, int nodeID, String domain) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param node DOCUMENT ME!
* @param parent DOCUMENT ME!
* @param user DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
Node addNode(Node node, Link parent, User user) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param node DOCUMENT ME!
* @param user DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
boolean deleteNode(Node node, User user) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param from DOCUMENT ME!
* @param to DOCUMENT ME!
* @param user DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
boolean addLink(Node from, Node to, User user) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param from DOCUMENT ME!
* @param to DOCUMENT ME!
* @param user DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
boolean deleteLink(Node from, Node to, User user) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param user DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*
* @deprecated DOCUMENT ME!
*/
@Deprecated
Node[] getClassTreeNodes(User user) throws ConnectionException;
/**
* Classes & Objects -------------------------------------------------------
*
* @param user DOCUMENT ME!
* @param classID DOCUMENT ME!
* @param domain DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
MetaClass getMetaClass(User user, int classID, String domain) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param user DOCUMENT ME!
* @param domain DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
MetaClass[] getClasses(User user, String domain) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param user DOCUMENT ME!
* @param objectID DOCUMENT ME!
* @param classID DOCUMENT ME!
* @param domain DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
MetaObject getMetaObject(User user, int objectID, int classID, String domain) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param user DOCUMENT ME!
* @param query DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*
* @Deprecated DOCUMENT ME!
*/
@Deprecated
MetaObject[] getMetaObjectByQuery(User user, String query) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param user DOCUMENT ME!
* @param query DOCUMENT ME!
* @param domain DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*
* @Deprecated DOCUMENT ME!
*/
@Deprecated
MetaObject[] getMetaObjectByQuery(User user, String query, String domain) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param user DOCUMENT ME!
* @param MetaObject DOCUMENT ME!
* @param domain DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
MetaObject insertMetaObject(User user, MetaObject MetaObject, String domain) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param user DOCUMENT ME!
* @param MetaObject DOCUMENT ME!
* @param domain DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
int updateMetaObject(User user, MetaObject MetaObject, String domain) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param user DOCUMENT ME!
* @param MetaObject DOCUMENT ME!
* @param domain DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
int deleteMetaObject(User user, MetaObject MetaObject, String domain) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param user DOCUMENT ME!
* @param c DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
MetaObject getInstance(User user, MetaClass c) throws ConnectionException;
/**
* /** DOCUMENT ME!
*
* @param classId DOCUMENT ME!
* @param user DOCUMENT ME!
* @param representationFields DOCUMENT ME!
* @param representationPattern DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
MetaObject[] getAllLightweightMetaObjectsForClass(int classId,
User user,
String[] representationFields,
String representationPattern) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param classId DOCUMENT ME!
* @param user DOCUMENT ME!
* @param representationFields DOCUMENT ME!
* @param formater DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
MetaObject[] getAllLightweightMetaObjectsForClass(int classId,
User user,
String[] representationFields,
AbstractAttributeRepresentationFormater formater) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param classId DOCUMENT ME!
* @param user DOCUMENT ME!
* @param query DOCUMENT ME!
* @param representationFields DOCUMENT ME!
* @param representationPattern DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*
* @Deprecated DOCUMENT ME!
*/
@Deprecated
MetaObject[] getLightweightMetaObjectsByQuery(int classId,
User user,
String query,
String[] representationFields,
String representationPattern) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param classId DOCUMENT ME!
* @param user DOCUMENT ME!
* @param query DOCUMENT ME!
* @param representationFields DOCUMENT ME!
* @param formater DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*
* @deprecated DOCUMENT ME!
*/
@Deprecated
MetaObject[] getLightweightMetaObjectsByQuery(int classId,
User user,
String query,
String[] representationFields,
AbstractAttributeRepresentationFormater formater) throws ConnectionException;
/**
* @see Sirius.server.middleware.interfaces.proxy.UserService#getConfigAttr(Sirius.server.newuser.User, java.lang.String)
*/
String getConfigAttr(final User user, final String key) throws ConnectionException;
/**
* @see Sirius.server.middleware.interfaces.proxy.UserService#hasConfigAttr(Sirius.server.newuser.User, java.lang.String)
*/
boolean hasConfigAttr(final User user, final String key) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param classId DOCUMENT ME!
* @param objectId DOCUMENT ME!
* @param domain DOCUMENT ME!
* @param user DOCUMENT ME!
* @param elements DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*
* @see Sirius.server.middleware.interfaces.proxy.MetaService#getHistory(int, int, java.lang.String,
* Sirius.server.newuser.User, int)
* @deprecated DOCUMENT ME!
*/
@Deprecated
HistoryObject[] getHistory(final int classId,
final int objectId,
final String domain,
final User user,
final int elements) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param user DOCUMENT ME!
* @param serverSearch DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
Collection customServerSearch(User user, CidsServerSearch serverSearch) throws ConnectionException;
/**
* DOCUMENT ME!
*
* @param user DOCUMENT ME!
* @param taskname DOCUMENT ME!
* @param taskdomain DOCUMENT ME!
* @param body json DOCUMENT ME!
* @param params DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws ConnectionException DOCUMENT ME!
*/
Object executeTask(User user, String taskname, String taskdomain, Object body, ServerActionParameter... params)
throws ConnectionException;
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
CallServerService getCallServerService();
}