This project has retired. For details please refer to its Attic page.
Document xref

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   * http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.chemistry.opencmis.client.api;
20  
21  import java.util.List;
22  import java.util.Map;
23  
24  import org.apache.chemistry.opencmis.commons.data.Ace;
25  import org.apache.chemistry.opencmis.commons.data.ContentStream;
26  import org.apache.chemistry.opencmis.commons.enums.VersioningState;
27  
28  /**
29   * CMIS Document.
30   * <p>
31   * Domain Model 2.4
32   */
33  public interface Document extends FileableCmisObject, DocumentProperties {
34  
35      TransientDocument getTransientDocument();
36  
37      // object service
38  
39      /**
40       * Deletes this document and all its versions.
41       */
42      void deleteAllVersions();
43  
44      /**
45       * Retrieves the content stream of this document.
46       * 
47       * @return the content stream, or {@code null}
48       */
49      ContentStream getContentStream();
50  
51      /**
52       * Retrieves the content stream that is associated with the given stream id.
53       * This is usually a rendition of the document.
54       * 
55       * @return the content stream, or {@code null}
56       */
57      ContentStream getContentStream(String streamId);
58  
59      /**
60       * Sets a new content stream for the document.
61       */
62      Document setContentStream(ContentStream contentStream, boolean overwrite);
63  
64      /**
65       * Sets a new content stream for the document.
66       */
67      ObjectId setContentStream(ContentStream contentStream, boolean overwrite, boolean refresh);
68  
69      /**
70       * Removes the current content stream from the document.
71       */
72      Document deleteContentStream();
73  
74      /**
75       * Removes the current content stream from the document.
76       */
77      ObjectId deleteContentStream(boolean refresh);
78  
79      // versioning service
80  
81      /**
82       * Checks out the document and returns the object id of the PWC (private
83       * working copy).
84       * 
85       * @return PWC id
86       */
87      ObjectId checkOut(); // returns the PWC id
88  
89      /**
90       * If this is a PWC (private working copy) the check out will be reversed.
91       * If this is not a PWC it an exception will be thrown.
92       */
93      void cancelCheckOut();
94  
95      /**
96       * If this is a PWC (private working copy) it performs a check in. If this
97       * is not a PWC it an exception will be thrown.
98       * 
99       * @return new document id
100      */
101     ObjectId checkIn(boolean major, Map<String, ?> properties, ContentStream contentStream, String checkinComment,
102             List<Policy> policies, List<Ace> addAces, List<Ace> removeAces);
103 
104     /**
105      * If this is a PWC (private working copy) it performs a check in. If this
106      * is not a PWC it an exception will be thrown.
107      * 
108      * @return new document id
109      */
110     ObjectId checkIn(boolean major, Map<String, ?> properties, ContentStream contentStream, String checkinComment);
111 
112     /**
113      * Fetches the latest major or minor version of this document.
114      * 
115      * @param major
116      *            if <code>true</code> the latest major version will be
117      *            returned, otherwise the very last version will be returned
118      * 
119      * @return the latest document object
120      */
121     Document getObjectOfLatestVersion(boolean major);
122 
123     /**
124      * Fetches the latest major or minor version of this document using the
125      * given {@link OperationContext}.
126      * 
127      * @param major
128      *            if <code>true</code> the latest major version will be
129      *            returned, otherwise the very last version will be returned
130      * 
131      * @return the latest document object
132      */
133     Document getObjectOfLatestVersion(boolean major, OperationContext context);
134 
135     /**
136      * Fetches all versions of this document.
137      */
138     List<Document> getAllVersions();
139 
140     /**
141      * Fetches all versions of this document using the given
142      * {@link OperationContext}.
143      */
144     List<Document> getAllVersions(OperationContext context);
145 
146     /**
147      * Creates a copy of this document, including content.
148      * 
149      * @return the new document object
150      */
151     Document copy(ObjectId targetFolderId);
152 
153     /**
154      * Creates a copy of this document, including content.
155      * 
156      * @return the new document object or {@code null} if the parameter
157      *         {@code context} was set to {@code null}
158      */
159     Document copy(ObjectId targetFolderId, Map<String, ?> properties, VersioningState versioningState,
160             List<Policy> policies, List<Ace> addACEs, List<Ace> removeACEs, OperationContext context);
161 
162 }