package com.takensoft.pohangTp.data.vo;



import java.io.Serializable;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.takensoft.pohangTp.common.connection.db.vo.DataType;
import com.takensoft.pohangTp.meta.term.vo.StandardTermSearch;

import lombok.Getter;
import lombok.Setter;


/**
 * @author 김성원
 * @since 2024.01.04
 * 
 * 열(Column) 데이터의 정보를 담는 Class 입니다.
 */
@Getter
@Setter
public class ColumnData extends Column implements Serializable {
	
	public ColumnData () {}
	
	public ColumnData (String originColumnName) {
		super.setOrginlColumnNm(originColumnName);
	}
	
	public ColumnData (String originColumnName, String displayColumnName, DataType dataType) {
		super.setOrginlColumnNm(originColumnName);
		super.setDisplyColumnNm(originColumnName);
		super.setDataTy(dataType);
	}
	
	public ColumnData (String originColumnName, String displayColumnName, DataType dataType, boolean isPrimary) {
		super.setOrginlColumnNm(originColumnName);
		super.setDisplyColumnNm(originColumnName);
		super.setDataTy(dataType);
		super.setPkAt(isPrimary);
	}
	
	public ColumnData (String originColumnName, String displayColumnName, String columnName, DataType dataType) {
		super.setOrginlColumnNm(originColumnName);
		super.setDisplyColumnNm(displayColumnName);
		super.setColumnNm(columnName);
		super.setDataTy(dataType);
	}
	
	/**
	 * 시리얼 버전
	 */
	private static final long serialVersionUID = 1L;	
	
	
	/**
	 * 테이블 명
	 */
	private String databaseNm;
	
	
	/**
	 * 테이블 명
	 */
	private String tableNm;
	
	/**
	 * 데이터 베이스에 생성될 데이터 타입
	 */
	private String dbDataType;
	
	/**
	 * 표준 용어 검색 Box Display 여부  (client단에서만 사용)
	 */
	private boolean isSearching;
	
	/**
	 * 표준 용어 검색된 목록 Display 여부 (client단에서만 사용)
	 */
	private boolean isSearchListView;
	
	/**
	 * 컬럼 유니크 옵션
	 */
	private boolean isUniq;

	/**
	 * 해당 컬럼의 표준용어 검색 목록 중 사용하기 위해 선택 중인 표중용어 정보 (client단에서만 사용)
	 */
	private StandardTermSearch selectingStandardTerm;
	
	/**
	 * 해당 컬럼의 표준용어 검색 목록 (client단에서만 사용)
	 */
	private List<StandardTermSearch> standardTermSearchList = new ArrayList<StandardTermSearch>();
	
	/**
	 * 컬럼 유니크 옵션
	 */
	private boolean isView;
	
	
	public void cellValuesClear() {
	//	this.columnValues.clear();
	}
	
	public void dataTyDefine(Object data) {
		if(data == null ) {
			this.setDataTy(DataType.NULL);
		}else if(data instanceof Boolean) {
			this.setDataTy(DataType.BOOL);
		}else if(data instanceof Character) {
			this.setDataTy(DataType.CHAR);
		}else if(data instanceof Short) {
			this.setDataTy(DataType.SHORT);
		}else if(data instanceof Integer) {
			this.setDataTy(DataType.INT);
		}else if(data instanceof Long) {
			this.setDataTy(DataType.LONG);
		}else if(data instanceof Float) {
			this.setDataTy(DataType.FLOAT);
		}else if(data instanceof Double) {
			this.setDataTy(DataType.DOUBLE);
		}else if(data instanceof Timestamp) {
			this.setDataTy(DataType.TIMESTAMP);
		}else if(data instanceof Date) {
			this.setDataTy(DataType.DATETIME);
		}else if(data instanceof Character) {
			this.setDataTy(DataType.ENTER);
		}		
	}
	
	/******************************************************************* 추가 *******************************************************************/
	
	/**
	 * 열의 합계
	 */
	private Object sum;
	
	public Object getSum() {
		return sum;
	}

	public void setSum(Object sum) {
		this.sum = sum;
	}
	
	/******************************************************************* 추가 *******************************************************************/

}
