Duplikátumok megszüntetése javítás
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 19 Oct 2018 07:52:18 +0000 (07:52 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 19 Oct 2018 07:52:18 +0000 (07:52 +0000)
git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31327

server/user.jobengine.executors/src/user/jobengine/server/steps/CopyForArchiveNEXIOMaterialsStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/TranscodeSELENIOStep.java
server/user.jobengine.osgi.server/test/user/jobengine/server/IT/Support.java

index b69535f37a9d43cb6335237af4b27e2a69be8541..a3e73b6a284a80abf516d78d0427b9e23771100a 100644 (file)
@@ -3,6 +3,7 @@ package user.jobengine.server.steps;
 import java.io.OutputStream;\r
 import java.net.InetAddress;\r
 import java.net.URI;\r
+import java.util.ArrayList;\r
 import java.util.Calendar;\r
 import java.util.Date;\r
 import java.util.List;\r
@@ -58,6 +59,7 @@ public class CopyForArchiveNEXIOMaterialsStep extends JobStep {
        private int nexioKillDateDays;\r
        private String nexioAgency;\r
        private Marker systemMarker;\r
+       private List<String> transferredFileNames = null;\r
 \r
        private int check(int value, String name) {\r
                if (value == 0) {\r
@@ -92,12 +94,25 @@ public class CopyForArchiveNEXIOMaterialsStep extends JobStep {
                String fileName = String.format("%s-%s", origFileName, rundownArchive.getItemHouseId());\r
                String videoFileName = fileName + MXFEXT;\r
 \r
+               if (transferredFileNames == null)\r
+                       transferredFileNames = new ArrayList<>();\r
+\r
                //A mar letezo mozikat nem archivaljuk le ujra, csak a metaadatot\r
-               long existingMediaId = ItemManagerExtensions.getExistingRundownMedia(manager, origFileName);\r
-               if (existingMediaId == 0)\r
-                       transferFile(origFileName + MXFEXT, videoFileName);\r
-               else\r
+               long existingMediaId = 0;\r
+               if (transferredFileNames.contains(origFileName)) {\r
+                       logger.info(systemMarker, "A '{}' file archiválásra felkészítése egy másik story kapcsán már megtörtént, ezért csak metaadat archiválás szükséges.",\r
+                                       origFileName);\r
                        transferChunk(videoFileName);\r
+               } else {\r
+                       existingMediaId = ItemManagerExtensions.getExistingRundownMedia(manager, origFileName);\r
+                       if (existingMediaId == 0) {\r
+                               transferredFileNames.add(origFileName);\r
+                               transferFile(origFileName + MXFEXT, videoFileName);\r
+                       } else {\r
+                               logger.info(systemMarker, "A '{}' file archiválása már megtörtént, ezért csak metaadat archiválás szükséges.", origFileName);\r
+                               transferChunk(videoFileName);\r
+                       }\r
+               }\r
 \r
                BasicDBObject metadata = createMetadata(rundownArchive, storyArchive, fileArchive, existingMediaId);\r
                transferMetadata(videoFileName, metadata);\r
index 11349f6fbf518adfaf450fbffebc3e319a85d658..f15743c3338389771142ee075cd34e39554a6f97 100644 (file)
@@ -53,6 +53,12 @@ public class TSMBackupStep extends JobStep {
 \r
                        //A dupla ellenorzes a napon beluli ismetlesek miatt kell\r
                        long existingMediaId = archiveItem.getExistingMediaId();\r
+                       if (sourceMediaFile.length() == 0 && existingMediaId == 0) {\r
+                               existingMediaId = ItemManagerExtensions.getExistingRundownMedia(manager, sourceFileName.replace(MXFEXT, ""));\r
+                               if (existingMediaId == 0)\r
+                                       existingMediaId = -1;\r
+                       }\r
+\r
                        if (existingMediaId == 0)\r
                                existingMediaId = ItemManagerExtensions.getExistingRundownMedia(manager, sourceFileName.replace(MXFEXT, ""));\r
 \r
@@ -73,14 +79,23 @@ public class TSMBackupStep extends JobStep {
                                        }\r
                                });\r
                                RemoteFile remoteFile = sourceUri.transferFrom(targetUri, sourceFileName, sourceFileName);\r
-                       } else {\r
+                       } else\r
                                logger.info(marker, "Az '{}' TSM mentése nem szükséges, mert már megtalálható az archívumban.", sourceFileName);\r
+\r
+                       //Fel kell szabadítani, hogy a kovetkezo archivalaskor is nekifusson\r
+                       if (existingMediaId == -1) {\r
+                               logger.info(marker, "Az '{}' mentése jelenleg nem lehetséges, mert a szükséges metaadat még nem található meg az archívumban.", sourceFileName);\r
+                               if (!archiveItem.removeCatchedFile())\r
+                                       logger.error(marker,\r
+                                                       "Az '{}' állomány .catched jelző állománya nem törölhető. Az újabb archiválási kísérlethez annak kézi eltávolítása szükséges!",\r
+                                                       sourceMediaFile.getName());\r
+                       } else {\r
+                               saveMetadata(mediaCubeMedia, sourceFileName, existingMediaId);\r
+                               logger.info(marker, "Az '{}' archiválása sikeres.", sourceFileName);\r
+                               if (killDateDays > 0)\r
+                                       EscortFiles.createUNCKillDate(sourceMediaFile.getParent(), sourceFileName, killDateDays, marker);\r
                        }\r
-                       saveMetadata(mediaCubeMedia, sourceFileName, existingMediaId);\r
-                       logger.info(marker, "Az '{}' archiválása sikeres.", sourceFileName);\r
 \r
-                       if (killDateDays > 0)\r
-                               EscortFiles.createUNCKillDate(sourceMediaFile.getParent(), sourceFileName, killDateDays, marker);\r
                } catch (Exception e) {\r
                        logger.catching(e);\r
                        Message m = new ParameterizedMessage("Az '{}' állomány archiválása sikertelen. A rendszer hibaüzenete: {}", details, e.getMessage());\r
index 7d25c60c10ffe26e890e61f073a4d4a92d1504c4..d4bf472d5a841cb79480ffcc610148133f9921b4 100644 (file)
@@ -101,12 +101,12 @@ public class TranscodeSELENIOStep extends JobStep {
                        File sourceMediaFile = new File(archiveItem.getMediaFile());\r
                        sourceFileName = sourceMediaFile.getName();\r
 \r
-                       //Nincs mit transzkódolni, a TSMBackupStep csinal masolatot a mediafileokrol\r
+                       //Nincs mit transzkodolni, a TSMBackupStep csinal masolatot a mediafileokrol\r
                        //A dupla ellenorzes a napon beluli ismetlesek miatt kell\r
                        long existingMediaId = archiveItem.getExistingMediaId();\r
                        if (existingMediaId == 0)\r
                                existingMediaId = ItemManagerExtensions.getExistingRundownMedia(manager, sourceFileName.replace(MXFEXT, ""));\r
-                       if (existingMediaId != 0)\r
+                       if (existingMediaId != 0 || sourceMediaFile.length() == 0)\r
                                return null;\r
 \r
                        String details = String.format("%s (%d bytes)", sourceFileName, sourceMediaFile.length());\r
index 62074d692e4797e451d82790d78a334ef14d4d48..25f040d1ec147d640ca539978f6eed702f910752 100644 (file)
@@ -373,19 +373,20 @@ public class Support {
                IResultSetConsumer consumer = rs -> {\r
                        long mediaFileId = rs.getLong("mediafileid");\r
                        MediaFile mediaFile = (MediaFile) manager.get(MediaFile.class, mediaFileId);\r
-                       String mediaFileHouseId = rs.getString("mediafilehouseid");\r
                        if (masterMediaFile[0] == null) {\r
                                masterMediaFile[0] = mediaFile;\r
-                               //System.out.println("Skipping: " + mediaFileHouseId);\r
                                return true;\r
                        }\r
 \r
                        String path = rs.getString("relativepath");\r
-                       //                      System.out.println("Inspecting: " + path + " filename " + fileName + " mediaFileHouseId " + mediaFileHouseId);\r
-\r
                        File file = Paths.get(LOWRES_ROOT, path).toFile();\r
                        duplicateLength[0] += file.length();\r
-                       //System.out.println("Inspecting: " + mediaFileHouseId + " now available " + duplicateLength[0]);\r
+\r
+                       if (file.delete()) {\r
+                               System.out.println(String.format("%d %s %s", mediaFile.getMediaId(), mediaFile.getRelativePath(), masterMediaFile[0].getRelativePath()));\r
+                               mediaFile.setRelativePath(masterMediaFile[0].getRelativePath());\r
+                               manager.modify(mediaFile);\r
+                       }\r
                        return true;\r
                };\r
                manager.executeQuery(query, consumer, decorator);\r
@@ -399,6 +400,7 @@ public class Support {
                        return false;\r
                }, null);\r
 \r
+               int limit[] = { 1, 0 };\r
                int progress[] = { 0, 0 };\r
                manager.executeQuery("select filename from vw_items_rd_dup order by filecount desc", rs -> {\r
                        String fileName = rs.getString("filename");\r
@@ -409,7 +411,12 @@ public class Support {
                                progress[0] = progress[1];\r
                        }\r
                        System.out.println("Completed " + progress[0] + " " + count[1] + "/" + count[0] + " available " + duplicateLength[0]);\r
-                       return true;\r
+                       limit[1]++;\r
+\r
+                       if (limit[0] == limit[1])\r
+                               return false;\r
+                       else\r
+                               return true;\r
                }, null);\r
        }\r
 \r