package scrum.client.collaboration;
import ilarkesto.core.scope.Scope;
import ilarkesto.gwt.client.AGwtEntity;
import ilarkesto.gwt.client.DateAndTime;
import java.util.Comparator;
import java.util.Map;
import scrum.client.admin.User;
import scrum.client.common.AScrumGwtEntity;
import scrum.client.project.Project;
public class Comment extends GComment {
public Comment(AGwtEntity parent, User author, String text) {
setParent(parent);
setAuthor(author);
setAuthorName(author.getName());
setText(text);
setDateAndTime(DateAndTime.now());
}
public Comment(Map data) {
super(data);
}
@Override
public boolean isEditable() {
User currentUser = Scope.get().getComponent(User.class);
if (isAuthorSet()) {
if (!isAuthor(currentUser)) return false;
if (getDateAndTime().getPeriodFromNow().abs().toHours() > 6) return false;
AScrumGwtEntity parent = (AScrumGwtEntity) getParent();
if (parent.getLatestComment() != this) return false;
} else {
// public comment
Project project = Scope.get().getComponent(Project.class);
if (!project.isScrumTeamMember(currentUser)) return false;
}
return true;
}
public static final Comparator<Comment> DATEANDTIME_COMPARATOR = new Comparator<Comment>() {
@Override
public int compare(Comment a, Comment b) {
return a.getDateAndTime().compareTo(b.getDateAndTime());
}
};
public static final Comparator<Comment> REVERSE_DATEANDTIME_COMPARATOR = new Comparator<Comment>() {
@Override
public int compare(Comment a, Comment b) {
return b.getDateAndTime().compareTo(a.getDateAndTime());
}
};
}