package com.eactive.eai.common.lifecycle;

import com.eactive.eai.common.dao.BaseDAO;
import com.eactive.eai.common.dao.DAOException;
import com.eactive.eai.common.exception.ExceptionUtil;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
* 1. 기능 : Lifecycle 관련 Rule 정보에 대한 Data Access Object 클래스
* 2. 처리 개요 : Lifcycle관련 Rule 정보에 대한 DB Access 로직을 정의한다.
* *     -
* 3. 주의사항
*
* @author  :
* @version : v 1.0.0
* @see : 관련 기능을 참조
* @since   :
*/
public class LifecycleDAO extends BaseDAO implements LifecycleQuery
{

    /**
    * 1. 기능 :  전체 Lifecycle Rule 정보를 SELECT하는 메서드
    * 2. 처리 개요 : 전체 Lifecycle Rule 정보를 SELECT하여 List에 담아 반환한다.
    *     -
    * 3. 주의사항
    *
    * @return   전체 Lifecycle Rule 정보
    * @exception    DAOException    SQLException 발생 시
    **/
    public List<LifecycleVO> getAllLifecycles() throws DAOException {

        List<LifecycleVO> list = new ArrayList<LifecycleVO>();
        ResultSet rs = null;
        String lifecycleClass = null;
        int loadSequence = 0;
        String lifeCyclUseDstcd = null;     // Migration - 추가
        try {
            this.connect(SELECT_ALL);
            rs = this.executeQuery();
            while(rs.next()) {
                lifecycleClass     = rs.getString(1);
                loadSequence       = rs.getInt(2);
                lifeCyclUseDstcd   = rs.getString(3);   // Migration - 추가
                LifecycleVO vo     = new LifecycleVO();
                vo.setLifecycleClass(lifecycleClass);
                vo.setLoadSequence(loadSequence);
                vo.setLifeCyclUseDstcd(lifeCyclUseDstcd);
                list.add(vo);
            }
        } catch(Exception e) {
            throw new DAOException(ExceptionUtil.getErrorCode(e, "BECEAIMLC101"));
        } finally {
            this.disconnect();
        }
        return list;
    }
}
