package uk.ac.imperial.lsds.seepmaster.scheduler; import java.util.List; import uk.ac.imperial.lsds.seep.api.API; import uk.ac.imperial.lsds.seep.api.DataStore; import uk.ac.imperial.lsds.seep.api.DataStoreType; import uk.ac.imperial.lsds.seep.api.QueryBuilder; import uk.ac.imperial.lsds.seep.api.QueryComposer; import uk.ac.imperial.lsds.seep.api.SeepTask; import uk.ac.imperial.lsds.seep.api.data.ITuple; import uk.ac.imperial.lsds.seep.api.data.Schema; import uk.ac.imperial.lsds.seep.api.data.Type; import uk.ac.imperial.lsds.seep.api.operator.LogicalOperator; import uk.ac.imperial.lsds.seep.api.operator.SeepLogicalQuery; public class ComplexManyBranchesMultipleSourcesQuery implements QueryComposer { @Override public SeepLogicalQuery compose() { // Declare Source LogicalOperator src = queryAPI.newStatelessSource(new Source(), -1); LogicalOperator src2 = queryAPI.newStatelessSource(new Source(), -2); LogicalOperator src3 = queryAPI.newStatelessSource(new Source(), -3); // Declare processors LogicalOperator p1 = queryAPI.newStatelessOperator(new Processor(), 1); LogicalOperator p2 = queryAPI.newStatelessOperator(new Processor(), 2); LogicalOperator p3 = queryAPI.newStatelessOperator(new Processor(), 3); LogicalOperator p4 = queryAPI.newStatelessOperator(new Processor(), 4); LogicalOperator p5 = queryAPI.newStatelessOperator(new Processor(), 5); LogicalOperator p6 = queryAPI.newStatelessOperator(new Processor(), 6); LogicalOperator p7 = queryAPI.newStatelessOperator(new Processor(), 7); LogicalOperator p8 = queryAPI.newStatelessOperator(new Processor(), 8); LogicalOperator p9 = queryAPI.newStatelessOperator(new Processor(), 9); LogicalOperator p10 = queryAPI.newStatelessOperator(new Processor(), 10); LogicalOperator p11 = queryAPI.newStatelessOperator(new Processor(), 11); LogicalOperator p12 = queryAPI.newStatelessOperator(new Processor(), 12); LogicalOperator p13 = queryAPI.newStatelessOperator(new Processor(), 13); LogicalOperator p14 = queryAPI.newStatelessOperator(new Processor(), 14); LogicalOperator p15 = queryAPI.newStatelessOperator(new Processor(), 15); LogicalOperator p16 = queryAPI.newStatelessOperator(new Processor(), 16); LogicalOperator p17 = queryAPI.newStatelessOperator(new Processor(), 17); LogicalOperator p18 = queryAPI.newStatelessOperator(new Processor(), 18); LogicalOperator p19 = queryAPI.newStatelessOperator(new Processor(), 19); // Declare sink LogicalOperator snk = queryAPI.newStatelessSink(new Sink(), 100); Schema srcSchema = queryAPI.schemaBuilder.newField(Type.SHORT, "id").build(); /** Connect operators **/ // Note streamId is totally wrong here src.connectTo(p13, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); src3.connectTo(p2, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); src2.connectTo(p1, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p1.connectTo(p2, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p1.connectTo(p3, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); src2.connectTo(p6, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); src2.connectTo(p12, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p2.connectTo(p4, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p3.connectTo(p4, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p4.connectTo(p5, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p6.connectTo(p7, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p7.connectTo(p8, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p8.connectTo(p9, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p9.connectTo(p10, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p5.connectTo(p10, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p10.connectTo(p11, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p12.connectTo(p13, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p13.connectTo(p14, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p14.connectTo(p15, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p15.connectTo(p18, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p15.connectTo(p16, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p16.connectTo(p17, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p18.connectTo(p19, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p11.connectTo(p19, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p17.connectTo(snk, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); p19.connectTo(snk, 0, new DataStore(srcSchema, DataStoreType.NETWORK, null)); return QueryBuilder.build(); } class Source implements uk.ac.imperial.lsds.seep.api.operator.sources.Source { @Override public void setUp() { // TODO Auto-generated method stub } @Override public void processData(ITuple data, API api) { // TODO Auto-generated method stub } @Override public void processDataGroup(List<ITuple> dataList, API api) { // TODO Auto-generated method stub } @Override public void close() { // TODO Auto-generated method stub } } class Processor implements SeepTask { @Override public void setUp() { // TODO Auto-generated method stub } @Override public void processData(ITuple data, API api) { // TODO Auto-generated method stub } @Override public void processDataGroup(List<ITuple> dataList, API api) { // TODO Auto-generated method stub } @Override public void close() { // TODO Auto-generated method stub } } class Sink implements uk.ac.imperial.lsds.seep.api.operator.sinks.Sink { @Override public void setUp() { // TODO Auto-generated method stub } @Override public void processData(ITuple data, API api) { // TODO Auto-generated method stub } @Override public void processDataGroup(List<ITuple> dataList, API api) { // TODO Auto-generated method stub } @Override public void close() { // TODO Auto-generated method stub } } }