All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.org.retep.xmpp.muc.builder.MucRoomLogicBuilder Maven / Gradle / Ivy

There is a newer version: 10.6
Show newest version
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package uk.org.retep.xmpp.muc.builder;

import uk.org.retep.xmpp.builder.AbstractProtocolLogicSetBuilder;
import uk.org.retep.xmpp.builder.XMPPLogicBuilder;
import uk.org.retep.xmpp.muc.MucRoom;
import uk.org.retep.xmpp.muc.MucService;
import uk.org.retep.xmpp.muc.logic.RoomQueryLogic;
import uk.org.retep.xmpp.muc.room.JoinExistingRoomLogic;
import uk.org.retep.xmpp.muc.room.LeaveRoomLogic;
import uk.org.retep.xmpp.muc.room.relay.BasicMessageRelayLogic;

/**
 * {@link XMPPLogicBuilder} implementation for building logic for handling rooms
 * that currently exist
 * 
 * @author peter
 * @since 9.12
 */
public class MucRoomLogicBuilder
        extends AbstractProtocolLogicSetBuilder
{

    /**
     * Use {@link MucServiceBuilder#getMucRoomLogicBuilder()
     */
    public MucRoomLogicBuilder()
    {
    }

    /**
     * Adds the various components needed for a basic Muc implementation.
     *
     * @param  Type of this builder
     * @return this instance
     */
    @Override
    public  T addDefaultLogic()
    {
        addBasicMessageRelayLogic();
        addLeaveRoomLogic();
        addJoinExistingRoomLogic();
        addRoomInfoQuery();
        addRoomItemsQuery();
        @SuppressWarnings( "unchecked" )
        final T ret = (T) this;
        return ret;
    }

    /**
     * Adds a Basic message relay algorithm to the service - i.e. one message
     * per room occupant is sent
     *
     * @return this instance
     */
    public MucRoomLogicBuilder addBasicMessageRelayLogic()
    {
        return addXMPPLogic( BasicMessageRelayLogic.getInstance() );
    }

    /**
     * Adds logic to enable a room occupant to leave a room
     *
     * @return this instance
     */
    public MucRoomLogicBuilder addLeaveRoomLogic()
    {
        return addXMPPLogic( LeaveRoomLogic.getInstance() );
    }

    /**
     * Adds logic to allow a user to enter a room
     *
     * @return this instance
     */
    public MucRoomLogicBuilder addJoinExistingRoomLogic()
    {
        return addXMPPLogic( JoinExistingRoomLogic.getInstance() );
    }

    /**
     * Adds logic to enable a client to query a rooms information
     *
     * @return this instance
     */
    public MucRoomLogicBuilder addRoomInfoQuery()
    {
        return addXMPPLogic( RoomQueryLogic.ROOM_INFO );
    }

    /**
     * Adds logic to enable a client to query a room's items - specifically
     * the members of a room
     *
     * @return this instance
     */
    public MucRoomLogicBuilder addRoomItemsQuery()
    {
        return addXMPPLogic( RoomQueryLogic.ROOM_ITEMS );
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy