package com.thoughtworks.go.plugin.access.configrepo.contract.material;
import com.thoughtworks.go.plugin.access.configrepo.ErrorCollection;
public class CRDependencyMaterial extends CRMaterial {
public static final String TYPE_NAME = "dependency";
private String pipeline;
private String stage;
public CRDependencyMaterial() {
type = TYPE_NAME;
}
public CRDependencyMaterial(String name,String pipelineName,String stageName) {
super(TYPE_NAME,name);
this.pipeline = pipelineName;
this.stage = stageName;
}
public CRDependencyMaterial(String pipelineName,String stageName) {
type = TYPE_NAME;
this.pipeline = pipelineName;
this.stage = stageName;
}
public String getPipelineName() {
return pipeline;
}
public void setPipelineName(String pipelineName) {
this.pipeline = pipelineName;
}
public String getStageName() {
return stage;
}
public void setStageName(String stageName) {
this.stage = stageName;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
CRDependencyMaterial that = (CRDependencyMaterial) o;
if(!super.equals(that))
return false;
if (pipeline != null ? !pipeline.equals(that.pipeline) : that.pipeline != null) {
return false;
}
if (stage != null ? !stage.equals(that.stage) : that.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);
return result;
}
@Override
public String typeName() {
return TYPE_NAME;
}
@Override
public void getErrors(ErrorCollection errors, String parentLocation) {
String location = getLocation(parentLocation);
errors.checkMissing(location,"pipeline",pipeline);
errors.checkMissing(location,"stage",stage);
}
@Override
public String getLocation(String parent) {
String myLocation = getLocation() == null ? parent : getLocation();
String name = getName() == null ? "" : getName();
String pipe = getPipelineName() != null ? getPipelineName() : "unknown pipeline";
String stage = getStageName() != null ? getStageName() : "unknown stage";
return String.format("%s; Dependency material %s on %s/%s",myLocation,name,pipe,stage);
}
}