git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorSweidan Omar <TFS\sweidan.omar>
Mon, 24 Jan 2022 13:45:35 +0000 (13:45 +0000)
committerSweidan Omar <TFS\sweidan.omar>
Mon, 24 Jan 2022 13:45:35 +0000 (13:45 +0000)
server/user.jobengine.executors/src/user/jobengine/server/steps/MoveJpegToIsilonStep.java

index 27f7d0e1f2d1fcf5ae9fc760570296ad0a07cd3b..78ca210fac45ee4fd23dc59ba81a56e97c10385a 100644 (file)
@@ -7,66 +7,146 @@ import java.nio.file.Files;
 import java.nio.file.Path;\r
 import java.nio.file.Paths;\r
 import java.nio.file.SimpleFileVisitor;\r
+import java.nio.file.StandardCopyOption;\r
 import java.nio.file.attribute.BasicFileAttributes;\r
+import java.text.ParseException;\r
+import java.text.SimpleDateFormat;\r
 import java.util.ArrayList;\r
+import java.util.Date;\r
 import java.util.List;\r
-import java.util.regex.Matcher;\r
-import java.util.regex.Pattern;\r
 \r
+import org.apache.commons.io.FilenameUtils;\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
 \r
 import user.commons.StoreUri;\r
+import user.commons.remotestore.RemoteStoreProtocol;\r
 \r
 public class MoveJpegToIsilonStep extends JobStep {\r
        private static final Logger logger = LogManager.getLogger();\r
 \r
        @StepEntry\r
-       public Object[] execute(StoreUri uri, String protocol) throws Exception {\r
-               // TODO szerezzük a path-t meg az uri-ból\r
-               Path sourcePath;\r
-               List<String> files = new ArrayList<>();\r
-               String fileNamePattern = "yyyymmdd";\r
+       public Object[] execute(String sourceUri, String sourceProtocol, String sourceFolder, String targetUri,\r
+                       String targetProtocol, String targetFolder, String userName, String password, int port) throws Exception {\r
+               StoreUri sourceStoreUri = new StoreUri(sourceUri);\r
+//             StoreUri targetStoreUri = new StoreUri(targetUri);\r
+               if (sourceFolder.endsWith("/")) {\r
+                       sourceFolder = sourceFolder.substring(0, sourceFolder.length() - 1);\r
+               }\r
 \r
-               try {\r
-                       sourcePath = Paths.get(uri.toString());\r
+//             logger.info("sourceFolder: {}", sourceFolder);\r
+               List<String> foundItems = new ArrayList<>();\r
+               sourceStoreUri.setRootPath(sourceFolder);\r
+               sourceStoreUri.setPortNumber(port);\r
+               sourceStoreUri.setPassword(password);\r
+               sourceStoreUri.setUserName(userName);\r
+               sourceStoreUri.setProtocol(RemoteStoreProtocol.valueOf(sourceProtocol));\r
+//             logger.info("sourceStoreUri.toString(): {}", sourceStoreUri.toString());\r
+\r
+//             targetStoreUri.setProtocol(RemoteStoreProtocol.valueOf(targetProtocol));\r
 \r
-                       Pattern pattern = Pattern.compile(fileNamePattern, Pattern.CASE_INSENSITIVE);\r
+               FileVisitor<Path> visitor = new SimpleFileVisitor<Path>() {\r
+                       String fileNamePattern = "yyyymmdd";\r
+                       SimpleDateFormat dateFormatter = new SimpleDateFormat(fileNamePattern);\r
+                       Date currentDate = new Date(); // initializes with the current date\r
+                       Date dateFromFileName;\r
 \r
-                       FileVisitor<Path> visitor = new SimpleFileVisitor<Path>() {\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
+                                               if (!(dateFromFileName.compareTo(currentDate) > 0)) {\r
+                                                       return FileVisitResult.SKIP_SUBTREE;\r
+                                               } else {\r
+                                                       return FileVisitResult.CONTINUE;\r
+                                               }\r
+                                       } else {\r
+                                               String fileExtension = FilenameUtils.getExtension(path.toString());\r
 \r
-                               @Override\r
-                               public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {\r
-                                       if (!file.getFileName().toString().contains("_DONE")) {\r
-                                               Matcher matcher = pattern.matcher(file.getFileName().toString());\r
-                                               if (matcher.find())\r
-                                                       files.add(file.toString());\r
+                                               if (fileExtension.equals("jpg") || fileExtension.equals("jpeg")) {\r
+                                                       logger.info("path: {}", path.toString());\r
+                                                       foundItems.add(path.toString());\r
+//                                                     logger.info("getRootPath(): {}", sourceStoreUri.getRootPath());\r
+                                                       StoreUri targetStoreUri = getManager()\r
+                                                                       .createStoreUri(RemoteStoreProtocol.valueOf(targetProtocol), targetUri);\r
+                                                       targetStoreUri.setProtocol(RemoteStoreProtocol.valueOf(targetProtocol));\r
+                                                       targetStoreUri.setRootPath(targetFolder);\r
+\r
+//                                                     if (!targetStoreUri.fileExists(URLEncoder.encode(path.toString(), "UTF-8"))) {\r
+                                                       logger.info("Paths.get(targetStoreUri.getRootPath()): {}", targetStoreUri.getRootPath());\r
+                                                       copyFile(path, Paths.get(targetStoreUri.getRootPath()));\r
+//                                                             getManager().createStore();\r
+//                                                             getPathUntilCurrentFile(sourceStoreUri.getRootPath().toString(), path), "" );\r
+//                                                     }\r
+                                               }\r
                                        }\r
-                                       return FileVisitResult.CONTINUE;\r
+                               } catch (ParseException e) {\r
+                                       logger.info("Illegal argument to parse as date: {}", path.getFileName().toString().substring(0, 8));\r
+                               } catch (Exception e) {\r
+                                       logger.info("Exception: {}", e.getStackTrace());\r
                                }\r
+                               return FileVisitResult.CONTINUE;\r
+                       }\r
 \r
-                               @Override\r
-                               public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {\r
-                                       return FileVisitResult.CONTINUE;\r
-                               }\r
-                       };\r
-\r
-                       try {\r
-                               Files.walkFileTree(sourcePath, visitor);\r
-                       } catch (Exception e) {\r
-                               logger.error(getMarker(), "Error processing '{}'. System message: {}", sourcePath, e.getMessage());\r
-                               logger.catching(e);\r
-                               throw e;\r
-                       } finally {\r
+                       @Override\r
+                       public FileVisitResult visitFileFailed(Path path, IOException exc) throws IOException {\r
+                               return FileVisitResult.CONTINUE;\r
                        }\r
+               };\r
+\r
+               try {\r
+                       Files.walkFileTree(Paths.get(sourceStoreUri.getRootPath()), visitor);\r
+               } catch (IOException e) {\r
+                       logger.info("Error processing Paths.get(sourceStoreUri.getRootPath()) '{}'. System message: {}",\r
+                                       Paths.get(sourceStoreUri.getRootPath()), e.getStackTrace());\r
+                       logger.catching(e);\r
+                       throw e;\r
+               } catch (SecurityException se) {\r
+                       logger.info("SecurityException: {}", se.getStackTrace());\r
+               } finally {\r
+               }\r
+\r
+               logger.info("Found {} files", foundItems.size());\r
+               logger.info("files: {}", foundItems);\r
+               return new Object[] { foundItems };\r
+       }\r
 \r
-                       logger.info(getMarker(), "Found {} files", files.size());\r
+       private void copyFile(Path sourceFullPath, Path targetRootPath) {\r
+               Path targetPath = Paths.get(targetRootPath.toString(), sourceFullPath.getFileName().toString());\r
+               logger.info(getMarker(), "Root {} exists {}", targetRootPath, Files.exists(targetRootPath));\r
 \r
+               if (Files.exists(targetPath)) {\r
+                       logger.info(getMarker(), "Skipping {}, target exists", targetPath);\r
+                       return;\r
+               }\r
+\r
+               logger.info(getMarker(), "Target {} synchronization required", targetPath);\r
+\r
+               try {\r
+                       Files.copy(sourceFullPath, targetPath, StandardCopyOption.REPLACE_EXISTING);\r
                } catch (Exception e) {\r
-                       logger.debug("e.stackTrace: {}", e.getStackTrace());\r
+                       logger.error(getMarker(), "Error synchronize {} to {}. System message: {}", sourceFullPath, targetPath,\r
+                                       e.getMessage());\r
+               }\r
+       }\r
+\r
+       protected String getPathUntilCurrentFile(String rootFolder, Path fullPath) {\r
+               String tempRootfolder = "";\r
+               if (rootFolder.contains("/") && fullPath.toString().contains("\\")) {\r
+                       tempRootfolder = rootFolder.replace('/', '\\');\r
+                       if (!tempRootfolder.endsWith("\\")) {\r
+                               tempRootfolder = tempRootfolder.concat("\\");\r
+                       }\r
+               }\r
+               if (rootFolder.contains("\\") && fullPath.toString().contains("/")) {\r
+                       tempRootfolder = rootFolder.replace('\\', '/');\r
+                       if (!tempRootfolder.endsWith("/")) {\r
+                               tempRootfolder = tempRootfolder.concat("/");\r
+                       }\r
                }\r
 \r
-//             return new Object[] { files };\r
-               return null;\r
+//             logger.info("Path until file: {}", fullPath.toString().replace(tempRootfolder, ""));\r
+               return fullPath.toString().replace(rootFolder, "").substring(1);\r
        }\r
-}
\ No newline at end of file
+}\r