/* $Id: IDocumentum.java 988245 2010-08-23 18:39:35Z kwright $ */ /** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.manifoldcf.crawler.common.DCTM; import java.rmi.*; /** This class abstracts away from the documentum methods necessary to "do things" that * the crawler or authority needs to be done with the Documentum repository. The purpose for breaking this * out is to permit the Documentum invocation to be RMI based, because it keeps segfaulting on us. * * One of the tricks needed is to preserve session. This is handled at this level by explicitly passing a * session string around. The session string is created on the remote JVM, and is subsequently used to describe * the individual session we care about from the client side. */ public interface IDocumentum extends Remote { public static final String _rcsid = "@(#)$Id: IDocumentum.java 988245 2010-08-23 18:39:35Z kwright $"; /** Create a session. *@param docbaseName is the name of the docbase we want to connect to. *@param userName is the username to use to establish the session. *@param password is the password to use to establish the session. *@param domain is the domain to use to establish the session. */ public void createSession(String docbaseName, String userName, String password, String domain) throws DocumentumException, RemoteException; /** Delete the session. */ public void destroySession() throws DocumentumException, RemoteException; /** Check if there is a working connection. */ public void checkConnection() throws DocumentumException, RemoteException; /** Read the docbase name based on the session. */ public String getDocbaseName() throws DocumentumException, RemoteException; /** Get the server version. */ public String getServerVersion() throws DocumentumException, RemoteException; /** Get the current session id. */ public String getSessionId() throws DocumentumException, RemoteException; /** Perform a DQL query. What comes back from this is the equivalent of a DFC collection, * which I've represented as an interface that reads a resultset-like object in a streamed manner. *@param dql is the query that is to be fired off. *@return a resultset. This differs somewhat from the documentum convention in that it is * ALWAYS returned, even if it is empty. */ public IDocumentumResult performDQLQuery(String dql) throws DocumentumException, RemoteException; /** Get a documentum object, by qualification. The qualification is a DQL query part. The * returned object has properties as described by the methods of IDocumentumObject. */ public IDocumentumObject getObjectByQualification(String dql) throws DocumentumException, RemoteException; /** Get folder contents */ public IDocumentumResult getFolderContents(String folderPath) throws DocumentumException, RemoteException; /** Check if an object type is equal to or is a subtype of any one of a set of other object types. */ public boolean isOneOf(String theType, String[] matchTypeSet) throws DocumentumException, RemoteException; // Helper methods for building DQL queries /** Build a DQL date string from a long timestamp */ public String buildDateString(long timestamp) throws RemoteException; }