package jdrivesync.cli;
import jdrivesync.constants.Constants;
import java.io.File;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.Optional;
public class Options {
private Optional<File> localRootDir = Optional.empty();
private Optional<String> remoteRootDir = Optional.empty();
private boolean dryRun = false;
private boolean deleteFiles = false;
private boolean useChecksum = false;
private Optional<String> authenticationFile = Optional.empty();
private int networkNumberOfAttempts = 3;
private long networkSleepBetweenAttempts = 10 * 1000;
private FileNamePatterns ignoreFiles = FileNamePatterns.create(Arrays.asList(""));
private boolean htmlReport = false;
private SyncDirection syncDirection = SyncDirection.Up;
private Optional<Long> maxFileSize = Optional.empty();
private FileNamePatterns encryptFiles = FileNamePatterns.create(Arrays.asList(""));
private String encryptPassword = "";
private long lastModificationDateThreshold = 1500;
private long httpChunkSizeInBytes = 10 * Constants.MB;
private boolean verbose = false;
private Optional<Path> logFile = Optional.empty();
private boolean noDelete = false;
public long getNetworkSleepBetweenAttempts() {
return networkSleepBetweenAttempts;
}
public void setNetworkSleepBetweenAttempts(long networkSleepBetweenAttempts) {
this.networkSleepBetweenAttempts = networkSleepBetweenAttempts;
}
public void setLocalRootDir(Optional<File> localRootDir) {
this.localRootDir = localRootDir;
}
public Optional<File> getLocalRootDir() {
return localRootDir;
}
public boolean isDryRun() {
return dryRun;
}
public void setDryRun(boolean dryRun) {
this.dryRun = dryRun;
}
public void setDeleteFiles(boolean deleteFiles) {
this.deleteFiles = deleteFiles;
}
public boolean isDeleteFiles() {
return deleteFiles;
}
public boolean isUseChecksum() {
return useChecksum;
}
public void setUseChecksum(boolean useChecksum) {
this.useChecksum = useChecksum;
}
@Override
public String toString() {
return "Options{" +
"localRootDir=" + localRootDir +
", remoteRootDir=" + remoteRootDir +
", dryRun=" + dryRun +
", deleteFiles=" + deleteFiles +
", useChecksum=" + useChecksum +
", authenticationFile=" + authenticationFile +
", networkNumberOfAttempts=" + networkNumberOfAttempts +
", networkSleepBetweenAttempts=" + networkSleepBetweenAttempts +
", ignoreFiles=" + ignoreFiles +
", htmlReport=" + htmlReport +
", syncDirection=" + syncDirection +
", maxFileSize=" + maxFileSize +
", encryptFiles=" + encryptFiles +
", encryptPassword='" + encryptPassword + '\'' +
", lastModificationDateThreshold=" + lastModificationDateThreshold +
", httpChunkSizeInBytes=" + httpChunkSizeInBytes +
", verbose=" + verbose +
'}';
}
public void setAuthenticationFile(Optional<String> authenticationFile) {
this.authenticationFile = authenticationFile;
}
public Optional<String> getAuthenticationFile() {
return authenticationFile;
}
public int getNetworkNumberOfRetries() {
return networkNumberOfAttempts;
}
public void setNetworkNumberOfAttempts(int networkNumberOfAttempts) {
this.networkNumberOfAttempts = networkNumberOfAttempts;
}
public void setRemoteRootDir(Optional<String> remoteRootDir) {
this.remoteRootDir = remoteRootDir;
}
public Optional<String> getRemoteRootDir() {
return remoteRootDir;
}
public void setIgnoreFiles(FileNamePatterns ignoreFiles) {
this.ignoreFiles = ignoreFiles;
}
public FileNamePatterns getIgnoreFiles() {
return ignoreFiles;
}
public void setHtmlReport(boolean htmlReport) {
this.htmlReport = htmlReport;
}
public boolean isHtmlReport() {
return htmlReport;
}
public void setSyncDirection(SyncDirection syncDirection) {
this.syncDirection = syncDirection;
}
public SyncDirection getSyncDirection() {
return syncDirection;
}
public void setMaxFileSize(Optional<Long> maxFileSize) {
this.maxFileSize = maxFileSize;
}
public Optional<Long> getMaxFileSize() {
return maxFileSize;
}
public void setEncryptFiles(FileNamePatterns encryptFiles) {
this.encryptFiles = encryptFiles;
}
public FileNamePatterns getEncryptFiles() {
return encryptFiles;
}
public void setEncryptPassword(String encryptPassword) {
this.encryptPassword = encryptPassword;
}
public String getEncryptPassword() {
return encryptPassword;
}
public long getLastModificationDateThreshold() {
return lastModificationDateThreshold;
}
public void setHttpChunkSizeInBytes(long httpChunkSize) {
this.httpChunkSizeInBytes = httpChunkSize;
}
public long getHttpChunkSizeInBytes() {
return httpChunkSizeInBytes;
}
public void setVerbose(boolean verbose) {
this.verbose = verbose;
}
public boolean isVerbose() {
return verbose;
}
public void setLogFile(Optional<Path> logFile) {
this.logFile = logFile;
}
public Optional<Path> getLogFile() {
return logFile;
}
public void setNoDelete(boolean noDelete) {
this.noDelete = noDelete;
}
public boolean isNoDelete() {
return noDelete;
}
}