package org.akaza.openclinica.domain.rule.action;
import org.akaza.openclinica.domain.AbstractMutableDomainObject;
import org.akaza.openclinica.domain.rule.expression.Context;
import org.akaza.openclinica.domain.rule.expression.ExpressionBean;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
@Entity
@Table(name = "rule_action_stratification_factor")
@GenericGenerator(name = "id-generator", strategy = "native", parameters = { @Parameter(name = "sequence_name", value = "rule_action_stratification_factor_id_seq") })
public class StratificationFactorBean extends AbstractMutableDomainObject {
private ExpressionBean stratificationFactor;
private RuleActionBean ruleActionBean;
private String expressionAsString;
@Transient
public String getExpressionAsString() {
if (getStratificationFactor()!=null && expressionAsString !=null)
expressionAsString=getStratificationFactor().getValue();
return expressionAsString;
}
public void setExpressionAsString(String expressionAsString) {
stratificationFactor = new ExpressionBean(Context.OC_RULES_V1, expressionAsString);
this.expressionAsString = expressionAsString;
}
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "rule_expression_id")
public ExpressionBean getStratificationFactor() {
return stratificationFactor;
}
public void setStratificationFactor(ExpressionBean stratificationFactor) {
this.stratificationFactor = stratificationFactor;
}
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "rule_action_id")
public RuleActionBean getRuleActionBean() {
return ruleActionBean;
}
public void setRuleActionBean(RuleActionBean ruleActionBean) {
this.ruleActionBean = ruleActionBean;
}
@Override
public String toString() {
return "StratificationFactorBean [Stratification Factor=" + stratificationFactor + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((stratificationFactor == null) ? 0 : stratificationFactor.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
StratificationFactorBean other = (StratificationFactorBean) obj;
if (stratificationFactor == null) {
if (other.stratificationFactor != null)
return false;
} else if (!stratificationFactor.equals(other.stratificationFactor))
return false;
if (stratificationFactor == null) {
if (other.stratificationFactor != null)
return false;
} else if (!stratificationFactor.equals(other.stratificationFactor))
return false;
return true;
}
}