/* *************************************************************************************** * 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.calop; import java.io.StringWriter; import java.time.temporal.ChronoField; import java.time.temporal.ChronoUnit; import java.util.Calendar; import java.util.Locale; public enum CalendarFieldEnum { MILLISEC(Calendar.MILLISECOND, "msec,millisecond,milliseconds", ChronoField.MILLI_OF_SECOND, ChronoUnit.MILLIS), SECOND(Calendar.SECOND, "sec,second,seconds", ChronoField.SECOND_OF_MINUTE, ChronoUnit.SECONDS), MINUTE(Calendar.MINUTE, "min,minute,minutes", ChronoField.MINUTE_OF_HOUR, ChronoUnit.MINUTES), HOUR(Calendar.HOUR_OF_DAY, "hour,hours", ChronoField.HOUR_OF_DAY, ChronoUnit.HOURS), DAY(Calendar.DATE, "day,days", ChronoField.DAY_OF_MONTH, ChronoUnit.DAYS), MONTH(Calendar.MONTH, "month,months", ChronoField.MONTH_OF_YEAR, ChronoUnit.MONTHS), WEEK(Calendar.WEEK_OF_YEAR, "week,weeks", ChronoField.ALIGNED_WEEK_OF_YEAR, ChronoUnit.WEEKS), YEAR(Calendar.YEAR, "year,years", ChronoField.YEAR, ChronoUnit.YEARS); private final int calendarField; private final String[] names; private final ChronoField chronoField; private final ChronoUnit chronoUnit; CalendarFieldEnum(int calendarField, String names, ChronoField chronoField, ChronoUnit chronoUnit) { this.calendarField = calendarField; this.names = names.split(","); this.chronoField = chronoField; this.chronoUnit = chronoUnit; } public static String getValidList() { StringWriter writer = new StringWriter(); String delimiter = ""; for (CalendarFieldEnum v : CalendarFieldEnum.values()) { for (String name : v.names) { writer.append(delimiter); writer.append(name); delimiter = ","; } } return writer.toString(); } public int getCalendarField() { return calendarField; } public String[] getNames() { return names; } public ChronoUnit getChronoUnit() { return chronoUnit; } public static CalendarFieldEnum fromString(String field) { String compareTo = field.trim().toLowerCase(Locale.ENGLISH); for (CalendarFieldEnum v : CalendarFieldEnum.values()) { for (String name : v.names) { if (name.equals(compareTo)) { return v; } } } return null; } public ChronoField getChronoField() { return chronoField; } }