• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ljacqu / FileDuplicateFinder / 14006930974

22 Mar 2025 08:35AM UTC coverage: 23.055%. Remained the same
14006930974

push

github

ljacqu
Add Nullable annotation next to return value in methods

111 of 610 branches covered (18.2%)

Branch coverage included in aggregate %.

378 of 1511 relevant lines covered (25.02%)

1.28 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/main/java/ch/jalu/fileduplicatefinder/FileUtilsRunner.java
1
package ch.jalu.fileduplicatefinder;
2

3
import ch.jalu.fileduplicatefinder.config.FileUtilConfiguration;
4
import ch.jalu.fileduplicatefinder.config.FileUtilSettings;
5
import ch.jalu.fileduplicatefinder.duplicatefinder.FileDuplicateRunner;
6
import ch.jalu.fileduplicatefinder.duplicatefinder.FolderPairDuplicatesCounter;
7
import ch.jalu.fileduplicatefinder.duplicatefinder.output.ConsoleResultOutputter;
8
import ch.jalu.fileduplicatefinder.filecount.FileCountRunner;
9
import ch.jalu.fileduplicatefinder.folderdiff.FolderDiffRunner;
10
import ch.jalu.fileduplicatefinder.hashing.FileHasherFactory;
11
import ch.jalu.fileduplicatefinder.output.RootWriterReader;
12
import ch.jalu.fileduplicatefinder.output.TaskWriterReader;
13
import ch.jalu.fileduplicatefinder.output.WriterReader;
14
import ch.jalu.fileduplicatefinder.rename.FileRenameRunner;
15
import ch.jalu.fileduplicatefinder.tree.FileTreeRunner;
16
import org.jetbrains.annotations.Nullable;
17

18
import java.nio.file.Files;
19
import java.nio.file.Path;
20
import java.nio.file.Paths;
21
import java.util.Scanner;
22

23
/**
24
 * Entry class with main method. Delegates to the appropriate task runner.
25
 */
26
public class FileUtilsRunner {
27

28
    private FileUtilsRunner() {
29
    }
30

31
    public static void main(String... args) {
32
        try (Scanner scanner = new Scanner(System.in)) {
×
33
            FileUtilConfiguration configuration = createConfiguration(scanner, args);
×
34
            if (configuration == null) {
×
35
                return;
×
36
            }
37

38
            RootWriterReader logger = new RootWriterReader(scanner);
×
39
            String task = configuration.getValueOrPrompt(FileUtilSettings.TASK);
×
40
            do {
41
                switch (task) {
×
42
                    case FileRenameRunner.ID_REGEX:
43
                        new FileRenameRunner(logger.createWriterReaderForTask("rename"), configuration)
×
44
                            .runRegexRename();
×
45
                        break;
×
46
                    case FileRenameRunner.ID_DATE:
47
                        new FileRenameRunner(logger.createWriterReaderForTask("rename"), configuration)
×
48
                            .runDateRename();
×
49
                        break;
×
50
                    case FileDuplicateRunner.ID:
51
                        createFileDuplicateRunner(configuration, logger).run();
×
52
                        break;
×
53
                    case FileCountRunner.ID:
54
                        new FileCountRunner(logger.createWriterReaderForTask("count"), configuration).run();
×
55
                        break;
×
56
                    case FolderDiffRunner.ID:
57
                        WriterReader diffLogger = logger.createWriterReaderForTask("diff");
×
58
                        new FolderDiffRunner(configuration, new FileHasherFactory(), diffLogger).run();
×
59
                        break;
×
60
                    case FileTreeRunner.ID:
61
                        new FileTreeRunner(scanner, configuration).run();
×
62
                        break;
×
63
                    case "exit":
64
                    case "x":
65
                    case "q":
66
                    case "quit":
67
                        return;
×
68
                    default:
69
                        String taskList = FileRenameRunner.ID_REGEX
×
70
                            + ", " + FileRenameRunner.ID_DATE
71
                            + ", " + FileDuplicateRunner.ID
72
                            + ", " + FileCountRunner.ID
73
                            + ", " + FolderDiffRunner.ID
74
                            + ", " + FileTreeRunner.ID;
75
                        System.err.println("Unknown task '" + task + "'. Possible tasks: " + taskList);
×
76
                }
77

78
                System.out.println("Task: (q to quit)");
×
79
                task = configuration.getValueOrPrompt(FileUtilSettings.TASK, true);
×
80
            } while (true);
×
81
        } catch (ExitRunnerException ignore) {
×
82
            // Nothing to do
83
        }
84
    }
×
85

86
    private static FileDuplicateRunner createFileDuplicateRunner(FileUtilConfiguration configuration,
87
                                                                 RootWriterReader logger) {
88
        TaskWriterReader contextLogger = logger.createWriterReaderForTask("duplicates");
×
89
        return new FileDuplicateRunner(configuration, new FileHasherFactory(), new FolderPairDuplicatesCounter(),
×
90
            new ConsoleResultOutputter(configuration, contextLogger), contextLogger);
91
    }
92

93
    private static @Nullable FileUtilConfiguration createConfiguration(Scanner scanner, String... args) {
94
        Path userConfig = null;
×
95
        if (args != null && args.length > 0) {
×
96
            userConfig = Paths.get(args[0]);
×
97
            if (!Files.exists(userConfig)) {
×
98
                System.err.println("Supplied config file '" + userConfig.getFileName().toString() + "' does not exist");
×
99
                return null;
×
100
            }
101
        }
102
        return new FileUtilConfiguration(scanner, userConfig);
×
103
    }
104
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc