package incheon.ags.pss.edit.mapper;

import java.util.List;
import java.util.Map;

import incheon.ags.pss.edit.vo.BoundaryDetailVO;
import incheon.ags.pss.edit.vo.BoundaryVO;

@org.egovframe.rte.psl.dataaccess.mapper.Mapper @incheon.com.config.annotation.MainDB public interface LayerManageMapper {

    /**
     * 경계 목록을 조회합니다.
     * @param bizNo 안건지도 번호
     * @return 경계 목록
     * @throws Exception
     */
    List<BoundaryVO> selectBoundaryList(Long bizNo) throws Exception;
    
    /**
     * 경계 상세 정보를 조회합니다.
     * @param bndryNo 경계 번호
     * @return 경계 정보
     * @throws Exception
     */
    BoundaryVO selectBoundary(Long bndryNo) throws Exception;

    /**
     * 경계를 등록합니다.
     * @param vo LayerManageVO
     * @throws Exception
     */
    void insertBoundary(BoundaryVO vo) throws Exception;

    /**
     * 경계를 수정합니다.
     * @param vo LayerManageVO
     * @throws Exception
     */
    void updateBoundary(BoundaryVO vo) throws Exception;

    /**
     * 경계를 삭제합니다.
     * @param bndryNo 경계 번호
     * @throws Exception
     */
    void deleteBoundary(Long bndryNo) throws Exception;
    
    List<BoundaryDetailVO> selectBoundaryDetailList(Long bndryNo) throws Exception;
    void insertBoundaryDetail(BoundaryDetailVO vo) throws Exception;
//    void updateBoundaryDetail(BoundaryDetailVO vo) throws Exception;
    void deleteBoundaryDetail(Long dgmNo) throws Exception;
    
    /**
     * 부모 경계 삭제 시 하위 상세 구역들을 모두 삭제합니다.
     * @param bndryNo 경계 번호
     * @throws Exception
     */
    void deleteBoundaryDetailByBndryNo(Long bndryNo) throws Exception;

	List<Map<String, Object>> selectGuList();

	List<Map<String, Object>> selectDongList(String sigCd);

	BoundaryDetailVO selectEmdDataForDetail(String emdCd);

	BoundaryDetailVO findEmdByGeom(String geomWkt);

	BoundaryDetailVO findCadastralByGeom(String geomWkt);

	void recalculateBoundaryMaster(Long bndryNo);
}