Package org.openmeetings.app.remote

Source Code of org.openmeetings.app.remote.ConferenceService

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License") +  you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.openmeetings.app.remote;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;

import org.openmeetings.app.OpenmeetingsVariables;
import org.openmeetings.app.conference.session.RoomClient;
import org.openmeetings.app.data.basic.AuthLevelmanagement;
import org.openmeetings.app.data.basic.Sessionmanagement;
import org.openmeetings.app.data.beans.basic.SearchResult;
import org.openmeetings.app.data.calendar.management.AppointmentLogic;
import org.openmeetings.app.data.conference.Roommanagement;
import org.openmeetings.app.data.conference.dao.RoomModeratorsDaoImpl;
import org.openmeetings.app.data.user.Usermanagement;
import org.openmeetings.app.persistence.beans.calendar.Appointment;
import org.openmeetings.app.persistence.beans.rooms.RoomModerators;
import org.openmeetings.app.persistence.beans.rooms.RoomTypes;
import org.openmeetings.app.persistence.beans.rooms.Rooms;
import org.openmeetings.app.persistence.beans.rooms.Rooms_Organisation;
import org.openmeetings.app.persistence.beans.user.Users;
import org.openmeetings.app.remote.red5.ClientListManager;
import org.openmeetings.utils.math.CalendarPatterns;
import org.openmeetings.utils.math.TimezoneUtil;
import org.red5.logging.Red5LoggerFactory;
import org.red5.server.api.IConnection;
import org.red5.server.api.Red5;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;

/**
*
* @author swagner
*
*/
public class ConferenceService {

  private static final Logger log = Red5LoggerFactory.getLogger(
      ConferenceService.class, OpenmeetingsVariables.webAppRootKey);

  @Autowired
  private AppointmentLogic appointmentLogic;
  @Autowired
  private Sessionmanagement sessionManagement;
  @Autowired
  private Usermanagement userManagement;
  @Autowired
  private Roommanagement roommanagement;
  @Autowired
  private RoomModeratorsDaoImpl roomModeratorsDao;
  @Autowired
  private AuthLevelmanagement authLevelManagement;
  @Autowired
  private TimezoneUtil timezoneUtil;
  @Autowired
  private ClientListManager clientListManager = null;

  /**
   * ( get a List of all availible Rooms of this organisation
   * (non-appointments)
   *
   * @param SID
   * @param organisation_id
   * @return
   */
  public List<Rooms_Organisation> getRoomsByOrganisationAndType(String SID,
      long organisation_id, long roomtypes_id) {
    try {
      Long users_id = sessionManagement.checkSession(SID);
      Long user_level = userManagement.getUserLevelByID(users_id);

      log.debug("getRoomsByOrganisationAndType");

      if (user_level == null) {
        return null;
      }
      List<Rooms_Organisation> roomOrgsList = roommanagement
          .getRoomsOrganisationByOrganisationIdAndRoomType(
              user_level, organisation_id, roomtypes_id);

      List<Rooms_Organisation> filtered = new ArrayList<Rooms_Organisation>();

      for (Iterator<Rooms_Organisation> iter = roomOrgsList.iterator(); iter
          .hasNext();) {
        Rooms_Organisation orgRoom = iter.next();

        if (!orgRoom.getRoom().getAppointment()) {
          orgRoom.getRoom().setCurrentusers(
              this.getRoomClientsListByRoomId(orgRoom.getRoom()
                  .getRooms_id()));
          filtered.add(orgRoom);
        }
      }
      return filtered;
    } catch (Exception err) {
      log.error("[getRoomsByOrganisationAndType]", err);
    }
    return null;
  }

  public List<Rooms_Organisation> getRoomsByOrganisationWithoutType(
      String SID, long organisation_id) {
    try {
      Long users_id = sessionManagement.checkSession(SID);
      Long user_level = userManagement.getUserLevelByID(users_id);

      log.debug("getRoomsByOrganisationAndType");

      if (user_level == null) {
        return null;
      }
      List<Rooms_Organisation> roomOrgsList = roommanagement
          .getRoomsOrganisationByOrganisationId(user_level,
              organisation_id);

      if (roomOrgsList == null) {
        return null;
      }

      List<Rooms_Organisation> filtered = new ArrayList<Rooms_Organisation>();

      for (Iterator<Rooms_Organisation> iter = roomOrgsList.iterator(); iter
          .hasNext();) {
        Rooms_Organisation orgRoom = iter.next();

        if (!orgRoom.getRoom().getAppointment()) {
          orgRoom.getRoom().setCurrentusers(
              this.getRoomClientsListByRoomId(orgRoom.getRoom()
                  .getRooms_id()));
          filtered.add(orgRoom);
        }
      }
      return filtered;
    } catch (Exception err) {
      log.error("[getRoomsByOrganisationAndType]", err);
    }
    return null;
  }

