package edu.stanford.sulair.dlss.dor.admin;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.GeneratedValue;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
//Jaxb Annotations
@XmlRootElement
@XmlType(propOrder={"name", "status", "datetime", "attempts"})
//JPA Annotations
@Entity
@Table(name="workflow")
public class Process {
public static final String STATUS_WAITING = "waiting";
public static final String STATUS_COMPLETED = "completed";
public static final String STATUS_ERROR = "error";
public static final String STATUS_QUEUED = "queued";
//Used only for database persistance
private long id;
private String druid;
private String datastream;
private String name;
private String status;
private String errorMessage;
private String errorText;
private Date datetime = new Date();
private int attempts;
private String lifecycle;
private double elapsed;
private String repository;
public Process(){}
public Process(String druid, String datastream, String name, String status, Date dateTime){
this.druid = druid;
this.name = name;
this.status = status;
this.datetime = dateTime;
}
@XmlTransient
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="WORKFLOW_SEQ")
@SequenceGenerator(name="WORKFLOW_SEQ", sequenceName="workflow_seq")
public long getId() {
return this.id;
}
public void setId(long id){
this.id = id;
}
@XmlTransient
@Column(length=256)
public String getDruid() {
return druid;
}
public void setDruid(String pid) {
this.druid = pid;
}
@XmlTransient
@Column(length=256)
public String getDatastream() {
return this.datastream;
}
public void setDatastream(String ds) {
this.datastream = ds;
}
@XmlTransient
@Column(length=256)
public void setRepository(String name) {
this.repository = name;
}
public String getRepository(){
return this.repository;
}
@XmlAttribute
@Column(name="process", length=256)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlAttribute
@Column(length=256)
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
@XmlAttribute
@XmlJavaTypeAdapter(DateAdapter.class)
@Column
public Date getDatetime() {
return datetime;
}
public void setDatetime(Date completed) {
this.datetime = completed;
}
@XmlAttribute
@Column
public int getAttempts() {
return attempts;
}
public void setAttempts(int attempts) {
this.attempts = attempts;
}
@XmlAttribute
@Column(name="error_msg", length=256)
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String msg) {
this.errorMessage = msg;
}
@XmlAttribute
@Lob
@Column(name="error_txt")
public String getErrorText(){
return this.errorText;
}
public void setErrorText(String text) {
this.errorText = text;
}
public void setLifecycle(String lc) {
this.lifecycle = lc;
}
@XmlAttribute
@Column(name="lifecycle", length=256)
public String getLifecycle() {
return lifecycle;
}
public void setElapsed(double elapsed) {
this.elapsed = elapsed;
}
@XmlAttribute
@Column(name="elapsed")
public double getElapsed() {
return elapsed;
}
}