/**
* Copyright (C) 2013 Alexander Szczuczko
*
* This file may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
package ca.szc.keratin.bot;
import java.util.LinkedList;
import java.util.List;
import ca.szc.keratin.core.net.IrcConnection.SslMode;
/**
* Facilitates easier management of multiple bots
*/
public class MultiBotManager
{
private String user;
private String nick;
private String realName;
private String serverAddress;
private int serverPort;
private SslMode sslMode;
private Channel[] initialChannels;
private final List<KeratinBot> botList;
/**
* Init with no default values.
*/
public MultiBotManager()
{
botList = new LinkedList<KeratinBot>();
}
/**
* Init with default values.
*
* @param user
* @param nick
* @param realName
* @param serverAddress
* @param serverPort
* @param sslEnabled
*/
public MultiBotManager( String user, String nick, String realName, String serverAddress, int serverPort,
SslMode sslMode, String[] initialChannels )
{
this();
setUser( user );
setNick( nick );
setRealName( realName );
setServerAddress( serverAddress );
setServerPort( serverPort );
setSslMode( sslMode );
}
/**
* Create a new bot using default values.
*
* @return A reference to the new bot, also stored internally.
* @throws NullPointerException if one or more parameters have no defined default values
*/
public KeratinBot newBot()
{
return newBot( user, nick, realName, serverAddress, serverPort, sslMode, initialChannels );
}
/**
* Create a new bot without using default values.
*
* @return A reference to the new bot, also stored internally.
*/
public KeratinBot newBot( String user, String nick, String realName, String serverAddress, int serverPort,
SslMode sslMode, Channel[] initialChannels )
{
KeratinBot bot = new KeratinBot( user, nick, realName, serverAddress, serverPort, sslMode, initialChannels );
botList.add( bot );
return bot;
}
/**
* Call connect() on all established bots.
*/
public void connectAll()
{
for ( KeratinBot bot : botList )
{
bot.connect();
}
}
public String getNick()
{
return nick;
}
public String getRealName()
{
return realName;
}
public String getServerAddress()
{
return serverAddress;
}
public int getServerPort()
{
return serverPort;
}
public String getUser()
{
return user;
}
public SslMode getSslMode()
{
return sslMode;
}
public void setNick( String nick )
{
this.nick = nick;
}
public void setRealName( String realName )
{
this.realName = realName;
}
public void setServerAddress( String serverAddress )
{
this.serverAddress = serverAddress;
}
public void setServerPort( int serverPort )
{
this.serverPort = serverPort;
}
public void setSslMode( SslMode sslMode )
{
this.sslMode = sslMode;
}
public void setUser( String user )
{
this.user = user;
}
public Channel[] getInitialChannels()
{
return initialChannels;
}
public void setInitialChannels( Channel[] initialChannels )
{
this.initialChannels = initialChannels;
}
}