package incheon.cmm.g2f.download.service;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.springframework.core.io.Resource;
import org.springframework.http.ResponseEntity;

import incheon.cmm.g2f.layer.vo.TaskLayerVO;
import incheon.cmm.g2f.layer.vo.userLayerSearchRequestDTO;

public interface G2FDownloadService {

    /**
     * 레이어 다운로드 (format에 따라 shapefile/csv/excel/dxf 처리)
     * 
     * @param layerId 레이어 ID
     * @param layerType USER/TASK
     * @param format shapefile/csv/excel/dxf
     * @param columns csv/excel용 선택 컬럼
     * @return 다운로드 가능한 파일 ResponseEntity
     */
    ResponseEntity<Resource> download(Long layerId, String layerType, String format, String columns) throws IOException;

    /**
     * 레이어 다운로드 정보 조회
     */
    Map<String, Object> getDownloadInfo(Long layerId);
    
    /**
     * 사용자 레이어 다운로드 정보 조회
     */
    Map<String, Object> getUserDownloadInfo(Long layerId);

    /**
     * 현재 지원하는 다운로드 형식 목록
     */
    List<String> getSupportedFormats(Long layerId);
    /**
     * 유저 레이어 조회
     */
    List<TaskLayerVO> selectUserLayerListTot(userLayerSearchRequestDTO request);
    /**
     * 유저 레이어 갯자 조회
     */
    long selectUserLayerListTotCnt(userLayerSearchRequestDTO request);

}
