parent
ddda6b4ca9
commit
610f1d9fb5
@ -0,0 +1,9 @@
|
||||
package com.worker.util.fileReader;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public interface XmlParserInterface<T> {
|
||||
|
||||
T parse(File file) throws Exception;
|
||||
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
package com.worker.util.fileReader.impl;
|
||||
|
||||
public class EpostXmlParser {
|
||||
}
|
||||
@ -0,0 +1,68 @@
|
||||
package com.worker.util.fileReader.impl;
|
||||
|
||||
import com.worker.dto.SinmungoDto;
|
||||
import com.worker.entity.CpMain;
|
||||
import com.worker.util.fileReader.XmlParserInterface;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.NodeList;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Base64;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class SinmungoXmlParser implements XmlParserInterface<SinmungoDto.ParseResult> {
|
||||
|
||||
@Override
|
||||
public SinmungoDto.ParseResult parse(File file) throws Exception {
|
||||
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file);
|
||||
Element root = doc.getDocumentElement();
|
||||
|
||||
return SinmungoDto.ParseResult.builder()
|
||||
.cpMain(CpMain.builder()
|
||||
.mmSgnm(getTagValue("peter_name_v", root))
|
||||
.mmSgtel(getTagValue("duty_id_v", root))
|
||||
.mmCarno(getTagValue("carno", root))
|
||||
.build())
|
||||
// getImg 매서드로 바이너리 객체화
|
||||
.imgParsers(getImg(root))
|
||||
.build();
|
||||
|
||||
}
|
||||
|
||||
private List<SinmungoDto.ImgParser> getImg(Element root) {
|
||||
List<SinmungoDto.ImgParser> imgBinary = new ArrayList<>();
|
||||
NodeList apndfilinfoList = root.getElementsByTagName("apndfilinfo");
|
||||
|
||||
if (apndfilinfoList.getLength() > 0) {
|
||||
Element apndfilinfo = (Element) apndfilinfoList.item(0);
|
||||
|
||||
for (int i = 1; i <= 4; i++) {
|
||||
String fileTag = "peti_file_path" + i + "_v";
|
||||
String dataTag = "apndfilcont" + i;
|
||||
|
||||
String fileName = getTagValue(fileTag, apndfilinfo);
|
||||
String base64Data = getTagValue(dataTag, apndfilinfo);
|
||||
|
||||
if (fileName != null && base64Data != null && !base64Data.isEmpty()) {
|
||||
byte[] decoded = Base64.getDecoder().decode(base64Data);
|
||||
|
||||
imgBinary.add(SinmungoDto.ImgParser.builder()
|
||||
.fileName(fileName)
|
||||
.imageBytes(decoded)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
}
|
||||
return imgBinary;
|
||||
}
|
||||
|
||||
private String getTagValue(String tag, Element element) {
|
||||
NodeList nodeList = element.getElementsByTagName(tag);
|
||||
return nodeList.getLength() > 0 ? nodeList.item(0).getTextContent() : "";
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue