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 }