| /* |
| * 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(); |
| |
| } |