git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 5 Oct 2017 07:37:51 +0000 (07:37 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 5 Oct 2017 07:37:51 +0000 (07:37 +0000)
server/user.jobengine.executors/src/user/jobengine/server/steps/CheckMORPHEUSMissingMaterialsStep.java [new file with mode: 0644]

diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/CheckMORPHEUSMissingMaterialsStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/CheckMORPHEUSMissingMaterialsStep.java
new file mode 100644 (file)
index 0000000..01e071a
--- /dev/null
@@ -0,0 +1,118 @@
+package user.jobengine.server.steps;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+import java.nio.charset.Charset;\r
+import java.nio.file.DirectoryStream;\r
+import java.nio.file.Files;\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
+import java.util.Arrays;\r
+import java.util.List;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+import user.commons.IEntityBase;\r
+import user.commons.ListUtils;\r
+import user.jobengine.db.IItemManager;\r
+import user.jobengine.db.MediaFile;\r
+import user.jobengine.db.MediaFileDAO;\r
+import user.jobengine.server.IJobEngine;\r
+import user.jobengine.server.IJobRuntime;\r
+\r
+public class CheckMORPHEUSMissingMaterialsStep extends JobStep {\r
+       private static final String MATERIAL_ID = "Material ID";\r
+       private static final Logger logger = LogManager.getLogger();\r
+       private static final String RETRIEVE_MATERIAL = "Adásanyag visszatöltés";\r
+       private static final String OUTPUT_PATH = "outputPath";\r
+       private static final String MEDIA_CUBE_MEDIA = "mediaCubeMedia";\r
+       private static final String JOBTEMPLATE = "retrieve-material.xml";\r
+       private static final String CSV_EXT = ".mxf";\r
+       private String outputPath;\r
+       private MediaFileDAO dao;\r
+       private IJobEngine jobEngine;\r
+\r
+       @StepEntry\r
+       public Object[] execute(String inputFolder, String outputPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+\r
+               this.outputPath = outputPath;\r
+               this.jobEngine = jobEngine;\r
+               IItemManager manager = jobEngine.getItemManager();\r
+               dao = (MediaFileDAO) manager.getBaseDAO(MediaFile.class);\r
+               DirectoryStream<Path> directoryStream = null;\r
+               try {\r
+                       Files.newDirectoryStream(Paths.get(inputFolder)).forEach(p -> processPathItem(p));\r
+               } catch (Exception e) {\r
+                       logger.error("", e);\r
+               } finally {\r
+                       if (directoryStream != null) {\r
+                               try {\r
+                                       directoryStream.close();\r
+                               } catch (IOException e) {\r
+                               }\r
+                       }\r
+               }\r
+               return null;\r
+       }\r
+\r
+       private void processMediaId(String mediaId) throws Exception {\r
+               List<IEntityBase> medias = dao.getByHouseId(mediaId);\r
+               if (medias == null || medias.size() == 0) {\r
+                       logger.error(getMarker(), "Az {} anyag nem található az archívumban.", mediaId);\r
+                       return;\r
+               }\r
+\r
+               if (medias.size() > 0) {\r
+                       logger.error(getMarker(), "Az {} anyagból egynél több található az archívumban.", mediaId);\r
+                       return;\r
+               }\r
+\r
+               jobEngine.submit(JOBTEMPLATE, RETRIEVE_MATERIAL, ListUtils.asMap(MEDIA_CUBE_MEDIA, medias.get(0), OUTPUT_PATH, outputPath));\r
+       }\r
+\r
+       private void processMissingMaterialCSV(Path csvFilePath) throws Exception {\r
+               List<String> lines = Files.readAllLines(csvFilePath, Charset.forName("UTF-8"));\r
+               if (lines == null | lines.size() == 0) {\r
+                       return;\r
+               }\r
+\r
+               int mediaIdPosition = -1;\r
+               for (int i = 0; i < lines.size(); i++) {\r
+                       String line = lines.get(i);\r
+                       if (line == null)\r
+                               continue;\r
+                       String[] data = line.split("\\t");\r
+                       if (i == 0) {\r
+                               //Channel,Time to Air,Duration,Material ID,Title,Device ID,Reason,\r
+                               List<String> dataList = Arrays.asList(data);\r
+                               mediaIdPosition = dataList.indexOf(MATERIAL_ID);\r
+                               if (mediaIdPosition < 0) {\r
+                                       logger.error(getMarker(), "A {} MORPHEUS állományban nem található a 'Material ID' mező.", csvFilePath.toFile().getName());\r
+                                       break;\r
+                               }\r
+                       } else {\r
+                               processMediaId(data[mediaIdPosition]);\r
+                       }\r
+               }\r
+       }\r
+\r
+       private void processPathItem(Path csvFilePath) {\r
+               File csvFile = csvFilePath.toFile();\r
+\r
+               if (csvFile.isDirectory() || !csvFile.getName().toLowerCase().endsWith(CSV_EXT.toLowerCase())) {\r
+                       return;\r
+               }\r
+\r
+               try {\r
+                       processMissingMaterialCSV(csvFilePath);\r
+               } catch (Exception e) {\r
+                       logger.catching(e);\r
+                       logger.error(getMarker(), "A {} MORPHEUS állomány feldolgozásakor hiba történt. A rendszer hibaüzenete: {}.", csvFile.getName(), e.getMessage());\r
+               }\r
+\r
+               if (!csvFile.delete())\r
+                       logger.error(getMarker(), "A {} MORPHEUS állomány nem törölhető.", csvFile.getName());\r
+       }\r
+\r
+}\r