Skip to content

Commit

Permalink
Storing message into order event.
Browse files Browse the repository at this point in the history
  • Loading branch information
reiss authored and reiss committed Jun 6, 2017
1 parent 384e875 commit 267f70a
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 3 deletions.
15 changes: 15 additions & 0 deletions src/main/java/com/jforex/programming/order/event/OrderEvent.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import com.dukascopy.api.IMessage;
import com.dukascopy.api.IOrder;

/**
Expand All @@ -16,13 +17,16 @@
public final class OrderEvent {

private final IOrder order;
private final IMessage message;
private final OrderEventType type;
private final boolean isInternal;

public OrderEvent(final IOrder order,
final IMessage message,
final OrderEventType type,
final boolean isInternal) {
this.order = order;
this.message = message;
this.type = type;
this.isInternal = isInternal;
}
Expand All @@ -36,6 +40,15 @@ public final IOrder order() {
return order;
}

/**
* Returns the message instance of this event.
*
* @return the order
*/
public final IMessage message() {
return message;
}

/**
* Returns the type of this event.
*
Expand All @@ -61,6 +74,7 @@ public final boolean isInternal() {
public int hashCode() {
final HashCodeBuilder builder = new HashCodeBuilder();
builder.append(order);
builder.append(message);
builder.append(type);
builder.append(isInternal);

Expand All @@ -79,6 +93,7 @@ public boolean equals(final Object obj) {
final OrderEvent other = (OrderEvent) obj;
final EqualsBuilder builder = new EqualsBuilder();
builder.append(order, other.order);
builder.append(message, other.message);
builder.append(type, other.type);
builder.append(isInternal, other.isInternal);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@ private void registerOrderCallRequest(final OrderCallRequest orderCallRequest) {
public OrderEvent fromMessage(final IMessage message) {
final IOrder order = message.getOrder();
final OrderEventType orderEventType = calculateType(message);
final OrderEvent orderEvent = evaluateToOrderEvent(order, orderEventType);
final OrderEvent orderEvent = evaluateToOrderEvent(order,
message,
orderEventType);
cleanUpRegisteredOrder(order);

return orderEvent;
Expand All @@ -49,10 +51,15 @@ private final OrderEventType calculateType(final IMessage message) {
}

private final OrderEvent evaluateToOrderEvent(final IOrder order,
final IMessage message,
final OrderEventType orderEventType) {
return callReasonByOrder.keySet().contains(order)
? eventForInternalOrder(order, orderEventType)
: eventForExternalOrder(order, orderEventType);
? eventForInternalOrder(order,
message,
orderEventType)
: eventForExternalOrder(order,
message,
orderEventType);
}

private final void cleanUpRegisteredOrder(final IOrder order) {
Expand All @@ -64,19 +71,23 @@ private final void cleanUpRegisteredOrder(final IOrder order) {
}

private final OrderEvent eventForInternalOrder(final IOrder order,
final IMessage message,
final OrderEventType rawOrderEventType) {
final OrderEventType orderEventType = infoEvents.contains(rawOrderEventType)
? rawOrderEventType
: eventTypeForDoneTrigger(order, rawOrderEventType);

return new OrderEvent(order,
message,
orderEventType,
true);
}

private final OrderEvent eventForExternalOrder(final IOrder order,
final IMessage message,
final OrderEventType orderEventType) {
return new OrderEvent(order,
message,
orderEventType,
false);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ public Observable<OrderEvent> observable() {

public void importOrder(final IOrder order) {
final OrderEvent orderEvent = new OrderEvent(order,
null,
OrderEventType.SUBMIT_OK,
true);
logger.debug("Importing order " + order.getLabel() + " for " + order.getInstrument());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public void setUp() {

private OrderEvent sendEvent(final OrderEventType orderEventType) {
final OrderEvent orderEvent = new OrderEvent(buyOrderEURUSD,
messageMock,
orderEventType,
true);
subject.onNext(orderEvent);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ public void setUpMocks() {
private OrderEvent sendOrderEvent(final IOrder order,
final OrderEventType orderEventType) {
final OrderEvent orderEvent = new OrderEvent(order,
messageMock,
orderEventType,
true);
orderEventSubject.onNext(orderEvent);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ public void setUp() {
private void sendOrderEvent(final IOrder order,
final OrderEventType orderEventType) {
final OrderEvent orderEvent = new OrderEvent(order,
messageMock,
orderEventType,
true);
orderEventSubject.onNext(orderEvent);
Expand All @@ -57,6 +58,7 @@ public void createdOrdersAreAddedWhenInternal() {
public void createdOrdersAreNotAddedWhenNotInternal() {
createEvents.forEach(eventType -> {
orderEventSubject.onNext(new OrderEvent(buyOrderEURUSD,
messageMock,
eventType,
false));
assertFalse(position.contains(buyOrderEURUSD));
Expand All @@ -67,6 +69,7 @@ public void createdOrdersAreNotAddedWhenNotInternal() {
public void externalOrdersAreNotAdded() {
allEvents.forEach(eventType -> {
orderEventSubject.onNext(new OrderEvent(buyOrderEURUSD,
messageMock,
eventType,
false));
assertFalse(position.contains(buyOrderEURUSD));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ public class CommonUtilForTest extends BDDMockito {
protected TickQuoteProvider tickQuoteHandlerMock;
@Mock
protected BarQuoteProvider barQuoteHandlerMock;
@Mock
protected IMessage messageMock;

protected JFException jfException = new JFException("JFException for test");

Expand Down Expand Up @@ -230,6 +232,7 @@ protected final Observable<OrderEvent> eventObservable(final OrderEvent orderEve
protected final Observable<OrderEvent> eventObservable(final IOrder order,
final OrderEventType type) {
final OrderEvent orderEvent = new OrderEvent(order,
messageMock,
type,
true);
return eventObservable(orderEvent);
Expand All @@ -251,6 +254,7 @@ protected final <T> void testEqualsContract(final T instance) {

protected OrderEvent createEvent(final OrderEventType type) {
return new OrderEvent(buyOrderEURUSD,
messageMock,
type,
true);
}
Expand Down

0 comments on commit 267f70a

Please sign in to comment.