/*
* SheduleHolidayDayLocal.java
*
*/
package clips.delegate.shedule.exception;
import TimeTable.Day;
import beans.shedule.exceptions.SheduleExceptionDetails;
import beans.shedule.week.TimeOffset;
import cli_fmw.main.ClipsException;
import cli_fmw.delegate.lists.DataChunk;
import cli_fmw.delegate.lists.Mappable;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* @author Axe Ilshat
*/
public class SheduleExceptionData extends DataChunk<SheduleExceptionDetails>
implements Mappable<Integer> {
public SheduleExceptionData(Day day) throws ClipsException {
super(new SheduleExceptionDetails(day.getCalendar().getTime()));
}
public SheduleExceptionData(SheduleExceptionDetails details) throws ClipsException {
super(details);
}
/**
* Списки разделены по месяцам, поэтому в одном списке будут
* элементы одного месяца, след-но даты в качестве ключа достаточно
* @return
*/
@Override
public Integer getKey() {
Calendar cal = GregorianCalendar.getInstance();
cal.setTime(getDay());
return cal.get(Calendar.DAY_OF_MONTH);
}
@Override
public String toString() {
return (isWorking() ? "Рабочий":"Выходной") + " день"
+ (getDescription() == null ? "":" ("+getDescription()+")");
}
/**
* Возвращает день месяца
* @return день месяца (1-31)
*/
public Date getDay() {
return getDetails().day;
}
public void setDay(Date day) {
getDetails().day = day;
}
/**
* Возвращает описание праздника
* @return описание - строка до 255 символов по БД
*/
public String getDescription() {
return getDetails().description;
}
/**
* Назначает описание праздника
* @param description - строка до 255 символов по БД
*/
public void setDescription(String description) {
if(getDetails().description != null
&& getDetails().description.equals(description)) {
return;
}
getDetails().description = description;
fireContentStateEvent();
}
public TimeOffset getBeginTime() {
return new TimeOffset(getDetails().beginTime);
}
public void setBeginTime(TimeOffset beginTime) {
getDetails().beginTime = beginTime.getRaw();
fireContentStateEvent();
}
public int getDuration() {
return getDetails().duration;
}
public void setDuration(int duration) {
getDetails().duration = duration;
fireContentStateEvent();
}
public boolean isWorking() {
return getDetails().working;
}
public void setWorking(boolean working) {
getDetails().working = working;
fireContentStateEvent();
}
}