package be.billington.rob; import org.slf4j.Logger; import java.io.File; public class Configuration extends Profile { private final String key; private final String secret; private final String username; private final String password; private final String token; private final Logger logger; private final File outputDir; private Configuration(ConfigurationBuilder builder) { super(builder.api, builder.owner, builder.repository, builder.prefix, builder.branch, builder.configPath, builder.filePath, builder.fromDate, builder.toDate); this.key = builder.key; this.secret = builder.secret; this.username = builder.username; this.password = builder.password; this.token = builder.token; this.logger = builder.logger; this.outputDir = builder.outputDir; } public String getKey() { return key; } public String getSecret() { return secret; } public String getUsername() { return username; } public String getPassword() { return password; } public String getToken() { return token; } public Logger getLogger() { return logger; } public File getOutputDir() { return outputDir; } public boolean hasKeySecret() { return key != null && key.length() > 0 && secret != null && secret.length() > 0; } public boolean hasUsernamePassword() { return username != null && username.length() > 0 && password != null && password.length() > 0; } public boolean hasToken() { return token != null && token.length() > 0; } public static class ConfigurationBuilder implements Builder<Configuration> { private String api; private String owner; private String repository; private String prefix; private String branch; private String configPath; private String filePath; private String fromDate; private String toDate; private String key; private String secret; private String username; private String password; private String token; private Logger logger; private File outputDir; public ConfigurationBuilder(Logger logger, String api, String repository, String owner) { this.logger = logger; this.api = api; this.repository = repository; this.owner = owner; } public ConfigurationBuilder prefix(String prefix) { this.prefix = prefix; return this; } public ConfigurationBuilder branch(String branch) { this.branch = branch; return this; } public ConfigurationBuilder configPath(String configPath) { this.configPath = configPath; return this; } public ConfigurationBuilder filePath(String filePath) { this.filePath = filePath; return this; } public ConfigurationBuilder fromDate(String fromDate) { this.fromDate = fromDate; return this; } public ConfigurationBuilder toDate(String toDate) { this.toDate = toDate; return this; } public ConfigurationBuilder key(String key) { this.key = key; return this; } public ConfigurationBuilder secret(String secret) { this.secret = secret; return this; } public ConfigurationBuilder username(String username) { this.username = username; return this; } public ConfigurationBuilder password(String password) { this.password = password; return this; } public ConfigurationBuilder token(String token) { this.token = token; return this; } public ConfigurationBuilder outputDir(File outputDir) { this.outputDir = outputDir; return this; } @Override public Configuration build() { return new Configuration(this); } } public interface Builder<T> { T build(); } }