Implemented without CSV logging, tested
authorelgekko <vasary@elgekko.net>
Wed, 6 Sep 2023 14:05:55 +0000 (16:05 +0200)
committerelgekko <vasary@elgekko.net>
Wed, 6 Sep 2023 14:05:55 +0000 (16:05 +0200)
20 files changed:
mc-intergator/mc-db/pom.xml
mc-intergator/mc-db/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
mc-intergator/mc-db/target/mc-db-0.0.1-SNAPSHOT.jar
mc-intergator/mc-safe-delete/pom.xml
mc-intergator/mc-safe-delete/src/main/java/hu/user/mediacube/integration/safedelete/ArchiveFileStatus.java
mc-intergator/mc-safe-delete/src/main/java/hu/user/mediacube/integration/safedelete/FileOperations.java
mc-intergator/mc-safe-delete/src/main/java/hu/user/mediacube/integration/safedelete/SafeDeleteCommand.java
mc-intergator/mc-safe-delete/src/main/java/hu/user/mediacube/integration/safedelete/SafeDeleteMainEntry.java
mc-intergator/mc-safe-delete/src/main/java/hu/user/mediacube/integration/safedelete/SafeDeleteProperties.java
mc-intergator/mc-safe-delete/src/main/java/hu/user/mediacube/integration/safedelete/verifier/MediaCubeDatabaseService.java
mc-intergator/mc-safe-delete/src/main/java/hu/user/mediacube/integration/safedelete/verifier/TSMService.java
mc-intergator/mc-safe-delete/src/main/resources/application.yaml
mc-intergator/mc-safe-delete/target/classes/application.yaml
mc-intergator/mc-safe-delete/target/dumper-mc-0.0.1-SNAPSHOT.jar [deleted file]
mc-intergator/mc-safe-delete/target/dumper-mc-0.0.1-SNAPSHOT.jar.original [deleted file]
mc-intergator/mc-safe-delete/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
mc-intergator/pom.xml
mc-intergator/spring-shell.log [deleted file]
mc-intergator/tsm-clientapi/pom.xml
mc-intergator/tsm-clientapi/src/main/java/user/tsm/client/Main.java [deleted file]

index 5dd22938937aaa59adb335aa0181bbc359dbb484..6db71928716c5ed2a8acd9c36f1271a74b468ef6 100644 (file)
         </plugins>
     </build>
     <dependencies>
-        <!--        <dependency>-->
-        <!--            <groupId>org.springframework.data</groupId>-->
-        <!--            <artifactId>spring-data-mongodb-parent</artifactId>-->
-        <!--            <version>${spring.version}</version>-->
-        <!--            <type>pom</type>-->
-        <!--        </dependency>-->
-        <!--        <dependency>-->
-        <!--            <groupId>org.springframework.data</groupId>-->
-        <!--            <artifactId>spring-data-mongodb</artifactId>-->
-        <!--        </dependency>-->
-        <dependency>
-            <groupId>org.mybatis.spring.boot</groupId>
-            <artifactId>mybatis-spring-boot-starter</artifactId>
-            <version>2.1.1</version>
-        </dependency>
         <dependency>
             <groupId>com.ibm.db2</groupId>
             <artifactId>jcc</artifactId>
             <version>11.5.8.0</version>
         </dependency>
-
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>2.1.1</version>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
@@ -81,7 +70,5 @@
                 </exclusion>
             </exclusions>
         </dependency>
-
     </dependencies>
-
 </project>
\ No newline at end of file
index aae6faefa3c94ef2cbb8f5e7eca98b7bc3a3b671..0fa053fd6c37cb2e449c6ab171562b4980379311 100644 (file)
@@ -28,6 +28,7 @@ hu\user\mediacube\rdb\model\ItemtypeExample$GeneratedCriteria.class
 hu\user\mediacube\rdb\model\StoreExample$Criterion.class
 hu\user\mediacube\rdb\model\StoreExample$Criteria.class
 hu\user\mediacube\rdb\model\StoreuriExample$Criteria.class
