git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorvasary.daniel <TFS\vasary.daniel>
Thu, 5 May 2022 07:54:51 +0000 (07:54 +0000)
committervasary.daniel <TFS\vasary.daniel>
Thu, 5 May 2022 07:54:51 +0000 (07:54 +0000)
server/-product/production/HIRTV/jobs/executors.xml
server/-product/production/HIRTV/jobs/schedules.json
server/-product/production/HIRTV/jobs/steps/ProjectCleanupMountedLocationStep.java [new file with mode: 0644]
server/-product/production/HIRTV/jobs/steps/shared/MetadataType.java [new file with mode: 0644]
server/-product/production/HIRTV/jobs/steps/shared/MetadataTypeDetector.java [new file with mode: 0644]
server/-product/production/HIRTV/jobs/templates/delete-promo-materials.xml
server/-product/production/HIRTV/settings/application.yaml
server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/DynamicStepsLoaderTests.java
server/user.jobengine.executors/src/user/jobengine/server/steps/ProjectCleanupMountedLocationStep.java

index e7efeaa6ba44e08953a7bffb09e9bdbc163e71bd..b22f568976362f6dbaac1ad088a711a898e35e75 100644 (file)
@@ -16,7 +16,7 @@
        <executor className="user.jobengine.server.steps.CheckMORPHEUSMissingMaterialsStep" maxConcurrent="1" />\r
        <executor className="user.jobengine.server.steps.CheckTRAFFICMissingMaterialsStep" maxConcurrent="1" />\r
        <executor className="user.jobengine.server.steps.CleanupMountedLocationStep" maxConcurrent="10" />\r
-       <executor className="user.jobengine.server.steps.ProjectCleanupMountedLocationStep" maxConcurrent="1" />\r
+       <executor className="ProjectCleanupMountedLocationStep.java" maxConcurrent="1" />\r
        <executor className="user.jobengine.server.steps.CopyForArchiveNEXIORecordingsStep" maxConcurrent="1" />\r
        <executor className="user.jobengine.server.steps.CreateArchiveItemStep" maxConcurrent="1" />\r
        <executor className="user.jobengine.server.steps.CreateMissingLowresStep" maxConcurrent="1" />\r
