1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portal.liveusers.messaging;
16  
17  import com.liferay.portal.kernel.json.JSONObject;
18  import com.liferay.portal.kernel.log.Log;
19  import com.liferay.portal.kernel.log.LogFactoryUtil;
20  import com.liferay.portal.kernel.messaging.Message;
21  import com.liferay.portal.kernel.messaging.MessageListener;
22  import com.liferay.portal.liveusers.LiveUsers;
23  
24  /**
25   * <a href="LiveUsersMessageListener.java.html"><b><i>View Source</i></b></a>
26   *
27   * @author Brian Wing Shun Chan
28   */
29  public class LiveUsersMessageListener implements MessageListener {
30  
31      public void receive(Message message) {
32          try {
33              doReceive(message);
34          }
35          catch (Exception e) {
36              _log.error("Unable to process message " + message, e);
37          }
38      }
39  
40      protected void doCommandSignIn(JSONObject jsonObj) throws Exception {
41          long companyId = jsonObj.getLong("companyId");
42          long userId = jsonObj.getLong("userId");
43          String sessionId = jsonObj.getString("sessionId");
44          String remoteAddr = jsonObj.getString("remoteAddr");
45          String remoteHost = jsonObj.getString("remoteHost");
46          String userAgent = jsonObj.getString("userAgent");
47  
48          LiveUsers.signIn(
49              companyId, userId, sessionId, remoteAddr, remoteHost, userAgent);
50      }
51  
52      protected void doCommandSignOut(JSONObject jsonObj) throws Exception {
53          long companyId = jsonObj.getLong("companyId");
54          long userId = jsonObj.getLong("userId");
55          String sessionId = jsonObj.getString("sessionId");
56  
57          LiveUsers.signOut(companyId, userId, sessionId);
58      }
59  
60      protected void doReceive(Message message) throws Exception {
61          JSONObject jsonObj = (JSONObject)message.getPayload();
62  
63          String command = jsonObj.getString("command");
64  
65          if (command.equals("signIn")) {
66              doCommandSignIn(jsonObj);
67          }
68          else if (command.equals("signOut")) {
69              doCommandSignOut(jsonObj);
70          }
71      }
72  
73      private static Log _log = LogFactoryUtil.getLog(
74          LiveUsersMessageListener.class);
75  
76  }