  /**
   * gets all rooms of an organisation TODO:check if the requesting user is
   * also member of that organisation
   *
   * @param SID
   * @param organisation_id
   * @return
   */
  public SearchResult<Rooms_Organisation> getRoomsByOrganisation(String SID,
      long organisation_id, int start, int max, String orderby,
      boolean asc) {

    log.debug("getRoomsByOrganisation");

    Long user_id = sessionManagement.checkSession(SID);
    Long user_level = userManagement.getUserLevelByIdAndOrg(user_id,
        organisation_id);

    return roommanagement.getRoomsOrganisationByOrganisationId(user_level,
        organisation_id, start, max, orderby, asc);
  }

  /**
   * get a List of all public availible rooms (non-appointments)
   *
   * @param SID
   * @param organisation_id
   * @return
   */
  public List<Rooms> getRoomsPublic(String SID, Long roomtypes_id) {
    try {
      log.debug("getRoomsPublic");

      Long users_id = sessionManagement.checkSession(SID);
      Long User_level = userManagement.getUserLevelByID(users_id);
      log.error("getRoomsPublic user_level: " + User_level);

      List<Rooms> roomList = roommanagement.getPublicRooms(User_level,
          roomtypes_id);

      // Filter : no appointed meetings
      List<Rooms> filtered = new ArrayList<Rooms>();

      for (Iterator<Rooms> iter = roomList.iterator(); iter.hasNext();) {
        Rooms rooms = iter.next();

        if (!rooms.getAppointment()) {
          rooms.setCurrentusers(this.getRoomClientsListByRoomId(rooms
              .getRooms_id()));
          filtered.add(rooms);
        }
      }

      return filtered;
    } catch (Exception err) {
      log.error("[getRoomsByOrganisationAndType]", err);
    }
    return null;
  }

  public List<Rooms> getRoomsPublicWithoutType(String SID) {
    try {

      Long users_id = sessionManagement.checkSession(SID);
      Long user_level = userManagement.getUserLevelByID(users_id);
      log.debug("getRoomsPublic user_level: " + user_level);

      List<Rooms> roomList = roommanagement
          .getPublicRoomsWithoutType(user_level);

      if (roomList == null) {
        return null;
      }

      // Filter : no appointed meetings
      List<Rooms> filtered = new ArrayList<Rooms>();

      for (Iterator<Rooms> iter = roomList.iterator(); iter.hasNext();) {
        Rooms rooms = iter.next();

        if (!rooms.getAppointment()) {
          rooms.setCurrentusers(this.getRoomClientsListByRoomId(rooms
              .getRooms_id()));
          filtered.add(rooms);
        }
      }

      return filtered;
    } catch (Exception err) {
      log.error("[getRoomsPublicWithoutType]", err);
    }
    return null;
  }

  /**
   * retrieving ServerTime
   *
   * @return
   */
  // --------------------------------------------------------------------------------------------
  public Date getServerTime() {
    log.debug("getServerTime");

    return new Date(System.currentTimeMillis());

  }

  // --------------------------------------------------------------------------------------------

  /**
   *
   * retrieving Appointment for Room
   *
   * @author o.becherer
   *
   */
  // --------------------------------------------------------------------------------------------
  public Appointment getAppointMentDataForRoom(Long room_id) {
    log.debug("getAppointMentDataForRoom");

    Rooms room = roommanagement.getRoomById(room_id);

    if (room.getAppointment() == false)
      return null;

    try {
      Appointment ment = appointmentLogic.getAppointmentByRoom(room_id);

      return ment;
    } catch (Exception e) {
      log.error("getAppointMentDataForRoom " + e.getMessage());
      return null;
    }

  }

  // --------------------------------------------------------------------------------------------

