import java.util.Properties; 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.sources.SyntheticSource; import uk.ac.imperial.lsds.seep.api.operator.sources.SyntheticSourceConfig; 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 { private int sel; private int cost; private int isize; public Base(String[] qParams) { String sel = "selectivity"; String cost = "cost"; String isize = "isize"; for(int i = 0; i < qParams.length; i++) { String token = qParams[i]; if(token.equals(sel)) { this.sel = new Integer(qParams[(i+1)]); } else if(token.equals(cost)) { this.cost = new Integer(qParams[(i+1)]); } else if(token.equals(isize)) { this.isize = new Integer(qParams[(i+1)]); } } } @Override public SeepLogicalQuery compose() { Schema schema = SchemaBuilder.getInstance().newField(Type.INT, "userId").newField(Type.LONG, "value").build(); Properties confSync = new Properties(); String size = ""+this.isize+""; confSync.setProperty(SyntheticSourceConfig.GENERATED_SIZE, size); SyntheticSource synSrc = SyntheticSource.newSource(0, confSync); LogicalOperator adderOne = queryAPI.newStatelessOperator(new Adder(), 1); LogicalOperator adderTwo = queryAPI.newStatelessOperator(new Adder(), 2); LogicalOperator branchone = queryAPI.newStatelessOperator(new Branch1(), 3); LogicalOperator branchtwo = queryAPI.newStatelessOperator(new Branch2(), 4); LogicalOperator snk = queryAPI.newStatelessSink(new Snk(), 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; } }