package eu.play_project.play_platformservices_querydispatcher.bdpl.visitor.realtime; import eu.play_platform.platformservices.bdpl.syntax.windows.types.CountWindow; import eu.play_platform.platformservices.bdpl.syntax.windows.types.DummyWindow; import eu.play_platform.platformservices.bdpl.syntax.windows.types.SlidingWindow; import eu.play_platform.platformservices.bdpl.syntax.windows.types.TumblingWindow; import eu.play_platform.platformservices.bdpl.syntax.windows.visitor.ElementWindowVisitor; import eu.play_project.play_platformservices.api.QueryDetails; public class WindowVisitor implements ElementWindowVisitor { QueryDetails qd; public WindowVisitor(QueryDetails qd){ if(qd.getQueryId() == null || qd.getQueryId().equals("")){ throw new IllegalArgumentException("Value for queryId is needet."); } this.qd = qd; } @Override public void visit(CountWindow countWindow) { } @Override public void visit(SlidingWindow slidingWindow) { qd.setEtalisProperty("([property(event_rule_window, "+ slidingWindow.getValue() + ")])"); qd.setTumblingWindow("true"); } @Override public void visit(TumblingWindow tumblingWindow) { qd.setTumblingWindow("tumbling_window('" + qd.getQueryId() + "', "+ tumblingWindow.getValue() + ")"); qd.setEtalisProperty(""); } @Override public void visit(DummyWindow dummyWindow) { qd.setTumblingWindow("true"); qd.setEtalisProperty(""); } }