001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portlet.messageboards.model.impl;
016    
017    import com.liferay.portal.kernel.workflow.WorkflowConstants;
018    import com.liferay.portal.util.PropsValues;
019    import com.liferay.portlet.messageboards.model.MBCategory;
020    import com.liferay.portlet.messageboards.model.MBMessage;
021    import com.liferay.portlet.messageboards.model.MBMessageDisplay;
022    import com.liferay.portlet.messageboards.model.MBThread;
023    import com.liferay.portlet.messageboards.model.MBThreadConstants;
024    import com.liferay.portlet.messageboards.model.MBTreeWalker;
025    import com.liferay.portlet.messageboards.service.MBMessageLocalService;
026    
027    import java.util.Comparator;
028    
029    /**
030     * @author Brian Wing Shun Chan
031     * @author Shuyang Zhou
032     */
033    public class MBMessageDisplayImpl implements MBMessageDisplay {
034    
035            public MBMessageDisplayImpl(
036                    MBMessage message, MBMessage parentMessage, MBCategory category,
037                    MBThread thread, MBThread previousThread, MBThread nextThread,
038                    int status, MBMessageLocalService messageLocalService,
039                    Comparator<MBMessage> comparator) {
040    
041                    _message = message;
042                    _parentMessage = parentMessage;
043                    _category = category;
044                    _thread = thread;
045    
046                    _treeWalker = new MBTreeWalkerImpl(
047                            message.getThreadId(), status, messageLocalService, comparator);
048    
049                    _previousThread = previousThread;
050                    _nextThread = nextThread;
051                    _threadView = MBThreadConstants.THREAD_VIEW_TREE;
052    
053                    int dicussionMessagesCount = 0;
054    
055                    if (message.isDiscussion() &&
056                            (PropsValues.DISCUSSION_MAX_COMMENTS > 0)) {
057    
058                            dicussionMessagesCount =
059                                    messageLocalService.getDiscussionMessagesCount(
060                                            message.getClassName(), message.getClassPK(),
061                                            WorkflowConstants.STATUS_APPROVED);
062                    }
063    
064                    _discussionMessagesCount = dicussionMessagesCount;
065            }
066    
067            /**
068             * @deprecated As of 7.0.0, replaced by {@link
069             *             #MBMessageDisplayImpl(MBMessage, MBMessage, MBCategory,
070             *             MBThread, MBThread, MBThread, int, MBMessageLocalService,
071             *             Comparator)}
072             */
073            @Deprecated
074            public MBMessageDisplayImpl(
075                    MBMessage message, MBMessage parentMessage, MBCategory category,
076                    MBThread thread, MBThread previousThread, MBThread nextThread,
077                    int status, String threadView,
078                    MBMessageLocalService messageLocalService,
079                    Comparator<MBMessage> comparator) {
080    
081                    _message = message;
082                    _parentMessage = parentMessage;
083                    _category = category;
084                    _thread = thread;
085    
086                    if (!threadView.equals(MBThreadConstants.THREAD_VIEW_FLAT)) {
087                            _treeWalker = new MBTreeWalkerImpl(
088                                    message.getThreadId(), status, messageLocalService, comparator);
089                    }
090                    else {
091                            _treeWalker = null;
092                    }
093    
094                    _previousThread = previousThread;
095                    _nextThread = nextThread;
096                    _threadView = threadView;
097    
098                    int dicussionMessagesCount = 0;
099    
100                    if (message.isDiscussion() &&
101                            (PropsValues.DISCUSSION_MAX_COMMENTS > 0)) {
102    
103                            dicussionMessagesCount =
104                                    messageLocalService.getDiscussionMessagesCount(
105                                            message.getClassName(), message.getClassPK(),
106                                            WorkflowConstants.STATUS_APPROVED);
107                    }
108    
109                    _discussionMessagesCount = dicussionMessagesCount;
110            }
111    
112            @Override
113            public MBCategory getCategory() {
114                    return _category;
115            }
116    
117            @Override
118            public MBMessage getMessage() {
119                    return _message;
120            }
121    
122            @Override
123            public MBThread getNextThread() {
124                    return _nextThread;
125            }
126    
127            @Override
128            public MBMessage getParentMessage() {
129                    return _parentMessage;
130            }
131    
132            @Override
133            public MBThread getPreviousThread() {
134                    return _previousThread;
135            }
136    
137            @Override
138            public MBThread getThread() {
139                    return _thread;
140            }
141    
142            /**
143             * @deprecated As of 7.0.0, with no direct replacement
144             */
145            @Deprecated
146            @Override
147            public String getThreadView() {
148                    return _threadView;
149            }
150    
151            @Override
152            public MBTreeWalker getTreeWalker() {
153                    return _treeWalker;
154            }
155    
156            @Override
157            public boolean isDiscussionMaxComments() {
158                    if (_message.isDiscussion() &&
159                            (PropsValues.DISCUSSION_MAX_COMMENTS > 0) &&
160                            (PropsValues.DISCUSSION_MAX_COMMENTS <= _discussionMessagesCount)) {
161    
162                            return true;
163                    }
164    
165                    return false;
166            }
167    
168            private final MBCategory _category;
169            private final int _discussionMessagesCount;
170            private final MBMessage _message;
171            private final MBThread _nextThread;
172            private final MBMessage _parentMessage;
173            private final MBThread _previousThread;
174            private final MBThread _thread;
175            private final String _threadView;
176            private final MBTreeWalker _treeWalker;
177    
178    }