This is an automated email from the ASF dual-hosted git repository.

riemer pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-streampipes.git

commit 563a3a73a1f00fdc2e8df4f2c2405b71b102df48
Author: Dominik Riemer <[email protected]>
AuthorDate: Mon Oct 26 21:55:24 2020 +0100

    [STREAMPIPES-250] Extend Siddhi object model
---
 .../commons/exceptions/SpException.java            |   2 +-
 .../sdk/extractor/AbstractParameterExtractor.java  |  39 +++++++
 .../wrapper/siddhi/constants/SiddhiConstants.java  |  14 ++-
 .../wrapper/siddhi/query/FromClause.java           |  29 ++++-
 .../EqualsExpression.java}                         |   8 +-
 .../siddhi/query/expression/Expression.java        |  18 +++-
 .../siddhi/query/expression/Expressions.java       | 117 ++++++++++++++++++++-
 .../GreaterEqualsExpression.java}                  |   8 +-
 .../GreaterThanExpression.java}                    |   8 +-
 .../LesserEqualsExpression.java}                   |   8 +-
 .../LesserThanExpression.java}                     |   8 +-
 .../query/expression/PropertyExpression.java       |   2 +-
 .../PropertyExpressionBase.java}                   |   6 +-
 .../query/expression/PropertyRenameExpression.java |  10 +-
 .../RelationalOperator.java}                       |  22 +++-
 ...sion.java => RelationalOperatorExpression.java} |  26 +++--
 ...nameExpression.java => SequenceExpression.java} |  20 ++--
 .../SiddhiTimeUnit.java}                           |  18 +++-
 ...RenameExpression.java => StreamExpression.java} |  39 +++++--
 .../query/expression/StreamFilterExpression.java   |  57 ++++++++++
 ...RenameExpression.java => WithinExpression.java} |  21 ++--
 .../CollectListExpression.java}                    |  19 ++--
 .../ContainsListExpression.java}                   |  31 ++++--
 .../math/MathAddExpression.java}                   |  10 +-
 .../math/MathDivideExpression.java}                |  10 +-
 .../MathExpression.java}                           |  25 +++--
 .../math/MathMultiplyExpression.java}              |  10 +-
 .../math/MathOperator.java}                        |  19 +++-
 .../math/MathSubtractExpression.java}              |  10 +-
 .../EveryExpression.java}                          |  18 ++--
 .../expression/pattern/PatternCountExpression.java |  54 ++++++++++
 .../pattern/PatternCountOperator.java}             |   9 +-
 .../expression/pattern/PatternExpression.java      |  60 +++++++++++
 .../window/BatchWindowExpression.java}             |  15 ++-
 .../TimeWindowExpression.java}                     |  21 ++--
 .../WindowExpression.java}                         |  30 +++---
 .../wrapper/siddhi/utils/SiddhiUtils.java          |   1 +
 37 files changed, 671 insertions(+), 151 deletions(-)

diff --git 
a/streampipes-commons/src/main/java/org/apache/streampipes/commons/exceptions/SpException.java
 
b/streampipes-commons/src/main/java/org/apache/streampipes/commons/exceptions/SpException.java
index f058d9b..5c877d0 100644
--- 
a/streampipes-commons/src/main/java/org/apache/streampipes/commons/exceptions/SpException.java
+++ 
b/streampipes-commons/src/main/java/org/apache/streampipes/commons/exceptions/SpException.java
@@ -18,7 +18,7 @@
 
 package org.apache.streampipes.commons.exceptions;
 
