package com.takensoft.pohangTp.data.util; import java.util.ArrayList; import java.util.List; import java.util.Map; import com.takensoft.pohangTp.common.file.vo.FileInfo; import com.takensoft.pohangTp.data.vo.ColumnData; import com.takensoft.pohangTp.data.vo.DataTable; import com.takensoft.pohangTp.data.vo.Dataset; /** * @author 김성원 * @since 2024.01.09 * * 파일, DB, API, Dataset 간의 변환을 위한 클래스 */ public class DataTableConvert { /** * @author 김성원 * @since 2024.01.12 * * 파일 -> 데이터셋 변환(엑셀, CSV, TEXT, JSON, XML) */ public static Dataset filetoDataset(FileInfo fileInfo) { // 데이터 확장자 String dataType = fileInfo.getFileFom(); return null; } /** * @author 김성원 * @since 2024.01.12 * * List> -> Dataset */ public static DataTable listMaptoDataset(List> mapData) { // 데이터 테이블 생성 DataTable dataTable = new DataTable(); // 헤더정보 리스트 List header = new ArrayList<>(); // 컬럼 데이터 리스트 List columnDatas = new ArrayList(); int manxSize = 0; // 제일큰 ROW의 헤더값 가져오기 for(Map mapItm : mapData) { if(manxSize < mapItm.entrySet().size()) { manxSize = mapItm.entrySet().size(); header.clear(); for (Map.Entry elem : mapItm.entrySet()) { header.add(elem.getKey()); } } } // row 데이터 생성 for (Map temp : mapData) { List listTemp = new ArrayList(); for(String head : header) { if(temp.get(head) == null) { listTemp.add(null); }else { listTemp.add(temp.get(head)); } } dataTable.getRowData().add(listTemp); } // 컬럼명 세팅 for(String head : header) { ColumnData columnData = new ColumnData(); // 헤더명 (컬럼명) columnData.setColumnNm(head); columnData.setOrginlColumnNm(head); columnData.setDisplyColumnNm(head); columnDatas.add(columnData); } // DataTable의 컬럼정보 세팅 dataTable.setColumnDatas(columnDatas); return dataTable; } }