2 * Copyright 2011-2012 GRNET S.A. All rights reserved.
4 * Redistribution and use in source and binary forms, with or
5 * without modification, are permitted provided that the following
8 * 1. Redistributions of source code must retain the above
9 * copyright notice, this list of conditions and the following
12 * 2. Redistributions in binary form must reproduce the above
13 * copyright notice, this list of conditions and the following
14 * disclaimer in the documentation and/or other materials
15 * provided with the distribution.
17 * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
18 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
21 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
25 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 * POSSIBILITY OF SUCH DAMAGE.
30 * The views and conclusions contained in the software and
31 * documentation are those of the authors and should not be
32 * interpreted as representing official policies, either expressed
33 * or implied, of GRNET S.A.
36 package gr.grnet.aquarium.logic.accounting.dsl
38 import java.util.Calendar
41 * Represents an instance of an expanded cronstring declaration. Enforces,
42 * at object creation time, the following conditions:
46 * - -1 < `dom` < 31 and `dom` not equal to 0
47 * - -1 < `mon` < 12 and `mon` not equal to 0
50 * A value of -1 for the fields `dom`,`mon` and `dow` means that the defined
51 * time moment can be repeated within a timeframe.
52 * `min` and `hour` fields cannot be used to define repetitive time moments.
54 * @author Georgios Gousios <gousiosg@gmail.com>
56 case class DSLTimeSpec(
63 //Preconditions to force correct values on object creation
64 assert(0 <= min && 60 > min)
65 assert(0 <= hour && 24 > hour)
66 assert(-1 <= dom && 31 > dom && dom != 0)
67 assert(-1 <= mon && 12 > mon && mon != 0)
68 assert(-1 <= dow && 7 > dow)
70 /** Day of week conversions to stay compatible with [[java.util.Calendar]] */
71 def getCalendarDow(): Int = dow match {
72 case 0 => Calendar.SUNDAY
73 case 1 => Calendar.MONDAY
74 case 2 => Calendar.TUESDAY
75 case 3 => Calendar.WEDNESDAY
76 case 4 => Calendar.THURSDAY
77 case 5 => Calendar.FRIDAY
78 case 6 => Calendar.SATURDAY
79 case 7 => Calendar.SUNDAY
82 /** Month conversions to stay compatible with [[java.util.Calendar]] */
83 def getCalendarMonth(): Int = mon match {
84 case 1 => Calendar.JANUARY
85 case 2 => Calendar.FEBRUARY
86 case 3 => Calendar.MARCH
87 case 4 => Calendar.APRIL
88 case 5 => Calendar.MAY
89 case 6 => Calendar.JUNE
90 case 7 => Calendar.JULY
91 case 8 => Calendar.AUGUST
92 case 9 => Calendar.SEPTEMBER
93 case 10 => Calendar.OCTOBER
94 case 11 => Calendar.NOVEMBER
95 case 12 => Calendar.DECEMBER
100 val emtpyTimeSpec = DSLTimeSpec(0, 0, 0, 0, 0)