-public class SpException extends Exception {
+public class SpException extends RuntimeException {
 
   private static final long serialVersionUID = 193141189399279147L;
 
diff --git 
a/streampipes-sdk/src/main/java/org/apache/streampipes/sdk/extractor/AbstractParameterExtractor.java
 
b/streampipes-sdk/src/main/java/org/apache/streampipes/sdk/extractor/AbstractParameterExtractor.java
index f8069c0..cce79bc 100644
--- 
a/streampipes-sdk/src/main/java/org/apache/streampipes/sdk/extractor/AbstractParameterExtractor.java
+++ 
b/streampipes-sdk/src/main/java/org/apache/streampipes/sdk/extractor/AbstractParameterExtractor.java
@@ -27,6 +27,7 @@ import 
org.apache.streampipes.model.base.InvocableStreamPipesEntity;
 import org.apache.streampipes.model.constants.PropertySelectorConstants;
 import org.apache.streampipes.model.schema.*;
 import org.apache.streampipes.model.staticproperty.*;
+import org.apache.streampipes.sdk.utils.Datatypes;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -68,6 +69,22 @@ public abstract class AbstractParameterExtractor<T extends 
InvocableStreamPipesE
             .getActualTopicName();
   }
 
+  public Object singleValueParameter(EventPropertyPrimitive targetType, String 
internalName) {
+    String value = singleValueParameter(internalName, String.class);
+
+    if (comparePropertyRuntimeType(targetType, Datatypes.Integer)) {
+      return typeParser.parse(value, Integer.class);
+    } else if (comparePropertyRuntimeType(targetType, Datatypes.Float)) {
+      return typeParser.parse(value, Float.class);
+    } else if (comparePropertyRuntimeType(targetType, Datatypes.Double)) {
+      return typeParser.parse(value, Double.class);
+    } else if (comparePropertyRuntimeType(targetType, Datatypes.Boolean)) {
+      return typeParser.parse(value, Boolean.class);
+    } else {
+      return value;
+    }
+  }
+
   public <V> V singleValueParameter(String internalName, Class<V> targetClass) 
{
     return typeParser.parse(getStaticPropertyByName(internalName, 
FreeTextStaticProperty.class)
             .getValue(), targetClass);
@@ -162,6 +179,28 @@ public abstract class AbstractParameterExtractor<T extends 
InvocableStreamPipesE
             .collect(Collectors.toList());
   }
 
+  public Boolean comparePropertyRuntimeType(EventProperty eventProperty,
+                                            Datatypes datatype) {
+    return comparePropertyRuntimeType(eventProperty, datatype, false);
+  }
+
+  public Boolean comparePropertyRuntimeType(EventProperty eventProperty,
+                                                   Datatypes datatype,
+                                                   boolean ignoreListElements) 
{
+    EventPropertyPrimitive testProperty = null;
+    if (eventProperty instanceof EventPropertyList && !ignoreListElements) {
+      testProperty = (EventPropertyPrimitive) ((EventPropertyList) 
eventProperty).getEventProperty();
+    } else if (eventProperty instanceof EventPropertyPrimitive) {
+      testProperty = (EventPropertyPrimitive) eventProperty;
+    }
+
+    if (testProperty != null) {
+      return testProperty.getRuntimeType().equals(datatype.toString());
+    } else {
+      return false;
+    }
+  }
+
   public StaticProperty extractGroupMember(String internalName, 
StaticPropertyGroup group) {
     return getStaticPropertyByName(group.getStaticProperties(), internalName);
   }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/constants/SiddhiConstants.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/constants/SiddhiConstants.java
index 0decddd..adb15f5 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/constants/SiddhiConstants.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/constants/SiddhiConstants.java
@@ -21,13 +21,25 @@ public class SiddhiConstants {
 
   public static final String SELECT = "select";
   public static final String INSERT = "insert";
+  public static final String FROM = "from";
 
   public static final String WHITESPACE = " ";
-  public static final String COMMA = ", ";
+  public static final String COMMA = ",";
+  public static final String COLON = ":";
+  public static final String DOT = ".";
   public static final String EMPTY = "";
+  public static final String HASH = "#";
   public static final String PARENTHESIS_OPEN = "(";
   public static final String PARENTHESIS_CLOSE = ")";
+  public static final String SQUARE_BRACKET_OPEN = "[";
+  public static final String SQUARE_BRACKED_CLOSE = "]";
+  public static final String ANGLE_BRACKET_OPEN = "<";
+  public static final String ANGLE_BRACKET_CLOSE = ">";
   public static final String AS = "as";
+  public static final String EQUALS = "=";
+  public static final String EVERY = "every";
+  public static final String SEQUENCE = "->";
+  public static final String WITHIN = "within";
 
   public static final String ASTERISK = "*";
 
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
index 6667e89..36c3018 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
@@ -17,5 +17,32 @@
  */
 package org.apache.streampipes.wrapper.siddhi.query;
 
-public class FromClause extends AbstractQueryGenerator {
+import org.apache.streampipes.wrapper.siddhi.constants.SiddhiConstants;
+import org.apache.streampipes.wrapper.siddhi.query.expression.Expression;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class FromClause extends Expression {
+
+  private List<Expression> fromExpressions;
+
+  private FromClause() {
+    this.fromExpressions = new ArrayList<>();
+  }
+
+  public static FromClause create() {
+    return new FromClause();
+  }
+
+  public void add(Expression expression) {
+    this.fromExpressions.add(expression);
+  }
+
+  @Override
+  public String toSiddhiEpl() {
+    List<String> fromExpressions = 
this.fromExpressions.stream().map(Expression::toSiddhiEpl).collect(Collectors.toList());
+    return join(SiddhiConstants.WHITESPACE, SiddhiConstants.FROM, 
join(SiddhiConstants.COMMA, fromExpressions));
+  }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/EqualsExpression.java
similarity index 74%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/EqualsExpression.java
index 6667e89..43eabbd 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/EqualsExpression.java
@@ -15,7 +15,11 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query;
+package org.apache.streampipes.wrapper.siddhi.query.expression;
 
-public class FromClause extends AbstractQueryGenerator {
+public class EqualsExpression extends RelationalOperatorExpression {
+
+  public EqualsExpression(PropertyExpressionBase exp1, PropertyExpressionBase 
exp2) {
+    super(RelationalOperator.EQUALS, exp1, exp2);
+  }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/Expression.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/Expression.java
index df93f57..ffec13e 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/Expression.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/Expression.java
@@ -30,12 +30,28 @@ public abstract class Expression {
   }
 
   protected String joinWithParenthesis(String delimiter, String... substrings) 
{
-    return join(SiddhiConstants.EMPTY,
+    return joinWithParenthesis(delimiter, Arrays.asList(substrings));
+  }
+
+  protected String joinWithParenthesis(String delimiter, List<String> 
substrings) {
+    return join(delimiter,
             SiddhiConstants.PARENTHESIS_OPEN,
             join(delimiter, substrings),
             SiddhiConstants.PARENTHESIS_CLOSE);
   }
 
+  protected String joinWithSquareBracket(String delimiter, String... 
substrings) {
+    return joinWithSquareBracket(delimiter, Arrays.asList(substrings));
+  }
+
+  protected String joinWithSquareBracket(String delimiter, List<String> 
substrings) {
+    return join(delimiter,
+            SiddhiConstants.SQUARE_BRACKET_OPEN,
+            join(delimiter, substrings),
+            SiddhiConstants.SQUARE_BRACKED_CLOSE);
+  }
+
+
   protected String join(String delimiter, List<String> substrings) {
     StringJoiner joiner = new StringJoiner(delimiter);
     substrings.forEach(joiner::add);
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/Expressions.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/Expressions.java
index 4d52445..c2f63c7 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/Expressions.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/Expressions.java
@@ -19,9 +19,84 @@ package 
org.apache.streampipes.wrapper.siddhi.query.expression;
 
 import org.apache.streampipes.wrapper.siddhi.constants.SiddhiStreamSelector;
 import org.apache.streampipes.wrapper.siddhi.model.EventPropertyDef;
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.list.CollectListExpression;
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.list.ContainsListExpression;
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.math.MathDivideExpression;
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.math.MathMultiplyExpression;
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.pattern.EveryExpression;
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.pattern.PatternCountExpression;
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.pattern.PatternCountOperator;
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.window.BatchWindowExpression;
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.window.WindowExpression;
+
+import java.util.Arrays;
 
 public class Expressions {
 
+  public static Expression as(PropertyExpressionBase property, String 
targetName) {
+    return new PropertyRenameExpression(property, targetName);
+  }
+
+  public static WindowExpression batchWindow(Integer windowSize) {
+    return new BatchWindowExpression(windowSize);
+  }
+
+  public static PropertyExpressionBase collectList(PropertyExpression 
propertyExp) {
+    return new CollectListExpression(propertyExp);
+  }
+
+  public static PropertyExpressionBase containsListItem(PropertyExpression 
listProperty, Object value) {
+    return new ContainsListExpression(listProperty, value);
+  }
+
+  public static PropertyExpressionBase divide(PropertyExpressionBase op1, 
PropertyExpressionBase op2) {
+    return new MathDivideExpression(op1, op2);
+  }
+
+  public static StreamExpression every(StreamExpression streamExpression) {
+    return new EveryExpression(streamExpression);
+  }
+
+  public static RelationalOperatorExpression eq(PropertyExpressionBase exp1, 
PropertyExpressionBase exp2) {
+    return new EqualsExpression(exp1, exp2);
+  }
+
+  public static StreamFilterExpression filter(StreamExpression 
streamExpression, Expression... filterExpressions) {
+    return new StreamFilterExpression(streamExpression, 
Arrays.asList(filterExpressions));
+  }
+
+  public static StreamFilterExpression filter(StreamExpression 
streamExpression,
+                                              PatternCountExpression 
patternCountExpression,
+                                              Expression... filterExpressions) 
{
+    return new StreamFilterExpression(streamExpression,
+            Arrays.asList(filterExpressions),
+            patternCountExpression);
+  }
+
+  public static RelationalOperatorExpression ge(PropertyExpressionBase exp1, 
PropertyExpressionBase exp2) {
+    return new GreaterEqualsExpression(exp1, exp2);
+  }
+
+  public static RelationalOperatorExpression gt(PropertyExpressionBase exp1, 
PropertyExpressionBase exp2) {
+    return new GreaterThanExpression(exp1, exp2);
+  }
+
+  public static RelationalOperatorExpression le(PropertyExpressionBase exp1, 
PropertyExpressionBase exp2) {
+    return new LesserEqualsExpression(exp1, exp2);
+  }
+
+  public static RelationalOperatorExpression lt(PropertyExpressionBase exp1, 
PropertyExpressionBase exp2) {
+    return new LesserThanExpression(exp1, exp2);
+  }
+
+  public static PropertyExpressionBase multiply(PropertyExpressionBase op1, 
PropertyExpressionBase op2) {
+    return new MathMultiplyExpression(op1, op2);
+  }
+
+  public static PatternCountExpression patternCount(Integer value, 
PatternCountOperator op) {
+    return new PatternCountExpression(value, op);
+  }
+
   public static PropertyExpression property(String streamName, String 
propertyName) {
     return new PropertyExpression(streamName, propertyName);
   }
@@ -38,7 +113,45 @@ public class Expressions {
     return new PropertyExpression(propertyDef);
   }
 
-  public static Expression as(PropertyExpression property, String targetName) {
-    return null;
+  public static Expression sequence(StreamExpression expression1, 
StreamExpression expression2) {
+    return new SequenceExpression(Arrays.asList(expression1, expression2));
+  }
+
+  public static Expression sequence(StreamExpression expression1,
+                                    StreamExpression expression2,
+                                    WithinExpression withinExpression) {
+    return new SequenceExpression(Arrays.asList(expression1, expression2), 
withinExpression);
+  }
+
+  public static PropertyExpression staticValue(Number staticValue) {
+    return new PropertyExpression(String.valueOf(staticValue));
+  }
+
+  public static PropertyRenameExpression staticValue(Number staticValue, 
String propertyName) {
+    return new 
PropertyRenameExpression(Expressions.property(String.valueOf(staticValue)), 
propertyName);
+  }
+
+  public static PropertyRenameExpression staticValue(String staticValue, 
String propertyName) {
+    return new 
PropertyRenameExpression(Expressions.property(makeStaticString(staticValue)), 
propertyName);
+  }
+
+  public static StreamExpression stream(String streamName) {
+    return new StreamExpression(streamName);
+  }
+
+  public static StreamExpression stream(String streamName, WindowExpression 
windowExpression) {
+    return new StreamExpression(streamName, windowExpression);
+  }
+
+  public static StreamExpression stream(String streamName, String streamAlias) 
{
+    return new StreamExpression(streamName, streamAlias);
+  }
+
+  private static String makeStaticString(String staticValue) {
+    return "'" + staticValue + "'";
+  }
+
+  public static WithinExpression within(int duration, SiddhiTimeUnit timeUnit) 
{
+    return new WithinExpression(duration, timeUnit);
   }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/GreaterEqualsExpression.java
similarity index 73%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/GreaterEqualsExpression.java
index 6667e89..9fc95f1 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/GreaterEqualsExpression.java
@@ -15,7 +15,11 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query;
+package org.apache.streampipes.wrapper.siddhi.query.expression;
 
-public class FromClause extends AbstractQueryGenerator {
+public class GreaterEqualsExpression extends RelationalOperatorExpression {
+
+  public GreaterEqualsExpression(PropertyExpressionBase exp1, 
PropertyExpressionBase exp2) {
+    super(RelationalOperator.GREATER_EQUALS, exp1, exp2);
+  }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/GreaterThanExpression.java
similarity index 73%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/GreaterThanExpression.java
index 6667e89..0edcc44 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/GreaterThanExpression.java
@@ -15,7 +15,11 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query;
+package org.apache.streampipes.wrapper.siddhi.query.expression;
 
-public class FromClause extends AbstractQueryGenerator {
+public class GreaterThanExpression extends RelationalOperatorExpression {
+
+  public GreaterThanExpression(PropertyExpressionBase exp1, 
PropertyExpressionBase exp2) {
+    super(RelationalOperator.GREATER_THAN, exp1, exp2);
+  }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/LesserEqualsExpression.java
similarity index 73%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/LesserEqualsExpression.java
index 6667e89..09053b4 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/LesserEqualsExpression.java
@@ -15,7 +15,11 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query;
+package org.apache.streampipes.wrapper.siddhi.query.expression;
 
-public class FromClause extends AbstractQueryGenerator {
+public class LesserEqualsExpression extends RelationalOperatorExpression {
+
+  public LesserEqualsExpression(PropertyExpressionBase exp1, 
PropertyExpressionBase exp2) {
+    super(RelationalOperator.LESSER_EQUALS, exp1, exp2);
+  }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/LesserThanExpression.java
similarity index 73%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/LesserThanExpression.java
index 6667e89..426c20f 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/LesserThanExpression.java
@@ -15,7 +15,11 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query;
+package org.apache.streampipes.wrapper.siddhi.query.expression;
 
-public class FromClause extends AbstractQueryGenerator {
+public class LesserThanExpression extends RelationalOperatorExpression {
+
+  public LesserThanExpression(PropertyExpressionBase exp1, 
PropertyExpressionBase exp2) {
+    super(RelationalOperator.LESSER_THAN, exp1, exp2);
+  }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyExpression.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyExpression.java
index 2c2fab8..81f0ee9 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyExpression.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyExpression.java
@@ -21,7 +21,7 @@ import 
org.apache.streampipes.wrapper.siddhi.constants.SiddhiStreamSelector;
 import org.apache.streampipes.wrapper.siddhi.model.EventPropertyDef;
 import org.apache.streampipes.wrapper.siddhi.utils.SiddhiUtils;
 
-public class PropertyExpression extends Expression {
+public class PropertyExpression extends PropertyExpressionBase {
 
   private String siddhiPropertyName;
 
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyExpressionBase.java
similarity index 85%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyExpressionBase.java
index 6667e89..85fe269 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyExpressionBase.java
@@ -15,7 +15,9 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query;
+package org.apache.streampipes.wrapper.siddhi.query.expression;
+
+public abstract class PropertyExpressionBase extends Expression {
+
 
-public class FromClause extends AbstractQueryGenerator {
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
index 1739a91..6ac1bbc 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
@@ -19,21 +19,23 @@ package 
org.apache.streampipes.wrapper.siddhi.query.expression;
 
 import org.apache.streampipes.wrapper.siddhi.constants.SiddhiConstants;
 
+import static 
org.apache.streampipes.wrapper.siddhi.utils.SiddhiUtils.prepareProperty;
+
 public class PropertyRenameExpression extends Expression {
 
-  private PropertyExpression propertyExpression;
+  private PropertyExpressionBase propertyExpression;
   private String newPropertyName;
 
-  public PropertyRenameExpression(PropertyExpression property, String 
newPropertyName) {
+  public PropertyRenameExpression(PropertyExpressionBase property, String 
newPropertyName) {
     this.propertyExpression = property;
     this.newPropertyName = newPropertyName;
   }
 
   @Override
   public String toSiddhiEpl() {
-    return joinWithParenthesis(SiddhiConstants.WHITESPACE,
+    return join(SiddhiConstants.WHITESPACE,
             propertyExpression.toSiddhiEpl(),
             SiddhiConstants.AS,
-            newPropertyName);
+            prepareProperty(newPropertyName));
   }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/RelationalOperator.java
similarity index 67%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/RelationalOperator.java
index 6667e89..16e38e3 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/RelationalOperator.java
@@ -15,7 +15,25 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query;
+package org.apache.streampipes.wrapper.siddhi.query.expression;
+
+public enum RelationalOperator {
+
+  EQUALS("="),
+  GREATER_THAN(">"),
+  GREATER_EQUALS(">="),
+  LESSER_THAN("<"),
+  LESSER_EQUALS("<="),
+  NOT_EQUALS("!=");
+
+  private String operator;
+
+  RelationalOperator(String operator) {
+    this.operator = operator;
+  }
+
+  public String toOperatorString() {
+    return operator;
+  }
 
-public class FromClause extends AbstractQueryGenerator {
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/RelationalOperatorExpression.java
similarity index 61%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/RelationalOperatorExpression.java
index 1739a91..848c43b 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/RelationalOperatorExpression.java
@@ -19,21 +19,27 @@ package 
org.apache.streampipes.wrapper.siddhi.query.expression;
 
 import org.apache.streampipes.wrapper.siddhi.constants.SiddhiConstants;
 
-public class PropertyRenameExpression extends Expression {
+public class RelationalOperatorExpression extends Expression {
 
-  private PropertyExpression propertyExpression;
-  private String newPropertyName;
+  private PropertyExpressionBase exp1;
+  private PropertyExpressionBase exp2;
 
-  public PropertyRenameExpression(PropertyExpression property, String 
newPropertyName) {
-    this.propertyExpression = property;
-    this.newPropertyName = newPropertyName;
+  private RelationalOperator operator;
+
+  public RelationalOperatorExpression(RelationalOperator operator,
+                                      PropertyExpressionBase exp1,
+                                      PropertyExpressionBase exp2) {
+    this.operator = operator;
+    this.exp1 = exp1;
+    this.exp2 = exp2;
   }
 
+
   @Override
   public String toSiddhiEpl() {
-    return joinWithParenthesis(SiddhiConstants.WHITESPACE,
-            propertyExpression.toSiddhiEpl(),
-            SiddhiConstants.AS,
-            newPropertyName);
+    return joinWithParenthesis(SiddhiConstants.EMPTY,
+            exp1.toSiddhiEpl(),
+            operator.toOperatorString(),
+            exp2.toSiddhiEpl());
   }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/SequenceExpression.java
similarity index 64%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/SequenceExpression.java
index 1739a91..3700d12 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/SequenceExpression.java
@@ -18,22 +18,18 @@
 package org.apache.streampipes.wrapper.siddhi.query.expression;
 
 import org.apache.streampipes.wrapper.siddhi.constants.SiddhiConstants;
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.pattern.PatternExpression;
 
-public class PropertyRenameExpression extends Expression {
+import java.util.List;
 
-  private PropertyExpression propertyExpression;
-  private String newPropertyName;
+public class SequenceExpression extends PatternExpression {
 
-  public PropertyRenameExpression(PropertyExpression property, String 
newPropertyName) {
-    this.propertyExpression = property;
-    this.newPropertyName = newPropertyName;
+  public SequenceExpression(List<StreamExpression> streamExpressions) {
+    super(SiddhiConstants.SEQUENCE, streamExpressions);
   }
 
-  @Override
-  public String toSiddhiEpl() {
-    return joinWithParenthesis(SiddhiConstants.WHITESPACE,
-            propertyExpression.toSiddhiEpl(),
-            SiddhiConstants.AS,
-            newPropertyName);
+  public SequenceExpression(List<StreamExpression> streamExpressions, 
WithinExpression withinExpression) {
+    super(SiddhiConstants.SEQUENCE, streamExpressions, withinExpression);
   }
+
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/SiddhiTimeUnit.java
similarity index 70%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/SiddhiTimeUnit.java
index 6667e89..388c819 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/SiddhiTimeUnit.java
@@ -15,7 +15,21 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query;
+package org.apache.streampipes.wrapper.siddhi.query.expression;
 
-public class FromClause extends AbstractQueryGenerator {
+public enum SiddhiTimeUnit {
+
+  SECONDS("sec"),
+  MINUTES("minute"),
+  HOURS("hour");
+
+  String timeUnitString;
+
+  SiddhiTimeUnit(String timeUnitString) {
+    this.timeUnitString = timeUnitString;
+  }
+
+  public String toTimeUnitString() {
+    return this.timeUnitString;
+  }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/StreamExpression.java
similarity index 50%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/StreamExpression.java
index 1739a91..3178452 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/StreamExpression.java
@@ -18,22 +18,41 @@
 package org.apache.streampipes.wrapper.siddhi.query.expression;
 
 import org.apache.streampipes.wrapper.siddhi.constants.SiddhiConstants;
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.window.WindowExpression;
 
-public class PropertyRenameExpression extends Expression {
+public class StreamExpression extends Expression {
 
-  private PropertyExpression propertyExpression;
-  private String newPropertyName;
+  private String streamName;
+  private String streamAlias;
+  private WindowExpression windowExpression;
 
-  public PropertyRenameExpression(PropertyExpression property, String 
newPropertyName) {
-    this.propertyExpression = property;
-    this.newPropertyName = newPropertyName;
+  public StreamExpression() {
+
+  }
+
+  public StreamExpression(String streamName) {
+    this.streamName = streamName;
+  }
+
+  public StreamExpression(String streamName, WindowExpression 
windowExpression) {
+    this.streamName = streamName;
+    this.windowExpression = windowExpression;
+  }
+
+  public StreamExpression(String streamAlias, String streamName) {
+    this(streamName);
+    this.streamAlias = streamAlias;
   }
 
   @Override
   public String toSiddhiEpl() {
-    return joinWithParenthesis(SiddhiConstants.WHITESPACE,
-            propertyExpression.toSiddhiEpl(),
-            SiddhiConstants.AS,
-            newPropertyName);
+    String streamName = this.streamAlias == null ? this.streamName :
+            join(SiddhiConstants.EMPTY, this.streamAlias, 
SiddhiConstants.EQUALS, this.streamName);
+
+    if (this.windowExpression != null) {
+      streamName = join(SiddhiConstants.EMPTY, streamName, 
this.windowExpression.toSiddhiEpl());
+    }
+
+    return streamName;
   }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/StreamFilterExpression.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/StreamFilterExpression.java
new file mode 100644
index 0000000..27e0556
--- /dev/null
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/StreamFilterExpression.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.streampipes.wrapper.siddhi.query.expression;
+
+import org.apache.streampipes.wrapper.siddhi.constants.SiddhiConstants;
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.pattern.PatternCountExpression;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class StreamFilterExpression extends StreamExpression {
+
+  private StreamExpression streamExpression;
+  private List<Expression> filterExpressions;
+  private PatternCountExpression patternCountExpression;
+
+  public StreamFilterExpression(StreamExpression streamExpression,
+                                List<Expression> filterExpressions) {
+    this.streamExpression = streamExpression;
+    this.filterExpressions = filterExpressions;
+  }
+
+  public StreamFilterExpression(StreamExpression streamExpression,
+                                List<Expression> filterExpressions,
+                                PatternCountExpression patternCountExpression) 
{
+    this(streamExpression, filterExpressions);
+    this.patternCountExpression = patternCountExpression;
+  }
+
+  @Override
+  public String toSiddhiEpl() {
+    String filterExpressions = join(SiddhiConstants.COMMA, 
this.filterExpressions.stream().map(Expression::toSiddhiEpl).collect(Collectors.toList()));
+
+    filterExpressions = join(SiddhiConstants.EMPTY, 
this.streamExpression.toSiddhiEpl(), 
joinWithSquareBracket(SiddhiConstants.EMPTY, filterExpressions));
+
+    if (this.patternCountExpression != null) {
+      filterExpressions = join(SiddhiConstants.WHITESPACE, filterExpressions, 
this.patternCountExpression.toSiddhiEpl());
+    }
+
+    return filterExpressions;
+  }
+}
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/WithinExpression.java
similarity index 67%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/WithinExpression.java
index 1739a91..6cf2691 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/WithinExpression.java
@@ -19,21 +19,22 @@ package 
org.apache.streampipes.wrapper.siddhi.query.expression;
 
 import org.apache.streampipes.wrapper.siddhi.constants.SiddhiConstants;
 
-public class PropertyRenameExpression extends Expression {
+public class WithinExpression extends Expression {
 
-  private PropertyExpression propertyExpression;
-  private String newPropertyName;
+  private SiddhiTimeUnit timeUnit;
+  private Integer duration;
 
-  public PropertyRenameExpression(PropertyExpression property, String 
newPropertyName) {
-    this.propertyExpression = property;
-    this.newPropertyName = newPropertyName;
+  public WithinExpression(Integer duration, SiddhiTimeUnit timeUnit) {
+    this.duration = duration;
+    this.timeUnit = timeUnit;
   }
 
   @Override
   public String toSiddhiEpl() {
-    return joinWithParenthesis(SiddhiConstants.WHITESPACE,
-            propertyExpression.toSiddhiEpl(),
-            SiddhiConstants.AS,
-            newPropertyName);
+    return join(SiddhiConstants.WHITESPACE,
+            SiddhiConstants.WITHIN,
+            String.valueOf(this.duration),
+            this.timeUnit.toTimeUnitString());
   }
+
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/list/CollectListExpression.java
similarity index 64%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/list/CollectListExpression.java
index 1739a91..51c7521 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/list/CollectListExpression.java
@@ -15,25 +15,26 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query.expression;
+package org.apache.streampipes.wrapper.siddhi.query.expression.list;
 
 import org.apache.streampipes.wrapper.siddhi.constants.SiddhiConstants;
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.PropertyExpression;
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.PropertyExpressionBase;
 
-public class PropertyRenameExpression extends Expression {
+public class CollectListExpression extends PropertyExpressionBase {
 
   private PropertyExpression propertyExpression;
-  private String newPropertyName;
 
-  public PropertyRenameExpression(PropertyExpression property, String 
newPropertyName) {
-    this.propertyExpression = property;
-    this.newPropertyName = newPropertyName;
+  public CollectListExpression(PropertyExpression propertyExp) {
+    this.propertyExpression = propertyExp;
   }
 
   @Override
   public String toSiddhiEpl() {
-    return joinWithParenthesis(SiddhiConstants.WHITESPACE,
+    return join(SiddhiConstants.EMPTY,
+            "list:collect",
+            SiddhiConstants.PARENTHESIS_OPEN,
             propertyExpression.toSiddhiEpl(),
-            SiddhiConstants.AS,
-            newPropertyName);
+            SiddhiConstants.PARENTHESIS_CLOSE);
   }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/list/ContainsListExpression.java
similarity index 53%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/list/ContainsListExpression.java
index 1739a91..840f8c9 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/list/ContainsListExpression.java
@@ -15,25 +15,38 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query.expression;
+package org.apache.streampipes.wrapper.siddhi.query.expression.list;
 
 import org.apache.streampipes.wrapper.siddhi.constants.SiddhiConstants;
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.PropertyExpression;
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.PropertyExpressionBase;
 
-public class PropertyRenameExpression extends Expression {
+public class ContainsListExpression extends PropertyExpressionBase {
 
+  private Object value;
   private PropertyExpression propertyExpression;
-  private String newPropertyName;
 
-  public PropertyRenameExpression(PropertyExpression property, String 
newPropertyName) {
-    this.propertyExpression = property;
-    this.newPropertyName = newPropertyName;
+  public ContainsListExpression(PropertyExpression propertyExp, Object value) {
+    this.propertyExpression = propertyExp;
+    this.value = value;
   }
 
   @Override
   public String toSiddhiEpl() {
-    return joinWithParenthesis(SiddhiConstants.WHITESPACE,
+    return join(SiddhiConstants.EMPTY,
+            "list:contains",
+            SiddhiConstants.PARENTHESIS_OPEN,
             propertyExpression.toSiddhiEpl(),
-            SiddhiConstants.AS,
-            newPropertyName);
+            SiddhiConstants.COMMA,
+            prepare(value),
+            SiddhiConstants.PARENTHESIS_CLOSE);
+  }
+
+  public String prepare(Object value) {
+    if (value instanceof String) {
+      return join(SiddhiConstants.EMPTY, "'", value.toString(), "'");
+    } else {
+      return String.valueOf(value);
+    }
   }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathAddExpression.java
similarity index 70%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathAddExpression.java
index 6667e89..d7b6e91 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathAddExpression.java
@@ -15,7 +15,13 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query;
+package org.apache.streampipes.wrapper.siddhi.query.expression.math;
 
-public class FromClause extends AbstractQueryGenerator {
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.PropertyExpressionBase;
+
+public class MathAddExpression extends MathExpression {
+
+  public MathAddExpression(PropertyExpressionBase op1, PropertyExpressionBase 
op2) {
+    super(MathOperator.ADD, op1, op2);
+  }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathDivideExpression.java
similarity index 69%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathDivideExpression.java
index 6667e89..01df696 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathDivideExpression.java
@@ -15,7 +15,13 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query;
+package org.apache.streampipes.wrapper.siddhi.query.expression.math;
 
-public class FromClause extends AbstractQueryGenerator {
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.PropertyExpressionBase;
+
+public class MathDivideExpression extends MathExpression {
+
+  public MathDivideExpression(PropertyExpressionBase op1, 
PropertyExpressionBase op2) {
+    super(MathOperator.DIVIDE, op1, op2);
+  }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathExpression.java
similarity index 60%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathExpression.java
index 1739a91..7a2b5cd 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathExpression.java
@@ -15,25 +15,30 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query.expression;
+package org.apache.streampipes.wrapper.siddhi.query.expression.math;
 
 import org.apache.streampipes.wrapper.siddhi.constants.SiddhiConstants;
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.PropertyExpressionBase;
 
-public class PropertyRenameExpression extends Expression {
+public class MathExpression extends PropertyExpressionBase {
 
-  private PropertyExpression propertyExpression;
-  private String newPropertyName;
+  private MathOperator operator;
+  private PropertyExpressionBase op1;
+  private PropertyExpressionBase op2;
 
-  public PropertyRenameExpression(PropertyExpression property, String 
newPropertyName) {
-    this.propertyExpression = property;
-    this.newPropertyName = newPropertyName;
+  public MathExpression(MathOperator operator,
+                        PropertyExpressionBase op1,
+                        PropertyExpressionBase op2) {
+    this.operator = operator;
+    this.op1 = op1;
+    this.op2 = op2;
   }
 
   @Override
   public String toSiddhiEpl() {
     return joinWithParenthesis(SiddhiConstants.WHITESPACE,
-            propertyExpression.toSiddhiEpl(),
-            SiddhiConstants.AS,
-            newPropertyName);
+            op1.toSiddhiEpl(),
+            operator.toOperatorString(),
+            op2.toSiddhiEpl());
   }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathMultiplyExpression.java
similarity index 69%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathMultiplyExpression.java
index 6667e89..0e61f5c 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathMultiplyExpression.java
@@ -15,7 +15,13 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query;
+package org.apache.streampipes.wrapper.siddhi.query.expression.math;
 
-public class FromClause extends AbstractQueryGenerator {
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.PropertyExpressionBase;
+
+public class MathMultiplyExpression extends MathExpression {
+
+  public MathMultiplyExpression(PropertyExpressionBase op1, 
PropertyExpressionBase op2) {
+    super(MathOperator.MULTIPLY, op1, op2);
+  }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathOperator.java
similarity index 71%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathOperator.java
index 6667e89..3547c6b 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathOperator.java
@@ -15,7 +15,22 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query;
+package org.apache.streampipes.wrapper.siddhi.query.expression.math;
 
-public class FromClause extends AbstractQueryGenerator {
+public enum MathOperator {
+
+  ADD("+"),
+  SUBTRACT("-"),
+  MULTIPLY("*"),
+  DIVIDE("/");
+
+  private String operator;
+
+  MathOperator(String operator) {
+    this.operator = operator;
+  }
+
+  public String toOperatorString() {
+    return operator;
+  }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathSubtractExpression.java
similarity index 69%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathSubtractExpression.java
index 6667e89..42022e0 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/math/MathSubtractExpression.java
@@ -15,7 +15,13 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query;
+package org.apache.streampipes.wrapper.siddhi.query.expression.math;
 
-public class FromClause extends AbstractQueryGenerator {
+import 
org.apache.streampipes.wrapper.siddhi.query.expression.PropertyExpressionBase;
+
+public class MathSubtractExpression extends MathExpression {
+
+  public MathSubtractExpression(PropertyExpressionBase op1, 
PropertyExpressionBase op2) {
+    super(MathOperator.SUBTRACT, op1, op2);
+  }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/pattern/EveryExpression.java
similarity index 63%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/pattern/EveryExpression.java
index 1739a91..48accbb 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/pattern/EveryExpression.java
@@ -15,25 +15,21 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query.expression;
+package org.apache.streampipes.wrapper.siddhi.query.expression.pattern;
 
 import org.apache.streampipes.wrapper.siddhi.constants.SiddhiConstants;
+import org.apache.streampipes.wrapper.siddhi.query.expression.StreamExpression;
 
-public class PropertyRenameExpression extends Expression {
+public class EveryExpression extends StreamExpression {
 
-  private PropertyExpression propertyExpression;
-  private String newPropertyName;
+  private StreamExpression streamExpression;
 
-  public PropertyRenameExpression(PropertyExpression property, String 
newPropertyName) {
-    this.propertyExpression = property;
-    this.newPropertyName = newPropertyName;
+  public EveryExpression(StreamExpression streamExpression) {
+    this.streamExpression = streamExpression;
   }
 
   @Override
   public String toSiddhiEpl() {
-    return joinWithParenthesis(SiddhiConstants.WHITESPACE,
-            propertyExpression.toSiddhiEpl(),
-            SiddhiConstants.AS,
-            newPropertyName);
+    return joinWithParenthesis(SiddhiConstants.WHITESPACE, 
SiddhiConstants.EVERY, streamExpression.toSiddhiEpl());
   }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/pattern/PatternCountExpression.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/pattern/PatternCountExpression.java
new file mode 100644
index 0000000..b6aebb0
--- /dev/null
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/pattern/PatternCountExpression.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.streampipes.wrapper.siddhi.query.expression.pattern;
+
+import org.apache.streampipes.wrapper.siddhi.constants.SiddhiConstants;
+import org.apache.streampipes.wrapper.siddhi.query.expression.Expression;
+
+public class PatternCountExpression extends Expression {
+
+  private String countString;
+
+  public PatternCountExpression(Integer count, PatternCountOperator operator) {
+    String countValue = "";
+    if (operator == PatternCountOperator.EXACTLY_N) {
+      countValue = String.valueOf(count);
+    } else if (operator == PatternCountOperator.MIN_N) {
+      countValue = count + SiddhiConstants.COLON;
+    } else if (operator == PatternCountOperator.MAX_N) {
+      countValue = SiddhiConstants.COLON + count;
+    }
+
+    this.countString = SiddhiConstants.ANGLE_BRACKET_OPEN
+            + countValue
+            + SiddhiConstants.ANGLE_BRACKET_CLOSE;
+  }
+
+  public PatternCountExpression(Integer minCount, Integer maxCount) {
+    this.countString = SiddhiConstants.ANGLE_BRACKET_OPEN
+            + minCount
+            + SiddhiConstants.COLON
+            + maxCount
+            + SiddhiConstants.ANGLE_BRACKET_CLOSE;
+  }
+
+  @Override
+  public String toSiddhiEpl() {
+    return this.countString;
+  }
+}
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/pattern/PatternCountOperator.java
similarity index 85%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/pattern/PatternCountOperator.java
index 6667e89..60d2d04 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/pattern/PatternCountOperator.java
@@ -15,7 +15,12 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query;
+package org.apache.streampipes.wrapper.siddhi.query.expression.pattern;
+
+public enum PatternCountOperator {
+
+  MIN_N,
+  MAX_N,
+  EXACTLY_N;
 
-public class FromClause extends AbstractQueryGenerator {
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/pattern/PatternExpression.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/pattern/PatternExpression.java
new file mode 100644
index 0000000..9993a64
--- /dev/null
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/pattern/PatternExpression.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.streampipes.wrapper.siddhi.query.expression.pattern;
+
+import org.apache.streampipes.wrapper.siddhi.constants.SiddhiConstants;
+import org.apache.streampipes.wrapper.siddhi.query.expression.Expression;
+import org.apache.streampipes.wrapper.siddhi.query.expression.StreamExpression;
+import org.apache.streampipes.wrapper.siddhi.query.expression.WithinExpression;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+public abstract class PatternExpression extends Expression {
+
+  private String pattern;
+  private List<StreamExpression> streamExpressions;
+  private WithinExpression withinExpression;
+
+  public PatternExpression(String pattern, List<StreamExpression> 
streamExpressions) {
+    this.pattern = pattern;
+    this.streamExpressions = streamExpressions;
+  }
+
+  public PatternExpression(String pattern,
+                           List<StreamExpression> streamExpressions,
+                           WithinExpression withinExpression) {
+    this(pattern, streamExpressions);
+    this.withinExpression = withinExpression;
+  }
+
+  @Override
+  public String toSiddhiEpl() {
+    String patternExpression = joinWithParenthesis(SiddhiConstants.EMPTY, 
join(pattern, streamExpressions
+            .stream()
+            .map(StreamExpression::toSiddhiEpl)
+            .collect(Collectors.toList())));
+
+    if (this.withinExpression != null) {
+      patternExpression = join(SiddhiConstants.EMPTY, patternExpression, 
this.withinExpression.toSiddhiEpl());
+    }
+
+    return patternExpression;
+
+  }
+}
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/window/BatchWindowExpression.java
similarity index 64%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/window/BatchWindowExpression.java
index 6667e89..feb4c30 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/FromClause.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/window/BatchWindowExpression.java
@@ -15,7 +15,18 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query;
+package org.apache.streampipes.wrapper.siddhi.query.expression.window;
 
-public class FromClause extends AbstractQueryGenerator {
+import org.apache.streampipes.wrapper.siddhi.constants.SiddhiConstants;
+
+public class BatchWindowExpression extends WindowExpression {
+
+  public BatchWindowExpression(Integer batchSize) {
+    super(batchSize);
+  }
+
+  @Override
+  public String toSiddhiEpl() {
+    return join(SiddhiConstants.EMPTY, windowExpression(), "length", 
windowValue(String.valueOf(windowValue)));
+  }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/window/TimeWindowExpression.java
similarity index 62%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/window/TimeWindowExpression.java
index 1739a91..198b366 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/PropertyRenameExpression.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/window/TimeWindowExpression.java
@@ -15,25 +15,24 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query.expression;
+package org.apache.streampipes.wrapper.siddhi.query.expression.window;
 
 import org.apache.streampipes.wrapper.siddhi.constants.SiddhiConstants;
+import org.apache.streampipes.wrapper.siddhi.query.expression.SiddhiTimeUnit;
 
-public class PropertyRenameExpression extends Expression {
+public class TimeWindowExpression extends WindowExpression {
 
-  private PropertyExpression propertyExpression;
-  private String newPropertyName;
+  private SiddhiTimeUnit timeUnit;
 
-  public PropertyRenameExpression(PropertyExpression property, String 
newPropertyName) {
-    this.propertyExpression = property;
-    this.newPropertyName = newPropertyName;
+  public TimeWindowExpression(Integer timeWindowSize, SiddhiTimeUnit timeUnit) 
{
+    super(timeWindowSize);
+    this.timeUnit = timeUnit;
   }
 
   @Override
   public String toSiddhiEpl() {
-    return joinWithParenthesis(SiddhiConstants.WHITESPACE,
-            propertyExpression.toSiddhiEpl(),
-            SiddhiConstants.AS,
-            newPropertyName);
+    return join(SiddhiConstants.EMPTY,
+            windowExpression(),
+            windowValue(windowValue + SiddhiConstants.WHITESPACE + 
timeUnit.toTimeUnitString()));
   }
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/Expression.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/window/WindowExpression.java
similarity index 61%
copy from 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/Expression.java
copy to 
streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/window/WindowExpression.java
index df93f57..32edbae 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/Expression.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query/expression/window/WindowExpression.java
@@ -15,33 +15,27 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.wrapper.siddhi.query.expression;
+package org.apache.streampipes.wrapper.siddhi.query.expression.window;
 
 import org.apache.streampipes.wrapper.siddhi.constants.SiddhiConstants;
+import org.apache.streampipes.wrapper.siddhi.query.expression.Expression;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.StringJoiner;
+public abstract class WindowExpression extends Expression {
 
-public abstract class Expression {
+  protected Integer windowValue;
 
-  protected String join(String delimiter, String... substrings) {
-    return join(delimiter, Arrays.asList(substrings));
+  public WindowExpression(Integer windowValue) {
+    this.windowValue = windowValue;
   }
 
-  protected String joinWithParenthesis(String delimiter, String... substrings) 
{
+  protected String windowExpression() {
+    return join(SiddhiConstants.EMPTY, SiddhiConstants.HASH, "window", 
SiddhiConstants.DOT);
+  }
+
+  protected String windowValue(String value) {
     return join(SiddhiConstants.EMPTY,
             SiddhiConstants.PARENTHESIS_OPEN,
-            join(delimiter, substrings),
+            value,
             SiddhiConstants.PARENTHESIS_CLOSE);
   }
-
-  protected String join(String delimiter, List<String> substrings) {
-    StringJoiner joiner = new StringJoiner(delimiter);
-    substrings.forEach(joiner::add);
-
-    return joiner.toString();
-  }
-
-  public abstract String toSiddhiEpl();
 }
diff --git 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/utils/SiddhiUtils.java
 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/utils/SiddhiUtils.java
index fb98d38..6607fc1 100644
--- 
a/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/utils/SiddhiUtils.java
+++ 
b/streampipes-wrapper-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/utils/SiddhiUtils.java
@@ -81,4 +81,5 @@ public class SiddhiUtils {
   public static String prepareProperty(String propertyName) {
     return propertyName.replaceAll("::", "");
   }
+
 }

Reply via email to