/* $Id: IFilenet.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.filenet;
import java.rmi.*;
import java.util.*;
/** This class abstracts away from the filenet methods necessary to "do things" that
* the crawler or authority needs to be done with the Filenet repository. The purpose for breaking this
* out is to permit the Filenet invocation to be RMI based, because it relies
* on too many specific versions of jars.
*
* 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 IFilenet extends Remote
{
public static final String _rcsid = "@(#)$Id: IFilenet.java 988245 2010-08-23 18:39:35Z kwright $";
/** Create a session.
*@param userID is the userID to use to establish the session.
*@param password is the password to use to establish the session.
*@param domain is the filenet domain of the user and password.
*@param objectStore is the object store to use to establish the session.
*@param serverWSIURI is the URI to use to get to the server's web services.
*/
public void createSession(String userID, String password, String domain, String objectStore, String serverWSIURI)
throws FilenetException, RemoteException;
/** Delete a session.
*/
public void destroySession()
throws FilenetException, RemoteException;
/** Check if there is a working connection.
*/
public void checkConnection()
throws FilenetException, RemoteException;
/** Get the set of folder names that are children of the specified folder path. */
public String[] getChildFolders(String[] parentFolderPath)
throws FilenetException, RemoteException;
/** Get the set of available document classes
*/
public DocumentClassDefinition[] getDocumentClassesDetails()
throws FilenetException, RemoteException;
/** Get the set of available metadata fields per document class
*/
public MetadataFieldDefinition[] getDocumentClassMetadataFieldsDetails(String documentClassName)
throws FilenetException, RemoteException;
/** Execute a sql statement against FileNet and return the matching object id's */
public String[] getMatchingObjectIds(String sql)
throws RemoteException, FilenetException;
/** Get the document content information given an object id. Will return null if the version id is not a current document version id. */
public Integer getDocumentContentCount(String docId)
throws RemoteException, FilenetException;
/** Get document information for a given filenet document. Will return null if the version id is not a current document version id.
* The metadataFields hashmap is keyed by document class, and contains as a value either null (meaning "all"), or a String[] that has the
* list of fields desired. */
public FileInfo getDocumentInformation(String docId, Map<String,Object> metadataFields)
throws FilenetException, RemoteException;
/** Get document contents */
public void getDocumentContents(String docId, int elementNumber, String tempFileName)
throws FilenetException, RemoteException;
}