com.imsweb.validation.entities.RuleFailure Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of validation Show documentation
Show all versions of validation Show documentation
Java implemenation of the SEER edits.
/*
* Copyright (C) 2010 Information Management Services, Inc.
*/
package com.imsweb.validation.entities;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
/**
* This class represents a single rule failure returned by the validation engine.
*
* Created on Apr 5, 2011 by depryf
*/
public class RuleFailure {
/**
* Rule object (link to the parent).
*/
protected Rule _rule;
/**
* Failure message (for translated edits, it might not be the message defined by the edit itself since messages can dynamically be added).
*/
protected String _message;
/**
* Extra failure messages (used only by translated metafile edits); can be null or empty.
*/
protected List _extraErrorMessages;
/**
* Information messages (used only by translated metafile edits); can be null or empty.
*/
protected List _informationMessages;
/**
* Set of failing (formatted) properties
*/
protected Set _properties;
/**
* Identifier for the tumor that triggered this failure
*/
protected Long _tumorIdentifier;
/**
* Original Groovy exception (null if no exception happened)
*/
protected Throwable _groovyException;
/**
* The actual boolean result returned by the edit; it is possible for a translated edit to return true, but fail because the failing flag has been set
* through a call to a context method. This field can be used to detect that case and allow an accurate comparison between the GeneditsPlus results and
* the ones returned by this framework.
*/
protected Boolean _originalResult;
/**
* Default constructor. This constructor is inteded for testing only; it by-passes any nullity checking!
*
* Created on Mar 2, 2010 by depryf
*/
public RuleFailure() {
// this is NOT calling the other constructors, this is on purpose...
}
/**
* Constructor.
*
* Created on Mar 1, 2010 by depryf
* @param rule Rule
, can't be null
* @param validatable Validatable
, can't be null
*/
public RuleFailure(Rule rule, Validatable validatable) {
this(rule, rule.getMessage(), validatable);
}
/**
* Constructor.
*
* Created on Mar 1, 2010 by depryf
* @param rule Rule
, can't be null
* @param message error message
* @param validatable Validatable
, can't be null
*/
public RuleFailure(Rule rule, String message, Validatable validatable) {
this(rule, message, validatable, null);
}
/**
* Constructor.
*
* Created on Mar 1, 2010 by depryf
* @param rule Rule
, can't be null
* @param message error message
* @param validatable Validatable
, can't be null
*/
public RuleFailure(Rule rule, String message, Validatable validatable, Throwable groovyException) {
if (rule == null)
throw new RuntimeException("Can't build a RuleFailure from a null rule!");
if (validatable == null)
throw new RuntimeException("Can't build a RuleFailure from a null validatable!");
_rule = rule;
_message = message == null ? "" : message; // avoid NPE on message...
_properties = new HashSet<>(validatable.getPropertiesWithError());
_tumorIdentifier = validatable.getCurrentTumorId();
_groovyException = groovyException;
}
/**
* Getter for the rule.
*
* Created on Apr 5, 2011 by depryf
* @return the accociated Rule
*/
public Rule getRule() {
return _rule;
}
/**
* Setter for the rule.
*
* Created on Apr 5, 2011 by depryf
* @param rule the associated Rule
*/
public void setRule(Rule rule) {
_rule = rule;
}
/**
* Getter for the message.
*
* Created on Apr 5, 2011 by depryf
* @return the message
*/
public String getMessage() {
return _message;
}
/**
* Setter for the message.
*
* Created on Apr 5, 2011 by depryf
* @param message the message
*/
public void setMessage(String message) {
_message = message;
}
/**
* Setter for the properties.
*
* Created on Apr 5, 2011 by depryf
* @return the properties
*/
public Set getProperties() {
return _properties;
}
/**
* Getter for the properties.
*
* Created on Apr 5, 2011 by depryf
* @param properties the properties
*/
public void setProperties(Set properties) {
_properties = properties;
}
/**
* Getter for the tumor identifier.
*
* Created on Apr 5, 2011 by depryf
* @return tumor identifier
*/
public Long getTumorIdentifier() {
return _tumorIdentifier;
}
/**
* Setter for the tumor identifier.
*
* Created on Apr 5, 2011 by depryf
* @param tumorIdentifier tumor identifier
*/
public void setTumorIdentifier(Long tumorIdentifier) {
_tumorIdentifier = tumorIdentifier;
}
/**
* Getter for the groovy exception.
*
* Created on Apr 5, 2011 by depryf
* @return groovy exception, null of no exception happened
*/
public Throwable getGroovyException() {
return _groovyException;
}
/**
* Setter for the groovy exception.
*
* Created on Apr 5, 2011 by depryf
* @param groovyException the groovy exception
*/
public void setGroovyException(Throwable groovyException) {
_groovyException = groovyException;
}
/**
* Getter for the extra error messages
* @return list of extra error messages, can be null or empty
*/
public List getExtraErrorMessages() {
return _extraErrorMessages;
}
/**
* Setter for the extra error messages
* @param extraErrorMessages list of extra error messages to set
*/
public void setExtraErrorMessages(List extraErrorMessages) {
_extraErrorMessages = extraErrorMessages;
}
/**
* Getter for the information messages
* @return list of information messages, can be null or empty
*/
public List getInformationMessages() {
return _informationMessages;
}
/**
* Setter for the information messages
* @param informationMessages list of information messages to set
*/
public void setInformationMessages(List informationMessages) {
_informationMessages = informationMessages;
}
/**
* Getter for the original reslut
* @return the original result, can be null if the edit threw an exception and didn't return anything
*/
public Boolean getOriginalResult() {
return _originalResult;
}
/**
* Setter for the original result
* @param originalResult original result to set
*/
public void setOriginalResult(Boolean originalResult) {
_originalResult = originalResult;
}
@Override
public boolean equals(Object other) {
if (!(other instanceof RuleFailure))
return false;
RuleFailure otherResult = (RuleFailure)other;
return new EqualsBuilder().append(_rule, otherResult.getRule()).append(_properties, otherResult.getProperties()).isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder().append(_rule).append(_properties).toHashCode();
}
}