git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorvasary.daniel <TFS\vasary.daniel>
Mon, 23 Aug 2021 15:04:34 +0000 (15:04 +0000)
committervasary.daniel <TFS\vasary.daniel>
Mon, 23 Aug 2021 15:04:34 +0000 (15:04 +0000)
server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SmallTests.java
server/user.jobengine.executors/src/user/jobengine/server/steps/SafeDeleteRecursive.java

index 3c11fab1668299dbe97d4b313d070ab15b88a37a..bf52e6484f041e2c28df5be009f641392f19c150 100644 (file)
@@ -25,6 +25,7 @@ import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;\r
 import java.util.ArrayList;\r
 import java.util.Arrays;\r
+import java.util.Calendar;\r
 import java.util.Collection;\r
 import java.util.Collections;\r
 import java.util.Date;\r
@@ -1443,4 +1444,16 @@ public class SmallTests {
 \r
                }\r
        }\r
+\r
+       @Test\r
+       public void test999997() throws Exception {\r
+               Calendar cal = Calendar.getInstance();\r
+               cal.set(Calendar.HOUR_OF_DAY, 0);\r
+               cal.set(Calendar.MINUTE, 0);\r
+               cal.set(Calendar.SECOND, 0);\r
+               cal.set(Calendar.MILLISECOND, 0);\r
+\r
+               SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");\r
+               System.out.println(df.format(cal.getTime()));\r
+       }\r
 }\r
index 42c1bf9b2a97086e96b3c2b5cec5d120d09d0032..2ad105e929f6155cbb1204612832e130e6f8b021 100644 (file)
@@ -22,13 +22,14 @@ import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FilenameUtils;\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
+import org.apache.logging.log4j.Marker;\r
+import org.apache.logging.log4j.MarkerManager;\r
 \r
 import com.ibm.nosql.json.api.BasicDBObject;\r
 \r
 import user.commons.IEntityBase;\r
 import user.commons.RemoteFile;\r
 import user.commons.StoreUri;\r
-import user.commons.mediatool.MediaInfo;\r
 import user.commons.remotestore.RemoteStoreProtocol;\r
 import user.jobengine.db.Item;\r
 import user.jobengine.db.Media;\r
