package com.thoughtworks.go.plugin.access.configrepo.contract.tasks;
import com.thoughtworks.go.plugin.access.configrepo.ErrorCollection;
public class CRFetchArtifactTask extends CRTask {
public static final String TYPE_NAME = "fetch";
private String pipeline;
private String stage;
private String job;
private String source;
// when missing, will be false, which is default - source is directory
private boolean is_source_a_file;
private String destination;
public CRFetchArtifactTask(){
super(TYPE_NAME);
}
public CRFetchArtifactTask(String stage,String job,String source){
super(TYPE_NAME);
this.stage = stage;
this.job = job;
this.source = source;
}
public CRFetchArtifactTask(CRRunIf runIf, CRTask onCancel,
String pipelineName,String stage,String job,
String source, String destination,boolean sourceIsDir) {
super(runIf, onCancel);
this.pipeline = pipelineName;
this.stage = stage;
this.job = job;
this.source = source;
this.is_source_a_file = !sourceIsDir;
this.destination = destination;
}
public String getPipelineName() {
return pipeline;
}
public void setPipelineName(String pipelineName) {
this.pipeline = pipelineName;
}
public String getStage() {
return stage;
}
public void setStage(String stage) {
this.stage = stage;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getDestination() {
return destination;
}
public void setDestination(String dest) {
this.destination = dest;
}
public String getSource() {
return source;
}
public void setSource(String src) {
this.source = src;
}
public boolean sourceIsDirectory() {
return !is_source_a_file;
}
public void setSourceIsDirectory(boolean srcIsDirectory) {
this.is_source_a_file = !srcIsDirectory;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
CRFetchArtifactTask fetchTask = (CRFetchArtifactTask) o;
if(!super.equals(fetchTask))
return false;
if (destination != null ? !destination.equals(fetchTask.destination) : fetchTask.destination != null) {
return false;
}
if (job != null ? !job.equals(fetchTask.job) : fetchTask.job != null) {
return false;
}
if (pipeline != null ? !pipeline.equals(fetchTask.pipeline) : fetchTask.pipeline != null) {
return false;
}
if (source != null ? !source.equals(fetchTask.source) : fetchTask.source != null) {
return false;
}
if (is_source_a_file != fetchTask.is_source_a_file) {
return false;
}
if (stage != null ? !stage.equals(fetchTask.stage) : fetchTask.stage != null) {
return false;
}
return true;
}
@Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + (pipeline != null ? pipeline.hashCode() : 0);
result = 31 * result + (stage != null ? stage.hashCode() : 0);
result = 31 * result + (job != null ? job.hashCode() : 0);
result = 31 * result + (source != null ? source.hashCode() : 0);
result = 31 * result + (destination != null ? destination.hashCode() : 0);
return result;
}
@Override
public void getErrors(ErrorCollection errors, String parentLocation) {
String location = getLocation(parentLocation);
errors.checkMissing(location,"source",source);
errors.checkMissing(location,"stage",stage);
errors.checkMissing(location,"job",job);
}
@Override
public String getLocation(String parent) {
String myLocation = getLocation() == null ? parent : getLocation();
String pipe = getPipelineName() != null ? getPipelineName() : "unknown pipeline";
String stage = getStage() != null ? getStage() : "unknown stage";
String job = getJob() != null ? getJob() : "unknown job";
return String.format("%s; fetch artifacts task from %s %s %s",myLocation,pipe,stage,job);
}
}