/* * Jicofo, the Jitsi Conference Focus. * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jitsi.impl.protocol.xmpp; import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.util.*; import org.jivesoftware.smack.*; import java.util.*; /** * Multi user chat implementation stripped to the minimum required by the focus * of Jitsi Meet conference. Uses Smack backend. * * @author Pawel Domas */ public class OperationSetMultiUserChatImpl extends AbstractOperationSetMultiUserChat { /** * The logger. */ private Logger logger = Logger.getLogger(OperationSetMultiUserChatImpl.class); /** * Parent protocol provider. */ private final XmppProtocolProvider protocolProvider; /** * The map of active chat rooms mapped by their names. */ private Map<String, ChatRoomImpl> rooms = new HashMap<String, ChatRoomImpl>(); /** * Creates new instance of {@link OperationSetMultiUserChatImpl}. * * @param protocolProvider parent protocol provider service. */ OperationSetMultiUserChatImpl(XmppProtocolProvider protocolProvider) { this.protocolProvider = protocolProvider; } /** * {@inheritDoc} */ @Override public List<String> getExistingChatRooms() throws OperationFailedException, OperationNotSupportedException { return new ArrayList<String>(rooms.keySet()); } /** * {@inheritDoc} */ @Override public List<ChatRoom> getCurrentlyJoinedChatRooms() { throw new RuntimeException("Not implemented"); } /** * {@inheritDoc} */ @Override public List<String> getCurrentlyJoinedChatRooms( ChatRoomMember chatRoomMember) throws OperationFailedException, OperationNotSupportedException { throw new RuntimeException("Not implemented"); } /** * {@inheritDoc} */ @Override public ChatRoom createChatRoom(String roomName, Map<String, Object> roomProperties) throws OperationFailedException, OperationNotSupportedException { if (rooms.containsKey(roomName)) { throw new OperationFailedException( "Room '" + roomName + "' exists", OperationFailedException.GENERAL_ERROR); } ChatRoomImpl newRoom = new ChatRoomImpl(this, roomName); rooms.put(roomName, newRoom); return newRoom; } /** * {@inheritDoc} */ @Override public ChatRoom findRoom(String roomName) throws OperationFailedException, OperationNotSupportedException { ChatRoom room = rooms.get(roomName); if (room == null) { room = createChatRoom(roomName, null); } return room; } /** * {@inheritDoc} */ @Override public void rejectInvitation(ChatRoomInvitation invitation, String rejectReason) { throw new RuntimeException("Not implemented"); } /** * {@inheritDoc} */ @Override public boolean isMultiChatSupportedByContact(Contact contact) { throw new RuntimeException("Not implemented"); } /** * {@inheritDoc} */ @Override public boolean isPrivateMessagingContact(String contactAddress) { throw new RuntimeException("Not implemented"); } /** * Returns Smack connection object used by parent protocol provider service. */ public Connection getConnection() { return protocolProvider.getConnection(); } /** * Returns parent protocol provider service. */ public XmppProtocolProvider getProtocolProvider() { return protocolProvider; } }