diff --git a/src/main/java/com/kamco/cd/kamcoback/common/utils/FIleChecker.java b/src/main/java/com/kamco/cd/kamcoback/common/utils/FIleChecker.java index f5527cf5..c6cb3bf1 100644 --- a/src/main/java/com/kamco/cd/kamcoback/common/utils/FIleChecker.java +++ b/src/main/java/com/kamco/cd/kamcoback/common/utils/FIleChecker.java @@ -13,6 +13,8 @@ import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.geotools.coverage.grid.GridCoverage2D; import org.geotools.gce.geotiff.GeoTiffReader; @@ -45,8 +47,9 @@ public class FIleChecker { return true; } + public static boolean verifyFileIntegrity(Path path, String expectedHash) - throws IOException, NoSuchAlgorithmException { + throws IOException, NoSuchAlgorithmException { // 1. 알고리즘 선택 (SHA-256 권장, MD5는 보안상 비추천) MessageDigest digest = MessageDigest.getInstance("SHA-256"); @@ -69,6 +72,7 @@ public class FIleChecker { return actualHash.equalsIgnoreCase(expectedHash); } + public static boolean checkTfw(String filePath) { File file = new File(filePath); @@ -86,13 +90,13 @@ public class FIleChecker { lines.add(Double.parseDouble(line.trim())); } } - } catch (IOException ignored) { + }catch (IOException ignored) { return false; } // 2. 6줄이 맞는지 확인 if (lines.size() < 6) { - // System.out.println("유효하지 않은 TFW 파일입니다. (데이터 부족)"); + //System.out.println("유효하지 않은 TFW 파일입니다. (데이터 부족)"); return false; } @@ -119,9 +123,9 @@ public class FIleChecker { if (coverage == null) return false; // 3. GIS 필수 정보(좌표계)가 있는지 확인 - // if (coverage.getCoordinateReferenceSystem() == null) { - // GeoTIFF가 아니라 일반 TIFF일 수도 있음(이미지는 정상이지만, 좌표계(CRS) 정보가 없습니다.) - // } + //if (coverage.getCoordinateReferenceSystem() == null) { + // GeoTIFF가 아니라 일반 TIFF일 수도 있음(이미지는 정상이지만, 좌표계(CRS) 정보가 없습니다.) + //} return true; @@ -145,57 +149,59 @@ public class FIleChecker { String resStr = ""; boolean hasDriver = false; - // 리눅스/맥용 - // ProcessBuilder pb = new ProcessBuilder("sh", "-c", "gdalinfo "+filePath+" | grep -i 'Geo'"); + // 리눅스/맥용 + //ProcessBuilder pb = new ProcessBuilder("sh", "-c", "gdalinfo "+filePath+" | grep -i 'Geo'"); - List command = new ArrayList<>(); - - // 윈도우용 - command.add("cmd.exe"); // 윈도우 명령 프롬프트 실행 - command.add("/c"); // 명령어를 수행하고 종료한다는 옵션 - // command.add("C:\\Program Files\\QGIS 3.44.4\\bin\\gdalinfo"); - command.add("gdalinfo"); - command.add(filePath); - command.add("|"); - command.add("findstr"); - command.add("/i"); - command.add("Geo"); + List command = new ArrayList<>(); + //윈도우용 /* - command.add("sh"); // 윈도우 명령 프롬프트 실행 - command.add("-c"); // 명령어를 수행하고 종료한다는 옵션 - command.add("gdalinfo"); - command.add(filePath); - command.add("|"); - command.add("grep"); - command.add("-i"); - command.add("Geo"); - */ + command.add("cmd.exe"); // 윈도우 명령 프롬프트 실행 + command.add("/c"); // 명령어를 수행하고 종료한다는 옵션 + command.add("gdalinfo"); + command.add(filePath); + command.add("|"); + command.add("findstr"); + command.add("/i"); + command.add("Geo"); + */ - ProcessBuilder processBuilder = new ProcessBuilder(command); - processBuilder.redirectErrorStream(true); + command.add("sh"); // 리눅스,맥 명령 프롬프트 실행 + command.add("-c"); // 명령어를 수행하고 종료한다는 옵션 + command.add("gdalinfo"); + command.add(filePath); + command.add("|"); + command.add("grep"); + command.add("-i"); + command.add("Geo"); - try { - Process process = processBuilder.start(); - // 인코딩은 윈도우 한글 환경에 맞게 MS949로 지정 - BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + ProcessBuilder processBuilder = new ProcessBuilder(command); + processBuilder.redirectErrorStream(true); - String line; - while ((line = reader.readLine()) != null) { - // System.out.println(line); - if (line.contains("Driver: GTiff/GeoTIFF")) { - hasDriver = true; - break; + try { + Process process = processBuilder.start(); + + // 인코딩은 윈도우 한글 환경에 맞게 MS949로 지정 + BufferedReader reader = new BufferedReader( + new InputStreamReader(process.getInputStream())); + + String line; + while ((line = reader.readLine()) != null) { + //System.out.println(line); + if( line.contains("Driver: GTiff/GeoTIFF")) { + hasDriver = true; + break; + } } + + int exitCode = process.waitFor(); + + } catch (Exception e) { + e.printStackTrace(); } - int exitCode = process.waitFor(); - - } catch (Exception e) { - e.printStackTrace(); - } - return hasDriver; } + } diff --git a/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngFileCheckerService.java b/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngFileCheckerService.java index 1a94171d..8fad79f0 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngFileCheckerService.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngFileCheckerService.java @@ -41,7 +41,6 @@ public class MapSheetMngFileCheckerService { public FoldersDto getFolderAll(SrchFoldersDto srchDto) { - System.out.println("getFolderAll === "); Path startPath = Paths.get(srchDto.getDirPath()); String dirPath = srchDto.getDirPath(); @@ -120,8 +119,6 @@ public class MapSheetMngFileCheckerService { throw new RuntimeException(e); } - // FoldersDto foldersDto = new FoldersDto(dirPath, folderTotCnt, folderErrTotCnt, - // folderDtoList); return new FoldersDto(dirPath, folderTotCnt, folderErrTotCnt, folderDtoList); }