+hu\user\mediacube\rdb\MediaCubeMapper.class
 hu\user\mediacube\rdb\model\FiletypeExample$GeneratedCriteria.class
 hu\user\mediacube\rdb\model\Mediafile.class
 hu\user\mediacube\rdb\model\MediaExample$Criterion.class
index fe0a84e5ffa77a90b9221cc34240c787f63a846b..09991a5f137116956ffbc92f728e9d63aef9dc18 100644 (file)
Binary files a/mc-intergator/mc-db/target/mc-db-0.0.1-SNAPSHOT.jar and b/mc-intergator/mc-db/target/mc-db-0.0.1-SNAPSHOT.jar differ
index 9dfad920cc6a555dab58ab8123984299255f7aaa..94a98192d4fa35c767c1ada48b4d20e559257bcb 100644 (file)
         <version>0.0.1-SNAPSHOT</version>
     </parent>
     <dependencies>
+        <dependency>
+            <groupId>hu.user.tsm</groupId>
+            <artifactId>tsm-clientapi</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
         <dependency>
             <groupId>hu.user.mediacube</groupId>
             <artifactId>mc-db</artifactId>
             <version>0.0.1-SNAPSHOT</version>
         </dependency>
-        <dependency>
-            <groupId>hu.user.tsm</groupId>
-            <artifactId>tsm-clientapi</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
         <dependency>
             <groupId>commons-codec</groupId>
             <artifactId>commons-codec</artifactId>
