/*
***************************************************************************************
* 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.epl.datetime.eval;
import com.espertech.esper.epl.methodbase.DotMethodFP;
import java.util.Locale;
public enum DatetimeMethodEnum {
// calendar ops
WITHTIME("withTime", DatetimeMethodEnumStatics.CALENDAR_OP_FACTORY, DatetimeMethodEnumParams.WITHTIME),
WITHDATE("withDate", DatetimeMethodEnumStatics.CALENDAR_OP_FACTORY, DatetimeMethodEnumParams.WITHDATE),
PLUS("plus", DatetimeMethodEnumStatics.CALENDAR_OP_FACTORY, DatetimeMethodEnumParams.PLUSMINUS),
MINUS("minus", DatetimeMethodEnumStatics.CALENDAR_OP_FACTORY, DatetimeMethodEnumParams.PLUSMINUS),
WITHMAX("withMax", DatetimeMethodEnumStatics.CALENDAR_OP_FACTORY, DatetimeMethodEnumParams.CALFIELD),
WITHMIN("withMin", DatetimeMethodEnumStatics.CALENDAR_OP_FACTORY, DatetimeMethodEnumParams.CALFIELD),
SET("set", DatetimeMethodEnumStatics.CALENDAR_OP_FACTORY, DatetimeMethodEnumParams.CALFIELD_PLUS_INT),
ROUNDCEILING("roundCeiling", DatetimeMethodEnumStatics.CALENDAR_OP_FACTORY, DatetimeMethodEnumParams.CALFIELD),
ROUNDFLOOR("roundFloor", DatetimeMethodEnumStatics.CALENDAR_OP_FACTORY, DatetimeMethodEnumParams.CALFIELD),
ROUNDHALF("roundHalf", DatetimeMethodEnumStatics.CALENDAR_OP_FACTORY, DatetimeMethodEnumParams.CALFIELD),
// reformat ops
GET("get", DatetimeMethodEnumStatics.REFORMAT_OP_FACTORY, DatetimeMethodEnumParams.CALFIELD),
FORMAT("format", DatetimeMethodEnumStatics.REFORMAT_OP_FACTORY, DatetimeMethodEnumParams.FORMAT),
TOCALENDAR("toCalendar", DatetimeMethodEnumStatics.REFORMAT_OP_FACTORY, DatetimeMethodEnumParams.NOPARAM),
TODATE("toDate", DatetimeMethodEnumStatics.REFORMAT_OP_FACTORY, DatetimeMethodEnumParams.NOPARAM),
TOMILLISEC("toMillisec", DatetimeMethodEnumStatics.REFORMAT_OP_FACTORY, DatetimeMethodEnumParams.NOPARAM),
GETMINUTEOFHOUR("getMinuteOfHour", DatetimeMethodEnumStatics.REFORMAT_OP_FACTORY, DatetimeMethodEnumParams.NOPARAM),
GETMONTHOFYEAR("getMonthOfYear", DatetimeMethodEnumStatics.REFORMAT_OP_FACTORY, DatetimeMethodEnumParams.NOPARAM),
GETDAYOFMONTH("getDayOfMonth", DatetimeMethodEnumStatics.REFORMAT_OP_FACTORY, DatetimeMethodEnumParams.NOPARAM),
GETDAYOFWEEK("getDayOfWeek", DatetimeMethodEnumStatics.REFORMAT_OP_FACTORY, DatetimeMethodEnumParams.NOPARAM),
GETDAYOFYEAR("getDayOfYear", DatetimeMethodEnumStatics.REFORMAT_OP_FACTORY, DatetimeMethodEnumParams.NOPARAM),
GETERA("getEra", DatetimeMethodEnumStatics.REFORMAT_OP_FACTORY, DatetimeMethodEnumParams.NOPARAM),
GETHOUROFDAY("getHourOfDay", DatetimeMethodEnumStatics.REFORMAT_OP_FACTORY, DatetimeMethodEnumParams.NOPARAM),
GETMILLISOFSECOND("getMillisOfSecond", DatetimeMethodEnumStatics.REFORMAT_OP_FACTORY, DatetimeMethodEnumParams.NOPARAM),
GETSECONDOFMINUTE("getSecondOfMinute", DatetimeMethodEnumStatics.REFORMAT_OP_FACTORY, DatetimeMethodEnumParams.NOPARAM),
GETWEEKYEAR("getWeekyear", DatetimeMethodEnumStatics.REFORMAT_OP_FACTORY, DatetimeMethodEnumParams.NOPARAM),
GETYEAR("getYear", DatetimeMethodEnumStatics.REFORMAT_OP_FACTORY, DatetimeMethodEnumParams.NOPARAM),
BETWEEN("between", DatetimeMethodEnumStatics.REFORMAT_OP_FACTORY, DatetimeMethodEnumParams.BETWEEN),
// interval ops
BEFORE("before", DatetimeMethodEnumStatics.INTERVAL_OP_FACTORY, DatetimeMethodEnumParams.INTERVAL_BEFORE_AFTER),
AFTER("after", DatetimeMethodEnumStatics.INTERVAL_OP_FACTORY, DatetimeMethodEnumParams.INTERVAL_BEFORE_AFTER),
COINCIDES("coincides", DatetimeMethodEnumStatics.INTERVAL_OP_FACTORY, DatetimeMethodEnumParams.INTERVAL_COINCIDES),
DURING("during", DatetimeMethodEnumStatics.INTERVAL_OP_FACTORY, DatetimeMethodEnumParams.INTERVAL_DURING_INCLUDES),
INCLUDES("includes", DatetimeMethodEnumStatics.INTERVAL_OP_FACTORY, DatetimeMethodEnumParams.INTERVAL_DURING_INCLUDES),
FINISHES("finishes", DatetimeMethodEnumStatics.INTERVAL_OP_FACTORY, DatetimeMethodEnumParams.INTERVAL_FINISHES_FINISHEDBY),
FINISHEDBY("finishedBy", DatetimeMethodEnumStatics.INTERVAL_OP_FACTORY, DatetimeMethodEnumParams.INTERVAL_FINISHES_FINISHEDBY),
MEETS("meets", DatetimeMethodEnumStatics.INTERVAL_OP_FACTORY, DatetimeMethodEnumParams.INTERVAL_MEETS_METBY),
METBY("metBy", DatetimeMethodEnumStatics.INTERVAL_OP_FACTORY, DatetimeMethodEnumParams.INTERVAL_MEETS_METBY),
OVERLAPS("overlaps", DatetimeMethodEnumStatics.INTERVAL_OP_FACTORY, DatetimeMethodEnumParams.INTERVAL_DURING_OVERLAPS_OVERLAPBY),
OVERLAPPEDBY("overlappedBy", DatetimeMethodEnumStatics.INTERVAL_OP_FACTORY, DatetimeMethodEnumParams.INTERVAL_DURING_OVERLAPS_OVERLAPBY),
STARTS("starts", DatetimeMethodEnumStatics.INTERVAL_OP_FACTORY, DatetimeMethodEnumParams.INTERVAL_STARTS_STARTEDBY),
STARTEDBY("startedBy", DatetimeMethodEnumStatics.INTERVAL_OP_FACTORY, DatetimeMethodEnumParams.INTERVAL_STARTS_STARTEDBY);
private final String nameCamel;
private final OpFactory opFactory;
private DotMethodFP[] footprints;
private DatetimeMethodEnum(String nameCamel, OpFactory opFactory, DotMethodFP[] footprints) {
this.nameCamel = nameCamel;
this.opFactory = opFactory;
this.footprints = footprints;
}
public OpFactory getOpFactory() {
return opFactory;
}
public String getNameCamel() {
return nameCamel;
}
public static boolean isDateTimeMethod(String name) {
for (DatetimeMethodEnum e : DatetimeMethodEnum.values()) {
if (e.getNameCamel().toLowerCase(Locale.ENGLISH).equals(name.toLowerCase(Locale.ENGLISH))) {
return true;
}
}
return false;
}
public static DatetimeMethodEnum fromName(String name) {
for (DatetimeMethodEnum e : DatetimeMethodEnum.values()) {
if (e.getNameCamel().toLowerCase(Locale.ENGLISH).equals(name.toLowerCase(Locale.ENGLISH))) {
return e;
}
}
return null;
}
public DotMethodFP[] getFootprints() {
return footprints;
}
}