package egovframework.util.excel;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelColumn {
	String headerName() default "";
	int headerWidth() default 0; // 0이면 자동 조정, 0보다 크면 지정된 너비 사용

	// ==================== 수식 지원 옵션 ====================
	/**
	 * 셀을 수식으로 작성할지 여부
	 * 한글 중요 주석: true 인 경우, 해당 필드는 값 대신 수식이 설정됨.
	 */
	boolean formula() default false;

	/**
	 * 수식에서 참조할 동일 행 내 다른 필드명
	 * 한글 중요 주석: 예) "deadline" 을 지정하면, 해당 필드의 컬럼을 참조하여 수식을 생성.
	 */
	String formulaRefField() default "";

	/**
	 * 수식 패턴. %s는 참조 컬럼의 엑셀 컬럼명(A, B, ...), %d는 현재 엑셀 행 번호(1부터)로 치환됨.
	 * 한글 중요 주석: 기본값은 "=%s%d-TODAY()" 로, "참조셀 - 오늘" 형태의 남은일 계산을 의미.
	 */
	String formulaPattern() default "=%s%d-TODAY()";

	// ==================== 정렬 옵션(선택) ====================
	/**
	 * 데이터 셀 정렬 옵션 (선택)
	 * 한글 중요 주석: 미지정(AUTO) 시 기존 기본 정렬을 유지. 필요 컬럼만 LEFT/CENTER/RIGHT 지정.
	 */
	Align align() default Align.AUTO;

	/**
	 * 정렬 열거형
	 * 한글 중요 주석: AUTO는 어노테이션에서 정렬을 지정하지 않음(기본 유지)을 의미.
	 */
	enum Align { AUTO, LEFT, CENTER, RIGHT }
}