index d6d68d4e6148b780d17d39776a20a9b49b1c0fca..b31018c747d6db3646b02bf4b4eefc4444ea3ac9 100644 (file)
@@ -1,5 +1,15 @@
 {\r
        "joblist": [\r
+       {\r
+      "active": true,\r
+      "executeimmediate": false,\r
+         "name" : "Lejárt ISISLON/PROMO_NLE mappák törlése",\r
+      "template": "delete-promo-materials.xml",\r
+      "cronexpression": "0 0 6 * * ?",\r
+      "parameters": [ \r
+       {"name": "sourcePath", "value": "/mnt/ISILON/PROMO_NLE", "type": "java.lang.String"}\r
+      ]\r
+       },      \r
                {\r
              "template": "dummy-test-job.xml",\r
              "name": "dummy test job",\r
diff --git a/server/-product/production/HIRTV/jobs/steps/ProjectCleanupMountedLocationStep.java b/server/-product/production/HIRTV/jobs/steps/ProjectCleanupMountedLocationStep.java
new file mode 100644 (file)
index 0000000..ce9c3c0
--- /dev/null
@@ -0,0 +1,235 @@
+package user.jobengine.server.steps;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+import java.nio.file.DirectoryStream;\r
+import java.nio.file.FileVisitResult;\r
+import java.nio.file.FileVisitor;\r
+import java.nio.file.Files;\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
+import java.nio.file.SimpleFileVisitor;\r
+import java.nio.file.attribute.BasicFileAttributes;\r
+import java.text.ParseException;\r
+import java.text.SimpleDateFormat;\r
+import java.util.ArrayList;\r
+import java.util.Collections;\r
+import java.util.Date;\r
+import java.util.List;\r
+\r
+import org.apache.commons.io.FileUtils;\r
+import org.apache.commons.lang.StringUtils;\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+import org.apache.logging.log4j.Marker;\r
+\r
+import user.jobengine.server.IJobEngine;\r
+import user.jobengine.server.IJobRuntime;\r
+import user.jobengine.server.steps.shared.MetadataType;\r
+import user.jobengine.server.steps.shared.MetadataTypeDetector;\r
+\r
+public class ProjectCleanupMountedLocationStep extends JobStep implements FileVisitor<Path> {\r
+\r
+       private static final Logger logger = LogManager.getLogger();\r
+       private static final String DATEFORMAT = "yyyyMMdd";\r
+       private static final String DOT = ".";\r
+       private static final String STATUSFOLDER = ".STATUS";\r
+       private static final String KILLDATEEXT = ".killdate";\r
+       private Marker marker;\r
+       final int[] allCount = { 0 };\r
+       final int[] currentCount = { 0 };\r
+       private Path sourcePath;\r
+       private SimpleDateFormat dateFormat;\r
+\r
+       private Date checkExpiration(List<Path> killDateFiles) {\r
+               Date killDate = null;\r
+               for (Path killDateFile : killDateFiles) {\r
+                       Date currentKillDate = getKillDate(killDateFile);\r
+                       if (currentKillDate == null)\r
+                               continue;\r
+                       if ((killDate != null && currentKillDate.after(killDate)) || killDate == null)\r
+                               killDate = currentKillDate;\r
+               }\r
+               return new Date().after(killDate) ? killDate : null;\r
+       }\r
+\r
+       @StepEntry\r
+       public Object[] execute(String sourceFolder, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+               marker = jobRuntime.getSessionMarker();\r
+               sourcePath = Paths.get(sourceFolder);\r
+               DirectoryStream<Path> directoryStream = null;\r
+               if (StringUtils.isBlank(sourcePath.toString())) {\r
+                       logger.error(marker, "A folyamat 'sourcePath' bemeneti paramétere üres.");\r
+                       throw new NullPointerException(\r
+                                       "System is not configured properly, 'sourceFolder' input parameter missing.");\r
+               }\r
+\r
+               if (!sourcePath.toFile().exists() || !sourcePath.toFile().isDirectory()) {\r
+                       logger.error(marker, "A(z) {} mappa nem létezik.", sourceFolder);\r
+                       throw new NullPointerException(String.format("Directory %s does not exist.", sourceFolder));\r
+               }\r
+               try {\r
+                       setProgress(1);\r
+                       dateFormat = new SimpleDateFormat(DATEFORMAT);\r
+                       Files.walkFileTree(sourcePath, new SimpleFileVisitor<Path>() {\r
+                               @Override\r
+                               public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {\r
+                                       allCount[0]++;\r
+                                       return super.visitFile(file, attrs);\r
+                               }\r
+                       });\r
+                       Files.walkFileTree(sourcePath, this);\r
+               } catch (Exception e) {\r
+                       logger.catching(e);\r
+                       logger.error(marker, "Az '{}' mappa elérése sikertelen. A rendszer hibaüzenete: {}", sourcePath,\r
+                                       e.getMessage());\r
+                       throw 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 Date getKillDate(Path killDateFile) {\r
+               String fileName = killDateFile.getFileName().toString();\r
+               int end = fileName.lastIndexOf(DOT);\r
+               if (end < 1)\r
+                       return null;\r
+               int start = fileName.lastIndexOf(DOT, end - 1);\r
+               if (start < 0)\r
+                       return null;\r
+               String strKillDate = fileName.substring(start + 1, end);\r
+               Date result = null;\r
+               if (StringUtils.isNumeric(strKillDate)) {\r
+                       try {\r
+                               result = dateFormat.parse(strKillDate);\r
+                       } catch (ParseException e) {\r
+                               logger.error(marker,\r
+                                               "A {} fájl 'killdate' állománya hibás formátumú, a {} karaktersorozat nem konvertálható dátummá.",\r
+                                               fileName, strKillDate);\r
+                               return null;\r
+                       }\r
+               } else\r
+                       logger.error(marker, "A {} fájl 'killdate' állománya hibás formátumú, az dátum helyett ez áll: '{}'.",\r
+                                       fileName, strKillDate);\r
+               return result;\r
+       }\r
+\r
+       private List<Path> getKillDateFiles(Path filePath) {\r
+               String killDateFilePattern = String.format("%s.*%s", filePath.getFileName().toString(), KILLDATEEXT);\r
+               List<Path> result = new ArrayList<>();\r
+               Path statusPath = null;\r
+               try {\r
+                       statusPath = Paths.get(filePath.getParent().toString(), STATUSFOLDER);\r
+               } catch (Exception e) {\r
+                       logger.catching(e);\r
+                       return null;\r
+               }\r
+               File statusPathFile = statusPath.toFile();\r
+               if (statusPathFile.exists() && statusPathFile.isDirectory()) {\r
+                       try (DirectoryStream<Path> stream = Files.newDirectoryStream(statusPath, killDateFilePattern)) {\r
+                               stream.forEach(p -> result.add(p));\r
+                       } catch (Exception e) {\r
+                               logger.catching(e);\r
+                       }\r
+               }\r
+               Collections.sort(result);\r
+               return result;\r
+       }\r
+\r
+       private Path getProjectRootPath(Path filePath) {\r
+               Path result = null;\r
+               if (filePath.getNameCount() > sourcePath.getNameCount()) {\r
+                       String dir = filePath.getName(sourcePath.getNameCount()).toString();\r
+                       String[] tokens = dir.split("-");\r
+                       if (tokens.length != 0 && MetadataTypeDetector.GuessMetadataType(tokens[0]) == MetadataType.TrafficPromo)\r
+                               result = Paths.get(sourcePath.toAbsolutePath().toString(), dir);\r
+               }\r
+               return result;\r
+       }\r
+\r
+       @Override\r
+       public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {\r
+               return FileVisitResult.CONTINUE;\r
+       }\r
+\r
+       @Override\r
+       public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {\r
+               if (dir.equals(sourcePath))\r
+                       return FileVisitResult.CONTINUE;\r
+\r
+               Path parent = getProjectRootPath(dir);\r
+               if (parent == null) {\r
+                       System.out.println("Skipping " + dir);\r
+                       return FileVisitResult.SKIP_SUBTREE;\r
+               }\r
+\r
+               return FileVisitResult.CONTINUE;\r
+       }\r
+\r
+       private boolean processPathItem(Path filePath) {\r
+               currentCount[0]++;\r
+               int progress = currentCount[0] * 100 / allCount[0];\r
+               setProgress(progress);\r
+\r
+               if (filePath.toFile().isDirectory() || !filePath.toString().toUpperCase().endsWith(".EZP"))\r
+                       return false;\r
+\r
+               // level check\r
+               if (filePath.getNameCount() != sourcePath.getNameCount() + 3) {\r
+                       // logger.warn(marker, "A {} fájl elérési útja a várttól eltérő.", filePath);\r
+                       return false;\r
+               }\r
+\r
+               List<Path> killDateFiles = getKillDateFiles(filePath);\r
+               if (killDateFiles == null || killDateFiles.size() == 0) {\r
+                       logger.warn(marker, "A {} fájlhoz nem található 'killdate' állomány.", filePath);\r
+                       return false;\r
+               }\r
+\r
+               if (killDateFiles.size() != 1)\r
+                       logger.warn(marker,\r
+                                       "A {} fájlhoz több 'killdate' állomány található, a legújabb dátum határozza meg a törlés időpontját.",\r
+                                       filePath);\r
+\r
+               Date killDate = checkExpiration(killDateFiles);\r
+               if (killDate == null)\r
+                       return false;\r
+\r
+               Path parent = getProjectRootPath(filePath);\r
+               if (parent != null) {\r
+                       Path pathToDelete = Paths.get(sourcePath.toAbsolutePath().toString(),\r
+                                       filePath.getName(sourcePath.getNameCount()).toString());\r
+                       try {\r
+                               FileUtils.deleteDirectory(pathToDelete.toFile());\r
+                               logger.info(marker, "A {} mappa sikeresen törlődött. Lejárat: {}", pathToDelete,\r
+                                               dateFormat.format(killDate));\r
+                       } catch (Exception e) {\r
+                               logger.error(marker, "A {} mappa törlése nem lehetséges, a rendszer üzenete: {}", pathToDelete,\r
+                                               e.getMessage());\r
+                               logger.error(e);\r
+                       }\r
+               }\r
+               // else\r
+               // logger.warn(marker, "A {} fájlhoz nem határozható meg a törlendő\r
+               // szülőkönyvtár.", filePath);\r
+               return true;\r
+       }\r
+\r
+       @Override\r
+       public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {\r
+               processPathItem(file);\r
+               return FileVisitResult.CONTINUE;\r
+       }\r
+\r
+       @Override\r
+       public FileVisitResult visitFileFailed(Path file, IOException e) throws IOException {\r
+               logger.error(marker, "A {} fájl nem érhető el. A rendszer hibaüzenete: {}", file.toString(), e.getMessage());\r
+               return FileVisitResult.CONTINUE;\r
+       }\r
+}\r
diff --git a/server/-product/production/HIRTV/jobs/steps/shared/MetadataType.java b/server/-product/production/HIRTV/jobs/steps/shared/MetadataType.java
new file mode 100644 (file)
index 0000000..0e27bf3
--- /dev/null
@@ -0,0 +1,5 @@
+package user.jobengine.server.steps.shared;\r
+\r
+public enum MetadataType {\r
+       TrafficMaterial, TrafficPromo, TrafficAD, OctopusStory, OctopusPlaceholder, Generic\r
+}\r
diff --git a/server/-product/production/HIRTV/jobs/steps/shared/MetadataTypeDetector.java b/server/-product/production/HIRTV/jobs/steps/shared/MetadataTypeDetector.java
new file mode 100644 (file)
index 0000000..9e9e6be
--- /dev/null
@@ -0,0 +1,49 @@
+package user.jobengine.server.steps.shared;\r
+\r
+import org.apache.commons.lang.StringUtils;\r
+\r
+public class MetadataTypeDetector {\r
+\r
+       private static final String HYPHEN = "-";\r
+       private static final String DOT = ".";\r
+\r
+       private static final String REGEXP_TRAFFICMATERIALID = "^M{1}[0-9]{6}[A-Z]{1}";\r
+       private static final String REGEXP_TRAFFICADID = "^R{1}[0-9]{6}[A-Z]{1}";\r
+       private static final String REGEXP_TRAFFICPROMOID = "^P{1}[0-9]{6}[A-Z]{1}";\r
+       private static final String REGEXP_OCTOPUSSTORYID = "^[0-9]+";\r
+       private static final String REGEXP_OCTOPUSPLACEHOLDERID = "^[0-9]+_[0-9]+";\r
+       private static final String REGEXP_OCTOPUSPLACEHOLDERVERSIONEDID = "^[0-9]+_[0-9]+-[0-9]{3}";\r
+\r
+       public static MetadataType GuessMetadataType(String id) {\r
+               if (StringUtils.isBlank(id))\r
+                       return MetadataType.Generic;\r
+               if (id.matches(REGEXP_TRAFFICMATERIALID))\r
+                       return MetadataType.TrafficMaterial;\r
+               if (id.matches(REGEXP_TRAFFICPROMOID))\r
+                       return MetadataType.TrafficPromo;\r
+               if (id.matches(REGEXP_TRAFFICADID))\r
+                       return MetadataType.TrafficAD;\r
+               if (id.matches(REGEXP_OCTOPUSSTORYID))\r
+                       return MetadataType.OctopusStory;\r
+               if (id.matches(REGEXP_OCTOPUSPLACEHOLDERID))\r
+                       return MetadataType.OctopusPlaceholder;\r
+               if (id.matches(REGEXP_OCTOPUSPLACEHOLDERVERSIONEDID))\r
+                       return MetadataType.OctopusPlaceholder;\r
+               return MetadataType.Generic;\r
+       }\r
+\r
+       public static String truncateExtension(String name) {\r
+               String result = name;\r
+               if (result != null && result.contains(DOT))\r
+                       result = result.substring(0, result.lastIndexOf(DOT));\r
+               return result;\r
+       }\r
+\r
+       public static String truncateVersion(String name) {\r
+               String result = name;\r
+               if (result != null && result.contains(HYPHEN))\r
+                       result = result.split(HYPHEN)[0];\r
+               return result;\r
+       }\r
+\r
+}\r
index f5df704ceb4273bbd4ec13c8e27222f016e1c7fe..38f5c42adc77cddeea824a54bafd8614d95988ae 100644 (file)
@@ -6,7 +6,7 @@
                </parameters>\r
        </declarations>\r
        <commands>\r
-               <calljobstep id="id1" type="user.jobengine.server.steps.ProjectCleanupMountedLocationStep" weight="1">\r
+               <calljobstep id="id1" type="ProjectCleanupMountedLocationStep.java" weight="1">\r
                        <inputs>\r
                                <input>\r
                                        <parameter name="sourcePath" />\r
index 1acf04bfb0c5426b0a79d8849f2db43677cf9f02..60d934f8ccacd48632f08e91e555930e86e3179f 100644 (file)
@@ -1,6 +1,6 @@
 datasource:\r
    mediacube:\r
-      url: jdbc:db2://10.10.1.27:50000/mc\r
+      url: jdbc:db2://localvm:50000/mc\r
       user: db2admin\r
       password: password\r
       external-indexer: false\r
@@ -8,7 +8,7 @@ datasource:
       login-timeout: 3 #seconds\r
       pool-size: 10\r
    mediacube-nosql:\r
-      url: jdbc:db2://10.10.1.27:50000/mc\r
+      url: jdbc:db2://localvm:50000/mc\r
       user: db2admin\r
       password: password\r
       schema: test\r
index 37528a7e54f442944355711f6544dd72b205586d..6f3c54b334e2a2462d91a11a8e66c236914b797a 100644 (file)
@@ -19,8 +19,7 @@ public class DynamicStepsLoaderTests {
 \r
        @BeforeClass\r
        static public void beforeClass() {\r
-               sut = new DynamicStepsLoader(\r
-                               "C:/work/user/mediacube/server/user.jobengine.executors/src/user/jobengine/server/steps");\r
+               sut = new DynamicStepsLoader("C:/work/user/mediacube/server/user.jobengine.executors/src/user/jobengine/server/steps");\r
        }\r
 \r
        @Test\r
@@ -39,11 +38,26 @@ public class DynamicStepsLoaderTests {
                        String name = f.getName().toString();\r
                        try {\r
                                logger.info("Loading {}", name);\r
-                               sut.loadClassFromSourceCode(classLoader, name);\r
+                               Class<?> clazz = sut.loadClassFromSourceCode(classLoader, name);\r
+                               clazz.newInstance();\r
                        } catch (Exception e) {\r
                                logger.error(e.getMessage());\r
                                throw e;\r
                        }\r
                }\r
        }\r
+\r
+       @Test\r
+       public void test2() throws Exception {\r
+               GroovyClassLoader classLoader = sut.createClassLoader(this.getClass().getClassLoader());\r
+               String name = "ProjectCleanupMountedLocationStep.java";\r
+               try {\r
+                       logger.info("Loading {}", name);\r
+                       Class<?> clazz = sut.loadClassFromSourceCode(classLoader, name);\r
+                       clazz.newInstance();\r
+               } catch (Exception e) {\r
+                       logger.error(e.getMessage());\r
+                       throw e;\r
+               }\r
+       }\r
 }\r
index ce9c3c09d146ef4925e860f4230718363ce70749..06d1cc653a2b3b2dc44d6183b2998a1c35426f28 100644 (file)
@@ -36,8 +36,8 @@ public class ProjectCleanupMountedLocationStep extends JobStep implements FileVi
        private static final String STATUSFOLDER = ".STATUS";\r
        private static final String KILLDATEEXT = ".killdate";\r
        private Marker marker;\r
-       final int[] allCount = { 0 };\r
-       final int[] currentCount = { 0 };\r
+       final int[] allCount = new int[] { 0 };\r
+       final int[] currentCount = new int[] { 0 };\r
        private Path sourcePath;\r
        private SimpleDateFormat dateFormat;\r
 \r
@@ -60,8 +60,7 @@ public class ProjectCleanupMountedLocationStep extends JobStep implements FileVi
                DirectoryStream<Path> directoryStream = null;\r
                if (StringUtils.isBlank(sourcePath.toString())) {\r
                        logger.error(marker, "A folyamat 'sourcePath' bemeneti paramétere üres.");\r
-                       throw new NullPointerException(\r
-                                       "System is not configured properly, 'sourceFolder' input parameter missing.");\r
+                       throw new NullPointerException("System is not configured properly, 'sourceFolder' input parameter missing.");\r
                }\r
 \r
                if (!sourcePath.toFile().exists() || !sourcePath.toFile().isDirectory()) {\r
@@ -81,8 +80,7 @@ public class ProjectCleanupMountedLocationStep extends JobStep implements FileVi
                        Files.walkFileTree(sourcePath, this);\r
                } catch (Exception e) {\r
                        logger.catching(e);\r
-                       logger.error(marker, "Az '{}' mappa elérése sikertelen. A rendszer hibaüzenete: {}", sourcePath,\r
-                                       e.getMessage());\r
+                       logger.error(marker, "Az '{}' mappa elérése sikertelen. A rendszer hibaüzenete: {}", sourcePath, e.getMessage());\r
                        throw e;\r
                } finally {\r
                        if (directoryStream != null) {\r
@@ -109,14 +107,11 @@ public class ProjectCleanupMountedLocationStep extends JobStep implements FileVi
                        try {\r
                                result = dateFormat.parse(strKillDate);\r
                        } catch (ParseException e) {\r
-                               logger.error(marker,\r
-                                               "A {} fájl 'killdate' állománya hibás formátumú, a {} karaktersorozat nem konvertálható dátummá.",\r
-                                               fileName, strKillDate);\r
+                               logger.error(marker, "A {} fájl 'killdate' állománya hibás formátumú, a {} karaktersorozat nem konvertálható dátummá.", fileName, strKillDate);\r
                                return null;\r
                        }\r
                } else\r
-                       logger.error(marker, "A {} fájl 'killdate' állománya hibás formátumú, az dátum helyett ez áll: '{}'.",\r
-                                       fileName, strKillDate);\r
+                       logger.error(marker, "A {} fájl 'killdate' állománya hibás formátumú, az dátum helyett ez áll: '{}'.", fileName, strKillDate);\r
                return result;\r
        }\r
 \r
@@ -193,9 +188,7 @@ public class ProjectCleanupMountedLocationStep extends JobStep implements FileVi
                }\r
 \r
                if (killDateFiles.size() != 1)\r
-                       logger.warn(marker,\r
-                                       "A {} fájlhoz több 'killdate' állomány található, a legújabb dátum határozza meg a törlés időpontját.",\r
-                                       filePath);\r
+                       logger.warn(marker, "A {} fájlhoz több 'killdate' állomány található, a legújabb dátum határozza meg a törlés időpontját.", filePath);\r
 \r
                Date killDate = checkExpiration(killDateFiles);\r
                if (killDate == null)\r
@@ -203,15 +196,12 @@ public class ProjectCleanupMountedLocationStep extends JobStep implements FileVi
 \r
                Path parent = getProjectRootPath(filePath);\r
                if (parent != null) {\r
-                       Path pathToDelete = Paths.get(sourcePath.toAbsolutePath().toString(),\r
-                                       filePath.getName(sourcePath.getNameCount()).toString());\r
+                       Path pathToDelete = Paths.get(sourcePath.toAbsolutePath().toString(), filePath.getName(sourcePath.getNameCount()).toString());\r
                        try {\r
                                FileUtils.deleteDirectory(pathToDelete.toFile());\r
-                               logger.info(marker, "A {} mappa sikeresen törlődött. Lejárat: {}", pathToDelete,\r
-                                               dateFormat.format(killDate));\r
+                               logger.info(marker, "A {} mappa sikeresen törlődött. Lejárat: {}", pathToDelete, dateFormat.format(killDate));\r
                        } catch (Exception e) {\r
-                               logger.error(marker, "A {} mappa törlése nem lehetséges, a rendszer üzenete: {}", pathToDelete,\r
-                                               e.getMessage());\r
+                               logger.error(marker, "A {} mappa törlése nem lehetséges, a rendszer üzenete: {}", pathToDelete, e.getMessage());\r
                                logger.error(e);\r
                        }\r
                }\r