package incheon.com.cmm;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;

import java.io.Serial;
import java.io.Serializable;

/**
 * 공통 VO 기본 클래스
 * - 검색/페이징 파라미터
 * - Audit 필드 (등록/수정 정보)
 */
public class ComDefaultVO implements Serializable {

	@Serial
    private static final long serialVersionUID = 1L;

	// 검색 조건
    private String searchCondition = "";
    private String searchKeyword = "";
    private String searchKeywordFrom = "";
	private String searchKeywordTo = "";
    private String searchUseYn = "";

    // 페이징 정보
    private int pageIndex = 1;
    private int pageUnit = 10;
    private int pageSize = 10;
    private int firstIndex = 1;
    private int lastIndex = 1;
    private int recordCountPerPage = 10;

    // 세션 정보
    private String LOGIN_USER_ID = "ANONYMOUS";

    /**
     * Audit Fields (등록/수정 정보)
     * - Object 타입: 기존 VO의 String 타입과 호환 (자식 클래스에서 재정의 가능)
     * - transient: 세션 직렬화 제외
     */
    private String frstRegId;
    private transient Object frstRegDt;
    private String lastMdfcnId;
    private transient Object lastMdfcnDt;

	@Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }

	public String getSearchCondition() {
		return searchCondition;
	}

	public void setSearchCondition(String searchCondition) {
		this.searchCondition = searchCondition;
	}

	public String getSearchKeyword() {
		return searchKeyword;
	}

	public void setSearchKeyword(String searchKeyword) {
		this.searchKeyword = searchKeyword;
	}

	public String getSearchKeywordFrom() {
		return searchKeywordFrom;
	}

	public void setSearchKeywordFrom(String searchKeywordFrom) {
		this.searchKeywordFrom = searchKeywordFrom;
	}

	public String getSearchKeywordTo() {
		return searchKeywordTo;
	}

	public void setSearchKeywordTo(String searchKeywordTo) {
		this.searchKeywordTo = searchKeywordTo;
	}

	public String getSearchUseYn() {
		return searchUseYn;
	}

	public void setSearchUseYn(String searchUseYn) {
		this.searchUseYn = searchUseYn;
	}

	public int getPageIndex() {
		return pageIndex;
	}

	public void setPageIndex(int pageIndex) {
		this.pageIndex = pageIndex;
	}

	public int getPageUnit() {
		return pageUnit;
	}

	public void setPageUnit(int pageUnit) {
		this.pageUnit = pageUnit;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getFirstIndex() {
		return firstIndex;
	}

	public void setFirstIndex(int firstIndex) {
		this.firstIndex = firstIndex;
	}

	public int getLastIndex() {
		return lastIndex;
	}

	public void setLastIndex(int lastIndex) {
		this.lastIndex = lastIndex;
	}

	public int getRecordCountPerPage() {
		return recordCountPerPage;
	}

	public void setRecordCountPerPage(int recordCountPerPage) {
		this.recordCountPerPage = recordCountPerPage;
	}

	public String getLOGIN_USER_ID() {
		return LOGIN_USER_ID;
	}

	public void setLOGIN_USER_ID(String LOGIN_USER_ID) {
		this.LOGIN_USER_ID = LOGIN_USER_ID;
	}

	public String getFrstRegId() {
		return frstRegId;
	}

	public void setFrstRegId(String frstRegId) {
		this.frstRegId = frstRegId;
	}

	public Object getFrstRegDt() {
		return frstRegDt;
	}

	public void setFrstRegDt(Object frstRegDt) {
		this.frstRegDt = frstRegDt;
	}

	public String getLastMdfcnId() {
		return lastMdfcnId;
	}

	public void setLastMdfcnId(String lastMdfcnId) {
		this.lastMdfcnId = lastMdfcnId;
	}

	public Object getLastMdfcnDt() {
		return lastMdfcnDt;
	}

	public void setLastMdfcnDt(Object lastMdfcnDt) {
		this.lastMdfcnDt = lastMdfcnDt;
	}

}