package de.unikassel.android.sdcframework.data;
import java.util.Calendar;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Weekday enumeration.
*
* @author Katy Hilgenberg
*
*/
public enum Weekday implements Parcelable
{
/**
* Monday.
*/
Monday,
/**
* Tuesday.
*/
Tuesday,
/**
* Wednesday.
*/
Wednesday,
/**
* Thursday.
*/
Thursday,
/**
* Friday.
*/
Friday,
/**
* Saturday.
*/
Saturday,
/**
* Sunday.
*/
Sunday;
/**
* Method to determine the Weekday for a given ordinal.
*
* @param ordinal
* the ordinal value
* @return the Weekday for a given ordinal
*/
public static Weekday valueOfOrdinal( int ordinal )
{
if ( ordinal < 0 || ordinal >= Weekday.values().length ) { throw new IndexOutOfBoundsException(); }
return Weekday.values()[ ordinal ];
}
/**
* Method to determine the next Weekday after a given one.
*
* @param current
* the current Weekday
* @return the Weekday after the given one
*/
public static Weekday next( Weekday current )
{
int nextOrdinal = ( current.ordinal() + 1 ) % 7;
return Weekday.values()[ nextOrdinal ];
}
/**
* Method to determine the Weekday of a given calendar date.
*
* @param date
* the calendar date value
* @return the Weekday for the given date
*/
public static Weekday valueOf( Calendar date )
{
switch ( date.get( Calendar.DAY_OF_WEEK ) )
{
case Calendar.MONDAY: return Monday;
case Calendar.TUESDAY: return Tuesday;
case Calendar.WEDNESDAY: return Wednesday;
case Calendar.THURSDAY: return Thursday;
case Calendar.FRIDAY: return Friday;
case Calendar.SATURDAY: return Saturday;
case Calendar.SUNDAY: return Sunday;
}
return null;
}
/**
* The Parcelable creator.
*/
public static final Parcelable.Creator< Weekday > CREATOR =
new Parcelable.Creator< Weekday >()
{
@Override
public Weekday createFromParcel( Parcel source )
{
return valueOfOrdinal( source.readInt() );
}
@Override
public Weekday[] newArray( int size )
{
return new Weekday[ size ];
}
};
/* (non-Javadoc)
* @see android.os.Parcelable#writeToParcel(android.os.Parcel, int)
*/
@Override
public void writeToParcel( Parcel dest, int flags )
{
dest.writeInt( ordinal() );
}
/* (non-Javadoc)
* @see android.os.Parcelable#describeContents()
*/
@Override
public int describeContents()
{
return 0;
}
}