Author: solomax
Date: Tue Feb 26 07:48:43 2013
New Revision: 1450058

URL: http://svn.apache.org/r1450058
Log:
Cluster: duplicated "null" server is removed from comparison.

Modified:
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java?rev=1450058&r1=1450057&r2=1450058&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
 Tue Feb 26 07:48:43 2013
@@ -45,10 +45,10 @@ import org.apache.openmeetings.data.user
 import org.apache.openmeetings.persistence.beans.basic.Server;
 import org.apache.openmeetings.persistence.beans.calendar.Appointment;
 import org.apache.openmeetings.persistence.beans.room.Client;
-import org.apache.openmeetings.persistence.beans.room.RoomModerator;
-import org.apache.openmeetings.persistence.beans.room.RoomType;
 import org.apache.openmeetings.persistence.beans.room.Room;
+import org.apache.openmeetings.persistence.beans.room.RoomModerator;
 import org.apache.openmeetings.persistence.beans.room.RoomOrganisation;
+import org.apache.openmeetings.persistence.beans.room.RoomType;
 import org.apache.openmeetings.persistence.beans.user.User;
 import org.apache.openmeetings.session.ISessionManager;
 import org.apache.openmeetings.utils.math.CalendarPatterns;
@@ -774,26 +774,19 @@ public class ConferenceService {
                Long user_level = userManager.getUserLevelByID(users_id);
                if (authLevelUtil.checkUserLevel(user_level)) {
                        List<Server> serverList = serverDao.getActiveServers();
-                       
-                       //if there is no cluster set up, just redirect to the 
current one
+
+                       // if there is no cluster set up, just redirect to the 
current one
                        if (serverList.size() == 0) {
                                return null;
                        }
-                       
-                       //if the room is already opened on a server, redirect 
the user to that one,
-                       //we do that in two loop's because there is no query 
involved here,
-                       //only the first user that enters the conference room 
needs to be adjusted 
-                       //to that server that has the less maxUser count in its 
rooms currently.
-                       //But if the room is already opened, then the maxUser 
is no more relevant,
-                       //the user will be just redirected to the same server
-                       
-                       //check if the user is on master hosted, (serverId == 
null)
-                       for (Long activeRoomId : 
sessionManager.getActiveRoomIdsByServer(null)) {
-                               if (activeRoomId != null && 
activeRoomId.equals(roomId)) {
-                                       return null;
-                               }
-                       }
-                       
+
+                       // if the room is already opened on a server, redirect 
the user to that one,
+                       // we do that in two loop's because there is no query 
involved here,
+                       // only the first user that enters the conference room 
needs to be adjusted
+                       // to that server that has the less maxUser count in 
its rooms currently.
+                       // But if the room is already opened, then the maxUser 
is no more relevant,
+                       // the user will be just redirected to the same server
+
                        for (Server server : serverList) {
                                for (Long activeRoomId : 
sessionManager.getActiveRoomIdsByServer(server)) {
                                        if (activeRoomId.equals(roomId)) {
@@ -801,53 +794,44 @@ public class ConferenceService {
                                        }
                                }
                        }
-                       
-                       //the room is not opened on any server yet, its the 
first user, get the maxUser 
-                       //per room
-                       
-                       //TODO / FIXME: Get room's maxUser in a single query 
instead a query for each room
-                       final Map<Server,List<Room>> serverRoomMap = new 
HashMap<Server,List<Room>>();
-                       
-                       //Locally handled sessions are serverId = null
-                       List<Room> localRoomList = new ArrayList<Room>();
-                       for (Long activeRoomId : 
sessionManager.getActiveRoomIdsByServer(null)) {
-                               //FIXME / TODO: This is the single query to get 
the room by its id
-                               localRoomList.add(roomDao.get(activeRoomId));
-                       }
-                       serverRoomMap.put(null, localRoomList);
-                       
-                       //Slave/Server rooms
+
+                       // the room is not opened on any server yet, its the 
first user, get the maxUser
+                       // per room
+
+                       // TODO / FIXME: Get room's maxUser in a single query 
instead a query for each room
+                       final Map<Server, List<Room>> serverRoomMap = new 
HashMap<Server, List<Room>>();
+                       // Slave/Server rooms
                        for (Server server : serverList) {
                                List<Room> roomList = new ArrayList<Room>();
                                for (Long activeRoomId : 
sessionManager.getActiveRoomIdsByServer(server)) {
-                                       //FIXME / TODO: This is the single 
query to get the room by its id
+                                       // FIXME / TODO: This is the single 
query to get the room by its id
                                        roomList.add(roomDao.get(activeRoomId));
                                }
                                serverRoomMap.put(server, roomList);
                        }
-                       
-                       //calc server with lowest max users
+
+                       // calc server with lowest max users
                        List<Server> list = new LinkedList<Server>();
                        list.addAll(serverRoomMap.keySet());
                        Collections.sort(list, new Comparator<Server>() {
-                         public int compare(Server s1, Server s2) {
-                                 int maxUsersInRoomS1 = 0;
-                                 log.debug("serverRoomMap.get(s1) SIZE 
"+serverRoomMap.get(s1).size());
-                                 for (Room room : serverRoomMap.get(s1)) {
-                                         log.debug("s1 room: "+room);
-                                         maxUsersInRoomS1 += 
room.getNumberOfPartizipants();
-                                 }
-                                 int maxUsersInRoomS2 = 0;
-                                 log.debug("serverRoomMap.get(s2) SIZE 
"+serverRoomMap.get(s2).size());
-                                 for (Room room : serverRoomMap.get(s2)) {
-                                         log.debug("s2 room: "+room);
-                                         maxUsersInRoomS2 += 
room.getNumberOfPartizipants();
-                                 }
-                                 
-                             return maxUsersInRoomS1 - maxUsersInRoomS2;
-                         }
-                    });
-                       
+                               public int compare(Server s1, Server s2) {
+                                       int maxUsersInRoomS1 = 0;
+                                       log.debug("serverRoomMap.get(s1) SIZE " 
+ serverRoomMap.get(s1).size());
+                                       for (Room room : serverRoomMap.get(s1)) 
{
+                                               log.debug("s1 room: " + room);
+                                               maxUsersInRoomS1 += 
room.getNumberOfPartizipants();
+                                       }
+                                       int maxUsersInRoomS2 = 0;
+                                       log.debug("serverRoomMap.get(s2) SIZE " 
+ serverRoomMap.get(s2).size());
+                                       for (Room room : serverRoomMap.get(s2)) 
{
+                                               log.debug("s2 room: " + room);
+                                               maxUsersInRoomS2 += 
room.getNumberOfPartizipants();
+                                       }
+
+                                       return maxUsersInRoomS1 - 
maxUsersInRoomS2;
+                               }
+                       });
+
                        LinkedHashMap<Server, List<Room>> serverRoomMapOrdered 
= new LinkedHashMap<Server, List<Room>>();
                        for (Server server : list) {
                                serverRoomMapOrdered.put(server, 
serverRoomMap.get(server));
@@ -855,39 +839,38 @@ public class ConferenceService {
 
                        if (log.isDebugEnabled()) {
                                log.debug("Resulting order: ");
-                               for (Entry<Server, List<Room>> entry : 
serverRoomMapOrdered
-                                               .entrySet()) {
+                               for (Entry<Server, List<Room>> entry : 
serverRoomMapOrdered.entrySet()) {
                                        int maxUsersInRoom = 0;
                                        for (Room room : entry.getValue()) {
                                                maxUsersInRoom += 
room.getNumberOfPartizipants();
                                        }
-                                       
+
                                        String roomids = "";
-                                       for (Room r : entry.getValue()) { 
-                                               roomids += " " + 
r.getRooms_id(); 
+                                       for (Room r : entry.getValue()) {
+                                               roomids += " " + 
r.getRooms_id();
                                        }
-                                       
-                                       log.debug("entry " + entry.getKey() + " 
Number of rooms "
-                                                       + 
entry.getValue().size()+ " RoomIds: " + roomids + " max(Sum): " + 
maxUsersInRoom);
+
+                                       log.debug("entry " + entry.getKey() + " 
Number of rooms " + entry.getValue().size() + " RoomIds: "
+                                                       + roomids + " max(Sum): 
" + maxUsersInRoom);
                                }
 
                        }
 
                        log.debug("Resulting Server");
-                       
+
                        Server s = 
serverRoomMapOrdered.entrySet().iterator().next().getKey();
-                       
+
                        if (s == null) {
                                return null;
                        }
-                       
-                       //Somehow this object here cannot be serialized cause 
its abused by OpenJPA
-                       //so get a fresh copy from the entity manager and 
return that
+
+                       // Somehow this object here cannot be serialized cause 
its abused by OpenJPA
+                       // so get a fresh copy from the entity manager and 
return that
                        return new ServerDTO(s);
                }
 
                log.error("Could not get server for cluster session");
-               //Empty server object
+               // Empty server object
                return null;
        }
        


Reply via email to