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.MarkerSink; import uk.ac.imperial.lsds.seep.api.operator.sources.SyntheticSource; import uk.ac.imperial.lsds.seep.api.state.SeepState; import uk.ac.imperial.lsds.seep.api.state.stateimpl.SeepMap; 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.data.Schema; import uk.ac.imperial.lsds.seep.api.data.Schema.SchemaBuilder; import uk.ac.imperial.lsds.seep.api.data.Type; public class Base 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 map = queryAPI.newStatelessOperator(new Map(), 1); SeepState ss = new SeepMap(); LogicalOperator reduce = queryAPI.newStatefulOperator(new Reduce(), ss, 2); MarkerSink snk = MarkerSink.newSink(3); synSrc.connectTo(map, schema, 0); map.connectTo(reduce, 2, new DataStore(schema, DataStoreType.NETWORK)); reduce.connectTo(snk, 5, new DataStore(schema, DataStoreType.NETWORK)); SeepLogicalQuery slq = queryAPI.build(); slq.setExecutionModeHint(QueryExecutionMode.ALL_SCHEDULED); return slq; } }