blob: 4ca98e9fcee24e99a6331ca32f061fa363689b9e [file] [log] [blame]
/*
* 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.chemistry.opencmis.inmemory.storedobj.api;
import java.util.List;
import org.apache.chemistry.opencmis.commons.data.ContentStream;
import org.apache.chemistry.opencmis.commons.data.Properties;
import org.apache.chemistry.opencmis.commons.enums.VersioningState;
/**
* A version series is a concrete object (meaning it can be stored) and has
* methods for check-out and checkin. It has a path (is contained in a folder)
* In contrast to a non-versioned document it has no content, but versions
* instead.
*
*/
public interface VersionedDocument extends Filing, StoredObject {
/**
* Add a new version to this document.
*
* @param verState
* versioning state of new version
* @param user
* user adding the new vesion
* @return document version added
*/
DocumentVersion addVersion(VersioningState verState, String user);
/**
* Delete a version from this object, throw exception if document is checked
* out or document does not contain this version.
*
* @param version
* version to be removed
* @return true if version could be removed, and other versions exist, false
* if the deleted version was the last version in this document
*/
boolean deleteVersion(DocumentVersion version);
/**
* Test if current object is checked-out.
*
* @return true if checked-out, false if not checked-out
*/
boolean isCheckedOut();
/**
* Cancel a check-out operation and discard the private working copy.
*
* @param user
* user doing the cancel check-out
*/
void cancelCheckOut(String user);
/**
* Perform a check-out operation.
*
* @param user
* user who checks-out
* @return document version beinf the new private working copy
*/
DocumentVersion checkOut(String user);
/**
* Check in a private working copy.
*
* @param isMajor
* true if this is a major version
* @param properties
* properties to set
* @param content
* content of the document
* @param checkinComment
* comment to attach to check-in
* @param policyIds
* list of policy ids to add
* @param user
* user who does the check-in
*/
void checkIn(boolean isMajor, Properties properties, ContentStream content, String checkinComment,
List<String> policyIds, String user);
/**
* Get all versions of this document.
*
* @return list of document versions
*/
List<DocumentVersion> getAllVersions();
/**
* Get the latest version of this document.
*
* @param major
* true if latest major version, false to include minor versions
* @return
* latest version of the document
*/
DocumentVersion getLatestVersion(boolean major);
/**
* Get the user who has checked out this document.
*
* @return user id of user who has checked out this document
*/
String getCheckedOutBy();
/**
* Get the private working copy of this document.
*
* @return private working copy
*/
DocumentVersion getPwc();
}