Metaadat szinkronizacio
authorvasary.daniel <TFS\vasary.daniel>
Mon, 21 Mar 2022 20:15:30 +0000 (20:15 +0000)
committervasary.daniel <TFS\vasary.daniel>
Mon, 21 Mar 2022 20:15:30 +0000 (20:15 +0000)
git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C33071

server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataSyncRecursiveStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/SafeDeleteRecursive.java

index 7ea6612bb144750d9d5339c01368020629c09b92..423bcae5e315dc8e0ec8ef242c35617b00bcff08 100644 (file)
@@ -12,6 +12,7 @@ import java.util.Arrays;
 import java.util.List;\r
 \r
 import org.apache.commons.io.FilenameUtils;\r
+import org.apache.ibatis.jdbc.SQL;\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
 \r
@@ -88,6 +89,11 @@ public class MetadataSyncRecursiveStep extends JobStep implements FileVisitor<Pa
 \r
                String fileName = filePath.getFileName().toString();\r
                String mediaHouseId = FilenameUtils.removeExtension(fileName);\r
+\r
+               String mediaHouseIdUpper = mediaHouseId.toUpperCase();\r
+               if (mediaHouseIdUpper.endsWith("_CLEAN"))\r
+                       mediaHouseId = mediaHouseIdUpper.replace("_CLEAN", "");\r
+\r
                try {\r
                        result = getPlanAirMetadata(mediaHouseId);\r
 \r
@@ -190,7 +196,7 @@ public class MetadataSyncRecursiveStep extends JobStep implements FileVisitor<Pa
                if (fileName.startsWith(".") || fileName.endsWith(".nomd"))\r
                        return true;\r
 \r
-               logger.info(getSessionMarker(), "Checking {}", mediaPath);\r
+               // logger.info(getSessionMarker(), "Checking {}", mediaPath);\r
 \r
                ArchiveItem archiveItem = createArchiveItem(mediaPath);\r
                MediaFile mediaFile = getMediaFile(fileName);\r
@@ -216,24 +222,62 @@ public class MetadataSyncRecursiveStep extends JobStep implements FileVisitor<Pa
                                tsmSize = tsmFile.getSize();\r
                                sizeEquals = tsmSize == size;\r
 \r
-                               if (sizeEquals && !metadataEquals) {\r
-                                       logger.info(getSessionMarker(), "Metadata sync required for {}", mediaPath);\r
+                               if (archiveItem == null) {\r
+                                       // korabban mentettuk metaadat nelkul\r
+                                       logger.info(getSessionMarker(), "Metadata not available for {}", mediaPath);\r
+                               } else {\r
+                                       if (sizeEquals && !metadataEquals) {\r
+                                               syncMetadata(mediaPath, item, media, archiveItem, mediaFile);\r
+                                               logger.info(getSessionMarker(), "Metadata sync applied for {}", mediaPath);\r
+                                       }\r
                                }\r
+\r
                        }\r
                }\r
 \r
                return true;\r
        }\r
 \r
+       public String createUpdateItemQuery(long itemId, ArchiveItem archiveItem) {\r
+               SQL sql = new SQL();\r
+               sql.UPDATE("ITEM");\r
+               sql.SET(String.format("HOUSEID='%s'", archiveItem.getItemHouseId()));\r
+               sql.SET(String.format("TITLE='%s'", archiveItem.getItemTitle()));\r
+               sql.WHERE(String.format("ID = %d", itemId));\r
+               return sql.toString();\r
+       }\r
+\r
+       public String createUpdateMediaQuery(long mediaId, ArchiveItem archiveItem) {\r
+               SQL sql = new SQL();\r
+               sql.UPDATE("MEDIA");\r
+               sql.SET(String.format("HOUSEID='%s'", archiveItem.getMediaHouseId()));\r
+               sql.SET(String.format("TITLE='%s'", archiveItem.getMediaTitle()));\r
+               sql.SET(String.format("DESCRIPTION='%s'", archiveItem.getMediaDescription()));\r
+               sql.WHERE(String.format("ID = %d", mediaId));\r
+               return sql.toString();\r
+       }\r
+\r
+       private void syncMetadata(Path mediaPath, Item item, Media media, ArchiveItem archiveItem, MediaFile mediaFile) {\r
+               String sql = createUpdateItemQuery(item.getId(), archiveItem);\r
+               getManager().executeUpdate(sql, null, null);\r
+               // logger.info(getSessionMarker(), sql);\r
+               sql = createUpdateMediaQuery(media.getId(), archiveItem);\r
+               // logger.info(getSessionMarker(), sql);\r
+               getManager().executeUpdate(sql, null, null);\r
+       }\r
+\r
        @Override\r
        public FileVisitResult visitFile(Path filePath, BasicFileAttributes paramBasicFileAttributes) throws IOException {\r
+               FileVisitResult result = FileVisitResult.CONTINUE;\r
+\r
                try {\r
                        if (!processPathItem(filePath))\r
-                               return FileVisitResult.TERMINATE;\r
+                               result = FileVisitResult.TERMINATE;\r
                } catch (Exception e) {\r
                        logger.catching(e);\r
+                       result = FileVisitResult.TERMINATE;\r
                }\r
-               return FileVisitResult.CONTINUE;\r
+               return result;\r
        }\r
 \r
        @Override\r
@@ -245,6 +289,7 @@ public class MetadataSyncRecursiveStep extends JobStep implements FileVisitor<Pa
        MediaFile getMediaFile(String fileName) {\r
                MediaFile result = null;\r
                MediaFileDAO mfDAO = (MediaFileDAO) getManager().getBaseDAO(MediaFile.class);\r
+               // a houseid az mxf kiterjesztesu file\r
                List<IEntityBase> mfList = mfDAO.getByHouseId(fileName);\r
                if (mfList != null && mfList.size() == 1)\r
                        result = (MediaFile) mfList.get(0);\r
index bd9a89bf19f39a229a9a1351adbbbf7d921607fc..143a99207238109b2a1a95fcf74cc4b33f88753e 100644 (file)
@@ -292,7 +292,9 @@ public class SafeDeleteRecursive extends JobStep implements FileVisitor<Path> {
                        Media media = getManager().getMedia(mediaFile.getMediaId());\r
                        mcArchivedDate = media.getCreated();\r
                        Item item = getManager().getItem(media.getItemId());\r
-                       metadataEquals = checkArchiveItem(mediaPath, archiveItem, item, media);\r
+\r
+                       // mivel nincs metaadat, nem ellenorizheto\r
+                       metadataEquals = archiveItem == null || checkArchiveItem(mediaPath, archiveItem, item, media);\r
 \r
                        // tsm\r
                        String tsmFileName = mediaFile.getRelativePath();\r