  public Map<String, Object> getAppointMentAndTimeZones(Long room_id) {
    try {
      log.debug("getAppointMentDataForRoom");
     
      IConnection current = Red5.getConnectionLocal();
      String streamid = current.getClient().getId();
 
      log.debug("getCurrentRoomClient -2- " + streamid);
 
      RoomClient currentClient = this.clientListManager
          .getClientByStreamId(streamid);
 
      Rooms room = roommanagement.getRoomById(room_id);
 
      if (room.getAppointment() == false) {
        throw new IllegalStateException("Room has no appointment");
      }
   
      Appointment appointment = appointmentLogic
          .getAppointmentByRoom(room_id);

      Map<String, Object> returnMap = new HashMap<String, Object>();

      returnMap.put("appointment", appointment);

      Users us = userManagement.getUserById(currentClient.getUser_id());
      TimeZone timezone = timezoneUtil.getTimezoneByUser(us);

      returnMap.put("appointment", appointment);

      returnMap.put(
          "start",
          CalendarPatterns.getDateWithTimeByMiliSeconds(
              appointment.getAppointmentStarttime(), timezone));
      returnMap.put(
          "end",
          CalendarPatterns.getDateWithTimeByMiliSeconds(
              appointment.getAppointmentEndtime(), timezone));
      returnMap.put("timeZone", timezone.getDisplayName());

      return returnMap;
    } catch (Exception e) {
      log.error("getAppointMentAndTimeZones " , e );
      return null;
    }

  }

  /**
   *
   */
  // --------------------------------------------------------------------------------------------
  public List<Rooms> getAppointedMeetings(String SID, Long room_types_id) {
    log.debug("ConferenceService.getAppointedMeetings");

    Long users_id = sessionManagement.checkSession(SID);
    Long user_level = userManagement.getUserLevelByID(users_id);

    if (authLevelManagement.checkUserLevel(user_level)) {

      List<Appointment> points = appointmentLogic
          .getTodaysAppointmentsForUser(users_id);
      List<Rooms> result = new ArrayList<Rooms>();

      if (points != null) {
        for (int i = 0; i < points.size(); i++) {
          Appointment ment = points.get(i);

          Long rooms_id = ment.getRoom().getRooms_id();
          Rooms rooom = roommanagement.getRoomById(rooms_id);

          if (!rooom.getRoomtype().getRoomtypes_id()
              .equals(room_types_id))
            continue;

          rooom.setCurrentusers(getRoomClientsListByRoomId(rooom
              .getRooms_id()));
          result.add(rooom);
        }
      }

      log.debug("Found " + result.size() + " rooms");
      return result;

    } else {
      return null;
    }

  }

  // --------------------------------------------------------------------------------------------

  public List<Rooms> getAppointedMeetingRoomsWithoutType(String SID) {
    log.debug("ConferenceService.getAppointedMeetings");
    try {
      Long users_id = sessionManagement.checkSession(SID);
      Long user_level = userManagement.getUserLevelByID(users_id);

      if (authLevelManagement.checkUserLevel(user_level)) {
        List<Appointment> appointments = appointmentLogic
            .getTodaysAppointmentsForUser(users_id);
        List<Rooms> result = new ArrayList<Rooms>();

        if (appointments != null) {
          for (int i = 0; i < appointments.size(); i++) {
            Appointment ment = appointments.get(i);

            Long rooms_id = ment.getRoom().getRooms_id();
            Rooms rooom = roommanagement.getRoomById(rooms_id);

            rooom.setCurrentusers(this
                .getRoomClientsListByRoomId(rooom.getRooms_id()));
            result.add(rooom);
          }
        }

        log.debug("Found " + result.size() + " rooms");
        return result;
      }
    } catch (Exception err) {
      log.error("[getAppointedMeetingRoomsWithoutType]", err);
    }
    return null;
  }

  /**
   *
   * @param SID
   * @return
   */
  public List<RoomTypes> getRoomTypes(String SID) {
    Long users_id = sessionManagement.checkSession(SID);

    log.debug("users_id " + users_id);

    Long user_level = userManagement.getUserLevelByID(users_id);

    return roommanagement.getAllRoomTypes(user_level);
  }

  /**
   *
   * @param SID
   * @param rooms_id
   * @return
   */
  public Rooms getRoomById(String SID, long rooms_id) {
    Long users_id = sessionManagement.checkSession(SID);
    Long user_level = userManagement.getUserLevelByID(users_id);
    return roommanagement.getRoomById(user_level, rooms_id);
  }

  public Rooms getRoomWithCurrentUsersById(String SID, long rooms_id) {
    Long users_id = sessionManagement.checkSession(SID);
    Long user_level = userManagement.getUserLevelByID(users_id);
    return roommanagement.getRoomById(user_level, rooms_id);
  }

