alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Glassfish example source code file (ScheduleExpression.java)

This example Glassfish source code file (ScheduleExpression.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Glassfish tags/keywords

date, date, io, scheduleexpression, scheduleexpression, serializable, serializable, string, string, util

The Glassfish ScheduleExpression.java source code

/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright (c) 2006-2010 Oracle and/or its affiliates. All rights reserved.
 *
 * The contents of this file are subject to the terms of either the GNU
 * General Public License Version 2 only ("GPL") or the Common Development
 * and Distribution License("CDDL") (collectively, the "License").  You
 * may not use this file except in compliance with the License.  You can
 * obtain a copy of the License at
 * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
 * or packager/legal/LICENSE.txt.  See the License for the specific
 * language governing permissions and limitations under the License.
 *
 * When distributing the software, include this License Header Notice in each
 * file and include the License file at packager/legal/LICENSE.txt.
 *
 * GPL Classpath Exception:
 * Oracle designates this particular file as subject to the "Classpath"
 * exception as provided by Oracle in the GPL Version 2 section of the License
 * file that accompanied this code.
 *
 * Modifications:
 * If applicable, add the following below the License Header, with the fields
 * enclosed by brackets [] replaced by your own identifying information:
 * "Portions Copyright [year] [name of copyright owner]"
 *
 * Contributor(s):
 * If you wish your version of this file to be governed by only the CDDL or
 * only the GPL Version 2, indicate your decision by adding "[Contributor]
 * elects to include this software in this distribution under the [CDDL or GPL
 * Version 2] license."  If you don't indicate a single choice of license, a
 * recipient has the option to distribute your version of this file under
 * either the CDDL, the GPL Version 2 or to extend the choice of license to
 * its licensees as provided above.  However, if you add GPL Version 2 code
 * and therefore, elected the GPL Version 2 license, then the option applies
 * only if the new code is made subject to such option by the copyright
 * holder.
 */

package javax.ejb;

import java.util.Date;
import java.io.Serializable;

/**
 * <p> 
 * A calendar-based timeout expression for an enterprise bean
 * timer.</p>
 * 
 * <p>
 * Each attribute used to define a calendar-based timeout schedule 
 * has two overloaded  setter methods, one that takes a String and 
 * one that takes an int.  
 * The int version is merely a convenience method for setting the 
 * attribute in the common case that the value is a simple integer value. </p>
 * 
 * <p>For example, 
scheduleExpression.second(10)
is semantically equivalent to * <pre>scheduleExpression.second("10")

* * * * There are seven attributes that constitute a schedule specification which are * listed below. In addition, the <code>timezone attribute may be used * to specify a non-default time zone in whose context the schedule * specification is to be evaluated. * <p> * The attributes that specify the calendar-based schedule itself are as * follows: * <p> * <ul> * <li> second : one or more seconds within a minute * <p> Allowable values: [0,59] * <p> * <li> minute : one or more minutes within an hour * <p> Allowable values : [0,59] * <p> * <li> hour : one or more hours within a day * <p> Allowable values : [0,23] * <p> * <li> dayOfMonth : one or more days within a month * <p> Allowable values: * <ul> * <li> [1,31] * <li> [-7, -1] * <li> "Last" * <li> {"1st", "2nd", "3rd", "4th", "5th", "Last"} {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"} * </ul> * <p> "Last" means the last day of the month * <p> -x (where x is in the range [-7, -1]) means x day(s) before the last day of the month * <p> "1st","2nd", etc. applied to a day of the week identifies a single occurrence of that day within the month. * <p> * <li> month : one or more months within a year * <p> Allowable values : * <p> * <ul> * <li> [1,12] * <li> {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", Dec"} * </ul> * <p> * <li> dayOfWeek : one or more days within a week * <p> Allowable values : * <p> * <ul> * <li> [0,7] * <li> {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"} * </ul> * <p> "0" and "7" both refer to Sunday * <p> * <li> year : a particular calendar year * <p> Allowable values : a four-digit calendar year * * <p> * </ul> * <p> * * Each attribute supports values expressed in one of the following forms * <p> * <ul> * <li> Single Value. This constrains the attribute to only one of * its possible values. * <pre> * Example: second = "10" * Example: month = "Sep"</pre> * <p> * <li> Wild Card. "*" represents all allowable values for a given attribute. * <pre> * Example: second = "*" * Example: dayOfWeek = "*"</pre> * * <li> List. This constrains the attribute to two or more allowable values * or ranges, with a comma used as a separator character within the string. * Each item in the list must be a single value or range. List items cannot * be lists, wild cards, or increments. Duplicate values are ignored. * <pre> * Example: second = "10,20,30" * Example: dayOfWeek = "Mon,Wed,Fri" * Example: minute = "0-10,30,40"</pre> * * <li> Range. This constrains the attribute to an inclusive range of values, * with a dash separating both ends of the range. Each side of the range * must be a single attribute value. Members of a range cannot be lists, * wild cards, ranges, or increments. If <code>x is larger than * <code>y in a range "x-y", the range is equivalent * to <code>"x-max, min-y", where max is the largest * value of the corresponding attribute and <code>min is the smallest. * The range <code>"x-x", where both range values are the same, * evaluates to the single value <code>x. The day of the week range * <code>"0-7" is equivalent to "*". * <p> * <pre> * Example: second = "1-10" * Example: dayOfWeek = "Fri-Mon" * Example: dayOfMonth = "27-3" (Equivalent to "27-Last , 1-3")</pre> * * <li> Increments. The forward slash constrains an attribute based on a * starting point and an interval, and is used to specify every <code>N * seconds, minutes, or hours within the minute, hour, or day, respectively. * For the expression <code>x/y, the attribute is constrained to * every <code>yth value within the set of allowable values beginning * at time <code>x. The x value is inclusive. The * wild card character (<code>*) can be used in the x * position, and is equivalent to <code>0. The use of increments * is only supported within the <code>second, minute, * and <code>hour attributes. For the second and * <code>minute attributes, x and y must * each be in the range <code>[0,59]. For the hour * attribute, <code>x and y must each be in the range * <code>[0,23]. * <p> * <pre> * Example: minute = "∗/5" (Every five minutes within the hour)</pre> * This is equivalent to: * <code>minute = "0,5,10,15,20,25,30,35,40,45,50,55" * <p> * <pre> * Example: second = "30/10" (Every 10 seconds within the minute, starting at second 30) </pre> * This is equivalent to: <code>second = "30,40,50" * <p> Note that the set of matching increment values stops once the maximum * value for that attribute is exceeded. It does not "roll over" past the * boundary. * <p> * <pre> * Example : ( minute = "∗/14", hour="1,2")</pre> * <p> This is equivalent to: (minute = "0,14,28,42,56", hour = "1,2") * (Every 14 minutes within the hour, for the hours of 1 and 2 a.m.) * </ul> * * <p> * The following additional rules apply to the schedule specification attributes: * <ul> * <li> If the dayOfMonth attribute has a non-wildcard value and * the <code>dayOfWeek attribute has a non-wildcard value, then any * day matching either the <code>dayOfMonth value or the * <code>dayOfWeek value will be considered to apply. * <li> Whitespace is ignored, except for string constants and numeric values. * <li> All string constants (e.g., "Sun", "Jan", * <code>"1st", etc.) are case insensitive. * </ul> * <p> * Schedule-based timer times are evaluated in the context of the default * time zone associated with the container in which the application is * executing. A schedule-based timer may optionally override this default * and associate itself with a specific time zone. If the schedule-based * timer is associated with a specific time zone, all its times are * evaluated in the context of that time zone, regardless of the default * time zone in which the container is executing. * <p> * None of the ScheduleExpression methods are required to be called. * The defaults are : * * <ul> * <li> second: "0" * <li> minute: "0" * <li> hour: "0" * <li> dayOfMonth: "*" * <li> month: "*" * <li> dayOfWeek: "*" * <li> year: "*" * <li> timezone : default JVM time zone * <li> start : upon timer creation * <li> end : no end date

* </ul> * * <p> * Applications must not rely on the getter methods that return * the attributes of a calendar-based timeout schedule to return * them in the same syntactic format in which they were passed in to a * <code>ScheduleExpression method or supplied to the * <code>Schedule annotation, and portable implementations must * not assume any particular syntactic format. Implementations are * required only to preserve semantic equivalence. * * @since EJB 3.1 */ public class ScheduleExpression implements Serializable { private static final long serialVersionUID = -3813254457230997879L; /** * Create a schedule with the default values. */ public ScheduleExpression() {} /** * Set the second attribute. */ public ScheduleExpression second(String s) { second_ = s; return this; } /** * Set the second attribute. */ public ScheduleExpression second(int s) { second_ = s + ""; return this; } /** * Return the value of the second attribute. * * @return second */ public String getSecond() { return second_; } /** * Set the minute attribute. */ public ScheduleExpression minute(String m) { minute_ = m; return this; } /** * Set the minute attribute. */ public ScheduleExpression minute(int m) { minute_ = m + ""; return this; } /** * Return the value of the minute attribute. * * @return minute */ public String getMinute() { return minute_; } /** * Set the hour attribute. */ public ScheduleExpression hour(String h) { hour_ = h; return this; } /** * Set the hour attribute. */ public ScheduleExpression hour(int h) { hour_ = h + ""; return this; } /** * Return the value of the hour attribute. * * @return hour */ public String getHour() { return hour_; } /** * Set the day of the month attribute. */ public ScheduleExpression dayOfMonth(String d) { dayOfMonth_ = d; return this; } /** * Set the day of the month attribute. */ public ScheduleExpression dayOfMonth(int d) { dayOfMonth_ = d + ""; return this; } /** * Return the value of the day of the month attribute. * * @return day of the month */ public String getDayOfMonth() { return dayOfMonth_; } /** * Set the month attribute. */ public ScheduleExpression month(String m) { month_ = m; return this; } /** * Set the month attribute. */ public ScheduleExpression month(int m) { month_ = m + ""; return this; } /** * Return the value of the month attribute. * * @return month */ public String getMonth() { return month_; } /** * Set the day of the week attribute. */ public ScheduleExpression dayOfWeek(String d) { dayOfWeek_ = d; return this; } /** * Set the day of the week attribute. */ public ScheduleExpression dayOfWeek(int d) { dayOfWeek_ = d + ""; return this; } /** * Return the value of the day of the week attribute. * * @return day of the week */ public String getDayOfWeek() { return dayOfWeek_; } /** * Set the year attribute. */ public ScheduleExpression year(String y) { year_ = y; return this; } /** * Set the year attribute. */ public ScheduleExpression year(int y) { year_ = y + ""; return this; } /** * Return the value of the year attribute. * * @return year */ public String getYear() { return year_; } /** * Set the timezone. */ public ScheduleExpression timezone(String timezoneID) { timezoneID_ = timezoneID; return this; } /** * Return the timezone, if set; otherwise null. * * @return timezone */ public String getTimezone() { return timezoneID_; } /** * Set the start date. */ public ScheduleExpression start(Date s) { start_ = (s == null) ? null : new Date(s.getTime()); return this; } /** * Return the start date, if set; otherwise null. * * @return start date */ public Date getStart() { return (start_ == null) ? null : new Date(start_.getTime()); } /** * Set the end date. */ public ScheduleExpression end(Date e) { end_ = (e == null) ? null : new Date(e.getTime()); return this; } /** * Return the end date, if set; otherwise null. * * @return end date */ public Date getEnd() { return (end_ == null) ? null : new Date(end_.getTime()); } public String toString() { return "ScheduleExpression [second=" + second_ + ";minute=" + minute_ + ";hour=" + hour_ + ";dayOfMonth=" + dayOfMonth_ + ";month=" + month_ + ";dayOfWeek=" + dayOfWeek_ + ";year=" + year_ + ";timezoneID=" + timezoneID_ + ";start=" + start_ + ";end=" + end_ + "]"; } private String second_ = "0"; private String minute_ = "0"; private String hour_ = "0"; private String dayOfMonth_ = "*"; private String month_ = "*"; private String dayOfWeek_ = "*"; private String year_ = "*"; private String timezoneID_ = null; private Date start_ = null; private Date end_ = null; }

Other Glassfish examples (source code examples)

Here is a short list of links related to this Glassfish ScheduleExpression.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.