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; } }