  /**
   *
   * @param SID
   * @param rooms_id
   * @return
   */
  public Rooms getRoomByExternalId(String SID, Long externalUserId,
      String externalUserType, long roomtypes_id) {
    Long users_id = sessionManagement.checkSession(SID);
    Long user_level = userManagement.getUserLevelByID(users_id);
    return roommanagement.getRoomByExternalId(user_level, externalUserId,
        externalUserType, roomtypes_id);
  }

  /**
   * gets a list of all availible rooms
   *
   * @param SID
   * @param start
   * @param max
   * @param orderby
   * @param asc
   * @return
   */
  public SearchResult<Rooms> getRooms(String SID, int start, int max,
      String orderby, boolean asc, String search) {
    log.debug("getRooms");

    Long users_id = sessionManagement.checkSession(SID);
    Long user_level = userManagement.getUserLevelByID(users_id);
    return roommanagement.getRooms(user_level, start, max, orderby, asc,
        search);
  }

  public SearchResult<Rooms> getRoomsWithCurrentUsers(String SID, int start,
      int max, String orderby, boolean asc) {
    log.debug("getRooms");

    Long users_id = sessionManagement.checkSession(SID);
    Long user_level = userManagement.getUserLevelByID(users_id);
    return roommanagement.getRoomsWithCurrentUsers(user_level, start, max,
        orderby, asc);
  }

  /**
   * get all Organisations of a room
   *
   * @param SID
   * @param rooms_id
   * @return
   */
  public List<Rooms_Organisation> getOrganisationByRoom(String SID,
      long rooms_id) {
    Long users_id = sessionManagement.checkSession(SID);
    Long user_level = userManagement.getUserLevelByID(users_id);
    return roommanagement.getOrganisationsByRoom(user_level, rooms_id);
  }

  /**
   *
   * @param SID
   * @param name
   * @param roomtypes_id
   * @deprecated
   * @return
   */
  // public Long addRoomPublic(String SID, String name, long roomtypes_id){
  // Long users_id = Sessionmanagement.getInstance().checkSession(SID);
  // Long User_level = userManagement.getUserLevelByID(users_id);
  // return roommanagement.addRoom(User_level, name,
  // roomtypes_id,"", new Long(4), true,null,
  // 290, 280, 2, 2,
  // 400,
  // true, 296, 2, 592, 660,
  // true, 2, 284, 310, 290, false, false, null);
  // }

  /**
   *
   * @param SID
   * @param organisation_id
   * @param name
   * @param roomtypes_id
   * @param ispublic
   * @deprecated
   * @return
   */
  // public Long addRoomOrganisation(String SID, long organisation_id, String
  // name, long roomtypes_id, boolean ispublic){
  // Long users_id = Sessionmanagement.getInstance().checkSession(SID);
  // long User_level = userManagement.getUserLevelByID(users_id);
  // Long rooms_id = roommanagement.addRoom(User_level, name,
  // roomtypes_id,"", new Long(4), ispublic, null,
  // 290, 280, 2, 2,
  // 400,
  // true, 296, 2, 592, 660,
  // true, 2, 284, 310, 290, false, false, null);
  // return roommanagement.addRoomToOrganisation(User_level,
  // rooms_id, organisation_id);
  // }

