diff --git a/src/main/java/com/worker/scheduler/smg/service/DbPolling.java b/src/main/java/com/worker/scheduler/smg/service/DbPolling.java index 6458578..3fcb1a5 100644 --- a/src/main/java/com/worker/scheduler/smg/service/DbPolling.java +++ b/src/main/java/com/worker/scheduler/smg/service/DbPolling.java @@ -6,6 +6,7 @@ import com.worker.domain.repo.ep.*; import com.worker.dto.SinmungoDto; import com.worker.util.common.CommonUtils; import com.worker.util.common.commEnum.DateTimePatternEnum; +import com.worker.util.common.commEnum.FileKind; import com.worker.util.common.commEnum.LawGBEnum; import com.worker.util.common.commEnum.TakeSeCdEnum; import com.worker.util.fileReader.XmlReader; @@ -114,6 +115,7 @@ public class DbPolling { .mmSgpos(sgpos) .mmBdcode(getBdcodeBySgpos(setInfo, sgpos)) .mmImagecnt(Integer.parseInt(xml.getApndfilcount())) + .mmImagegb(isVideoFile(xml)) .mmLawgb(getLawGBByReason(xml.getPeti_reason_l()).getCode()) .mmKeum1(getLawGBByReason(xml.getPeti_reason_l()).getImKeum1()) .mmKeum2(getLawGBByReason(xml.getPeti_reason_l()).getImKeum2()) @@ -202,6 +204,7 @@ public class DbPolling { .mmSgpos(sgpos) .mmBdcode(getBdcodeBySgpos(setInfo, sgpos)) .mmImagecnt(Integer.parseInt(xml.getApndfilcount())) + .mmImagegb(isVideoFile(xml)) .mmLawgb(getLawGBByReason(xml.getPeti_reason_l()).getCode()) .mmKeum1(getLawGBByReason(xml.getPeti_reason_l()).getImKeum1()) .mmKeum2(getLawGBByReason(xml.getPeti_reason_l()).getImKeum2()) @@ -376,4 +379,18 @@ public class DbPolling { return LawGBEnum.UNKNOWN; } + + private String isVideoFile(SinmungoDto.SinmungoXml xml) { + return Stream.of( + xml.getPeti_file_path1_v(), + xml.getPeti_file_path2_v(), + xml.getPeti_file_path3_v(), + xml.getPeti_file_path4_v(), + xml.getPeti_file_path5_v(), + xml.getPeti_file_path6_v() + ) + .anyMatch(path -> FileKind.codeFromFileName(path) == 2) ? "2" : "1"; + } + + } diff --git a/src/main/java/com/worker/util/common/commEnum/FileKind.java b/src/main/java/com/worker/util/common/commEnum/FileKind.java new file mode 100644 index 0000000..24ddb85 --- /dev/null +++ b/src/main/java/com/worker/util/common/commEnum/FileKind.java @@ -0,0 +1,48 @@ +package com.worker.util.common.commEnum; + +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.Set; + +public enum FileKind { + IMAGE(1, "jpg","jpeg","png","gif","bmp","webp","tiff","svg","heic","heif"), + VIDEO(2, "mp4","mov","m4v","avi","mkv","wmv","webm","flv","mpeg","mpg","3gp"), + OTHER(0); + + private static final Map EXT_KIND = new HashMap<>(); + + static { + for (FileKind kind : values()) { + for (String ext : kind.extensions) { + EXT_KIND.put(ext, kind); + } + } + } + + private final int code; // 1=IMAGE, 2=VIDEO, 0=OTHER + private final Set extensions; + + FileKind(int code, String... extensions) { + this.code = code; + this.extensions = Set.of(extensions); + } + + public int getCode() { + return code; + } + + public static FileKind fromFileName(String fileNameOrPath) { + if (fileNameOrPath == null || fileNameOrPath.isBlank()) return OTHER; + int dot = fileNameOrPath.lastIndexOf('.'); + if (dot > -1 && dot < fileNameOrPath.length() - 1) { + String ext = fileNameOrPath.substring(dot + 1).toLowerCase(Locale.ROOT); + return EXT_KIND.getOrDefault(ext, OTHER); + } + return OTHER; + } + + public static int codeFromFileName(String fileNameOrPath) { + return fromFileName(fileNameOrPath).getCode(); + } +}