package net.sourceforge.seqware.common.model;
import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import org.hibernate.annotations.Cascade;
/**
* <p>
* WorkflowAttribute class.
* </p>
*
* @author boconnor
* @version $Id: $Id
*/
@Entity
@Table(name = "workflow_attribute", uniqueConstraints = { @UniqueConstraint(columnNames = { "workflow_id", "tag", "value" }) })
public class WorkflowAttribute extends Attribute<Workflow, WorkflowAttribute> implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name = "workflow_attribute_id_seq_gen", sequenceName = "workflow_attribute_id_seq")
@GeneratedValue(strategy = GenerationType.AUTO, generator = "workflow_attribute_id_seq_gen")
@Column(name = "workflow_attribute_id")
private Integer workflowAttributeId;
// SEQWARE-1578
@ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH })
// a special Hibernate workaround since
// http://tai-dev.blog.co.uk/2011/11/18/fun-with-hibernates-cascadetype-persist-and-cascadetype-all-the-case-of-the-unsaved-transient-instance-12187037/
@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
@JoinColumn(name = "workflow_id", nullable = false)
private Workflow workflow;
@Column(name = "tag", nullable = false)
private String tag;
@Column(nullable = false)
private String value;
private String unit;
/**
* {@inheritDoc}
*
* @return
*/
@Override
public String getTag() {
return tag;
}
/** {@inheritDoc} */
@Override
public void setTag(String tag) {
this.tag = tag;
}
/**
* {@inheritDoc}
*
* @return
*/
@Override
public String getValue() {
return value;
}
/** {@inheritDoc} */
@Override
public void setValue(String value) {
this.value = value;
}
/**
* {@inheritDoc}
*
* @return
*/
@Override
public String getUnit() {
return unit;
}
/** {@inheritDoc} */
@Override
public void setUnit(String unit) {
this.unit = unit;
}
/**
* <p>
* Getter for the field <code>workflow</code>.
* </p>
*
* @return a {@link net.sourceforge.seqware.common.model.Workflow} object.
*/
public Workflow getWorkflow() {
return workflow;
}
/**
* <p>
* Setter for the field <code>workflow</code>.
* </p>
*
* @param workflow
* a {@link net.sourceforge.seqware.common.model.Workflow} object.
*/
public void setWorkflow(Workflow workflow) {
this.workflow = workflow;
}
/**
* <p>
* Getter for the field <code>workflowAttributeId</code>.
* </p>
*
* @return a {@link java.lang.Integer} object.
*/
public Integer getWorkflowAttributeId() {
return workflowAttributeId;
}
@Override
public void setAttributeParent(Workflow parent) {
this.setWorkflow(parent);
}
}