package incheon.com.excel;

import incheon.com.cmm.ComDefaultVO;

/**
 * 엑셀 내보내기 설정
 */
public record ExcelExportConfig(
        String type,
        String serviceBeanName,
        String listMethodName,
        Class<? extends ComDefaultVO> searchVoClass,
        boolean paging  // true: 페이징 조회 (기본값), false: 전체 조회
) {
    public static Builder builder() {
        return new Builder();
    }

    public static class Builder {
        private String type;
        private String serviceBeanName;
        private String listMethodName;
        private Class<? extends ComDefaultVO> searchVoClass;
        private boolean paging = true;  // 기본값: 페이징 사용

        public Builder type(String type) {
            this.type = type;
            return this;
        }

        public Builder service(String serviceBeanName) {
            this.serviceBeanName = serviceBeanName;
            return this;
        }

        public Builder method(String listMethodName) {
            this.listMethodName = listMethodName;
            return this;
        }

        public Builder searchVo(Class<? extends ComDefaultVO> searchVoClass) {
            this.searchVoClass = searchVoClass;
            return this;
        }

        public Builder paging(boolean paging) {
            this.paging = paging;
            return this;
        }

        public ExcelExportConfig build() {
            return new ExcelExportConfig(type, serviceBeanName, listMethodName, searchVoClass, paging);
        }
    }
}
