001 /* 002 * CDDL HEADER START 003 * 004 * The contents of this file are subject to the terms of the 005 * Common Development and Distribution License, Version 1.0 only 006 * (the "License"). You may not use this file except in compliance 007 * with the License. 008 * 009 * You can obtain a copy of the license at 010 * trunk/opends/resource/legal-notices/OpenDS.LICENSE 011 * or https://OpenDS.dev.java.net/OpenDS.LICENSE. 012 * See the License for the specific language governing permissions 013 * and limitations under the License. 014 * 015 * When distributing Covered Code, include this CDDL HEADER in each 016 * file and include the License file at 017 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, 018 * add the following below this CDDL HEADER, with the fields enclosed 019 * by brackets "[]" replaced with your own identifying information: 020 * Portions Copyright [yyyy] [name of copyright owner] 021 * 022 * CDDL HEADER END 023 * 024 * 025 * Copyright 2008 Sun Microsystems, Inc. 026 */ 027 028 package org.opends.server.authorization.dseecompat; 029 030 import java.util.Calendar; 031 032 /** 033 * This class provides an enumeration of the allowed dayofweek types. 034 */ 035 public enum EnumDayOfWeek { 036 037 /** 038 * The enumeration type when the bind rule has specified dayofweek type of 039 * "mon". 040 */ 041 DAY_MONDAY ("mon"), 042 /** 043 * The enumeration type when the bind rule has specified dayofweek type of 044 * "tue" . 045 */ 046 DAY_TUESDAY ("tue"), 047 /** 048 * The enumeration type when the bind rule has specified dayofweek type of 049 * "wed". 050 */ 051 DAY_WEDNESDAY ("wed"), 052 /** 053 * The enumeration type when the bind rule has specified dayofweek type of 054 * "thu". 055 */ 056 DAY_THURSDAY ("thu"), 057 /** 058 * The enumeration type when the bind rule has specified dayofweek type of 059 * "fri". 060 */ 061 DAY_FRIDAY ("fri"), 062 /** 063 * The enumeration type when the bind rule has specified dayofweek type of 064 * "sat". 065 */ 066 DAY_SATURDAY ("sat"), 067 /** 068 * The enumeration type when the bind rule has specified dayofweek type of 069 * "sun". 070 */ 071 DAY_SUNDAY ("sun"); 072 073 /* 074 * The bind rule dayofweek type name. 075 */ 076 private String day = null; 077 078 /** 079 * Creates a new enumeration type for the specified bind rule dayofweek 080 * type. 081 * @param day The day name. 082 */ 083 EnumDayOfWeek (String day){ 084 this.day = day; 085 } 086 087 /** 088 * Creates a new enumeration type for the specified bind rule dayofweek 089 * type. 090 * @param day The boolean type name. 091 * @return True if the keyword is equal to the specified name. 092 */ 093 public boolean isDayOfWeek(String day){ 094 return day.equalsIgnoreCase(this.day); 095 } 096 097 /** 098 * Create a new enumeration type for the specified dayofweek type name. 099 * @param day The name of the enumeration to create. 100 * @return A new enumeration type for the name or null if the name is 101 * not valid. 102 */ 103 public static EnumDayOfWeek createDayOfWeek(String day) 104 { 105 if (day != null){ 106 for (EnumDayOfWeek t : EnumDayOfWeek.values()){ 107 if (t.isDayOfWeek(day)){ 108 return t; 109 } 110 } 111 } 112 return null; 113 } 114 115 /* 116 * TODO Evaluate supporting alternative forms for days of the week. 117 * 118 * Should we support alternate forms for the names of the days of the 119 * week in the isDayOfWeek() or createdayOfWeek() method? In particular, 120 * should we handle the case in which the user provided the full name 121 * (e.g., "monday" instead of "mon")? 122 */ 123 /** 124 * Return a enumeration relating to a Calendar day of week field. 125 * @param day The day of week index to get. 126 * @return An enumeration corresponding to the wanted day of the week or 127 * null if the day index is invalid. 128 */ 129 public static EnumDayOfWeek getDayOfWeek(int day) 130 { 131 switch(day){ 132 case Calendar.SUNDAY: 133 return DAY_SUNDAY; 134 135 case Calendar.MONDAY: 136 return DAY_MONDAY; 137 138 case Calendar.TUESDAY: 139 return DAY_TUESDAY; 140 141 case Calendar.WEDNESDAY: 142 return DAY_WEDNESDAY; 143 144 case Calendar.THURSDAY: 145 return DAY_THURSDAY; 146 147 case Calendar.FRIDAY: 148 return DAY_FRIDAY; 149 150 case Calendar.SATURDAY: 151 return DAY_SATURDAY; 152 } 153 return null; 154 } 155 }