/*
* 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;
import org.akaza.openclinica.bean.managestudy.StudyBean;
import org.akaza.openclinica.bean.oid.GenericOidGenerator;
import org.akaza.openclinica.bean.oid.OidGenerator;
import org.akaza.openclinica.domain.AbstractAuditableMutableDomainObject;
import org.akaza.openclinica.domain.rule.expression.ExpressionBean;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
/**
* <p>
* Rule, the object that collects rules associated with RuleSets.
* </p>
*
* @author Krikor Krumlian
*/
@Entity
@Table(name = "rule")
@GenericGenerator(name = "id-generator", strategy = "native", parameters = { @Parameter(name = "sequence_name", value = "rule_id_seq") })
public class RuleBean extends AbstractAuditableMutableDomainObject {
private String oid;
private String name;
private String type;
private String description;
private boolean enabled;
private StudyBean study;
private ExpressionBean expression;
private List<RuleSetRuleBean> ruleSetRules;
private OidGenerator oidGenerator;
// TODO : Pending conversion of the objects below to use Hibernate
private Integer studyId;
public RuleBean() {
this.oidGenerator = new GenericOidGenerator();
}
// SETTERS & GETTERS
@Transient
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "rule_expression_id")
public ExpressionBean getExpression() {
return expression;
}
public void setExpression(ExpressionBean expression) {
this.expression = expression;
}
@OneToMany(mappedBy = "ruleBean")
public List<RuleSetRuleBean> getRuleSetRules() {
return ruleSetRules;
}
public void setRuleSetRules(List<RuleSetRuleBean> ruleSetRules) {
this.ruleSetRules = ruleSetRules;
}
@Column(name = "oc_oid")
public String getOid() {
return oid;
}
public void setOid(String oid) {
this.oid = oid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
* @return the studyId
*/
public Integer getStudyId() {
return studyId;
}
/**
* @param studyId the studyId to set
*/
public void setStudyId(Integer studyId) {
this.studyId = studyId;
}
@Transient
public StudyBean getStudy() {
return study;
}
public void setStudy(StudyBean study) {
if (study.getId() > 0) {
this.studyId = study.getId();
}
this.study = study;
}
@Transient
public OidGenerator getOidGenerator() {
return oidGenerator;
}
public void setOidGenerator(OidGenerator oidGenerator) {
this.oidGenerator = oidGenerator;
}
}