package de.micromata.borgbutler;
|
|
import de.micromata.borgbutler.config.BorgRepoConfig;
|
import lombok.AccessLevel;
|
import lombok.Getter;
|
import lombok.Setter;
|
import org.apache.commons.lang3.StringUtils;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
|
import java.io.File;
|
|
/**
|
* Represents a command to be queued for executing.
|
*/
|
public class BorgCommand {
|
private Logger log = LoggerFactory.getLogger(BorgCommand.class);
|
|
/**
|
* The current Thread assigned to this command sets the state and reads for the state {@link State#TERMINATE_SIGNAL_RECEIVED}.
|
* If received, the thread will be terminated without executing the borg command.
|
*/
|
public enum State {
|
/**
|
* This command is waiting in the queue.
|
*/
|
WAITING_IN_QUEUE,
|
/**
|
* This command is running (beeing executed).
|
*/
|
RUNNING,
|
/**
|
* This command should not be terminated before starting.
|
*/
|
TERMINATE_SIGNAL_RECEIVED}
|
|
public enum ResultStatus {
|
OK, ERROR
|
}
|
|
@Getter
|
@Setter
|
private File workingDir;
|
@Getter
|
private String[] args;
|
@Getter
|
private String[] params;
|
@Getter
|
@Setter
|
private BorgRepoConfig repoConfig;
|
@Getter
|
@Setter
|
private String command;
|
@Getter
|
@Setter
|
private String archive;
|
@Getter
|
private State state;
|
/**
|
* For displaying and information purposes for the user only, when browsing the current command queue.
|
*/
|
@Setter
|
@Getter
|
private String description;
|
/**
|
* The result of the call will be written to this String.
|
*/
|
@Getter
|
@Setter(AccessLevel.PACKAGE)
|
private String response;
|
|
@Getter
|
@Setter(AccessLevel.PACKAGE)
|
private ResultStatus resultStatus;
|
|
/**
|
* Requests the thread handling this command to terminate / cancel this action.
|
*/
|
public void terminate() {
|
this.state = State.TERMINATE_SIGNAL_RECEIVED;
|
}
|
|
BorgCommand setArgs(String... args) {
|
this.args = args;
|
return this;
|
}
|
|
BorgCommand setParams(String... params) {
|
this.params = params;
|
return this;
|
}
|
|
String getRepoArchive() {
|
if (archive == null) {
|
if (repoConfig == null) {
|
return null;
|
}
|
return repoConfig.getRepo();
|
}
|
return repoConfig.getRepo() + "::" + archive;
|
}
|
|
/**
|
*
|
* @return Abbreviated response e. g. for logging an error.
|
*/
|
public String getAbbreviatedResponse() {
|
return StringUtils.abbreviate(response, 1000);
|
}
|
}
|