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.QueryComposer;
import uk.ac.imperial.lsds.seep.api.QueryExecutionMode;
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.data.Schema.SchemaBuilder;
import uk.ac.imperial.lsds.seep.api.operator.LogicalOperator;
import uk.ac.imperial.lsds.seep.api.operator.SeepLogicalQuery;
import uk.ac.imperial.lsds.seep.api.operator.sinks.Sink;
import uk.ac.imperial.lsds.seep.api.operator.sources.SyntheticSource;
public class WithSyntheticSource implements QueryComposer {
@Override
public SeepLogicalQuery compose() {
Schema schema = SchemaBuilder.getInstance().newField(Type.INT, "userId").newField(Type.LONG, "value").build();
SyntheticSource synSrc = SyntheticSource.newSource(0, null);
LogicalOperator adderOne = queryAPI.newStatelessOperator(new Fake(), 1);
LogicalOperator adderTwo = queryAPI.newStatelessOperator(new Fake(), 2);
LogicalOperator branchone = queryAPI.newStatelessOperator(new Fake1(), 3);
LogicalOperator branchtwo = queryAPI.newStatelessOperator(new Fake2(), 4);
LogicalOperator snk = queryAPI.newStatelessSink(new Fake3(), 5);
synSrc.connectTo(adderOne, schema, 0);
synSrc.connectTo(adderTwo, schema, 1);
adderOne.connectTo(branchone, 2, new DataStore(schema, DataStoreType.NETWORK));
adderTwo.connectTo(branchtwo, 3, new DataStore(schema, DataStoreType.NETWORK));
branchone.connectTo(snk, 4, new DataStore(schema, DataStoreType.NETWORK));
branchtwo.connectTo(snk, 5, new DataStore(schema, DataStoreType.NETWORK));
SeepLogicalQuery slq = queryAPI.build();
slq.setExecutionModeHint(QueryExecutionMode.ALL_SCHEDULED);
return slq;
}
class Fake 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 Fake1 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 Fake2 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 Fake3 implements 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
}
}
}