package incheon.product.geoview2d.flight.service;

import incheon.product.geoview2d.flight.vo.FlightPhotoDownloadRequestVO;
import incheon.product.geoview2d.flight.vo.FlightPhotoLayerVO;
import incheon.product.geoview2d.flight.vo.FlightPhotoSearchVO;
import org.geotools.ows.ServiceException;
import org.geotools.ows.wmts.WebMapTileServer;

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

/**
 * 항공 사진 레이어 서비스 인터페이스.
 */
public interface FlightPhotoService {

    List<FlightPhotoLayerVO> getFlightPhotoLayerList(FlightPhotoSearchVO searchVO, Boolean hasPermission);

    long getFlightPhotoLayerListTotCnt(FlightPhotoSearchVO searchVO, Boolean hasPermission);

    FlightPhotoLayerVO getFlightPhotoLayerById(int flightPhotoLyrId);

    void validateDownloadRequest(FlightPhotoDownloadRequestVO request);

    WebMapTileServer createWebMapTileServer() throws ServiceException, IOException;

    void writeFlightPhotoZip(OutputStream out, FlightPhotoDownloadRequestVO request,
                             Boolean hasPermission, WebMapTileServer wmts) throws IOException, ServiceException;
}
