package hu.sztaki.ilab.longneck.process.block;
import hu.sztaki.ilab.longneck.Record;
import hu.sztaki.ilab.longneck.process.AbstractSourceInfoContainer;
import hu.sztaki.ilab.longneck.process.FailException;
import hu.sztaki.ilab.longneck.process.VariableSpace;
import hu.sztaki.ilab.longneck.process.constraint.CheckResult;
/**
*
* @author Molnár Péter <molnarp@sztaki.mta.hu>
*/
public class Fail extends AbstractSourceInfoContainer implements Block {
/** The summary of implemented checks as a short text. */
private String summary;
/* The checked field, what we want to test in the check box.*/
private String faildField;
@Override
public void apply(Record record, VariableSpace parentScope) throws FailException {
record.addError(new CheckResult(this, false,
faildField == null || !BlockUtils.exists(faildField, record, parentScope)?null:faildField,
faildField == null? null:BlockUtils.getValue(faildField, record, parentScope),
summary == null ? "Intentional failure." : summary));
throw new FailException(summary == null?"Intentional failure.":summary);
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
public String getFaildField() {
return faildField;
}
public void setFaildField(String faildField) {
this.faildField = faildField;
}
@Override
public Fail clone() {
return (Fail) super.clone();
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Fail other = (Fail) obj;
if (super.equals(obj) == false) {
return false;
}
if ((this.summary == null) ? (other.summary != null) : !this.summary.equals(other.summary)) {
return false;
}
if ((this.faildField == null) ? (other.faildField != null) : !this.faildField.equals(other.faildField)) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 3;
hash = 67 * hash + (this.summary != null ? this.summary.hashCode() : 0);
hash = 67 * hash + (this.faildField != null ? this.faildField.hashCode() : 0);
return hash;
}
}