com.espertech.esper.client.soda.TimePeriodExpression Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of esper Show documentation
Show all versions of esper Show documentation
Complex event processing and event series analysis component
/*
***************************************************************************************
* Copyright (C) 2006 EsperTech, Inc. All rights reserved. *
* http://www.espertech.com/esper *
* http://www.espertech.com *
* ---------------------------------------------------------------------------------- *
* The software in this package is published under the terms of the GPL license *
* a copy of which has been included with this distribution in the license.txt file. *
***************************************************************************************
*/
package com.espertech.esper.client.soda;
import java.io.StringWriter;
/**
* Represent an expression
*/
public class TimePeriodExpression extends ExpressionBase {
private boolean hasYears;
private boolean hasMonths;
private boolean hasWeeks;
private boolean hasDays;
private boolean hasHours;
private boolean hasMinutes;
private boolean hasSeconds;
private boolean hasMilliseconds;
private boolean hasMicroseconds;
private static final long serialVersionUID = 1386645838943804276L;
/**
* Ctor.
*/
public TimePeriodExpression() {
}
/**
* Ctor.
*
* @param hasYears flag to indicate that a year-part expression exists
* @param hasMonths flag to indicate that a month-part expression exists
* @param hasWeeks flag to indicate that a week-part expression exists
* @param hasDays flag to indicate that a day-part expression exists
* @param hasHours flag to indicate that a hour-part expression exists
* @param hasMinutes flag to indicate that a minute-part expression exists
* @param hasSeconds flag to indicate that a seconds-part expression exists
* @param hasMilliseconds flag to indicate that a millisec-part expression exists
* @param hasMicroseconds flag to indicate that a microsecond-part expression exists
*/
public TimePeriodExpression(boolean hasYears, boolean hasMonths, boolean hasWeeks, boolean hasDays, boolean hasHours, boolean hasMinutes, boolean hasSeconds, boolean hasMilliseconds, boolean hasMicroseconds) {
this.hasYears = hasYears;
this.hasMonths = hasMonths;
this.hasWeeks = hasWeeks;
this.hasDays = hasDays;
this.hasHours = hasHours;
this.hasMinutes = hasMinutes;
this.hasSeconds = hasSeconds;
this.hasMilliseconds = hasMilliseconds;
this.hasMicroseconds = hasMicroseconds;
}
/**
* Ctor.
*
* @param yearsExpr expression returning years value, or null if no such part
* @param monthsExpr expression returning months value, or null if no such part
* @param weeksExpr expression returning weeks value, or null if no such part
* @param daysExpr expression returning days value, or null if no such part
* @param hoursExpr expression returning hours value, or null if no such part
* @param minutesExpr expression returning minutes value, or null if no such part
* @param secondsExpr expression returning seconds value, or null if no such part
* @param millisecondsExpr expression returning millisec value, or null if no such part
* @param microsecondsExpr expression returning microsecond value, or null if no such part
*/
public TimePeriodExpression(Expression yearsExpr, Expression monthsExpr, Expression weeksExpr, Expression daysExpr, Expression hoursExpr, Expression minutesExpr, Expression secondsExpr, Expression millisecondsExpr, Expression microsecondsExpr) {
addExpr(yearsExpr, monthsExpr, weeksExpr, daysExpr, hoursExpr, minutesExpr, secondsExpr, millisecondsExpr, microsecondsExpr);
}
/**
* Ctor.
*
* @param hasYears flag to indicate that a year-part expression exists
* @param hasMonths flag to indicate that a month-part expression exists
* @param hasWeeks flag to indicate that a week-part expression exists
* @param hasDays flag to indicate that a day-part expression exists
* @param hasHours flag to indicate that a hour-part expression exists
* @param hasMinutes flag to indicate that a minute-part expression exists
* @param hasSeconds flag to indicate that a seconds-part expression exists
* @param hasMilliseconds flag to indicate that a millisec-part expression exists
*/
public TimePeriodExpression(boolean hasYears, boolean hasMonths, boolean hasWeeks, boolean hasDays, boolean hasHours, boolean hasMinutes, boolean hasSeconds, boolean hasMilliseconds) {
this(hasYears, hasMonths, hasWeeks, hasDays, hasHours, hasMinutes, hasSeconds, hasMilliseconds, false);
}
/**
* Ctor.
*
* @param hasDays flag to indicate that a day-part expression exists
* @param hasHours flag to indicate that a hour-part expression exists
* @param hasMinutes flag to indicate that a minute-part expression exists
* @param hasSeconds flag to indicate that a seconds-part expression exists
* @param hasMilliseconds flag to indicate that a millisec-part expression exists
*/
public TimePeriodExpression(boolean hasDays, boolean hasHours, boolean hasMinutes, boolean hasSeconds, boolean hasMilliseconds) {
this(false, false, false, hasDays, hasHours, hasMinutes, hasSeconds, hasMilliseconds, false);
}
/**
* Ctor.
*
* @param yearsExpr expression returning years value, or null if no such part
* @param monthsExpr expression returning months value, or null if no such part
* @param weeksExpr expression returning weeks value, or null if no such part
* @param daysExpr expression returning days value, or null if no such part
* @param hoursExpr expression returning hours value, or null if no such part
* @param minutesExpr expression returning minutes value, or null if no such part
* @param secondsExpr expression returning seconds value, or null if no such part
* @param millisecondsExpr expression returning millisec value, or null if no such part
*/
public TimePeriodExpression(Expression yearsExpr, Expression monthsExpr, Expression weeksExpr, Expression daysExpr, Expression hoursExpr, Expression minutesExpr, Expression secondsExpr, Expression millisecondsExpr) {
this(yearsExpr, monthsExpr, weeksExpr, daysExpr, hoursExpr, minutesExpr, secondsExpr, millisecondsExpr, null);
}
/**
* Ctor.
*
* @param daysExpr expression returning days value, or null if no such part
* @param hoursExpr expression returning hours value, or null if no such part
* @param minutesExpr expression returning minutes value, or null if no such part
* @param secondsExpr expression returning seconds value, or null if no such part
* @param millisecondsExpr expression returning millisec value, or null if no such part
*/
public TimePeriodExpression(Expression daysExpr, Expression hoursExpr, Expression minutesExpr, Expression secondsExpr, Expression millisecondsExpr) {
this(null, null, null, daysExpr, hoursExpr, minutesExpr, secondsExpr, millisecondsExpr, null);
}
private void addExpr(Expression yearsExpr, Expression monthExpr, Expression weeksExpr, Expression daysExpr, Expression hoursExpr, Expression minutesExpr, Expression secondsExpr, Expression millisecondsExpr, Expression microsecondsExpr) {
if (yearsExpr != null) {
hasYears = true;
this.addChild(yearsExpr);
}
if (monthExpr != null) {
hasMonths = true;
this.addChild(monthExpr);
}
if (weeksExpr != null) {
hasWeeks = true;
this.addChild(weeksExpr);
}
if (daysExpr != null) {
hasDays = true;
this.addChild(daysExpr);
}
if (hoursExpr != null) {
hasHours = true;
this.addChild(hoursExpr);
}
if (minutesExpr != null) {
hasMinutes = true;
this.addChild(minutesExpr);
}
if (secondsExpr != null) {
hasSeconds = true;
this.addChild(secondsExpr);
}
if (millisecondsExpr != null) {
hasMilliseconds = true;
this.addChild(millisecondsExpr);
}
if (microsecondsExpr != null) {
hasMicroseconds = true;
this.addChild(microsecondsExpr);
}
}
/**
* Returns true if a subexpression exists that is a day-part.
*
* @return indicator for presence of part
*/
public boolean isHasDays() {
return hasDays;
}
/**
* Set to true if a subexpression exists that is a day-part.
*
* @param hasDays for presence of part
*/
public void setHasDays(boolean hasDays) {
this.hasDays = hasDays;
}
/**
* Returns true if a subexpression exists that is a hour-part.
*
* @return indicator for presence of part
*/
public boolean isHasHours() {
return hasHours;
}
/**
* Set to true if a subexpression exists that is a hour-part.
*
* @param hasHours for presence of part
*/
public void setHasHours(boolean hasHours) {
this.hasHours = hasHours;
}
/**
* Returns true if a subexpression exists that is a minutes-part.
*
* @return indicator for presence of part
*/
public boolean isHasMinutes() {
return hasMinutes;
}
/**
* Set to true if a subexpression exists that is a minutes-part.
*
* @param hasMinutes for presence of part
*/
public void setHasMinutes(boolean hasMinutes) {
this.hasMinutes = hasMinutes;
}
/**
* Returns true if a subexpression exists that is a seconds-part.
*
* @return indicator for presence of part
*/
public boolean isHasSeconds() {
return hasSeconds;
}
/**
* Set to true if a subexpression exists that is a seconds-part.
*
* @param hasSeconds for presence of part
*/
public void setHasSeconds(boolean hasSeconds) {
this.hasSeconds = hasSeconds;
}
/**
* Returns true if a subexpression exists that is a milliseconds-part.
*
* @return indicator for presence of part
*/
public boolean isHasMilliseconds() {
return hasMilliseconds;
}
/**
* Set to true if a subexpression exists that is a msec-part.
*
* @param hasMilliseconds for presence of part
*/
public void setHasMilliseconds(boolean hasMilliseconds) {
this.hasMilliseconds = hasMilliseconds;
}
/**
* Returns true if a subexpression exists that is a year-part.
*
* @return indicator for presence of part
*/
public boolean isHasYears() {
return hasYears;
}
/**
* Set to true if a subexpression exists that is a year-part.
*
* @param hasYears for presence of part
*/
public void setHasYears(boolean hasYears) {
this.hasYears = hasYears;
}
/**
* Returns true if a subexpression exists that is a month-part.
*
* @return indicator for presence of part
*/
public boolean isHasMonths() {
return hasMonths;
}
/**
* Set to true if a subexpression exists that is a month-part.
*
* @param hasMonths for presence of part
*/
public void setHasMonths(boolean hasMonths) {
this.hasMonths = hasMonths;
}
/**
* Returns true if a subexpression exists that is a weeks-part.
*
* @return indicator for presence of part
*/
public boolean isHasWeeks() {
return hasWeeks;
}
/**
* Set to true if a subexpression exists that is a weeks-part.
*
* @param hasWeeks for presence of part
*/
public void setHasWeeks(boolean hasWeeks) {
this.hasWeeks = hasWeeks;
}
/**
* Returns true if a subexpression exists that is a microsecond-part.
*
* @return indicator for presence of part
*/
public boolean isHasMicroseconds() {
return hasMicroseconds;
}
/**
* Set to true if a subexpression exists that is a microsecond-part.
*
* @param hasMicroseconds indicator for presence of part
*/
public void setHasMicroseconds(boolean hasMicroseconds) {
this.hasMicroseconds = hasMicroseconds;
}
public ExpressionPrecedenceEnum getPrecedence() {
return ExpressionPrecedenceEnum.UNARY;
}
public void toPrecedenceFreeEPL(StringWriter writer) {
String delimiter = "";
int countExpr = 0;
if (hasYears) {
this.getChildren().get(countExpr).toEPL(writer, ExpressionPrecedenceEnum.MINIMUM);
writer.append(" years");
delimiter = " ";
countExpr++;
}
if (hasMonths) {
writer.write(delimiter);
this.getChildren().get(countExpr).toEPL(writer, ExpressionPrecedenceEnum.MINIMUM);
writer.append(" months");
delimiter = " ";
countExpr++;
}
if (hasWeeks) {
writer.write(delimiter);
this.getChildren().get(countExpr).toEPL(writer, ExpressionPrecedenceEnum.MINIMUM);
writer.append(" weeks");
delimiter = " ";
countExpr++;
}
if (hasDays) {
writer.write(delimiter);
this.getChildren().get(countExpr).toEPL(writer, ExpressionPrecedenceEnum.MINIMUM);
writer.append(" days");
delimiter = " ";
countExpr++;
}
if (hasHours) {
writer.write(delimiter);
this.getChildren().get(countExpr).toEPL(writer, ExpressionPrecedenceEnum.MINIMUM);
writer.append(" hours");
delimiter = " ";
countExpr++;
}
if (hasMinutes) {
writer.write(delimiter);
this.getChildren().get(countExpr).toEPL(writer, ExpressionPrecedenceEnum.MINIMUM);
writer.append(" minutes");
delimiter = " ";
countExpr++;
}
if (hasSeconds) {
writer.write(delimiter);
this.getChildren().get(countExpr).toEPL(writer, ExpressionPrecedenceEnum.MINIMUM);
writer.append(" seconds");
delimiter = " ";
countExpr++;
}
if (hasMilliseconds) {
writer.write(delimiter);
this.getChildren().get(countExpr).toEPL(writer, ExpressionPrecedenceEnum.MINIMUM);
writer.append(" milliseconds");
delimiter = " ";
countExpr++;
}
if (hasMicroseconds) {
writer.write(delimiter);
this.getChildren().get(countExpr).toEPL(writer, ExpressionPrecedenceEnum.MINIMUM);
writer.append(" microseconds");
}
}
}