if (room.isPersistent() && room.wasSavedToDB()) { if (MUCRole.Affiliation.member == oldAffiliation) { con = DbConnectionManager.getConnection(); pstmt = con.prepareStatement(DELETE_MEMBER); pstmt.setLong(1, room.getID()); pstmt.setString(2, affiliationJID); pstmt.executeUpdate(); con = DbConnectionManager.getConnection(); pstmt = con.prepareStatement(DELETE_AFFILIATION); pstmt.setLong(1, room.getID()); pstmt.setString(2, affiliationJID); pstmt.executeUpdate();
Map<String, String> roomConfig = getRoomConfig(room.getName()); if (roomConfig != null) { room.setNaturalLanguageName(roomConfig.get("muc#roomconfig_roomname")); room.setDescription(roomConfig.get("muc#roomconfig_roomdesc")); room.setCanOccupantsChangeSubject("1".equals(roomConfig.get("muc#roomconfig_changesubject"))); room.setMaxUsers(Integer.parseInt(roomConfig.get("muc#roomconfig_maxusers"))); room.setPublicRoom("1".equals(roomConfig.get("muc#roomconfig_publicroom"))); room.setCanOccupantsInvite("1".equals(roomConfig.get("muc#roomconfig_allowinvites"))); room.setCanAnyoneDiscoverJID("anyone".equals(roomConfig.get("muc#roomconfig_whois"))); room.setCanSendPrivateMessage( roomConfig.get("muc#roomconfig_allowpm") ); room.setChangeNickname("1".equals(roomConfig.get("x-muc#roomconfig_canchangenick"))); room.setRegistrationEnabled("1".equals(roomConfig.get("x-muc#roomconfig_registration"))); room.setPersistent("1".equals(roomConfig.get("muc#roomconfig_persistentroom"))); for (String jid : jids) { if (jid != null && jid.trim().length() != 0) { room.addFirstOwner(new JID(jid.trim().toLowerCase()).asBareJID()); room.unlock(room.getRole()); } catch (ForbiddenException e) { return false;
if (room != null) { features.add("http://jabber.org/protocol/muc"); if (room.isPublicRoom()) { features.add("muc_public"); } else { features.add("muc_hidden"); if (room.isMembersOnly()) { features.add("muc_membersonly"); features.add("muc_open"); if (room.isModerated()) { features.add("muc_moderated"); features.add("muc_unmoderated"); if (room.canAnyoneDiscoverJID()) { features.add("muc_nonanonymous"); features.add("muc_semianonymous"); if (room.isPasswordProtected()) { features.add("muc_passwordprotected"); if (room.isPersistent()) { features.add("muc_persistent");
public void cleanupRooms(Date cleanUpDate) { for (MUCRoom room : getRooms()) { if (room.getEmptyDate() != null && room.getEmptyDate().before(cleanUpDate)) { removeRoom(room.getName()); } } } }
/** * Updates the room's subject in the database. * * @param room the room to update its subject in the database. */ public static void updateRoomSubject(MUCRoom room) { if (!room.isPersistent() || !room.wasSavedToDB()) { return; } Connection con = null; PreparedStatement pstmt = null; try { con = DbConnectionManager.getConnection(); pstmt = con.prepareStatement(UPDATE_SUBJECT); pstmt.setString(1, room.getSubject()); pstmt.setLong(2, room.getID()); pstmt.executeUpdate(); } catch (SQLException sqle) { Log.error(sqle.getMessage(), sqle); } finally { DbConnectionManager.closeConnection(pstmt, con); } }
role = room.joinRoom(recipient.getResource().trim(), password, historyRequest, if (mucInfo == null && room.isLocked() && !room.isManuallyLocked()) { room.unlock(role); role.getChatRoom().leaveRoom(role); || role.getNickname().equalsIgnoreCase(resource)) { role.getChatRoom().presenceUpdated(role, packet); if (role.getChatRoom().getOccupantsByBareJID(packet.getFrom().asBareJID()).size() > 1) { sendErrorPacket(packet, PacketError.Condition.not_acceptable); else if (!role.getChatRoom().canChangeNickname()) { sendErrorPacket(packet, PacketError.Condition.not_acceptable); else if (role.getChatRoom().hasOccupant(resource)) { sendErrorPacket(packet, PacketError.Condition.conflict); frag.element("item").addAttribute("nick", resource); frag.addElement("status").addAttribute("code", "303"); role.getChatRoom().send(presence); role.getChatRoom().nicknameChanged(role, packet, oldNick, resource);
if (name.equalsIgnoreCase(room.getNaturalLanguageName())) if (room.getNaturalLanguageName().toLowerCase().indexOf( name.toLowerCase()) != -1) && room.getSubject().toLowerCase().indexOf( subject.toLowerCase()) != -1) if (numUsers > -1 && room.getParticipants().size() < numUsers) if (numMaxUsers > -1 && room.getMaxUsers() < numMaxUsers) if (!includePasswordProtectedRooms && room.isPasswordProtected()) fields.put("name", room.getNaturalLanguageName()); fields.put(SUBJECT, room.getSubject()); fields.put(NUM_USERS, room.getOccupantsCount()); fields.put(NUM_MAX_USERS, determineMaxUsersDisplay(room.getMaxUsers())); fields.put("is_password_protected", room.isPasswordProtected()); fields.put("is_member_only", room.isMembersOnly()); fields.put("jid", room.getRole().getRoleAddress().toString()); resultform.addItemFields(fields); atLeastoneResult = true;
private void configureRoom(MUCRoom room, String description) Log.debug( "configureRoom " + room.getID()); field.addValue(room.getName()); dataForm.addField(field); for (JID jid : room.getAdmins()) { field.addValue(jid.toString()); room.getIQOwnerHandler().handleIQ(iq, room.getRole());
return reply; else if (!room.isRegistrationEnabled() || (packet.getFrom() != null && MUCRole.Affiliation.outcast == room.getAffiliation(packet.getFrom().asBareJID()))) { String nickname = room.getReservedNickname(packet.getFrom()); Element currentRegistration = probeResult.createCopy(); if (nickname != null) { presences.addAll(room.addNone(packet.getFrom(), room.getRole())); presences.addAll(room.addMember(packet.getFrom(), nickname, room.getRole())); room.send(presence);
if (!room.isPersistent() || !room.wasSavedToDB()) { return; con = DbConnectionManager.getConnection(); pstmt = con.prepareStatement(UPDATE_EMPTYDATE); Date emptyDate = room.getEmptyDate(); if (emptyDate == null) { pstmt.setString(1, null); pstmt.setString(1, StringUtils.dateToMillis(emptyDate)); pstmt.setLong(2, room.getID()); pstmt.executeUpdate();
if (!room.isPersistent() || !room.wasSavedToDB()) { return; con = DbConnectionManager.getTransactionConnection(); pstmt = con.prepareStatement(DELETE_AFFILIATIONS); pstmt.setLong(1, room.getID()); pstmt.executeUpdate(); DbConnectionManager.fastcloseStmt(pstmt); pstmt.setLong(1, room.getID()); pstmt.executeUpdate(); DbConnectionManager.fastcloseStmt(pstmt); pstmt.setLong(1, room.getID()); pstmt.executeUpdate(); room.setSavedToDB(false);
if (!loadedRoom.getRoomHistory().hasChangedSubject() && loadedRoom.getSubject() != null && loadedRoom.getSubject().length() > 0) loadedRoom.getRoomHistory().addOldMessage( loadedRoom.getRole().getRoleAddress().toString(), null, loadedRoom.getModificationDate(), loadedRoom.getSubject(), null, null);
answer.add(new DiscoItem(room.getRole().getRoleAddress(), room.getNaturalLanguageName(), null, null)); for (MUCRole role : room.getOccupants()) {
fromJID.equals(room.getRole().getRoleAddress()))) { return; if (isNonAnonymousRoom != room.canAnyoneDiscoverJID()) { isNonAnonymousRoom = room.canAnyoneDiscoverJID(); Message message = it.next(); Element delayElement = message.getChildElement("delay", "urn:xmpp:delay"); if (room.canAnyoneDiscoverJID()) { MUCRole role = room.getOccupant(message.getFrom().getResource()); delayElement.addAttribute("from", role.getUserAddress().toString()); Date current = new Date(); delayInformation.addAttribute("stamp", XMPPDateTimeFormat.format(current)); if (room.canAnyoneDiscoverJID()) { MUCRole role = room.getOccupant(packet.getFrom().getResource()); delayInformation.addAttribute("from", role.getUserAddress().toString());
try { role.getChatRoom().sendPrivatePacket(packet, role); if (query != null && "http://jabber.org/protocol/muc#owner".equals(query.getNamespaceURI())) { role.getChatRoom().getIQOwnerHandler().handleIQ(packet, role); role.getChatRoom().getIQAdminHandler().handleIQ(packet, role); role.getChatRoom().sendPrivatePacket( packet, role );
JID roomJID = room.getRole().getRoleAddress(); message.setFrom(room.getRole().getRoleAddress()); if (room.canAnyoneDiscoverJID()) { delayInformation.addAttribute("from", room.getRole().getRoleAddress().toString());
@Override public JID getRoleAddress() { if (crJID == null) { crJID = new JID(room.getName(), mucService.getServiceDomain(), null, true); } return crJID; }
/** * Returns the reserved room nickname for the bare JID in a given room or null if none. * * @param room the room where the user would like to obtain his reserved nickname. * @param bareJID The bare jid of the user of which you'd like to obtain his reserved nickname. * @return the reserved room nickname for the bare JID or null if none. */ public static String getReservedNickname(MUCRoom room, String bareJID) { Connection con = null; PreparedStatement pstmt = null; ResultSet rs = null; String answer = null; try { con = DbConnectionManager.getConnection(); pstmt = con.prepareStatement(GET_RESERVED_NAME); pstmt.setLong(1, room.getID()); pstmt.setString(2, bareJID); rs = pstmt.executeQuery(); if (rs.next()) { answer = rs.getString(1); } } catch (SQLException sqle) { Log.error(sqle.getMessage(), sqle); } finally { DbConnectionManager.closeConnection(rs, pstmt, con); } return answer; }
public MUCRoomHistory(MUCRoom mucRoom, HistoryStrategy historyStrategy) { this.room = mucRoom; this.isNonAnonymousRoom = mucRoom.canAnyoneDiscoverJID(); this.historyStrategy = historyStrategy; }
/** * Returns an integer based on the binary representation of the roles to broadcast. * * @param room the room to marshall its roles to broadcast. * @return an integer based on the binary representation of the roles to broadcast. */ private static int marshallRolesToBroadcast(MUCRoom room) { StringBuilder buffer = new StringBuilder(); buffer.append((room.canBroadcastPresence("moderator") ? "1" : "0")); buffer.append((room.canBroadcastPresence("participant") ? "1" : "0")); buffer.append((room.canBroadcastPresence("visitor") ? "1" : "0")); return Integer.parseInt(buffer.toString(), 2); }