package com.thoughtworks.go.plugin.access.configrepo.contract.material;
import com.thoughtworks.go.plugin.access.configrepo.ErrorCollection;
public class CRConfigMaterial extends CRMaterial {
public static final String TYPE_NAME = "configrepo";
private CRFilter filter;
private String destination;
public CRConfigMaterial() {
type = TYPE_NAME;
}
public CRConfigMaterial(String name, String destination,CRFilter filter) {
super(TYPE_NAME,name);
this.destination = destination;
this.filter = filter;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
CRConfigMaterial that = (CRConfigMaterial)o;
if(that == null)
return false;
if(!super.equals(that))
return false;
if (destination != null ? !destination.equals(that.destination) : that.destination != null) {
return false;
}
if (filter != null ? !filter.equals(that.filter) : that.filter != null) {
return false;
}
return true;
}
@Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + (destination != null ? destination.hashCode() : 0);
result = 31 * result + (filter != null ? filter.hashCode() : 0);
return result;
}
@Override
public String typeName() {
return TYPE_NAME;
}
@Override
public void getErrors(ErrorCollection errors, String parentLocation) {
String location = getLocation(parentLocation);
if(this.filter != null)
this.filter.getErrors(errors,location);
}
@Override
public String getLocation(String parent) {
String myLocation = getLocation() == null ? parent : getLocation();
String name = getName() == null ? "" : getName();
return String.format("%s; Config material %s",myLocation,name);
}
public String getDestination() {
return destination;
}
public void setDestination(String destination) {
this.destination = destination;
}
public void setFilter(CRFilter filter) {
this.filter = filter;
}
public CRFilter getFilter() {
return filter;
}
}