/* * OpenClinica is distributed under the * GNU Lesser General Public License (GNU LGPL). * For details see: http://www.openclinica.org/license * * Copyright 2003-2008 Akaza Research */ package org.akaza.openclinica.domain.rule.action; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.DiscriminatorColumn; import javax.persistence.DiscriminatorType; import javax.persistence.Entity; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.Transient; import java.util.HashMap; import java.util.LinkedHashMap; import org.akaza.openclinica.domain.AbstractAuditableMutableDomainObject; import org.akaza.openclinica.domain.rule.RuleSetRuleBean; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; import org.hibernate.annotations.Type; /** * @author Krikor Krumlian */ @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "action_type", discriminatorType = DiscriminatorType.INTEGER) @Table(name = "rule_action") @GenericGenerator(name = "id-generator", strategy = "native", parameters = { @Parameter(name = "sequence_name", value = "rule_action_id_seq") }) @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class RuleActionBean extends AbstractAuditableMutableDomainObject implements Comparable<ActionType> { private RuleSetRuleBean ruleSetRule; private ActionType actionType; private Boolean expressionEvaluatesTo; private String summary; private String curatedMessage; private RuleActionRunBean ruleActionRun; @Transient public String getCuratedMessage() { return curatedMessage; } public void setCuratedMessage(String curatedMessage) { this.curatedMessage = curatedMessage; } @Transient public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } @Transient public HashMap<String, Object> getPropertiesForDisplay() { LinkedHashMap<String, Object> p = new LinkedHashMap<String, Object>(); p.put("rule_action_type", getActionType()); return p; } @Type(type = "actionType") @Column(name = "action_type", updatable = false, insertable = false) public ActionType getActionType() { return actionType; } public void setActionType(ActionType actionType) { this.actionType = actionType; } public Boolean getExpressionEvaluatesTo() { return expressionEvaluatesTo; } public void setExpressionEvaluatesTo(Boolean ifExpressionEvaluates) { this.expressionEvaluatesTo = ifExpressionEvaluates; } @ManyToOne @JoinColumn(name = "rule_set_rule_id", nullable = false, updatable = false, insertable = false) public RuleSetRuleBean getRuleSetRule() { return ruleSetRule; } public void setRuleSetRule(RuleSetRuleBean ruleSetRule) { this.ruleSetRule = ruleSetRule; } @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "rule_action_run_id") public RuleActionRunBean getRuleActionRun() { return ruleActionRun; } public void setRuleActionRun(RuleActionRunBean ruleActionRun) { this.ruleActionRun = ruleActionRun; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((actionType == null) ? 0 : actionType.hashCode()); result = prime * result + ((expressionEvaluatesTo == null) ? 0 : expressionEvaluatesTo.hashCode()); result = prime * result + ((summary == null) ? 0 : summary.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; RuleActionBean other = (RuleActionBean) obj; if (actionType == null) { if (other.actionType != null) return false; } else if (!actionType.equals(other.actionType)) return false; if (expressionEvaluatesTo == null) { if (other.expressionEvaluatesTo != null) return false; } else if (!expressionEvaluatesTo.equals(other.expressionEvaluatesTo)) return false; if (summary == null) { if (other.summary != null) return false; } else if (!summary.equals(other.summary)) return false; if (ruleActionRun == null) { if (other.ruleActionRun != null) return false; } else if (!ruleActionRun.equals(other.ruleActionRun)) return false; return true; } @Transient public int compareTo(ActionType o) { // TODO Auto-generated method stub return 0; } }