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;
}
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;
}
Aggregations