151e32c11fae66790bdf9f29602409b9c54b3084
[mediacube.git] /
1 package hu.user.mediacube.integration.safedelete;
2
3 import hu.user.mediacube.integration.safedelete.verifier.MediaCubeDatabaseService;
4 import hu.user.mediacube.integration.safedelete.verifier.TSMService;
5 import lombok.extern.log4j.Log4j2;
6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Component;
8
9 import java.io.IOException;
10 import java.nio.file.DirectoryStream;
11 import java.nio.file.Files;
12 import java.nio.file.Path;
13 import java.nio.file.Paths;
14
15 @Component
16 @Log4j2
17 public class SafeDeleteCommand {
18     @Autowired
19     MediaCubeDatabaseService mediaCubeDatabaseService;
20
21     @Autowired
22     TSMService tsmService;
23
24     public void processDirectory(String directory, boolean forceDeleteArchived) throws IOException {
25         log.info("Check directory '{} ' and delete already archived is {}", directory, forceDeleteArchived);
26         Path inputPath = Paths.get(directory);
27         try (DirectoryStream<Path> stream = Files.newDirectoryStream(inputPath)) {
28             for (Path filePath : stream) {
29                 if (!Files.isDirectory(filePath)) {
30                     processInputFile(filePath, forceDeleteArchived);
31                 }
32             }
33         }
34     }
35
36     private void processInputFile(Path source, boolean forceDeleteArchived) {
37         ArchiveFileStatus status = ArchiveFileStatus.builder().name(source.getFileName().toString()).build();
38         String fileName = source.getFileName().toString();
39
40         try {
41             log.debug("Check MediaCube metadata for {}", source);
42             mediaCubeDatabaseService.verify(fileName, status);
43
44             log.debug("Check TSM file for {}", source);
45             tsmService.verify(source, status);
46
47             if (forceDeleteArchived && status.isFileSizeEquals() && status.isHashEquals()) {
48                 try {
49                     Files.delete(source);
50                 } catch (Exception e) {
51                     log.catching(e);
52                 }
53             }
54
55         } catch (Exception e) {
56             log.catching(e);
57         }
58     }
59 }
60