feat : epost text파일 reader 구현중
parent
419a67c88c
commit
8064b72996
@ -0,0 +1,58 @@
|
||||
package com.worker.domain.entity;
|
||||
|
||||
import jakarta.persistence.Column;
|
||||
import jakarta.persistence.GeneratedValue;
|
||||
import jakarta.persistence.GenerationType;
|
||||
import jakarta.persistence.Id;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class EpostRceptResult {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Column(name = "RR_CODE", nullable = false, updatable = false)
|
||||
private Integer rrCode;
|
||||
|
||||
@Column(name = "CON_ORG", length = 13, nullable = false)
|
||||
private String conOrg;
|
||||
|
||||
@Column(name = "RELORSECT_CD", length = 15, nullable = false)
|
||||
private String relOrsectCd;
|
||||
|
||||
@Column(name = "RELETCDATA", length = 200, nullable = false)
|
||||
private String reletcData;
|
||||
|
||||
@Column(name = "EXTRI_REGYMD", length = 8, nullable = false)
|
||||
private String extriRegymd;
|
||||
|
||||
@Column(name = "RCEPT_YMD", length = 8)
|
||||
private String rceptYmd;
|
||||
|
||||
@Column(name = "RCEPT_ID", length = 5)
|
||||
private String rceptId;
|
||||
|
||||
@Column(name = "DIV_KB", length = 3, nullable = false)
|
||||
private String divKb;
|
||||
|
||||
@Column(name = "RCEPT_CNT", nullable = false)
|
||||
private Integer rceptCnt;
|
||||
|
||||
@Column(name = "RCEPT_AMT")
|
||||
private Integer rceptAmt;
|
||||
|
||||
@Column(name = "USEFEE_AMT")
|
||||
private Integer usefeeAmt;
|
||||
|
||||
@Column(name = "TOTPOST_PRC")
|
||||
private Integer totpostPrc;
|
||||
|
||||
@Column(name = "JOB_CD")
|
||||
private Integer jobCd;
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
package com.worker.util.fileReader;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public interface FileParserInterface<T> {
|
||||
|
||||
T parse(File file) throws Exception;
|
||||
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
//package com.worker.util.fileReader.text;
|
||||
//
|
||||
//import lombok.extern.slf4j.Slf4j;
|
||||
//import org.springframework.stereotype.Component;
|
||||
//
|
||||
//import java.io.BufferedReader;
|
||||
//import java.io.FileReader;
|
||||
//import java.io.IOException;
|
||||
//import java.util.ArrayList;
|
||||
//import java.util.List;
|
||||
//import java.util.regex.Pattern;
|
||||
//
|
||||
//@Component
|
||||
//@Slf4j
|
||||
//public class TextFileReader {
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * 텍스트 파일을 읽어 구분자로 split 하여 반환한다.
|
||||
// * @param filePath 파일 경로
|
||||
// * @param separator 구분자 (",", "|", "/", "₩" 등)
|
||||
// * @return 각 라인을 구분자로 split 한 결과 리스트
|
||||
// */
|
||||
// public List<String[]> fileParse(String filePath, String separator) {
|
||||
// List<String[]> list = new ArrayList<>();
|
||||
// try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
|
||||
// String line;
|
||||
// while ((line = br.readLine()) != null) {
|
||||
// // 빈 값도 보존하기 위해 limit=-1 옵션 추가
|
||||
// String[] tokens = line.split(Pattern.quote(separator), -1);
|
||||
// list.add(tokens);
|
||||
// }
|
||||
// } catch (IOException e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// return list;
|
||||
// }
|
||||
//
|
||||
//}
|
||||
@ -0,0 +1,79 @@
|
||||
package com.worker.util.fileReader.xml.impl;
|
||||
|
||||
import com.worker.scheduler.epost.dto.EPostDto;
|
||||
import com.worker.util.fileReader.FileParserInterface;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class EpostTextFileParser implements FileParserInterface<List<EPostDto.EPostFileRead>> {
|
||||
|
||||
/**
|
||||
* 텍스트 파일을 읽어 구분자로 split 하여 반환한다.
|
||||
|
||||
* @return 각 라인을 구분자로 split 한 결과 리스트
|
||||
*/
|
||||
@Override
|
||||
public List<EPostDto.EPostFileRead> parse(File file) throws Exception {
|
||||
final String separator = "|"; // 필요시 외부 주입 가능
|
||||
final Pattern SEP = Pattern.compile(Pattern.quote(separator)); // 정규식 이스케이프
|
||||
final int EXPECTED_COLS = 12; // 컬럼 수 기대치
|
||||
|
||||
List<EPostDto.EPostFileRead> results = new ArrayList<>();
|
||||
|
||||
// 파일 인코딩이 EUC-KR 계열이면 Charset 지정 권장 (예: EUC-KR)
|
||||
try (BufferedReader br = new BufferedReader(
|
||||
new InputStreamReader(new FileInputStream(file), java.nio.charset.StandardCharsets.UTF_8))) {
|
||||
|
||||
String line;
|
||||
while ((line = br.readLine()) != null) {
|
||||
if (line.isEmpty()) continue; // 빈 줄 스킵(원하면 제거)
|
||||
|
||||
// 빈값 보존 위해 limit=-1
|
||||
String[] item = SEP.split(line, -1);
|
||||
|
||||
// 컬럼 수 검증(짧으면 스킵 or 예외)
|
||||
if (item.length < EXPECTED_COLS) {
|
||||
// 로그 찍고 continue 하거나 예외 던지기
|
||||
System.err.println("열 개수 부족: " + file.getName() + " -> " + line);
|
||||
continue;
|
||||
}
|
||||
|
||||
// 필요 시 trim
|
||||
for (int i = 0; i < item.length; i++) item[i] = item[i].trim();
|
||||
|
||||
EPostDto.EPostFileRead result = EPostDto.EPostFileRead.builder()
|
||||
.conOrg(item[0])
|
||||
.relorsectCd(item[1])
|
||||
.reletcdata(item[2])
|
||||
.extriRegymd(item[3])
|
||||
.rceptYmd(item[4])
|
||||
.rceptId(item[5])
|
||||
.divKb(item[6])
|
||||
.rceptCnt(item[7])
|
||||
.rceptAmt(item[8])
|
||||
.usefeeAmt(item[9])
|
||||
.totpostPrc(item[10])
|
||||
.jobCd(item[11])
|
||||
.build();
|
||||
|
||||
results.add(result);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,9 +0,0 @@
|
||||
package com.worker.util.xmlFileReader;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public interface XmlParserInterface<T> {
|
||||
|
||||
T parse(File file) throws Exception;
|
||||
|
||||
}
|
||||
@ -1,4 +0,0 @@
|
||||
package com.worker.util.xmlFileReader.impl;
|
||||
|
||||
public class EpostXmlParser {
|
||||
}
|
||||
Loading…
Reference in New Issue