Coverage Summary for Class: MigratorConfiguration (co.rsk.cli.config)
Class |
Class, %
|
Method, %
|
Line, %
|
MigratorConfiguration |
0%
(0/1)
|
0%
(0/4)
|
0%
(0/25)
|
1 package co.rsk.cli.config;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.nio.file.Files;
6 import java.nio.file.Path;
7 import java.nio.file.Paths;
8 import java.util.Properties;
9
10 class MigratorConfiguration {
11
12 private static final String MIGRATION_FILE_FORMAT = "%s.new";
13 private final Path sourceConfiguration;
14 private final Properties migrationConfiguration;
15 private final Path destinationConfiguration;
16
17 public MigratorConfiguration(String sourceConfiguration, String migrationConfiguration, String destinationConfiguration, boolean replaceSource) {
18 this.sourceConfiguration = Paths.get(sourceConfiguration);
19 if (!Files.isRegularFile(this.sourceConfiguration)) {
20 throw new IllegalArgumentException(String.format("%s is not a valid input file", sourceConfiguration));
21 }
22 Path migrationConfigurationPath = Paths.get(migrationConfiguration);
23 if (!Files.isRegularFile(migrationConfigurationPath)) {
24 throw new IllegalArgumentException(String.format("%s is not a valid migration file", migrationConfigurationPath));
25 }
26 this.migrationConfiguration = new Properties();
27 try (InputStream stream = Files.newInputStream(migrationConfigurationPath)) {
28 this.migrationConfiguration.load(stream);
29 } catch (IOException e) {
30 throw new IllegalArgumentException(String.format("Unable to read migration config at %s", migrationConfigurationPath));
31 }
32
33 if (replaceSource) {
34 this.destinationConfiguration = this.sourceConfiguration;
35 } else if (destinationConfiguration != null) {
36 Path destinationConfigurationPath = Paths.get(destinationConfiguration);
37 if (!Files.isWritable(destinationConfigurationPath.getParent()) || Files.isDirectory(destinationConfigurationPath)) {
38 throw new IllegalArgumentException(String.format("%s is not a valid output file", destinationConfigurationPath));
39 }
40 this.destinationConfiguration = destinationConfigurationPath;
41 } else {
42 this.destinationConfiguration = this.sourceConfiguration.getParent().resolve(String.format(MIGRATION_FILE_FORMAT, this.sourceConfiguration.getFileName().toString()));
43 }
44 }
45
46 public Path getSourceConfiguration() {
47 return sourceConfiguration;
48 }
49
50 public Properties getMigrationConfiguration() {
51 return migrationConfiguration;
52 }
53
54 public Path getDestinationConfiguration() {
55 return destinationConfiguration;
56 }
57 }