import java.util.Properties; import uk.ac.imperial.lsds.seep.api.DataStore; import uk.ac.imperial.lsds.seep.api.DataStoreType; 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.QueryComposer; 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; import uk.ac.imperial.lsds.seepcontrib.kafka.config.KafkaConfig; public class Base implements QueryComposer { private final Properties p; public Base() { Properties p = new Properties(); p.setProperty(KafkaConfig.KAFKA_SERVER, "localhost:9092"); p.setProperty(KafkaConfig.ZOOKEEPER_CONNECT, "localhost:2181"); p.setProperty(KafkaConfig.PRODUCER_CLIENT_ID, "seep"); p.setProperty(KafkaConfig.CONSUMER_GROUP_ID, "seep"); p.setProperty(KafkaConfig.BASE_TOPIC, "seep"); // TODO: have a validator method in KafkaConfig here... this.p = p; } @Override public SeepLogicalQuery compose() { System.out.println("[Base] Start to build query"); Schema schema = SchemaBuilder.getInstance().newField(Type.INT, "userId").newField(Type.LONG, "ts") .newField(Type.STRING, "text").build(); LogicalOperator src = queryAPI.newStatelessSource(new Src(), 0); LogicalOperator processor = queryAPI.newStatelessOperator(new Processor(), 1); LogicalOperator snk = queryAPI.newStatelessSink(new Snk(), 2); src.connectTo(processor, 0, new DataStore(schema, DataStoreType.KAFKA, p)); processor.connectTo(snk, 0, new DataStore(schema, DataStoreType.KAFKA, p)); System.out.println("###### Build query finished"); return queryAPI.build(); } }