package com.takensoft.pohangTp.data.vo; import java.util.ArrayList; import java.util.List; import java.util.Map; import com.takensoft.pohangTp.common.vo.CheckMessage; import lombok.Getter; import lombok.Setter; @Getter @Setter public class DataTable extends Dataset{ /** * 시리얼 버전 */ private static final long serialVersionUID = 1L; public DataTable () {}; public DataTable (Dataset parents) { super.setDatasetId(parents.getDatasetId()); super.setDatasetSj(parents.getDatasetSj()); super.setDbConectId(parents.getDbConectId()); super.setTableNm(parents.getTableNm()); super.setTableNmKr(parents.getTableNmKr()); super.setCreatTableAt(parents.isCreatTableAt()); super.setCreatDt(parents.getCreatDt()); super.setUpdtDt(parents.getUpdtDt()); super.setDatasetPostId(parents.getDatasetPostId()); super.setStdizColumnAt(parents.isStdizColumnAt()); super.setStdizDomnAt(parents.isStdizDomnAt()); super.setStdizTableNm(parents.isStdizTableNm()); super.setQuery(parents.getQuery()); }; /** * 열 기준 데이터 정보 (헤더 정보 + 열별 데이터 목록) */ private List columnDatas = new ArrayList(); /** * 데이터(행,열) */ private List> rowData = new ArrayList>(); /** * 열 기준 데이터 정보 (헤더 정보 + 열별 데이터 목록) */ private List changeColumnDatas = null; /** * primary key 존재 여부 */ private boolean isExistPrimary = false; /** * 헤더(컬럼)데이터를 현재 생성된 rowData 인스턴스에 0번째Index에 추가했는지에 대한 여부 */ private boolean isRowDataHeaderAdd = false; /** * 헤더(컬럼)데이터의 columnName이 메모리상에서 변경된는 지에 대한 여부 */ private boolean isColumnNameChange = false; /** * 데이터(행,열)의 컬럼인 Row의 Index */ private int rowDataColumnIndex; /** * 데이터(행,열)의 Row 시작 Index */ private int startRowIndex; /** * 데이터(행,열)의 Cell 시작 Index */ private int startCellIndex; /** * 총 개시물 수 */ private int totalRows; /** * 데이터 편집 결과 메세지(화면에서만 쓰임) */ private List> editResultList = new ArrayList>(); /** * DataTable 생성 관련 메세지 */ private CheckMessage checkMessage = new CheckMessage(); public void cellValuesClear() { for (int i = 0; i < columnDatas.size(); i++) { columnDatas.get(i).cellValuesClear(); } } /** * 컬럼 데이터 값 저장 */ /* public void setColumnValues(List> datas) { this.setTotalRows(datas.size()); for(LinkedHashMap temp : datas) { for(ColumnData columnData : this.columnDatas) { columnData.getColumnValues().add(new ColumnValue(temp.get(columnData.getColumnNm()),columnData.getDataTy())); } } } */ /** * 쿼리 생성(DB포함) */ public void setQuery() { StringBuilder builder = new StringBuilder(); builder.append("SELECT \n"); for (int i = 0; i < this.getColumnDatas().size(); i++) { builder.append("\t"); if (i > 0) { builder.append(", "); } builder.append(this.getColumnDatas().get(i).getColumnNm()); builder.append("\n"); } builder.append("FROM \n\t"); builder.append(this.getDatabaseNm()); builder.append("."); builder.append(this.getTableNm()); builder.append("\n"); this.setQuery(builder.toString()); } /** * 쿼리생성 */ public String makeQuery() { StringBuilder builder = new StringBuilder(); builder.append("SELECT \n"); for (int i = 0; i < this.getColumnDatas().size(); i++) { builder.append("\t"); if (i > 0) { builder.append(", "); } builder.append(this.getColumnDatas().get(i).getColumnNm()); builder.append("\n"); } builder.append("FROM \n\t"); builder.append(this.getTableNm()); builder.append("\n"); this.setQuery(builder.toString()); return builder.toString(); } }