--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+import java.nio.file.Files;\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
+import java.nio.file.StandardCopyOption;\r
+import java.nio.file.attribute.FileAttribute;\r
+import java.nio.file.attribute.PosixFilePermission;\r
+import java.nio.file.attribute.PosixFilePermissions;\r
+import java.util.Arrays;\r
+import java.util.List;\r
+import java.util.Set;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+public class ArchiveSubtitlesStep extends JobStep {\r
+ private static final Logger logger = LogManager.getLogger();\r
+\r
+ public void ensureFolder(Path filePath) throws IOException {\r
+ File folder = filePath.toFile();\r
+ if (!folder.exists() || !folder.isDirectory()) {\r
+ try {\r
+ Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rwxrwxrwx");\r
+ FileAttribute<Set<PosixFilePermission>> attr = PosixFilePermissions.asFileAttribute(perms);\r
+ Files.createDirectories(filePath, attr);\r
+ } catch (Exception e) {\r
+ try {\r
+ Files.createDirectories(filePath);\r
+ } catch (Exception e1) {\r
+ logger.catching(e1);\r
+ throw e1;\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ //"x:\PB_ORIG\AMC_BLK\BUL\CCEM018865-01_DONE.stl"\r
+ //"x:\PB_ARCH\AMC_BLK\CCEM018865-01_BUL.stl"\r
+\r
+ @StepEntry\r
+ public Object[] execute(List<String> files) {\r
+ int current = 0;\r
+ for (String file : files) {\r
+ Path source = Paths.get(file);\r
+ String lang = source.getParent().getFileName().toString().toUpperCase();\r
+ Path archiveRoot = Paths.get(file.replace("PB_ORIG", "PB_ARCH/TEST"));\r
+ archiveRoot = archiveRoot.getParent().getParent();\r
+ //logger.info(getMarker(), "Archive root is {}, lang is {}", archiveRoot, lang);\r
+ Path archive = Paths.get(archiveRoot.toString(), source.getFileName().toString().replace(".stl", "_" + lang + ".stl"));\r
+ boolean isOverride = archive.toFile().exists();\r
+ try {\r
+ ensureFolder(archiveRoot);\r
+ Files.copy(source, archive, StandardCopyOption.REPLACE_EXISTING);\r
+ if (archive.toFile().exists()) {\r
+ boolean isContentEquals = Arrays.equals(Files.readAllBytes(source), Files.readAllBytes(archive));\r
+ logger.info(getMarker(), "Contents equals {}", isContentEquals);\r
+ if (isContentEquals) {\r
+ if (isOverride)\r
+ logger.info(getMarker(), "Successfully replaced {}", archive);\r
+ else\r
+ logger.info(getMarker(), "Successfully archived {}", archive);\r
+ }\r
+ }\r
+\r
+ } catch (Exception e) {\r
+ logger.error(getMarker(), "Error copy {} to {}. System message: {}", source, archive, e.getMessage());\r
+ }\r
+ current++;\r
+ int progress = current * 100 / files.size();\r
+ setProgress(progress);\r
+ }\r
+ setProgress(100);\r
+ return null;\r
+ }\r
+}\r
--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+import java.nio.file.Path;\r
+import java.text.SimpleDateFormat;\r
+import java.util.Calendar;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
+/* DO NOT REMOVE!\r
+import user.jobengine.server.steps.FileSearchFilterOptions;\r
+*/\r
+public class SubtitleFilesCollectorStep extends PathItemsCollectorStep {\r
+ private static final Logger logger = LogManager.getLogger();\r
+\r
+ @Override\r
+ protected FileSearchFilterOptions createFileFilter(BasicDBObject filter) {\r
+ FileSearchFilterOptions result = new FileSearchFilterOptions(filter) {\r
+ @Override\r
+ public boolean acceptFile(Path file) {\r
+ return super.acceptFile(file) && !file.getFileName().toString().contains("_DONE");\r
+ }\r
+ };\r
+ return result;\r
+ }\r
+\r
+ @Override\r
+ @StepEntry\r
+ public Object[] execute(String sourceFolder, BasicDBObject filter) throws Exception {\r
+ return super.execute(sourceFolder, filter);\r
+ }\r
+}\r