Package clips.delegate.shedule.holidays

Source Code of clips.delegate.shedule.holidays.SheduleHolidayLocal$DayList

/*
* SheduleHolidayLocal.java
*
*/

package clips.delegate.shedule.holidays;

import beans.shedule.holiday.SheduleHolidayBean;
import beans.shedule.holiday.SheduleHolidayBeanRemote;
import beans.shedule.holiday.SheduleHolidayDetails;
import cli_fmw.delegate.DelegateStandart;
import cli_fmw.delegate.cache.ExtraDataManager;
import cli_fmw.main.ClipsException;
import cli_fmw.delegate.lists.DataChunkMapList;
import cli_fmw.utils.SelectorEditable;
import clips.login.UserInfo;


/**
* Делегат по управлению праздничными днями,
* является простым менеджером для делегатов - праздничных дней.
* Пакетно их загружает. Делегирует в них события сохранения и отката.
* Это уникальный делегат, во всем клиенте он один.
* @author Axe Ilshat
*/
public class SheduleHolidayLocal extends DelegateStandart<SheduleHolidayBeanRemote> {
   
    private static SheduleHolidayLocal instance;
    private static int sessionID;
    private DayList daysList;
    private ExtraDataManager ecm;
   
    /**
     * Создает новый делегат.
     * @throws cli_fmw.delegate.exception.ClipsException
     */
    private SheduleHolidayLocal() throws ClipsException {
        super(SheduleHolidayBean.class.getSimpleName());
        ecm = new ExtraDataManager(getBean(), this, false);
        daysList = new DayList(ecm);
    }

    public static SheduleHolidayLocal getInstance() throws ClipsException {
        if(instance == null || UserInfo.get().getSessionId() != sessionID) {
            instance = new SheduleHolidayLocal();
            sessionID = UserInfo.get().getSessionId();
        }
        return instance;
    }
   
    @Override
    public boolean canModify() throws ClipsException {
        return getBeanRights().isCommandAccessible(SheduleHolidayBean.COMMAND_MODIFY);
    }
   
    /**
     * Возвращает описание праздника, если он есть в заданный день,
     * если праздника в этот день нет, возхвращает NULL
     * @param day день (1-31)
     * @param month месяц (1-12)
     * @return SheduleHolidayDayLocal or NULL
     * @throws ClipsException
     */
    public SheduleHolidayData getHoliday(int day, int month) throws ClipsException {
        iterator();
        return daysList.get(day*100 + month);
    }
   
    /**
     * Сохраняет делегат.
     * Передает событие сохранения в делегаты-праздничные дни
     * @throws ClipsException
     */
    @Override
    public void save1() throws ClipsException {
        if(daysList != null) {
            daysList.save();
        }
    }

    /**
     * Отменяет все проделанные изменения в делегате.
     * Передает событие отката в делегаты-праздничные дни
     */
    @Override
    public void restore() {
        if(daysList != null) {
            daysList.restore();
            fireContentStateEvent();           
        }
    }

    /**
     * Возвращает флаг - нуждается ли делегат или содержащиеся в нем
     * делегаты-праздничные дни в сохранении
     * @return
     */
    @Override
    public boolean isDirty() {
        if(daysList != null) {
            return daysList.isDirty();
        }
        return false;
    }

    /**
     * Возвращает итератор праздничных дней
     * @return итератор праздничных дней
       * @throws ClipsException
     */
    public SelectorEditable<SheduleHolidayData> iterator()
            throws ClipsException{
        return daysList.selector();       
    }
   
    class DayList extends DataChunkMapList<SheduleHolidayData, Integer> {

        public DayList(ExtraDataManager contaner) {
            super(contaner);
        }
       
        @Override
        protected void deleteDB(SheduleHolidayData data) throws Exception {
            bean().removeHoliday(data.getDay(), data.getMonth());
        }

        @Override
        protected int saveDB(SheduleHolidayData data) throws Exception {
            bean().setHoliday(data.getDay(), data.getMonth(), data.getDescription());
            return  0;
        }

        @Override
        protected void loadDB() throws Exception {
            for(SheduleHolidayDetails d: bean().getHolidayList()) {
                initByDetails(new SheduleHolidayData(d));
            }
        }
    }
}
TOP

Related Classes of clips.delegate.shedule.holidays.SheduleHolidayLocal$DayList

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.