/*
# Licensed Materials - Property of IBM
# Copyright IBM Corp. 2015
*/
package vwap;
import java.util.Map;
import com.ibm.streams.operator.StreamSchema;
import com.ibm.streams.operator.Type;
import com.ibm.streamsx.topology.TStream;
import com.ibm.streamsx.topology.Topology;
import com.ibm.streamsx.topology.context.StreamsContext;
import com.ibm.streamsx.topology.context.StreamsContextFactory;
import com.ibm.streamsx.topology.function.Predicate;
import com.ibm.streamsx.topology.spl.FileSPLStreams;
import com.ibm.streamsx.topology.spl.FileSPLStreams.Compression;
import com.ibm.streamsx.topology.spl.SPLStream;
import simple.Util;
public class Vwap {
private static StreamSchema TQRecT = Type.Factory
.getStreamSchema("tuple<rstring ticker,rstring date, rstring time, int32 gmtOffset,"
+ "rstring ttype, rstring exCntrbID, decimal64 price,"
+ "decimal64 volume, decimal64 vwap, rstring buyerID,"
+ "decimal64 bidprice, decimal64 bidsize, int32 numbuyers,"
+ "rstring sellerID, decimal64 askprice, decimal64 asksize,"
+ "int32 numsellers, rstring qualifiers, int32 seqno,"
+ "rstring exchtime, decimal64 blockTrd, decimal64 floorTrd,"
+ "decimal64 PEratio, decimal64 yield, decimal64 newprice,"
+ "decimal64 newvol, int32 newseqno, decimal64 bidimpvol,"
+ "decimal64 askimpcol, decimal64 impvol>");
/**
* Run the Vwap topology, printing the bargains to stdout.
* @param args
*/
public static void main(String[] args) throws Exception {
String type = args[0];
Map<String,Object> configMap = Util.createConfig(args);
TStream<Bargain> bargains = createVwapTopology();
bargains.print();
StreamsContext<?> sc = StreamsContextFactory.getStreamsContext(type);
sc.submit(bargains.topology(), configMap).get();
}
/**
* Create the Vwap topology, returning the resultant bargains stream.
*/
public static TStream<Bargain> createVwapTopology() {
Topology topology = new Topology("Vwap");
String vwapDataFile = System.getenv("STREAMS_INSTALL")
+ "/samples/spl/application/Vwap/data/TradesAndQuotes.csv.gz";
TStream<String> vwapDataFileName = topology.strings(vwapDataFile);
SPLStream tradeQuotes = FileSPLStreams.csvCompressedReader(
vwapDataFileName, TQRecT, Compression.gzip);
// Convert the SPLStreams into TStream<T> instances,
// unpacking the SPL Tuple into Quote and Trade objects
TStream<Trade> trades = Trade.getTrades(tradeQuotes);
TStream<Quote> quotes = Quote.getQuotes(tradeQuotes);
TStream<Bargain> bargains = VwapProcessing.bargains(trades, quotes);
return bargains;
}
public static TStream<Bargain> realBargains(TStream<Bargain> bargains) {
// Add a filter for actual bargains
return bargains.filter(new Predicate<Bargain>() {
private static final long serialVersionUID = 1L;
@Override
public boolean test(Bargain bargain) {
return bargain.isBargain();
}
});
}
}