1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17   * SOFTWARE.
18   */
19  
20  package com.liferay.portlet.social.model;
21  
22  import com.liferay.portal.kernel.log.Log;
23  import com.liferay.portal.kernel.log.LogFactoryUtil;
24  import com.liferay.portal.kernel.util.HtmlUtil;
25  import com.liferay.portal.kernel.util.StringPool;
26  import com.liferay.portal.kernel.util.StringUtil;
27  import com.liferay.portal.model.Group;
28  import com.liferay.portal.model.User;
29  import com.liferay.portal.service.UserLocalServiceUtil;
30  import com.liferay.portal.theme.ThemeDisplay;
31  
32  /**
33   * <a href="BaseSocialActivityInterpreter.java.html"><b><i>View Source</i></b>
34   * </a>
35   *
36   * @author Brian Wing Shun Chan
37   *
38   */
39  public abstract class BaseSocialActivityInterpreter
40      implements SocialActivityInterpreter {
41  
42      public String cleanContent(String content) {
43          return StringUtil.shorten(HtmlUtil.extractText(content), 200);
44      }
45  
46      public String getUserName(long userId, ThemeDisplay themeDisplay) {
47          try {
48              if (userId <= 0) {
49                  return StringPool.BLANK;
50              }
51  
52              User user = UserLocalServiceUtil.getUserById(userId);
53  
54              if (user.getUserId() == themeDisplay.getUserId()) {
55                  return user.getFirstName();
56              }
57  
58              String userName = user.getFullName();
59  
60              Group group = user.getGroup();
61  
62              if (group.getGroupId() == themeDisplay.getScopeGroupId()) {
63                  return userName;
64              }
65  
66              String userDisplayURL = user.getDisplayURL(themeDisplay);
67  
68              userName =
69                  "<a href=\"" + userDisplayURL + "\">" + userName + "</a>";
70  
71              return userName;
72          }
73          catch (Exception e) {
74              return StringPool.BLANK;
75          }
76      }
77  
78      public SocialActivityFeedEntry interpret(
79          SocialActivity activity, ThemeDisplay themeDisplay) {
80  
81          try {
82              return doInterpret(activity, themeDisplay);
83          }
84          catch (Exception e) {
85              _log.error("Unable to interpret activity", e);
86          }
87  
88          return null;
89      }
90  
91      protected abstract SocialActivityFeedEntry doInterpret(
92              SocialActivity activity, ThemeDisplay themeDisplay)
93          throws Exception;
94  
95      private static Log _log =
96          LogFactoryUtil.getLog(BaseSocialActivityInterpreter.class);
97  
98  }