
uk.org.retep.xmpp.muc.builder.MucRoomMemberBuilder Maven / Gradle / Ivy
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package uk.org.retep.xmpp.muc.builder;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import uk.org.retep.util.builder.StringBuilder;
import uk.org.retep.util.builder.impl.AbstractBuilder;
import uk.org.retep.xmpp.builder.JIDBuilder;
import uk.org.retep.xmpp.muc.MucAuthenticator;
import uk.org.retep.xmpp.muc.MucRoomMember;
import uk.org.retep.xmpp.muc.beans.BasicMucAuthenticator;
import uk.org.retep.xmpp.muc.beans.BasicMucRoomMember;
import uk.org.retep.xmpp.util.Affiliation;
import uk.org.retep.xmpp.util.Role;
/**
* Builds a {@link MucAuthenticator}.
*
* The default implementation simply returns a new {@link BasicMucAuthenticator}
* but this builder exists to allow subclasses to implement their own implementation
*
* @param Type of subclass
* @author peter
*/
public class MucRoomMemberBuilder
extends AbstractBuilder
{
private JIDBuilder jidBuilder;
private Affiliation affilitation = Affiliation.NONE;
private Role role = Role.VISITOR;
private StringBuilder nickNameBuilder = null;
@Nonnull
public final B setJidBuilder( @Nonnull final JIDBuilder jidBuilder )
{
this.jidBuilder = jidBuilder;
return getThis();
}
@Nonnull
public final B setAffilitation( @Nullable final Affiliation affilitation )
{
this.affilitation = affilitation == null ? Affiliation.NONE : affilitation;
return getThis();
}
@Nonnull
public final B setRole( @Nullable final Role role )
{
this.role = role == null ? Role.NONE : role;
return getThis();
}
@Nonnull
public final B setNickName( final String nickName )
{
return setNickNameBuilder( new StringBuilder( nickName ) );
}
@Nonnull
public final B setNickNameBuilder(
@Nullable final StringBuilder nickNameBuilder )
{
this.nickNameBuilder = nickNameBuilder;
return getThis();
}
@Nonnull
protected final Affiliation getAffilitation()
{
return affilitation;
}
@Nonnull
protected final Role getRole()
{
return role;
}
@Nullable
protected final StringBuilder getNickNameBuilder()
{
return nickNameBuilder;
}
@Nonnull
@Override
public MucRoomMember build()
{
final MucRoomMember member = new BasicMucRoomMember();
member.setJID( jidBuilder.build() );
member.setAffiliation( affilitation );
member.setRole( role );
member.setNickname( build( nickNameBuilder ) );
return member;
}
/**
* Subclasses must implement this to create a specific implementation
*
* @return implementation of {@link MucRoomMember}
*/
@Nonnull
protected MucRoomMember createNewInstance()
{
return new BasicMucRoomMember();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy