package org.marketcetera.client;
import org.marketcetera.util.misc.ClassVersion;
import org.apache.commons.lang.ObjectUtils;
import java.beans.ConstructorProperties;
import java.util.Arrays;
/* $License$ */
/**
* The set of parameters needed to initialize the client. These parameters
* are provided to the following methods.
* <ul>
* <li>{@link ClientManager#init(ClientParameters)}</li>
* <li>{@link Client#reconnect(ClientParameters)}</li>
* </ul>
*
* @author anshul@marketcetera.com
* @version $Id: ClientParameters.java 16875 2014-04-12 16:12:18Z colin $
* @since 1.0.0
*/
@ClassVersion("$Id: ClientParameters.java 16875 2014-04-12 16:12:18Z colin $")
public class ClientParameters
{
/**
* Gets the user name to use when connecting to the server.
*
* @return the user name.
*/
public String getUsername() {
return mUsername;
}
/**
* The password to use when connecting to the server.
*
* @return the password.
*/
public char[] getPassword() {
return mPassword;
}
/**
* The URL of the server.
*
* @return the URL of the server.
*/
public String getURL() {
return mURL;
}
/**
* The port number of the server.
*
* @return the server port number.
*/
public int getPort() {
return mPort;
}
/**
* The server hostname.
*
* @return the server hostname.
*/
public String getHostname() {
return mHostname;
}
/**
* The string to prefix to the orderIDs generated by this class.
*
* @return the string to prefix to the orderIDs generated by this class.
*/
public String getIDPrefix() {
return mIDPrefix;
}
/**
* The time interval between heartbeats, in ms.
*
* @return the time interval.
*/
public int getHeartbeatInterval() {
return mHeartbeatInterval;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ClientParameters that = (ClientParameters) o;
return Arrays.equals(mPassword, that.mPassword) &&
ObjectUtils.equals(mURL, that.mURL) &&
ObjectUtils.equals(mUsername, that.mUsername) &&
ObjectUtils.equals(mHostname, that.mHostname) &&
ObjectUtils.equals(mIDPrefix, that.mIDPrefix) &&
ObjectUtils.equals(mPort, that.mPort) &&
ObjectUtils.equals(mHeartbeatInterval, that.mHeartbeatInterval);
}
@Override
public int hashCode() {
return ObjectUtils.hashCode(mUsername) +
Arrays.hashCode(mPassword) +
ObjectUtils.hashCode(mHostname) +
ObjectUtils.hashCode(mPort) +
ObjectUtils.hashCode(mHeartbeatInterval) +
ObjectUtils.hashCode(mIDPrefix) +
ObjectUtils.hashCode(mURL);
}
/**
* Creates an instance.
*
* @param inUsername the user name.
* @param inPassword the password.
* @param inURL the URL.
* @param inHostname the host name
* @param inPort the port number
* @param inIDPrefix the string to prefix to the orderIDs generated
* by the client based on the IDs from the server.
* @param inHeartbeatInterval time interval between heartbeats, in ms.
*/
@ConstructorProperties({"username",
"password",
"URL",
"hostname",
"port",
"IDPrefix",
"heartbeatInterval"})
public ClientParameters(String inUsername,
char[] inPassword,
String inURL,
String inHostname,
int inPort,
String inIDPrefix,
int inHeartbeatInterval) {
mUsername = inUsername;
mPassword = inPassword;
mURL = inURL;
mHostname = inHostname;
mPort = inPort;
mIDPrefix = inIDPrefix;
mHeartbeatInterval = inHeartbeatInterval;
}
/**
* Creates an instance.
*
* @param inUsername the user name.
* @param inPassword the password.
* @param inURL the URL.
* @param inHostname the host name
* @param inPort the port number
* @param inIDPrefix the string to prefix to the orderIDs generated
* by the client based on the IDs from the server.
*/
public ClientParameters(String inUsername,
char[] inPassword,
String inURL,
String inHostname,
int inPort,
String inIDPrefix)
{
this(inUsername,
inPassword,
inURL,
inHostname,
inPort,
inIDPrefix,
DEFAULT_HEARTBEAT_INTERVAL);
}
/**
* Creates an instance.
*
* @param inUsername the user name.
* @param inPassword the password.
* @param inURL the URL.
* @param inHostname the host name
* @param inPort the port number
*/
public ClientParameters(String inUsername,
char[] inPassword,
String inURL,
String inHostname,
int inPort)
{
this(inUsername,
inPassword,
inURL,
inHostname,
inPort,
null);
}
@Override
public String toString() {
return "ClientParameters{" + //$NON-NLS-1$
"Username='" + mUsername + '\'' + //$NON-NLS-1$ $NON-NLS-2$
", Password='*****'" + //$NON-NLS-1$
", URL='" + mURL + '\'' + //$NON-NLS-1$ $NON-NLS-2$
", Hostname='" + mHostname + '\'' + //$NON-NLS-1$ $NON-NLS-2$
", Port='" + mPort + '\'' + //$NON-NLS-1$ $NON-NLS-2$
", IDPrefix='" + mIDPrefix + '\'' + //$NON-NLS-1$ $NON-NLS-2$
", HeartbeatInterval='" + mHeartbeatInterval + '\'' + //$NON-NLS-1$ $NON-NLS-2$
'}'; //$NON-NLS-1$
}
private String mUsername;
private char[] mPassword;
private String mHostname;
private int mPort;
private String mURL;
private String mIDPrefix;
private int mHeartbeatInterval;
public static final int DEFAULT_HEARTBEAT_INTERVAL = 5000;
}