package org.marketcetera.algo;
import java.io.Serializable;
import java.util.Set;
import javax.xml.bind.annotation.*;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.CompareToBuilder;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.marketcetera.core.Validator;
import org.marketcetera.util.misc.ClassVersion;
/* $License$ */
/**
* Represents the template of a broker algorithm.
*
* @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a>
* @version $Id: BrokerAlgoSpec.java 16901 2014-05-11 16:14:11Z colin $
* @since 2.4.0
*/
@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
@ClassVersion("$Id: BrokerAlgoSpec.java 16901 2014-05-11 16:14:11Z colin $")
public class BrokerAlgoSpec
implements Serializable, Comparable<BrokerAlgoSpec>
{
/**
* Get the name value.
*
* @return a <code>String</code> value
*/
public String getName()
{
return name;
}
/**
* Sets the name value.
*
* @param inName a <code>String</code> value
*/
public void setName(String inName)
{
name = StringUtils.trimToNull(inName);
}
/**
* Get the algoTagSpecs value.
*
* @return a <code>Set<BrokerAlgoTagSpec></code> value
*/
public Set<BrokerAlgoTagSpec> getAlgoTagSpecs()
{
return algoTagSpecs;
}
/**
* Sets the algoTagSpecs value.
*
* @param inAlgoTagSpecs a <code>Set<BrokerAlgoTagSpec></code> value
*/
public void setAlgoTagSpecs(Set<BrokerAlgoTagSpec> inAlgoTagSpecs)
{
algoTagSpecs = inAlgoTagSpecs;
}
/**
* Get the validator value.
*
* @return a <code>Validator<BrokerAlgo></code> value
*/
public Validator<BrokerAlgo> getValidator()
{
return validator;
}
/**
* Sets the validator value.
*
* @param inValidator a <code>Validator<BrokerAlgo></code> value
*/
public void setValidator(Validator<BrokerAlgo> inValidator)
{
validator = inValidator;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString()
{
StringBuilder builder = new StringBuilder();
builder.append("BrokerAlgoSpec [name=").append(name).append(", algoTagSpecs=").append(algoTagSpecs).append("]"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
return builder.toString();
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode()
{
return new HashCodeBuilder().append(name).toHashCode();
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj)
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
BrokerAlgoSpec other = (BrokerAlgoSpec) obj;
return new EqualsBuilder().append(name,other.name).isEquals();
}
/* (non-Javadoc)
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
@Override
public int compareTo(BrokerAlgoSpec inOther)
{
return new CompareToBuilder().append(name,inOther.name).toComparison();
}
/**
* user-readable name of the broker algo
*/
@XmlAttribute
private String name;
/**
* broker algo tag specifications of the broker algo
*/
@XmlElementWrapper(name="algoTagSpecs")
@XmlElement(name="tagSpec",type=BrokerAlgoTagSpec.class)
private Set<BrokerAlgoTagSpec> algoTagSpecs;
/**
* validator which validates the bound broker tag values at the algo level rather than at the tag level, may be <code>null</code>
*/
private transient Validator<BrokerAlgo> validator;
private static final long serialVersionUID = -8372920301146812888L;
}