/* * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. 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.wso2.siddhi.query.api.expression; import org.wso2.siddhi.query.api.expression.condition.And; import org.wso2.siddhi.query.api.expression.condition.Compare; import org.wso2.siddhi.query.api.expression.condition.In; import org.wso2.siddhi.query.api.expression.condition.IsNull; import org.wso2.siddhi.query.api.expression.condition.Not; import org.wso2.siddhi.query.api.expression.condition.Or; import org.wso2.siddhi.query.api.expression.constant.BoolConstant; import org.wso2.siddhi.query.api.expression.constant.DoubleConstant; import org.wso2.siddhi.query.api.expression.constant.FloatConstant; import org.wso2.siddhi.query.api.expression.constant.IntConstant; import org.wso2.siddhi.query.api.expression.constant.LongConstant; import org.wso2.siddhi.query.api.expression.constant.StringConstant; import org.wso2.siddhi.query.api.expression.constant.TimeConstant; import org.wso2.siddhi.query.api.expression.math.Add; import org.wso2.siddhi.query.api.expression.math.Divide; import org.wso2.siddhi.query.api.expression.math.Mod; import org.wso2.siddhi.query.api.expression.math.Multiply; import org.wso2.siddhi.query.api.expression.math.Subtract; import java.io.Serializable; /** * Siddhi expression */ public abstract class Expression implements Serializable { private static final long serialVersionUID = 1L; public static StringConstant value(String value) { return new StringConstant(value); } public static IntConstant value(int value) { return new IntConstant(value); } public static LongConstant value(long value) { return new LongConstant(value); } public static DoubleConstant value(double value) { return new DoubleConstant(value); } public static FloatConstant value(float value) { return new FloatConstant(value); } public static BoolConstant value(boolean value) { return new BoolConstant(value); } public static Variable variable(String attributeName) { return new Variable(attributeName); } public static Add add(Expression leftValue, Expression rightValue) { return new Add(leftValue, rightValue); } public static Subtract subtract(Expression leftValue, Expression rightValue) { return new Subtract(leftValue, rightValue); } public static Multiply multiply(Expression leftValue, Expression rightValue) { return new Multiply(leftValue, rightValue); } public static Divide divide(Expression leftValue, Expression rightValue) { return new Divide(leftValue, rightValue); } public static Mod mod(Expression leftValue, Expression rightValue) { return new Mod(leftValue, rightValue); } public static Expression function(String extensionNamespace, String extensionFunctionName, Expression... expressions) { return new AttributeFunction(extensionNamespace, extensionFunctionName, expressions); } public static Expression function(String functionName, Expression... expressions) { return new AttributeFunction("", functionName, expressions); } public static Expression compare(Expression leftExpression, Compare.Operator operator, Expression rightExpression) { return new Compare(leftExpression, operator, rightExpression); } public static Expression in(Expression leftExpression, String streamId) { return new In(leftExpression, streamId); } public static Expression and(Expression leftExpression, Expression rightExpression) { return new And(leftExpression, rightExpression); } public static Expression or(Expression leftExpression, Expression rightExpression) { return new Or(leftExpression, rightExpression); } public static Expression not(Expression expression) { return new Not(expression); } public static Expression isNull(Expression expression) { return new IsNull(expression); } public static Expression isNullStream(String streamId) { return new IsNull(streamId, null, false); } public static Expression isNullStream(String streamId, int streamIndex) { return new IsNull(streamId, streamIndex, false); } public static Expression isNullInnerStream(String streamId) { return new IsNull(streamId, null, true); } public static Expression isNullInnerStream(String streamId, int streamIndex) { return new IsNull(streamId, streamIndex, true); } /** * Time constant factory class */ public abstract static class Time { public static TimeConstant milliSec(long i) { return new TimeConstant((long) i); } public static TimeConstant milliSec(int i) { return milliSec((long) i); } public static TimeConstant sec(long i) { return new TimeConstant(((long) i) * 1000); } public static TimeConstant sec(int i) { return sec((long) i); } public static TimeConstant minute(long i) { return new TimeConstant(((long) i) * 60 * 1000); } public static TimeConstant minute(int i) { return minute((long) i); } public static TimeConstant hour(long i) { return new TimeConstant(((long) i) * 60 * 60 * 1000); } public static TimeConstant hour(int i) { return hour((long) i); } public static TimeConstant day(long i) { return new TimeConstant(((long) i) * 24 * 60 * 60 * 1000); } public static TimeConstant day(int i) { return day((long) i); } public static TimeConstant week(long i) { return new TimeConstant(((long) i) * 7 * 24 * 60 * 60 * 1000); } public static TimeConstant week(int i) { return week((long) i); } public static TimeConstant month(long i) { return new TimeConstant(((long) i) * 30 * 24 * 60 * 60 * 1000); } public static TimeConstant month(int i) { return month((long) i); } public static TimeConstant year(long i) { return new TimeConstant(((long) i) * 365 * 24 * 60 * 60 * 1000); } public static TimeConstant year(int i) { return year((long) i); } } }