#311
authorSweidan Omar <TFS\sweidan.omar>
Tue, 25 Jan 2022 14:41:45 +0000 (14:41 +0000)
committerSweidan Omar <TFS\sweidan.omar>
Tue, 25 Jan 2022 14:41:45 +0000 (14:41 +0000)
git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C32888

server/-product/production/LOCAL/jobs/steps/MoveJpegToIsilonStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/MoveJpegToIsilonStep.java

index 48580358325bfd3500335dc32e0d1c7658ac28d5..8f4aa3d7c05a06960eaa9daeae3c3932c74a563d 100644 (file)
@@ -1,5 +1,6 @@
 package user.jobengine.server.steps;\r
 \r
+import java.io.File;\r
 import java.io.IOException;\r
 import java.nio.file.FileVisitResult;\r
 import java.nio.file.FileVisitor;\r
@@ -41,42 +42,63 @@ public class MoveJpegToIsilonStep extends JobStep {
                sourceStoreUri.setProtocol(RemoteStoreProtocol.valueOf(sourceProtocol));\r
 \r
                FileVisitor<Path> visitor = new SimpleFileVisitor<Path>() {\r
-                       boolean isFolderDateBeforeNow = false;\r
                        String fileNamePattern = "yyyymmdd";\r
                        SimpleDateFormat dateFormatter = new SimpleDateFormat(fileNamePattern);\r
                        Date currentDate = new Date(); // initializes with the current date\r
                        Date dateFromFileName;\r
+                       boolean isRootFolder = true;\r
 \r
                        @Override\r
-                       public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException {\r
-                               try {\r
-                                       if (Files.isDirectory(path)) {\r
-                                               dateFromFileName = dateFormatter.parse(path.toString().substring(0, 8));\r
+                       public FileVisitResult preVisitDirectory(Path folder, BasicFileAttributes attrs) throws IOException {\r
+                               FileVisitResult result = null;\r
+                               boolean isDateParseable = true;\r
+\r
+                               if (folder != null) {\r
+                                       String splitter = File.separator.replace("\\", "\\\\");\r
+                                       String[] parentFolderSegments = folder.toString().split(splitter);\r
+\r
+                                       try {\r
+                                               dateFromFileName = dateFormatter.parse(parentFolderSegments[parentFolderSegments.length - 1]);\r
+\r
                                                if (!(dateFromFileName.compareTo(currentDate) > 0)) {\r
-                                                       isFolderDateBeforeNow = false;\r
-                                                       return FileVisitResult.SKIP_SUBTREE;\r
+                                                       if (isRootFolder) {\r
+                                                               result = FileVisitResult.CONTINUE;\r
+                                                               isRootFolder = false;\r
+                                                       } else {\r
+                                                               result = FileVisitResult.SKIP_SUBTREE;\r
+                                                       }\r
                                                } else {\r
-                                                       isFolderDateBeforeNow = true;\r
-                                                       return FileVisitResult.CONTINUE;\r
+                                                       result = FileVisitResult.CONTINUE;\r
                                                }\r
-                                       } else {\r
-                                               if (isFolderDateBeforeNow) {\r
-                                                       String fileExtension = FilenameUtils.getExtension(path.toString());\r
-\r
-                                                       if (fileExtension.equals("jpg") || fileExtension.equals("jpeg")) {\r
-                                                               logger.info("path: {}", path.toString());\r
-                                                               foundItems.add(path.toString());\r
-                                                               StoreUri targetStoreUri = getManager()\r
-                                                                               .createStoreUri(RemoteStoreProtocol.valueOf(targetProtocol), targetUri);\r
-                                                               targetStoreUri.setProtocol(RemoteStoreProtocol.valueOf(targetProtocol));\r
-                                                               targetStoreUri.setRootPath(targetFolder);\r
-\r
-                                                               copyFile(path, Paths.get(targetStoreUri.getRootPath()));\r
-                                                       }\r
+                                       } catch (ParseException e) {\r
+                                               isDateParseable = false;\r
+                                               logger.info("Illegal argument to parse as date: {}",\r
+                                                               parentFolderSegments[parentFolderSegments.length - 1]);\r
+                                       } finally {\r
+                                               isRootFolder = false;\r
+                                               if (!isDateParseable) {\r
+                                                       result = FileVisitResult.CONTINUE;\r
                                                }\r
                                        }\r
-                               } catch (ParseException e) {\r
-                                       logger.info("Illegal argument to parse as date: {}", path.getFileName().toString().substring(0, 8));\r
+                               }\r
+                               return result;\r
+                       }\r
+\r
+                       @Override\r
+                       public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException {\r
+                               logger.info("path: {}", path.toString());\r
+                               try {\r
+                                       String fileExtension = FilenameUtils.getExtension(path.toString());\r
+\r
+                                       if (fileExtension.equals("jpg") || fileExtension.equals("jpeg")) {\r
+                                               foundItems.add(path.toString());\r
+                                               StoreUri targetStoreUri = getManager()\r
+                                                               .createStoreUri(RemoteStoreProtocol.valueOf(targetProtocol), targetUri);\r
+                                               targetStoreUri.setProtocol(RemoteStoreProtocol.valueOf(targetProtocol));\r
+                                               targetStoreUri.setRootPath(targetFolder);\r
+\r
+                                               copyFile(path, Paths.get(targetStoreUri.getRootPath()));\r
+                                       }\r
                                } catch (Exception e) {\r
                                        logger.info("Exception: {}", e.getStackTrace());\r
                                }\r
index 48580358325bfd3500335dc32e0d1c7658ac28d5..8f4aa3d7c05a06960eaa9daeae3c3932c74a563d 100644 (file)
@@ -1,5 +1,6 @@
 package user.jobengine.server.steps;\r
 \r
+import java.io.File;\r
 import java.io.IOException;\r
 import java.nio.file.FileVisitResult;\r
 import java.nio.file.FileVisitor;\r
@@ -41,42 +42,63 @@ public class MoveJpegToIsilonStep extends JobStep {
                sourceStoreUri.setProtocol(RemoteStoreProtocol.valueOf(sourceProtocol));\r
 \r
                FileVisitor<Path> visitor = new SimpleFileVisitor<Path>() {\r
-                       boolean isFolderDateBeforeNow = false;\r
                        String fileNamePattern = "yyyymmdd";\r
                        SimpleDateFormat dateFormatter = new SimpleDateFormat(fileNamePattern);\r
                        Date currentDate = new Date(); // initializes with the current date\r
                        Date dateFromFileName;\r
+                       boolean isRootFolder = true;\r
 \r
                        @Override\r
-                       public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException {\r
-                               try {\r
-                                       if (Files.isDirectory(path)) {\r
-                                               dateFromFileName = dateFormatter.parse(path.toString().substring(0, 8));\r
+                       public FileVisitResult preVisitDirectory(Path folder, BasicFileAttributes attrs) throws IOException {\r
+                               FileVisitResult result = null;\r
+                               boolean isDateParseable = true;\r
+\r
+                               if (folder != null) {\r
+                                       String splitter = File.separator.replace("\\", "\\\\");\r
+                                       String[] parentFolderSegments = folder.toString().split(splitter);\r
+\r
+                                       try {\r
+                                               dateFromFileName = dateFormatter.parse(parentFolderSegments[parentFolderSegments.length - 1]);\r
+\r
                                                if (!(dateFromFileName.compareTo(currentDate) > 0)) {\r
-                                                       isFolderDateBeforeNow = false;\r
-                                                       return FileVisitResult.SKIP_SUBTREE;\r
+                                                       if (isRootFolder) {\r
+                                                               result = FileVisitResult.CONTINUE;\r
+                                                               isRootFolder = false;\r
+                                                       } else {\r
+                                                               result = FileVisitResult.SKIP_SUBTREE;\r
+                                                       }\r
                                                } else {\r
-                                                       isFolderDateBeforeNow = true;\r
-                                                       return FileVisitResult.CONTINUE;\r
+                                                       result = FileVisitResult.CONTINUE;\r
                                                }\r
-                                       } else {\r
-                                               if (isFolderDateBeforeNow) {\r
-                                                       String fileExtension = FilenameUtils.getExtension(path.toString());\r
-\r
-                                                       if (fileExtension.equals("jpg") || fileExtension.equals("jpeg")) {\r
-                                                               logger.info("path: {}", path.toString());\r
-                                                               foundItems.add(path.toString());\r
-                                                               StoreUri targetStoreUri = getManager()\r
-                                                                               .createStoreUri(RemoteStoreProtocol.valueOf(targetProtocol), targetUri);\r
-                                                               targetStoreUri.setProtocol(RemoteStoreProtocol.valueOf(targetProtocol));\r
-                                                               targetStoreUri.setRootPath(targetFolder);\r
-\r
-                                                               copyFile(path, Paths.get(targetStoreUri.getRootPath()));\r
-                                                       }\r
+                                       } catch (ParseException e) {\r
+                                               isDateParseable = false;\r
+                                               logger.info("Illegal argument to parse as date: {}",\r
+                                                               parentFolderSegments[parentFolderSegments.length - 1]);\r
+                                       } finally {\r
+                                               isRootFolder = false;\r
+                                               if (!isDateParseable) {\r
+                                                       result = FileVisitResult.CONTINUE;\r
                                                }\r
                                        }\r
-                               } catch (ParseException e) {\r
-                                       logger.info("Illegal argument to parse as date: {}", path.getFileName().toString().substring(0, 8));\r
+                               }\r
+                               return result;\r
+                       }\r
+\r
+                       @Override\r
+                       public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException {\r
+                               logger.info("path: {}", path.toString());\r
+                               try {\r
+                                       String fileExtension = FilenameUtils.getExtension(path.toString());\r
+\r
+                                       if (fileExtension.equals("jpg") || fileExtension.equals("jpeg")) {\r
+                                               foundItems.add(path.toString());\r
+                                               StoreUri targetStoreUri = getManager()\r
+                                                               .createStoreUri(RemoteStoreProtocol.valueOf(targetProtocol), targetUri);\r
+                                               targetStoreUri.setProtocol(RemoteStoreProtocol.valueOf(targetProtocol));\r
+                                               targetStoreUri.setRootPath(targetFolder);\r
+\r
+                                               copyFile(path, Paths.get(targetStoreUri.getRootPath()));\r
+                                       }\r
                                } catch (Exception e) {\r
                                        logger.info("Exception: {}", e.getStackTrace());\r
                                }\r