-
Notifications
You must be signed in to change notification settings - Fork 0
/
EquityMarketDataService.java
93 lines (77 loc) · 2.33 KB
/
EquityMarketDataService.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import java.util.HashMap;
import java.util.ArrayList;
/**
* EquityMareketDataService, subscribe at EquityMarketDataConnector, get data once connector read in the input file
* @author Wenting Yang, Sara Liu
*
*/
public class EquityMarketDataService extends Service<String,OrderBook<Equity>>{
private HashMap<String,OrderBook<Equity>> orderBookMap = new HashMap<String,OrderBook<Equity>>(); //ticker to OrderBook map
private ArrayList<ServiceListener<OrderBook<Equity>>> listeners = new ArrayList<ServiceListener<OrderBook<Equity>>>();
private static EquityMarketDataService instance = null;
/**
* constructor
* Singleton pattern - private ctor
*/
private EquityMarketDataService() {}
/**
* singleton pattern public getInstance methods
* @return
*/
public static EquityMarketDataService getInstance() {
if(instance == null) {
instance = new EquityMarketDataService();
}
return instance;
}
public HashMap<String, OrderBook<Equity>> getOrderBookMap() {
return orderBookMap;
}
public void setOrderBookMap(HashMap<String, OrderBook<Equity>> orderBookMap) {
this.orderBookMap = orderBookMap;
}
/**
* get the depth of the order book
* @param productId
* @return
*/
OrderBook<Equity> aggregateDepth(String ticker) {
return orderBookMap.get(ticker);
}
/**
* override base class getData method
*/
@Override
public OrderBook<Equity> getData(String key) {
return orderBookMap.get(key);
}
/**
* override base class onMessage method
* notify EquityAlgoExecutionServiceListener
*/
@Override
void onMessage(OrderBook<Equity> orderBook) {
String ticker = orderBook.getProduct().getTicker();
//System.out.println(ticker);
orderBookMap.put(ticker,orderBook);
//Test: print orderBook
//orderBookMap.get(ticker).printOrderBook();
//System.out.println(orderBook.getOfferStack().get(0).getPrice());
for(ServiceListener<OrderBook<Equity>> listener:listeners) {
listener.processAdd(orderBook);
}
}
/**
* override base class addListerner method
* polymorphism - add OrderBook<Equity> type listener, can be used to add EquityAlgoExecutionServiceListener
* @param listener
*/
@Override
void addListener(ServiceListener<OrderBook<Equity>> listener) {
listeners.add(listener);
}
@Override
ArrayList<ServiceListener<OrderBook<Equity>>> getListeners() {
return listeners;
}
}