package org.marketcetera.trade; import java.io.Serializable; import java.util.Comparator; import java.util.Date; import org.apache.commons.lang.builder.CompareToBuilder; import org.marketcetera.util.misc.ClassVersion; /* $License$ */ /** * Declares common fields between various reports. This type is not * meant to be used directly, use one of its sub-types instead. * * @author anshul@marketcetera.com * @version $Id: ReportBase.java 16899 2014-05-11 16:03:04Z colin $ * @since 1.0.0 */ @ClassVersion("$Id: ReportBase.java 16899 2014-05-11 16:03:04Z colin $") public interface ReportBase extends Serializable { /** * The client assigned orderID of the order that generated this report. * * @return the orderID of the order. */ OrderID getOrderID(); /** * If the order that generated this report was sent to cancel or * replace an existing order, the orderID of that original client assigned * orderID is returned. Otherwise, the returned value is null. * * @return the orderID of the original order. */ OrderID getOriginalOrderID(); /** * The Order status. * * @return The order status. */ OrderStatus getOrderStatus(); /** * Text associated with the execution report. * * @return text associated with the execution report. */ String getText(); /** * Gets the ID of the broker from which this report was received. * * @return the broker ID from which this report was received. */ BrokerID getBrokerID(); /** * Time of message transmission in UTC. * * @return the time of message transmission in UTC. */ Date getSendingTime(); /** * The order ID assigned by broker to the original order. * * @return the broker assigned order ID. */ String getBrokerOrderID(); /** * The unique ID for this report. * * @return the unique ID for this report */ ReportID getReportID(); /** * The originator of this message. * * @return the originator of this message. */ Originator getOriginator(); /** * The hierarchy of the report. * * @return a <code>Hierarchy</code> value */ Hierarchy getHierarchy(); /** * The ID of the actor user of this message. * * @return the ID of the actor user of this message. */ UserID getActorID(); /** * The ID of the viewer user of this message. * * @return the ID of the viewer user of this message. */ UserID getViewerID(); /** * Compares two <code>ReportBase</code> objects. * * @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a> * @version $Id: ReportBase.java 16899 2014-05-11 16:03:04Z colin $ * @since 2.4.0 */ public static enum ReportComparator implements Comparator<ReportBase> { INSTANCE; /* (non-Javadoc) * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) */ @Override public int compare(ReportBase inLHS, ReportBase inRHS) { return new CompareToBuilder().append(inLHS.getSendingTime(),inRHS.getSendingTime()).append(inLHS.getReportID(),inRHS.getReportID()).toComparison(); } } }