01: /*
02: * Copyright 2004 Outerthought bvba and Schaubroeck nv
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License");
05: * you may not use this file except in compliance with the License.
06: * You may obtain a copy of the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS,
12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13: * See the License for the specific language governing permissions and
14: * limitations under the License.
15: */
16: package org.outerj.daisy.repository.comment;
17:
18: import org.outerj.daisy.repository.RepositoryException;
19: import org.outerj.daisy.repository.VariantKey;
20:
21: /**
22: * Everything related to document comments.
23: *
24: * <p>The CommentManager can be retrieved via {@link org.outerj.daisy.repository.Repository#getCommentManager()}.
25: *
26: */
27: public interface CommentManager {
28: Comment addComment(String documentId, long branchId,
29: long languageId, CommentVisibility visibility,
30: String commentText) throws RepositoryException;
31:
32: /**
33: * Adds a comment to the branch "main", language "default" of this document.
34: */
35: Comment addComment(String documentId, CommentVisibility visibility,
36: String commentText) throws RepositoryException;
37:
38: /**
39: * Deletes a comment. These are the rules for deleting comments:
40: * <ul>
41: * <li>Administrators can delete all comments, also private comments from other users.
42: * <li>Users with write access to the document can delete their own private comments,
43: * public comments and editors-only comments.
44: * <li>Other users can only delete their own private comments.
45: * </ul>
46: */
47: void deleteComment(String documentId, long branchId,
48: long languageId, long commentId) throws RepositoryException;
49:
50: /**
51: * Deletes a comment from the branch "main", language "default" of the document.
52: */
53: void deleteComment(String documentId, long commentId)
54: throws RepositoryException;
55:
56: void deleteComment(Comment comment) throws RepositoryException;
57:
58: /**
59: * Returns the comments for a specific document variant. Only private comment of the current
60: * user will be included (also for administrators). Editors-only comments are only
61: * included when the user has write access to the document.
62: *
63: * <p>The comments are ordered by creation date.
64: */
65: Comments getComments(String documentId, long branchId,
66: long langugeId) throws RepositoryException;
67:
68: /**
69: * @see #getComments(String, long, long)
70: */
71: Comments getComments(VariantKey variantKey)
72: throws RepositoryException;
73:
74: /**
75: * Gets the comments from the branch "main", languge "default" of the document.
76: */
77: Comments getComments(String documentId) throws RepositoryException;
78:
79: /**
80: * Returns all comments with the specified visibility, created by the current user.
81: */
82: Comments getComments(CommentVisibility visibility)
83: throws RepositoryException;
84:
85: /**
86: * Returns all comments created by the current user.
87: */
88: Comments getComments() throws RepositoryException;
89: }
|