  /**
   *
   * @param SID
   * @param argObject
   * @return
   */
  public Long saveOrUpdateRoom(String SID, Object argObject) {
    try {
      Long users_id = sessionManagement.checkSession(SID);
      long User_level = userManagement.getUserLevelByID(users_id);
      log.debug("argObject: 1 - " + argObject.getClass().getName());
      @SuppressWarnings("unchecked")
      LinkedHashMap<String, Object> argObjectMap = (LinkedHashMap<String, Object>) argObject;
      log.debug("argObject: 2 - "
          + argObjectMap.get("organisations").getClass().getName());
      @SuppressWarnings("unchecked")
      List<Integer> organisations = (List<Integer>) argObjectMap
          .get("organisations");
      Long rooms_id = Long.valueOf(
          argObjectMap.get("rooms_id").toString()).longValue();
      log.debug("rooms_id " + rooms_id);

      @SuppressWarnings("unchecked")
      List<Map<String, Object>> roomModerators = (List<Map<String, Object>>) argObjectMap
          .get("roomModerators");

      Integer demoTime = null;
      if (argObjectMap.get("demoTime").toString() != null
          && argObjectMap.get("demoTime").toString().length() > 0) {
        demoTime = Integer.valueOf(
            argObjectMap.get("demoTime").toString()).intValue();
      }

      if (rooms_id == 0) {
        return roommanagement.addRoom(
            User_level,
            argObjectMap.get("name").toString(),
            Long.valueOf(
                argObjectMap.get("roomtypes_id").toString())
                .longValue(),
            argObjectMap.get("comment").toString(),
            Long.valueOf(
                argObjectMap.get("numberOfPartizipants")
                    .toString()).longValue(), Boolean
                .valueOf(argObjectMap.get("ispublic")
                    .toString()), organisations, Boolean
                .valueOf(argObjectMap.get("appointment")
                    .toString()), Boolean
                .valueOf(argObjectMap.get("isDemoRoom")
                    .toString()), demoTime, Boolean
                .valueOf(argObjectMap.get("isModeratedRoom")
                    .toString()), roomModerators, Boolean
                .valueOf(argObjectMap.get("allowUserQuestions")
                    .toString()), Boolean
                .valueOf(argObjectMap.get("isAudioOnly")
                    .toString()), Boolean
                .valueOf(argObjectMap.get("isClosed")
                    .toString()),
            argObjectMap.get("redirectURL").toString(),
            argObjectMap.get("sipNumber").toString(), argObjectMap
                .get("conferencePin").toString(),
            Long.valueOf(argObjectMap.get("ownerId").toString())
                .longValue(), Boolean.valueOf(argObjectMap.get(
                "waitForRecording").toString()), Boolean
                .valueOf(argObjectMap.get("allowRecording")
                    .toString()), Boolean
                .valueOf(argObjectMap.get("hideTopBar")
                    .toString()),
                Boolean.valueOf(argObjectMap.get("hideChat").toString()),
                Boolean.valueOf(argObjectMap.get("hideActivitiesAndActions").toString()),
                Boolean.valueOf(argObjectMap.get("hideFilesExplorer").toString()),
                Boolean.valueOf(argObjectMap.get("hideActionsMenu").toString()),
                Boolean.valueOf(argObjectMap.get("hideScreenSharing").toString()),
                Boolean.valueOf(argObjectMap.get("hideWhiteboard").toString()),
                Boolean.valueOf(argObjectMap.get("showMicrophoneStatus").toString())
            );
      } else if (rooms_id > 0) {
        return roommanagement
            .updateRoom(
                User_level,
                rooms_id,
                Long.valueOf(
                    argObjectMap.get("roomtypes_id")
                        .toString()).longValue(),
                argObjectMap.get("name").toString(),
                Boolean.valueOf(argObjectMap.get("ispublic")
                    .toString()),
                argObjectMap.get("comment").toString(),
                Long.valueOf(
                    argObjectMap
                        .get("numberOfPartizipants")
                        .toString()).longValue(),
                organisations,
                Boolean.valueOf(argObjectMap.get("appointment")
                    .toString()),
                Boolean.valueOf(argObjectMap.get("isDemoRoom")
                    .toString()),
                demoTime,
                Boolean.valueOf(argObjectMap.get(
                    "isModeratedRoom").toString()),
                roomModerators,
                Boolean.valueOf(argObjectMap.get(
                    "allowUserQuestions").toString()),
                Boolean.valueOf(argObjectMap.get("isAudioOnly")
                    .toString()),
                Boolean.valueOf(argObjectMap.get("isClosed")
                    .toString()),
                argObjectMap.get("redirectURL").toString(),
                argObjectMap.get("sipNumber").toString(),
                argObjectMap.get("conferencePin").toString(),
                Long.valueOf(
                    argObjectMap.get("ownerId").toString())
                    .longValue(),
                Boolean.valueOf(argObjectMap.get(
                    "waitForRecording").toString()),
                Boolean.valueOf(argObjectMap.get(
                    "allowRecording").toString()),
                Boolean.valueOf(argObjectMap.get("hideTopBar").toString()),
                Boolean.valueOf(argObjectMap.get("hideChat").toString()),
                Boolean.valueOf(argObjectMap.get("hideActivitiesAndActions").toString()),
                Boolean.valueOf(argObjectMap.get("hideFilesExplorer").toString()),
                Boolean.valueOf(argObjectMap.get("hideActionsMenu").toString()),
                Boolean.valueOf(argObjectMap.get("hideScreenSharing").toString()),
                Boolean.valueOf(argObjectMap.get("hideWhiteboard").toString()),
                Boolean.valueOf(argObjectMap.get("showMicrophoneStatus").toString())
                );
                       
      }

    } catch (Exception e) {
      log.error("saveOrUpdateRoom", e);
    }
    return null;
  }

