Search in sources :

Example 16 with Client

use of org.apache.openmeetings.db.entity.basic.Client in project openmeetings by apache.

the class RoomResourceReference method getFileItem.

@Override
protected FileItem getFileItem(Attributes attr) {
    PageParameters params = attr.getParameters();
    StringValue _id = params.get("id");
    String uid = params.get("uid").toString();
    Long id = null;
    try {
        id = _id.toOptionalLong();
    } catch (NumberFormatException e) {
    // no-op expected
    }
    WebSession ws = WebSession.get();
    Client c = cm.get(uid);
    if (id == null || !ws.isSignedIn() || c == null) {
        return null;
    }
    FileItem f = (FileItem) fileDao.getAny(id);
    if (f == null) {
        return null;
    }
    String ruid = params.get("ruid").toString();
    String wuid = params.get("wuid").toString();
    if (c.getRoom() != null) {
        Whiteboards wbs = wbManager.get(c.getRoom().getId());
        if (!Strings.isEmpty(wuid) && !Strings.isEmpty(ruid) && ruid.equals(wbs.getUid())) {
            for (Entry<Long, Whiteboard> e : wbs.getWhiteboards().entrySet()) {
                JSONObject file = e.getValue().get(wuid);
                if (file != null && f.getId().equals(file.optLong(ATTR_FILE_ID))) {
                    // item IS on WB
                    return f;
                }
            }
        }
    }
    if (f.getGroupId() != null && groupUserDao.isUserInGroup(f.getGroupId(), getUserId())) {
        return f;
    }
    return null;
}
Also used : FileItem(org.apache.openmeetings.db.entity.file.FileItem) WebSession(org.apache.openmeetings.web.app.WebSession) Whiteboards(org.apache.openmeetings.db.dto.room.Whiteboards) JSONObject(com.github.openjson.JSONObject) PageParameters(org.apache.wicket.request.mapper.parameter.PageParameters) StringValue(org.apache.wicket.util.string.StringValue) Client(org.apache.openmeetings.db.entity.basic.Client) Whiteboard(org.apache.openmeetings.db.dto.room.Whiteboard)

Example 17 with Client

use of org.apache.openmeetings.db.entity.basic.Client in project openmeetings by apache.

the class StreamClientManager method update.

@Override
public StreamClient update(StreamClient rcl, boolean forceSize) {
    if (rcl == null) {
        return null;
    }
    Client client = clientManager.getBySid(rcl.getSid());
    if (client == null) {
        if (Client.Type.mobile == rcl.getType()) {
            Sessiondata sd = sessionDao.check(rcl.getSid());
            User u = userDao.get(sd.getUserId());
            rcl = mobileService.create(rcl, u);
            // Mobile client enters the room
            client = new Client(rcl, userDao.get(rcl.getUserId()));
            clientManager.add(client);
            if (rcl.getRoomId() != null) {
                client.setCam(0);
                client.setMic(0);
                client.setRoom(roomDao.get(rcl.getRoomId()));
                clientManager.add(client);
                WebSocketHelper.sendRoom(new RoomMessage(client.getRoom().getId(), client, RoomMessage.Type.roomEnter));
            }
        } else if (client == null && Client.Type.sip == rcl.getType()) {
            rcl.setLogin(SIP_USER_NAME);
            rcl.setUserId(SIP_USER_ID);
            // SipTransport enters the room
            User u = new User();
            u.setId(SIP_USER_ID);
            u.setLogin(SIP_USER_NAME);
            u.setFirstname(SIP_FIRST_NAME);
            client = new Client(rcl, u);
            clientManager.add(client);
            client.setCam(0);
            client.setMic(0);
            client.allow(Room.Right.audio, Room.Right.video);
            client.set(Activity.broadcastA);
            clientManager.addToRoom(client);
            WebSocketHelper.sendRoom(new RoomMessage(client.getRoom().getId(), client, RoomMessage.Type.roomEnter));
        } else {
            return null;
        }
    }
    if (rcl.getRoomId() == null || !rcl.getRoomId().equals(client.getRoom().getId())) {
        return null;
    }
    User u = client.getUser();
    rcl.setUserId(u.getId());
    rcl.setLogin(u.getLogin());
    rcl.setFirstname(u.getFirstname());
    rcl.setLastname(u.getLastname());
    rcl.setEmail(u.getAddress() == null ? null : u.getAddress().getEmail());
    rcl.setSuperMod(client.hasRight(Right.superModerator));
    rcl.setMod(client.hasRight(Right.moderator));
    if (client.hasActivity(Activity.broadcastA) && !client.isMicEnabled()) {
        client.remove(Activity.broadcastA);
    }
    if (client.hasActivity(Activity.broadcastV) && !client.isCamEnabled()) {
        client.remove(Activity.broadcastV);
    }
    if (client.hasActivity(Activity.broadcastA) || client.hasActivity(Activity.broadcastV)) {
        if (forceSize || rcl.getWidth() == 0 || rcl.getHeight() == 0) {
            rcl.setWidth(client.getWidth());
            rcl.setHeight(client.getHeight());
        }
        if (client.getPod() != Pod.none) {
            rcl.setInterviewPodId(client.getPod() == Pod.left ? 1 : 2);
        }
        StringBuilder sb = new StringBuilder();
        if (client.hasActivity(Activity.broadcastA)) {
            sb.append('a');
        }
        if (client.hasActivity(Activity.broadcastV)) {
            sb.append('v');
        }
        if (!rcl.isBroadcasting() || hasVideo(rcl) != hasVideo(client)) {
            rcl.setBroadcasting(true);
        }
        rcl.setAvsettings(sb.toString());
    } else {
        rcl.setAvsettings("n");
        rcl.setBroadcasting(false);
    }
    clientManager.update(client);
    streamClientManager.update(rcl);
    return rcl;
}
Also used : User(org.apache.openmeetings.db.entity.user.User) RoomMessage(org.apache.openmeetings.db.util.ws.RoomMessage) Sessiondata(org.apache.openmeetings.db.entity.server.Sessiondata) IClient(org.apache.openmeetings.db.entity.basic.IClient) StreamClient(org.apache.openmeetings.db.entity.room.StreamClient) Client(org.apache.openmeetings.db.entity.basic.Client)

Aggregations

Client (org.apache.openmeetings.db.entity.basic.Client)17 JSONObject (com.github.openjson.JSONObject)5 User (org.apache.openmeetings.db.entity.user.User)5 Whiteboard (org.apache.openmeetings.db.dto.room.Whiteboard)3 IClient (org.apache.openmeetings.db.entity.basic.IClient)3 Room (org.apache.openmeetings.db.entity.room.Room)3 RoomMessage (org.apache.openmeetings.db.util.ws.RoomMessage)3 Whiteboards (org.apache.openmeetings.db.dto.room.Whiteboards)2 TextRoomMessage (org.apache.openmeetings.db.util.ws.TextRoomMessage)2 JSONArray (com.github.openjson.JSONArray)1 BufferedImage (java.awt.image.BufferedImage)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 InputStream (java.io.InputStream)1 HashSet (java.util.HashSet)1 Entry (java.util.Map.Entry)1 Set (java.util.Set)1 IWsClient (org.apache.openmeetings.db.entity.basic.IWsClient)1 FileItem (org.apache.openmeetings.db.entity.file.FileItem)1 Recording (org.apache.openmeetings.db.entity.record.Recording)1