// Path: services/src/main/java/org/exoplatform/task/dto/CommentDto.java
// @Data
// public class CommentDto implements Serializable {
//     private long id;
// 
//     private String author;
// 
//     private String comment;
// 
//     private Date createdTime;
// 
//     private TaskDto task;
// 
//     private CommentDto parentComment;
// 
//     private List<CommentDto> subComments;
// 
//     private Set<String> mentionedUsers;
// 
//     public CommentDto clone() {
//         CommentDto commentDto=new CommentDto();
//         commentDto.setId(this.getId());
//         commentDto.setAuthor(this.getAuthor());
//         commentDto.setComment(this.getComment());
//         commentDto.setSubComments(this.getSubComments());
//         commentDto.setCreatedTime(this.getCreatedTime());
//         commentDto.setTask(this.getTask().clone());
// 
//         return commentDto;
//     }
// 
// }
// 
// Path: services/src/main/java/org/exoplatform/task/dto/TaskDto.java
// @Data
// public class TaskDto  implements Serializable {
//     private long        id;
//     private String      title;
//     private String      description;
//     private Priority priority;
//     private String      context;
//     private String      assignee;
//     private StatusDto status;
//     private int         rank;
//     private boolean completed;
//     private Set<String> coworker;
//     private Set<String> watcher;
//     private String      createdBy;
//     private Date createdTime;
//     private Date        startDate;
//     private Date        endDate;
//     private Date        dueDate;
//     private String activityId;
// 
//     public TaskDto clone() {
//         Set<String> coworkerClone = new HashSet<String>();
//         Set<String> watcherClone = new HashSet<String>();
//         if (getCoworker() != null) {
//             coworkerClone = new HashSet<String>(getCoworker());
//         }
//         if (getWatcher() != null) {
//             watcherClone = new HashSet<String>(getWatcher());
//         }
//         TaskDto newTask = new TaskDto();
//         newTask.setTitle(this.getTitle());
//         newTask.setDescription(this.getDescription());
//         newTask.setPriority(this.getPriority());
//         newTask.setContext(this.getContext());
//         newTask.setAssignee(this.getAssignee());
//         newTask.setCoworker(coworkerClone);
//         newTask.setWatcher(watcherClone);
//         newTask.setStatus(this.getStatus() != null ? this.getStatus().clone() : null);
//         newTask.setRank(this.getRank());
//         newTask.setActivityId(this.getActivityId());
//         newTask.setCompleted(this.isCompleted());
//         newTask.setCreatedBy(this.getCreatedBy());
//         newTask.setCreatedTime(this.getCreatedTime());
//         newTask.setEndDate(this.getEndDate());
//         newTask.setStartDate(this.getStartDate());
//         newTask.setDueDate(this.getDueDate());
//         newTask.setCreatedTime(getCreatedTime());
//         newTask.setActivityId(getActivityId());
//         newTask.setCompleted(isCompleted());
//         newTask.setRank(getRank());
//         newTask.setId(getId());
// 
//         return newTask;
//     }
// 
// }


import java.util.List;
import org.exoplatform.task.domain.Comment;
import org.exoplatform.task.dto.CommentDto;
import org.exoplatform.task.dto.TaskDto;
import org.exoplatform.task.exception.EntityNotFoundException;
package org.exoplatform.task.storage;



public interface CommentStorage {

  CommentDto getComment(long commentId);

  List<CommentDto> getCommentsWithSubs(long taskId, int offset, int limit);

  List<CommentDto> getComments(long taskId, int offset, int limit);

// Path: services/src/main/java/org/exoplatform/task/dto/CommentDto.java
// @Data
// public class CommentDto implements Serializable {
//     private long id;
// 
//     private String author;
// 
//     private String comment;
// 
//     private Date createdTime;
// 
//     private TaskDto task;
// 
//     private CommentDto parentComment;
// 
//     private List<CommentDto> subComments;
// 
//     private Set<String> mentionedUsers;
// 
//     public CommentDto clone() {
//         CommentDto commentDto=new CommentDto();
//         commentDto.setId(this.getId());
//         commentDto.setAuthor(this.getAuthor());
//         commentDto.setComment(this.getComment());
//         commentDto.setSubComments(this.getSubComments());
//         commentDto.setCreatedTime(this.getCreatedTime());
//         commentDto.setTask(this.getTask().clone());
// 
//         return commentDto;
//     }
// 
// }
// 
// Path: services/src/main/java/org/exoplatform/task/dto/TaskDto.java
// @Data
// public class TaskDto  implements Serializable {
//     private long        id;
//     private String      title;
//     private String      description;
//     private Priority priority;
//     private String      context;
//     private String      assignee;
//     private StatusDto status;
//     private int         rank;
//     private boolean completed;
//     private Set<String> coworker;
//     private Set<String> watcher;
//     private String      createdBy;
//     private Date createdTime;
//     private Date        startDate;
//     private Date        endDate;
//     private Date        dueDate;
//     private String activityId;
// 
//     public TaskDto clone() {
//         Set<String> coworkerClone = new HashSet<String>();
//         Set<String> watcherClone = new HashSet<String>();
//         if (getCoworker() != null) {
//             coworkerClone = new HashSet<String>(getCoworker());
//         }
//         if (getWatcher() != null) {
//             watcherClone = new HashSet<String>(getWatcher());
//         }
//         TaskDto newTask = new TaskDto();
//         newTask.setTitle(this.getTitle());
//         newTask.setDescription(this.getDescription());
//         newTask.setPriority(this.getPriority());
//         newTask.setContext(this.getContext());
//         newTask.setAssignee(this.getAssignee());
//         newTask.setCoworker(coworkerClone);
//         newTask.setWatcher(watcherClone);
//         newTask.setStatus(this.getStatus() != null ? this.getStatus().clone() : null);
//         newTask.setRank(this.getRank());
//         newTask.setActivityId(this.getActivityId());
//         newTask.setCompleted(this.isCompleted());
//         newTask.setCreatedBy(this.getCreatedBy());
//         newTask.setCreatedTime(this.getCreatedTime());
//         newTask.setEndDate(this.getEndDate());
//         newTask.setStartDate(this.getStartDate());
//         newTask.setDueDate(this.getDueDate());
//         newTask.setCreatedTime(getCreatedTime());
//         newTask.setActivityId(getActivityId());
//         newTask.setCompleted(isCompleted());
//         newTask.setRank(getRank());
//         newTask.setId(getId());
// 
//         return newTask;
//     }
// 
// }


// Path: services/src/main/java/org/exoplatform/task/storage/CommentStorage.java
import java.util.List;
import org.exoplatform.task.domain.Comment;
import org.exoplatform.task.dto.CommentDto;
import org.exoplatform.task.dto.TaskDto;
import org.exoplatform.task.exception.EntityNotFoundException;

package org.exoplatform.task.storage;



public interface CommentStorage {

  CommentDto getComment(long commentId);

  List<CommentDto> getCommentsWithSubs(long taskId, int offset, int limit);

  List<CommentDto> getComments(long taskId, int offset, int limit);

  int countComments(long taskId);