Skip to content

Commit

Permalink
MATP-1102 Add strategy message events
Browse files Browse the repository at this point in the history
  • Loading branch information
colinduplantis committed Mar 16, 2023
1 parent 33c7f91 commit e848dda
Show file tree
Hide file tree
Showing 7 changed files with 133 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import org.marketcetera.strategy.StrategyPermissions;
import org.marketcetera.strategy.StrategyStatus;
import org.marketcetera.strategy.events.StrategyEvent;
import org.marketcetera.strategy.events.StrategyMessageEvent;
import org.marketcetera.strategy.events.StrategyStartFailedEvent;
import org.marketcetera.strategy.events.StrategyStartedEvent;
import org.marketcetera.strategy.events.StrategyStatusChangedEvent;
Expand Down Expand Up @@ -223,13 +224,15 @@ public void run()
displayStrategyInstance.strategyStatusProperty().set(event.getNewValue());
} else if(inEvent instanceof StrategyUnloadedEvent) {
strategyTable.getItems().remove(displayStrategyInstance);
} else if(inEvent instanceof StrategyMessageEvent) {
updateEvents();
}
}}
);
} else {
updateStrategies();
updateEvents();
}
updateEvents();
}
/* (non-Javadoc)
* @see org.marketcetera.ui.view.ContentView#getScene()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
//
// this file is automatically generated
//
package org.marketcetera.strategy.events;

/* $License$ */