index 5d4b1394811e71af9eeaa33dad1624130a0ccdcd..2666d373e1ba6955f2abaff2a7a77b3dce8a8c47 100644 (file)
@@ -8,6 +8,7 @@ import lombok.Setter;
 @Setter
 @Builder
 public class ArchiveFileStatus {
+    
     private String name;
 
     private boolean metadataExists;
index 6dd1b5393b34ed5cd5ff785e554ea5bc5630c9c5..4e089d3774648d6f754f7a98eba2556f11b7e1a2 100644 (file)
@@ -12,6 +12,7 @@ public class FileOperations {
     static public void silentDelete(Path path) {
         try {
             Files.delete(path);
+            log.info("File deleted: {}", path);
         } catch (Exception e) {
             log.catching(e);
         }
@@ -23,6 +24,7 @@ public class FileOperations {
             String fileName = String.format("%s%s", prefix, source.getFileName().toString());
             Path target = Paths.get(source.getParent().toAbsolutePath().toString(), fileName);
             Files.move(source, target);
+            log.info("File renamed to: {}", target);
         } catch (Exception e) {
             log.catching(e);
         }
index fee217ffdb7681e65e1701846e19893859314181..baa96ad2b570ff9f290b4ceecf1a1e4da74dba01 100644 (file)
@@ -11,6 +11,9 @@ import java.nio.file.DirectoryStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.time.Duration;
+import java.time.Instant;
+import java.time.format.DateTimeFormatter;
 
 @Component
 @Log4j2
@@ -18,13 +21,20 @@ public class SafeDeleteCommand {
     private static final String ERROR_FILENAME_PREFIX = "ERROR-";
 
     @Autowired
-    MediaCubeDatabaseService mediaCubeDatabaseService;
+    private SafeDeleteProperties safeDeleteProperties;
 
     @Autowired
-    TSMService tsmService;
+    private MediaCubeDatabaseService mediaCubeDatabaseService;
+
+    @Autowired
+    private TSMService tsmService;
+
+    private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
 
     public void processDirectory(String directory, boolean forceDeleteArchived) throws IOException {
-        log.info("Check directory '{} ' and delete already archived is {}", directory, forceDeleteArchived);
+        final Instant start = Instant.now();
+        log.info("Check directory: {}", directory);
+        log.info("Delete already archived: {}", forceDeleteArchived);
         Path inputPath = Paths.get(directory);
         try (DirectoryStream<Path> stream = Files.newDirectoryStream(inputPath)) {
             for (Path filePath : stream) {
@@ -32,6 +42,12 @@ public class SafeDeleteCommand {
                     continue;
                 }
                 processInputFile(filePath, forceDeleteArchived);
+                if (safeDeleteProperties.getMaxExecutionHours() > -1
+                        && safeDeleteProperties.getMaxExecutionHours() <= Duration.between(start, Instant.now()).toHours()
+                ) {
+                    log.info("Reached maximum execution duration");
+                    break;
+                }
             }
         }
     }
@@ -41,10 +57,10 @@ public class SafeDeleteCommand {
         String fileName = source.getFileName().toString();
 
         try {
-            log.debug("Check MediaCube metadata for {}", source);
+            log.info("Check MediaCube metadata for {}", source);
             mediaCubeDatabaseService.verify(fileName, status);
 
-            log.debug("Check TSM file for {}", source);
+            log.info("Check TSM file for {}", source);
             tsmService.verify(source, status);
 
             if (forceDeleteArchived && status.isFileSizeEquals() && status.isHashEquals()) {
index 9d1b5520abb206ea79e762bad5d3f2c38a224c04..fce8b34036e30d58ca3025d5140327552fe77a20 100644 (file)
@@ -1,22 +1,21 @@
 package hu.user.mediacube.integration.safedelete;
 
 import lombok.extern.log4j.Log4j2;
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.DefaultParser;
-import org.apache.commons.cli.Options;
+import org.apache.commons.cli.*;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
 
 @Log4j2
-@SpringBootApplication()
+@SpringBootApplication
+@ComponentScan({"hu.user.mediacube", "user.tsm.client"})
 @MapperScan({"hu.user.mediacube.rdb", "hu.user.mediacube.integration.safedelete.db"})
 public class SafeDeleteMainEntry implements CommandLineRunner {
     @Autowired
-    SafeDeleteCommand safeDeleteCommand;
+    private SafeDeleteCommand safeDeleteCommand;
 
     public static void main(String[] args) {
         SpringApplication.run(SafeDeleteMainEntry.class, args);
@@ -26,18 +25,22 @@ public class SafeDeleteMainEntry implements CommandLineRunner {
     public void run(String... args) throws Exception {
         Options options = new Options();
         options.addRequiredOption("d", "directory", true, "source directory");
-        options.addOption("f", "force-delete", false, "force delete archived");
+        options.addOption("f", "force-delete", false, "force delete archived file");
+        options.addOption("h", "help", false, "show help");
 
         CommandLineParser parser = new DefaultParser();
-        CommandLine cmd = null;
+        CommandLine cmd;
         try {
-
             cmd = parser.parse(options, args);
             safeDeleteCommand.processDirectory(cmd.getOptionValue("d"), cmd.hasOption("f"));
         } catch (Exception e) {
             log.error(e.getMessage());
-            log.info("Usage: mc-safe-delete -d 'directory path' -f true/false");
+            showHelp(options);
         }
-        //if (cmd.hasOption("d")
+    }
+
+    private static void showHelp(Options options) {
+        HelpFormatter formatter = new HelpFormatter();
+        formatter.printHelp("mc-safe-delete", options, true);
     }
 }
index dec2500032c01a0405ae18b763b389c34c2fc7c7..1d4dfa70ac2a03e28daee5f026c3a385d5a86341 100644 (file)
@@ -22,6 +22,8 @@ public class SafeDeleteProperties {
 
     private String password;
 
-    private int port;
+    private int bufferSize;
+
+    private int maxExecutionHours;
 
 }
index 073a5b400ea5563bfbfef1523bc75c7335899901..1741e18f5e8f98be517d020fcc552cfb47fd9544 100644 (file)
@@ -20,6 +20,7 @@ public class MediaCubeDatabaseService {
         if (dbRecords.size() != 1) {
             throw new Exception(String.format("Database record count mismatch. Expected 1 found %d", dbRecords.size()));
         }
+        log.info("Metadata check passed");
         status.setMetadataExists(true);
     }
 
index 17eaccca01052fe53521f6ef3c44a3bf60676f2f..eed9471cd9126b217b72d44d5634d75dac7ca756 100644 (file)
@@ -17,6 +17,7 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Objects;
+import java.util.UUID;
 
 @Service
 @Log4j2
@@ -26,24 +27,25 @@ public class TSMService {
 
     private static final String TMP_PREFIX = "TSM-RESTORED-";
 
-    private Path restore(String fileName) throws Exception {
+    private Path restore(Path source) throws Exception {
         Path result = null;
         TSMClient server = null;
         try {
             server = new TSMClient(safeDeleteProperties.getNodeName());
             server.connect(safeDeleteProperties.getUser(), safeDeleteProperties.getPassword());
-            server.setBufferSize(safeDeleteProperties.getPort());
+            server.setBufferSize(safeDeleteProperties.getBufferSize());
 
             TSMBackupFileObject backupFileObject = server.getActiveBackupFileObject(safeDeleteProperties.getFsName(),
-                    safeDeleteProperties.getHlName(), safeDeleteProperties.getDelimiter() + fileName);
+                    safeDeleteProperties.getHlName(), safeDeleteProperties.getDelimiter() + source.getFileName().toString());
             if (backupFileObject != null) {
-                Path tempDirectory = Files.createTempDirectory(String.format("%s-%s", TMP_PREFIX, fileName));
-                backupFileObject.setLocalFilePath(tempDirectory.toAbsolutePath().toString());
+                result = Paths.get(source.getParent().toAbsolutePath().toString(),
+                        source.getFileName().toString() + UUID.randomUUID());
+                backupFileObject.setLocalFilePath(result.toAbsolutePath().toString());
                 server.recieve(backupFileObject);
-                result = Paths.get(tempDirectory.toAbsolutePath().toString(), fileName);
                 if (!result.toFile().exists()) {
                     throw new Exception(String.format("Restored file not exists: %s ", result));
                 }
+                log.info("TSM file successfully restored to: {}", result);
             }
 
         } catch (Exception e) {
@@ -59,12 +61,13 @@ public class TSMService {
     public void verify(Path source, ArchiveFileStatus status) throws Exception {
         Path restored = null;
         try {
-            restored = restore(source.getFileName().toString());
+            restored = restore(source);
             long restoredLength = restored.toFile().length();
             long originalLength = source.toFile().length();
             if (originalLength != restoredLength) {
                 throw new Exception(String.format("File size mismatch. Expected %d, found %d", originalLength, restoredLength));
             }
+            log.info("File size check passed: {}", originalLength);
             status.setFileSizeEquals(true);
 
             String originalMD5 = createMD5Hash(source);
@@ -72,13 +75,13 @@ public class TSMService {
             if (!StringUtils.equals(originalMD5, restoredMD5)) {
                 throw new Exception(String.format("File MD5 hash mismatch. Expected %d, found %d", originalMD5, restoredMD5));
             }
+            log.info("MD5 hash check passed: {}", originalMD5);
             status.setHashEquals(true);
         } catch (Exception e) {
             throw e;
         } finally {
             if (Objects.nonNull(restored)) {
                 FileOperations.silentDelete(restored);
-                FileOperations.silentDelete(restored.getParent());
             }
         }
     }
index 61c3f0744377e295ff7f03e03109b1a81f30c829..86dbc4a3c8ed70edb92ab0d7631ead29325bde53 100644 (file)
@@ -5,19 +5,19 @@ spring:
     ansi:
       enabled: always
   datasource:
-    url: jdbc:db2://10.228.212.42:50000/mc:retrieveMessagesFromServerOnGetMessage=true;
+    url: jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;
     username: db2admin
     password: password
     driver-class-name: com.ibm.db2.jcc.DB2Driver
     type: com.zaxxer.hikari.HikariDataSource
     hikari:
       pool-name: pool-mediacube
-      maximum-pool-size: 50
-      minimum-idle: 10
+      maximum-pool-size: 5
+      minimum-idle: 1
 tsm:
-  user: support
-  password: usrkft1q2
-  port: 65536
+  user: mediacube
+  password: password
+  buffer-size: 65536
   delimiter: /
   node-name: mc-safe-delete
   fs-name: /JOBENGINE
index 9363773ef680105c5c32082b3f72697bd0869e86..86dbc4a3c8ed70edb92ab0d7631ead29325bde53 100644 (file)
@@ -5,15 +5,20 @@ spring:
     ansi:
       enabled: always
   datasource:
-    url: jdbc:db2://10.228.212.42:50000/mc:retrieveMessagesFromServerOnGetMessage=true;
-    username: blobtest
-    password: blobtest
+    url: jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;
+    username: db2admin
+    password: password
     driver-class-name: com.ibm.db2.jcc.DB2Driver
     type: com.zaxxer.hikari.HikariDataSource
     hikari:
       pool-name: pool-mediacube
-      maximum-pool-size: 50
-      minimum-idle: 10
+      maximum-pool-size: 5
+      minimum-idle: 1
 tsm:
-  executable: c:\program files\tivoli\client\ba\bin\dsmadmc.exe
-  args: -id=support -password=userkft -TABdelimited "select LL_NAME from backups where NODE_NAME='PASANODE'"
+  user: mediacube
+  password: password
+  buffer-size: 65536
+  delimiter: /
+  node-name: mc-safe-delete
+  fs-name: /JOBENGINE
+  hl-name: /JOBENGINE
diff --git a/mc-intergator/mc-safe-delete/target/dumper-mc-0.0.1-SNAPSHOT.jar b/mc-intergator/mc-safe-delete/target/dumper-mc-0.0.1-SNAPSHOT.jar
deleted file mode 100644 (file)
index 8810c3e..0000000
Binary files a/mc-intergator/mc-safe-delete/target/dumper-mc-0.0.1-SNAPSHOT.jar and /dev/null differ
diff --git a/mc-intergator/mc-safe-delete/target/dumper-mc-0.0.1-SNAPSHOT.jar.original b/mc-intergator/mc-safe-delete/target/dumper-mc-0.0.1-SNAPSHOT.jar.original
deleted file mode 100644 (file)
index 996e0b3..0000000
Binary files a/mc-intergator/mc-safe-delete/target/dumper-mc-0.0.1-SNAPSHOT.jar.original and /dev/null differ
index b764c0f304decce15aef2eaca61757b269cdb705..d7a812e5046511094388f80bae7d3fa8aa7db628 100644 (file)
@@ -1,7 +1,9 @@
 C:\work\user\mediacube\mc-intergator\mc-safe-delete\src\main\java\hu\user\mediacube\integration\safedelete\SafeDeleteMainEntry.java
+C:\work\user\mediacube\mc-intergator\mc-safe-delete\src\main\java\hu\user\mediacube\integration\safedelete\SafeDeleteProperties.java
 C:\work\user\mediacube\mc-intergator\mc-safe-delete\src\main\java\hu\user\mediacube\integration\safedelete\ArchiveFileStatus.java
 C:\work\user\mediacube\mc-intergator\mc-safe-delete\src\main\java\hu\user\mediacube\integration\safedelete\db\MediaCubeRecord.java
 C:\work\user\mediacube\mc-intergator\mc-safe-delete\src\main\java\hu\user\mediacube\integration\safedelete\db\MediaCubeRecordMapper.java
 C:\work\user\mediacube\mc-intergator\mc-safe-delete\src\main\java\hu\user\mediacube\integration\safedelete\verifier\MediaCubeDatabaseService.java
 C:\work\user\mediacube\mc-intergator\mc-safe-delete\src\main\java\hu\user\mediacube\integration\safedelete\verifier\TSMService.java
+C:\work\user\mediacube\mc-intergator\mc-safe-delete\src\main\java\hu\user\mediacube\integration\safedelete\FileOperations.java
 C:\work\user\mediacube\mc-intergator\mc-safe-delete\src\main\java\hu\user\mediacube\integration\safedelete\SafeDeleteCommand.java
index 4a52436ba505e74a3b8fe4911954f918cc93baf9..ee7d33df69a5b2f8330945e43ec9adc11b7a0371 100644 (file)
@@ -18,8 +18,8 @@
         <relativePath/>
     </parent>
     <modules>
-        <module>mc-db</module>
         <module>tsm-clientapi</module>
+        <module>mc-db</module>
         <module>integration-amc</module>
         <module>dumper-mc</module>
         <module>mc-safe-delete</module>
diff --git a/mc-intergator/spring-shell.log b/mc-intergator/spring-shell.log
deleted file mode 100644 (file)
index e69de29..0000000
index 00e6de3c4044f5b0e27f97e65b3ed4bb1f392474..15102f515d3c92bacd1350b68bebea55726a2369 100644 (file)
@@ -6,41 +6,31 @@
 
     <groupId>hu.user.tsm</groupId>
     <artifactId>tsm-clientapi</artifactId>
-    <version>1.0-SNAPSHOT</version>
+    <version>1.0.0-SNAPSHOT</version>
     <parent>
         <groupId>hu.user.mediacube</groupId>
         <artifactId>mc-integrator</artifactId>
         <version>0.0.1-SNAPSHOT</version>
     </parent>
-    <dependencies>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-autoconfigure</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-actuator</artifactId>
-        </dependency>
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifestEntries>
-                            <mode>development</mode>
-                            <url>${project.url}</url>
-                            <key>value</key>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
+    <!--    <build>-->
+    <!--        <plugins>-->
+    <!--            <plugin>-->
+    <!--                <groupId>org.springframework.boot</groupId>-->
+    <!--                <artifactId>spring-boot-maven-plugin</artifactId>-->
+    <!--            </plugin>-->
+    <!--            <plugin>-->
+    <!--                <groupId>org.apache.maven.plugins</groupId>-->
+    <!--                <artifactId>maven-jar-plugin</artifactId>-->
+    <!--                <configuration>-->
+    <!--                    <archive>-->
+    <!--                        <manifestEntries>-->
+    <!--                            <mode>development</mode>-->
+    <!--                            <url>${project.url}</url>-->
+    <!--                            <key>value</key>-->
+    <!--                        </manifestEntries>-->
+    <!--                    </archive>-->
+    <!--                </configuration>-->
+    <!--            </plugin>-->
+    <!--        </plugins>-->
+    <!--    </build>-->
 </project>
\ No newline at end of file
diff --git a/mc-intergator/tsm-clientapi/src/main/java/user/tsm/client/Main.java b/mc-intergator/tsm-clientapi/src/main/java/user/tsm/client/Main.java
deleted file mode 100644 (file)
index 4172bdc..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-package user.tsm.client;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.CommandLineRunner;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.ApplicationContext;
-
-@SpringBootApplication()
-public class Main implements CommandLineRunner {
-    private static final Logger logger = LoggerFactory.getLogger("TSMClient");
-    @Value("${tsm.hlname}")
-    private String hlname;
-    @Value("${tsm.separator}")
-    private String separator;
-
-    public static void main(String[] args) {
-        ApplicationContext ctx = SpringApplication.run(Main.class, args);
-    }
-
-    @Override
-    public void run(String... args) throws Exception {
-        TSMClient server = null;
-
-        for (int i = 0; i < 100; i++) {
-            try {
-                logger.info("Try connect");
-                server = new TSMClient("PASANODE");
-                server.connect(null, null);
-                logger.info("Connected");
-                TSMBackupFileObject[] result = null;
-                result = server.queryActiveBackupObjects("NEXIO", hlname, "\\" + args[0]);
-                if (result != null) {
-                    logger.info("Active objects count {}", result.length);
-                    for (TSMBackupFileObject o : result) {
-                        logger.info("Size {}", o.getSizeEstimate());
-                    }
-                }
-//            result = server.queryInActiveBackupObjects("NEXIO", hlname, "\\" + args[0]);
-//            if (result != null) {
-//                logger.info("Inactive objects count {}", result.length);
-//                for (TSMBackupFileObject o : result) {
-//                    logger.info("Size {}", o.getSizeEstimate());
-//                }
-//            }
-            } catch (Exception e) {
-                logger.error("Message: {}", e.getMessage());
-            } finally {
-                if ((server != null) && (server.isConnected()))
-                    server.disconnect();
-            }
-        }
-
-    }
-}