  public List<RoomModerators> getRoomModeratorsByRoomId(String SID,
      Long roomId) {
    try {

      Long users_id = sessionManagement.checkSession(SID);
      long user_level = userManagement.getUserLevelByID(users_id);

      if (authLevelManagement.checkUserLevel(user_level)) {

        return roomModeratorsDao.getRoomModeratorByRoomId(roomId);

      }

    } catch (Exception err) {
      log.error("[getRoomModeratorsByRoomId]", err);
      err.printStackTrace();
    }

    return null;
  }

  /**
   *
   * @param SID
   * @param rooms_id
   * @return
   */
  public Long deleteRoom(String SID, long rooms_id) {
    Long users_id = sessionManagement.checkSession(SID);
    long user_level = userManagement.getUserLevelByID(users_id);
    return roommanagement.deleteRoomById(user_level, rooms_id);
  }
 
  /**
   * return all participants of a room
   *
   * @param room_id
   * @return
   */
  public boolean isRoomFull(Long room_id) {
    try {
      Rooms room = roommanagement.getRoomById(room_id);
     
      if (room.getNumberOfPartizipants() <= this.clientListManager
          .getClientListByRoom(room_id).size()) {
        return true;
      }
     
      return false;
    } catch (Exception err) {
      log.error("[isRoomFull]", err);
    }
    return true;
  }

  /**
   * return all participants of a room
   *
   * @param room_id
   * @return
   */
  public List<RoomClient> getRoomClientsListByRoomId(Long room_id) {
    log.debug("getRoomClientsListByRoomId");
    try {
      LinkedList<RoomClient> clients = new LinkedList<RoomClient>();
      HashMap<String, RoomClient> clientList = clientListManager
          .getClientListByRoom(room_id);
      for (Iterator<String> iter = clientList.keySet().iterator(); iter
          .hasNext();) {
        RoomClient rcl = clientList.get(iter.next());
        clients.add(rcl);
      }
      return clients;
    } catch (Exception err) {
      log.error("[getRoomClientsListByRoomId]", err);
    }
    return null;
  }

  public HashMap<String, RoomClient> getRoomClientsMapByRoomId(Long room_id) {
    try {
      // log.error("getRoomClientsListByRoomId: "+room_id);
      return this.clientListManager.getClientListByRoom(room_id);
    } catch (Exception err) {
      log.error("[getRoomClientsMapByRoomId]", err);
    }
    return null;
  }

  public SearchResult<RoomClient> getRoomClientsMap(String SID, int start, int max,
      String orderby, boolean asc) {
    try {
      Long users_id = sessionManagement.checkSession(SID);
      Long user_level = userManagement.getUserLevelByID(users_id);
      if (authLevelManagement.checkAdminLevel(user_level)) {
        return this.clientListManager.getListByStartAndMax(start, max,
            orderby, asc);
      }
    } catch (Exception err) {
      log.error("[getRoomClientsMap]", err);
    }
    return null;
  }

  public List<Rooms> getRoomsWithCurrentUsersByList(String SID, int start,
      int max, String orderby, boolean asc) {
    log.debug("getRooms");

    Long users_id = sessionManagement.checkSession(SID);
    Long user_level = userManagement.getUserLevelByID(users_id);
    return roommanagement.getRoomsWithCurrentUsersByList(user_level, start,
        max, orderby, asc);
  }

  public List<Rooms> getRoomsWithCurrentUsersByListAndType(String SID,
      int start, int max, String orderby, boolean asc,
      String externalRoomType) {
    log.debug("getRooms");

    Long users_id = sessionManagement.checkSession(SID);
    Long user_level = userManagement.getUserLevelByID(users_id);
    return roommanagement.getRoomsWithCurrentUsersByListAndType(user_level,
        start, max, orderby, asc, externalRoomType);
  }

  public Rooms getRoomByOwnerAndType(String SID, Long roomtypesId,
      String roomName) {
    Long users_id = sessionManagement.checkSession(SID);
    Long user_level = userManagement.getUserLevelByID(users_id);
    if (authLevelManagement.checkUserLevel(user_level)) {
      return roommanagement.getRoomByOwnerAndTypeId(users_id,
          roomtypesId, roomName);
    }
    return null;
  }

}
TOP

Related Classes of org.openmeetings.app.remote.ConferenceService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.