/**
* Indicates that a strategy message was added.
*
* @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a>
* @version $Id$
* @since $Release$
*/
public interface StrategyMessageEvent
extends org.marketcetera.strategy.HasStrategyMessage,org.marketcetera.strategy.events.StrategyEvent
{
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
//
// this file is automatically generated
//
package org.marketcetera.strategy.events;

import org.marketcetera.core.Preserve;
import org.marketcetera.strategy.StrategyMessage;

/* $License$ */

/**
* Indicates that a strategy message was added.
*
* @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a>
* @version $Id$
* @since $Release$
*/
@Preserve
public class SimpleStrategyMessageEvent
implements StrategyMessageEvent
{
/**
* Create a new SimpleStrategyMessageEvent instance.
*/
public SimpleStrategyMessageEvent() {}
/**
* Create a new SimpleStrategyMessageEvent instance.
*
* @param inStrategyMessage a <code>StrategyMessage</code> value
*/
public SimpleStrategyMessageEvent(StrategyMessage inStrategyMessage)
{
strategyMessage = inStrategyMessage;
}
/**
* Get the strategyMessage value.
*
* @return an <code>org.marketcetera.strategy.StrategyMessage</code> value
*/
@Override
public org.marketcetera.strategy.StrategyMessage getStrategyMessage()
{
return strategyMessage;
}
/**
* Set the strategyMessage value.
*
* @param inStrategyMessage an <code>org.marketcetera.strategy.StrategyMessage</code> value
*/
public void setStrategyMessage(org.marketcetera.strategy.StrategyMessage inStrategyMessage)
{
strategyMessage = inStrategyMessage;
}
/**
* Get the strategyInstance value.
*
* @return an <code>org.marketcetera.strategy.StrategyInstance</code> value
*/
@Override
public org.marketcetera.strategy.StrategyInstance getStrategyInstance()
{
return strategyMessage.getStrategyInstance();
}
/**
* Set the strategyInstance value.
*
* @param inStrategyInstance an <code>org.marketcetera.strategy.StrategyInstance</code> value
*/
public void setStrategyInstance(org.marketcetera.strategy.StrategyInstance inStrategyInstance)
{
strategyMessage.setStrategyInstance(inStrategyInstance);
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString()
{
StringBuilder builder = new StringBuilder();
builder.append("StrategyMessageEvent [")
.append("strategyMessage=").append(strategyMessage).append("]");
return builder.toString();
}
/**
* strategy message that was created
*/
private org.marketcetera.strategy.StrategyMessage strategyMessage;
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.marketcetera.admin.UserFactory;
import org.marketcetera.core.Preserve;
import org.marketcetera.rpc.base.BaseRpcUtil;
import org.marketcetera.strategy.events.SimpleStrategyMessageEvent;
import org.marketcetera.strategy.events.SimpleStrategyStartFailedEvent;
import org.marketcetera.strategy.events.SimpleStrategyStartedEvent;
import org.marketcetera.strategy.events.SimpleStrategyStatusChangedEvent;
Expand All @@ -16,6 +17,7 @@
import org.marketcetera.strategy.events.SimpleStrategyUploadFailedEvent;
import org.marketcetera.strategy.events.SimpleStrategyUploadSucceededEvent;
import org.marketcetera.strategy.events.StrategyEvent;
import org.marketcetera.strategy.events.StrategyMessageEvent;
import org.marketcetera.strategy.events.StrategyStartFailedEvent;
import org.marketcetera.strategy.events.StrategyStartedEvent;
import org.marketcetera.strategy.events.StrategyStatusChangedEvent;
Expand Down Expand Up @@ -212,6 +214,11 @@ public static void setStrategyEvent(StrategyEvent inStrategyEvent,
StrategyStatusChangedEvent statusChangedEvent = (StrategyStatusChangedEvent)inStrategyEvent;
getRpcStrategyStatus(statusChangedEvent.getNewValue()).ifPresent(rpcStrategyStatus -> rpcEventBuilder.setNewStatusValue(rpcStrategyStatus));
getRpcStrategyStatus(statusChangedEvent.getOldValue()).ifPresent(rpcStrategyStatus -> rpcEventBuilder.setOldStatusValue(rpcStrategyStatus));
} else if(inStrategyEvent instanceof StrategyMessageEvent) {
StrategyMessageEvent messageEvent = (StrategyMessageEvent)inStrategyEvent;
rpcEventBuilder.setMessage(messageEvent.getStrategyMessage().getMessage());
getRpcStrategyMessageSeverity(messageEvent.getStrategyMessage().getSeverity()).ifPresent(rpcSeverity -> rpcEventBuilder.setSeverity(rpcSeverity));
BaseRpcUtil.getTimestampValue(messageEvent.getStrategyMessage().getMessageTimestamp()).ifPresent(rpcTimestamp -> rpcEventBuilder.setMessageTimestamp(rpcTimestamp));
} else {
throw new UnsupportedOperationException("Unexpected strategy event type: " + inStrategyEvent.getClass().getSimpleName());
}
Expand All @@ -238,6 +245,15 @@ public static StrategyEvent getStrategyEvent(StrategyRpc.StrategyEventListenerRe
if(strategyInstanceOption.isPresent()) {
StrategyInstance strategyInstance = strategyInstanceOption.get();
switch(rpcEvent.getEventType()) {
case "SimpleStrategyMessageEvent":
SimpleStrategyMessageEvent messageEvent = new SimpleStrategyMessageEvent();
SimpleStrategyMessage message = new SimpleStrategyMessage();
message.setMessage(rpcEvent.getMessage());
getStrategyMessageSeverity(rpcEvent.getSeverity()).ifPresent(severity -> message.setSeverity(severity));
BaseRpcUtil.getDateValue(rpcEvent.getMessageTimestamp()).ifPresent(timestamp -> message.setMessageTimestamp(timestamp));
message.setStrategyInstance(strategyInstance);
messageEvent.setStrategyMessage(message);
return messageEvent;
case "SimpleStrategyStartedEvent":
SimpleStrategyStartedEvent startEvent = new SimpleStrategyStartedEvent();
startEvent.setStrategyInstance(strategyInstance);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,6 @@ message StrategyEvent {
string eventType = 3;
StrategyStatus oldStatusValue = 4;
StrategyStatus newStatusValue = 5;
StrategyMessageSeverity severity = 6;
google.protobuf.Timestamp messageTimestamp = 7;
}
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,15 @@
type="org.marketcetera.strategy.StrategyStatus" pojoType="org.marketcetera.strategy.StrategyStatus" apiType="org.marketcetera.strategy.StrategyStatus"/>
</modelEventAttributes>
</modelEvent>
<modelEvent name="StrategyMessageEvent" description="Indicates that a strategy message was added" pojoProject="strategy/strategy-core" apiProject="strategy/strategy-api" packageName="org.marketcetera.strategy.events" apiExtends="org.marketcetera.strategy.HasStrategyMessage">
<modelEvent name="StrategyMessageEvent" description="Indicates that a strategy message was added" pojoProject="strategy/strategy-core" apiProject="strategy/strategy-api" packageName="org.marketcetera.strategy.events" apiExtends="org.marketcetera.strategy.HasStrategyMessage,org.marketcetera.strategy.events.StrategyEvent">
<authors>
<author>&lt;a href="mailto:colin@marketcetera.com"&gt;Colin DuPlantis&lt;/a&gt;</author>
</authors>
<modelEventAttributes>
<modelEventAttribute name="strategyMessage" description="strategy message that was created" useGetters="true" useSetters="true" interfaceProvided="true"
type="org.marketcetera.strategy.StrategyMessage" pojoType="org.marketcetera.strategy.StrategyMessage" apiType="org.marketcetera.strategy.StrategyMessage"/>
<modelEventAttribute name="strategyInstance" description="strategy instance which was successfully uploaded" useGetters="true" useSetters="true" interfaceProvided="true"
type="org.marketcetera.strategy.StrategyInstance" pojoType="org.marketcetera.strategy.StrategyInstance" apiType="org.marketcetera.strategy.StrategyInstance"/>
</modelEventAttributes>
</modelEvent>
</modelEvents>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import org.marketcetera.strategy.dao.QPersistentStrategyMessage;
import org.marketcetera.strategy.dao.StrategyInstanceDao;
import org.marketcetera.strategy.dao.StrategyMessageDao;
import org.marketcetera.strategy.events.SimpleStrategyMessageEvent;
import org.marketcetera.strategy.events.SimpleStrategyStartFailedEvent;
import org.marketcetera.strategy.events.SimpleStrategyStartedEvent;
import org.marketcetera.strategy.events.SimpleStrategyStatusChangedEvent;
Expand Down Expand Up @@ -501,6 +502,7 @@ public PersistentStrategyMessage createStrategyMessage(StrategyMessage inStrateg
Validate.isTrue(strategyInstanceOption.isPresent());
strategyMessage.setStrategyInstance(strategyInstanceOption.get());
strategyMessage = strategyMessageDao.save(strategyMessage);
eventBusService.post(new SimpleStrategyMessageEvent(strategyMessage));
return strategyMessage;
}
/**
Expand Down

0 comments on commit e848dda

Please sign in to comment.