@@ -46,6 +47,8 @@ import user.mediacube.metadata.interfaces.PlanAirMetadataListOptions;
 \r
 public class SafeDeleteRecursive extends JobStep implements FileVisitor<Path> {\r
        private static final Logger logger = LogManager.getLogger();\r
+       private Marker csvMarker = MarkerManager.getMarker("SAFE-DELETE-RECURSIVE-CSV");\r
+\r
        private static final String ITEM_TITLE = "itemTitle";\r
        private static final String ITEM_HOUSEID = "itemHouseId";\r
        private static final String MEDIA_HOUSEID = "mediaHouseId";\r
@@ -53,54 +56,45 @@ public class SafeDeleteRecursive extends JobStep implements FileVisitor<Path> {
        private static final String MEDIA_DESCRIPTION = "mediaDescription";\r
        private static final String MEDIA_TYPE = "mediaType";\r
        private static final String KILLDATEEXT = ".killdate";\r
+       private static final String EWC2EXT = ".ewc2";\r
+       private static final String XMPEXT = ".xmp";\r
+\r
        private SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");\r
 \r
        private List<String> skipPathNames = Arrays.asList("!ARCHIVALAS_ALATT", EscortFiles.STATUSFOLDER,\r
                        EscortFiles.CONFLICTFOLDER);\r
        private Set<String> includeList;\r
 \r
-       private boolean canReadMediaInfo(Path mediaFilePath) {\r
-               boolean result = false;\r
-               try {\r
-                       MediaInfo mi = new MediaInfo(mediaFilePath);\r
-                       mi.process();\r
-                       result = true;\r
-               } catch (Exception e) {\r
-                       logger.warn(getSessionMarker(), e.getMessage());\r
-               }\r
-               return result;\r
-       }\r
-\r
-       private boolean checkArchiveItem(ArchiveItem archiveItem, Item item, Media media) {\r
+       private boolean checkArchiveItem(Path mediaPath, ArchiveItem archiveItem, Item item, Media media) {\r
                if (archiveItem == null)\r
                        return false;\r
 \r
                String itemHouseId = archiveItem.getItemHouseId() == null ? "" : archiveItem.getItemHouseId();\r
                if (!itemHouseId.equals(item.getHouseId())) {\r
-                       logger.error(getSessionMarker(), "ItemHouseId");\r
+                       logger.error(getSessionMarker(), "{} ItemHouseId mismatch", mediaPath);\r
                        return false;\r
                }\r
 \r
                String itemTitle = archiveItem.getItemTitle() == null ? "" : archiveItem.getItemTitle();\r
                if (!itemTitle.equals(item.getTitle())) {\r
-                       logger.error(getSessionMarker(), "ItemTitle");\r
+                       logger.error(getSessionMarker(), "{} ItemTitle mismatch", mediaPath);\r
                        return false;\r
                }\r
                String mediaHouseId = archiveItem.getMediaHouseId() == null ? "" : archiveItem.getMediaHouseId();\r
                if (!mediaHouseId.equals(media.getHouseId())) {\r
-                       logger.error(getSessionMarker(), "MediaHouseId");\r
+                       logger.error(getSessionMarker(), "{} MediaHouseId mismatch", mediaPath);\r
                        return false;\r
                }\r
                String mediaTitle = archiveItem.getMediaTitle() == null ? "" : archiveItem.getMediaTitle();\r
                if (!mediaTitle.equals(media.getTitle())) {\r
-                       logger.error(getSessionMarker(), "MediaTitle");\r
+                       logger.error(getSessionMarker(), "{} MediaTitle mismatch", mediaPath);\r
                        return false;\r
                }\r
 \r
                String mediaDescription = archiveItem.getMediaDescription() == null ? "" : archiveItem.getMediaDescription();\r
                String storedMediaDescription = media.getDescription() == null ? "" : media.getDescription();\r
                if (!mediaDescription.equals(storedMediaDescription)) {\r
-                       logger.error(getSessionMarker(), "MediaDescription");\r
+                       logger.error(getSessionMarker(), "{} MediaDescription mismatch", mediaPath);\r
                        return false;\r
                }\r
 \r
@@ -128,10 +122,10 @@ public class SafeDeleteRecursive extends JobStep implements FileVisitor<Path> {
        @StepEntry\r
        public Object[] execute(String sourcePath) throws Exception {\r
                logger.info(getSessionMarker(), "Starting in {}", sourcePath);\r
-               logger.info(getSessionMarker(), "{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};", "Napló időbélyeg",\r
-                               "Neve", "Elérése", "Mérete", "Létrehozva", "Módosítva", "Archiválva (MC)", "Archiválva (TSM)",\r
-                               "Méret (TSM)", ".catched", ".killdate", ".nomd", "Archivált (MC)", "Archivált (TSM)",\r
-                               "Metaadat egyezés", "Méret egyezés", "Törölhető", "Kezelendő");\r
+               logger.info(csvMarker, "{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};", "Napló időbélyeg", "Neve",\r
+                               "Elérése", "Mérete", "Létrehozva", "Módosítva", "Archiválva (MC)", "Archiválva (TSM)", "Méret (TSM)",\r
+                               ".catched", ".killdate", ".nomd", "Archivált (MC)", "Archivált (TSM)", "Metaadat egyezés",\r
+                               "Méret egyezés", "Törölhető", "Kezelendő");\r
 \r
                try {\r
                        String location = "/opt/test-mediacube/file_list_original.txt";\r
@@ -207,6 +201,42 @@ public class SafeDeleteRecursive extends JobStep implements FileVisitor<Path> {
                return FileVisitResult.CONTINUE;\r
        }\r
 \r
+       private boolean removeFile(Path filePath) {\r
+               boolean result = false;\r
+               try {\r
+                       File file = filePath.toFile();\r
+                       if (file.exists()) {\r
+                               logger.info(getSessionMarker(), "Törlés {}", filePath);\r
+                               result = true;\r
+                               //result = file.delete();\r
+                       }\r
+               } catch (Exception e) {\r
+                       logger.error(getSessionMarker(), "A {} fájl nem törölhető. A rendszer hibaüzenete: {}", filePath,\r
+                                       e.getMessage());\r
+               }\r
+               return result;\r
+       }\r
+\r
+       private boolean removeFiles(Path filePath, List<Path> killDateFiles) {\r
+               if (!removeFile(filePath))\r
+                       return false;\r
+\r
+               removeFile(Paths.get(filePath.toString() + EWC2EXT));\r
+               removeFile(Paths.get(filePath.toString() + XMPEXT));\r
+               removeFile(Paths.get(filePath.getParent().toString(), EscortFiles.STATUSFOLDER,\r
+                               filePath.getFileName().toString() + EscortFiles.DOT_CATCHED));\r
+               removeFile(Paths.get(filePath.getParent().toString(), EscortFiles.STATUSFOLDER,\r
+                               filePath.getFileName().toString() + EscortFiles.DOT_JSON));\r
+\r
+               boolean result = true;\r
+               for (Path killDateFile : killDateFiles) {\r
+                       if (!removeFile(killDateFile))\r
+                               result = false;\r
+               }\r
+\r
+               return result;\r
+       }\r
+\r
        private boolean processPathItem(Path mediaPath) throws Exception {\r
                if (getJobRuntime().isWaitingCancel()) {\r
                        cancel();\r
@@ -250,7 +280,7 @@ 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(archiveItem, item, media);\r
+                       metadataEquals = checkArchiveItem(mediaPath, archiveItem, item, media);\r
 \r
                        //tsm\r
                        String tsmFileName = mediaFile.getRelativePath();\r
@@ -266,11 +296,18 @@ public class SafeDeleteRecursive extends JobStep implements FileVisitor<Path> {
                boolean canDelete = !noMDExists && catchedExists && killdateExists && mcArchived && tsmArchived\r
                                && metadataEquals;\r
                Date now = new Date(System.currentTimeMillis());\r
-               logger.info(getSessionMarker(), "{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};", D(now), fileName,\r
+               logger.info(csvMarker, "{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};", D(now), fileName,\r
                                mediaPath.getParent(), size, D(createDate), D(lastModifiedDate), D(mcArchivedDate), D(tsmBackupDate),\r
                                tsmSize, YN(catchedExists), YN(killdateExists), YN(noMDExists), YN(mcArchived), YN(tsmArchived),\r
                                YN(metadataEquals), YN(sizeEquals), YN(canDelete), YN(includeContains));\r
 \r
+               logger.info(getSessionMarker(), "{} {}{}{}{}{}{}{}{}{}", mediaPath, YN(canDelete), YN(catchedExists),\r
+                               YN(killdateExists), YN(noMDExists), YN(mcArchived), YN(tsmArchived), YN(metadataEquals), YN(sizeEquals),\r
+                               YN(includeContains));\r
+\r
+               if (canDelete)\r
+                       removeFiles(mediaPath, killDateFiles);\r
+\r
                return true;\r
        }\r
 \r