package org.exoplatform.forum.service.cache.model.data;
import java.util.Arrays;
import java.util.Date;
import org.exoplatform.forum.common.cache.model.CachedData;
import org.exoplatform.forum.service.Forum;
public class ForumData implements CachedData<Forum> {
public final static ForumData NULL = new ForumData(new Forum());
private final String id;
private final String owner;
private final String path;
private final int forumOrder;
private final Date createdDate;
private final String modifiedBy;
private final Date modifiedDate;
private final String lastTopicPath;
private final String name;
private final String description;
private final long postCount;
private final long topicCount;
private final String[] notifyWhenAddTopic;
private final String[] notifyWhenAddPost;
private final boolean isAutoAddEmailNotify;
private final boolean isModerateTopic;
private final boolean isModeratePost;
private final boolean isClosed;
private final boolean isLock;
private final String[] moderators;
private final String[] createTopicRole;
private final String[] viewer;
private final String[] poster;
private final String[] emailNotification;
private final String[] banIPs;
public ForumData(Forum forum) {
this.id = forum.getId();
this.owner = forum.getOwner();
this.path = forum.getPath();
this.forumOrder = forum.getForumOrder();
this.createdDate = forum.getCreatedDate();
this.modifiedBy = forum.getModifiedBy();
this.modifiedDate = forum.getModifiedDate();
this.lastTopicPath = forum.getLastTopicPath();
this.name = forum.getForumName();
this.description = forum.getDescription();
this.postCount = forum.getPostCount();
this.topicCount = forum.getTopicCount();
this.notifyWhenAddTopic = forum.getNotifyWhenAddTopic();
this.notifyWhenAddPost = forum.getNotifyWhenAddPost();
this.isAutoAddEmailNotify = forum.getIsAutoAddEmailNotify();
this.isModerateTopic = forum.getIsModerateTopic();
this.isModeratePost = forum.getIsModeratePost();
this.isClosed = forum.getIsClosed();
this.isLock = forum.getIsLock();
this.moderators = forum.getModerators();
this.createTopicRole = forum.getCreateTopicRole();
this.viewer = forum.getViewer();
this.poster = forum.getPoster();
this.emailNotification = forum.getEmailNotification();
if (forum.getBanIP() != null) {
this.banIPs = forum.getBanIP().toArray(new String[]{});
} else {
this.banIPs = null;
}
}
public Forum build() {
if (this == NULL) {
return null;
}
Forum forum = new Forum();
forum.setId(this.id);
forum.setOwner(this.owner);
forum.setPath(this.path);
forum.setForumOrder(this.forumOrder);
forum.setCreatedDate(this.createdDate);
forum.setModifiedBy(this.modifiedBy);
forum.setModifiedDate(this.modifiedDate);
forum.setLastTopicPath(this.lastTopicPath);
forum.setForumName(this.name);
forum.setDescription(this.description);
forum.setPostCount(this.postCount);
forum.setTopicCount(this.topicCount);
forum.setNotifyWhenAddTopic(this.notifyWhenAddTopic);
forum.setNotifyWhenAddPost(this.notifyWhenAddPost);
forum.setIsAutoAddEmailNotify(this.isAutoAddEmailNotify);
forum.setIsModerateTopic(this.isModerateTopic);
forum.setIsModeratePost(this.isModeratePost);
forum.setIsClosed(this.isClosed);
forum.setIsLock(this.isLock);
forum.setModerators(this.moderators);
forum.setCreateTopicRole(this.createTopicRole);
forum.setViewer(this.viewer);
forum.setPoster(this.poster);
forum.setEmailNotification(this.emailNotification);
if (this.banIPs != null) {
forum.setBanIP(Arrays.asList(this.banIPs));
}
return forum;
}
public String getPath() {
return path;
}
}