git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorSweidan Omar <TFS\sweidan.omar>
Mon, 24 Jan 2022 13:48:40 +0000 (13:48 +0000)
committerSweidan Omar <TFS\sweidan.omar>
Mon, 24 Jan 2022 13:48:40 +0000 (13:48 +0000)
server/-product/production/LOCAL/jobs/steps/MoveJpegToIsilonStep.java

index 24a178f41637b9dda4e54f75a75939ffd4cc1792..78ca210fac45ee4fd23dc59ba81a56e97c10385a 100644 (file)
 package user.jobengine.server.steps;\r
 \r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import java.net.URI;\r
+import java.io.IOException;\r
 import java.nio.file.FileVisitResult;\r
 import java.nio.file.FileVisitor;\r
+import java.nio.file.Files;\r
 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.util.regex.Matcher;\r
-import java.util.regex.Pattern;\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
+\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
-               \r
-               Path sourcePath = Paths.get(sourceFolder);\r
-               List<String> files = new ArrayList<>();\r
-                \r
-               Pattern pattern = Pattern.compile(fileNamePattern, Pattern.CASE_INSENSITIVE);\r
-               \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
+//             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
                FileVisitor<Path> visitor = new SimpleFileVisitor<Path>() {\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
+                       String fileNamePattern = "yyyymmdd";\r
+                       SimpleDateFormat dateFormatter = new SimpleDateFormat(fileNamePattern);\r
+                       Date currentDate = new Date(); // initializes with the current date\r
+                       Date dateFromFileName;\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
+                                               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
+                                               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
-                               } \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
+                       @Override\r
+                       public FileVisitResult visitFileFailed(Path path, 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
+               };\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
-                 } \r
-                 finally { }\r
-                 \r
-                 logger.info(getMarker(), "Found {} files", files.size());\r
-                \r
-//             return new Object[] { files };\r
-               return null;\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
+       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.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
+//             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