package com.jspxcms.core.domain; import java.sql.Timestamp; import java.util.Date; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.TableGenerator; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; /** * WorkflowProcess * * @author liufang * */ @Entity @Table(name = "cms_workflow_process") public class WorkflowProcess implements java.io.Serializable { private static final long serialVersionUID = 1L; public static final int DEFAULT_TYPE = 0; @Transient public void passEnd() { setEndDate(new Timestamp(System.currentTimeMillis())); setRejection(false); setStep(-1); setProcessUsers(null); setEnd(true); } @Transient public void rejectEnd() { setEndDate(new Timestamp(System.currentTimeMillis())); setRejection(true); setStep(-1); setProcessUsers(null); setEnd(true); } @Transient public Set<User> getUsers() { Set<WorkflowProcessUser> processUsers = getProcessUsers(); if (processUsers == null) { return null; } Set<User> users = new HashSet<User>(); for (WorkflowProcessUser processUser : processUsers) { users.add(processUser.getUser()); } return users; } @Transient public void applyDefaultValue() { if (getBeginDate() == null) { setBeginDate(new Timestamp(System.currentTimeMillis())); } if (getType() == null) { setType(DEFAULT_TYPE); } if (getRejection() == null) { setRejection(false); } if (getEnd() == null) { setEnd(false); } } private Integer id; private Set<WorkflowLog> logs = new HashSet<WorkflowLog>(); private Set<WorkflowProcessUser> processUsers = new HashSet<WorkflowProcessUser>(); private Workflow workflow; private User user; private Site site; private Integer dataId; private Date beginDate; private Date endDate; private Integer step; private Integer type; private Boolean rejection; private Boolean end; @Id @Column(name = "f_workflowprocess_id", unique = true, nullable = false) @TableGenerator(name = "tg_cms_workflow_process", pkColumnValue = "cms_workflow_process", table = "t_id_table", pkColumnName = "f_table", valueColumnName = "f_id_value", initialValue = 1, allocationSize = 1) @GeneratedValue(strategy = GenerationType.TABLE, generator = "tg_cms_workflow_process") public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } @OneToMany(fetch = FetchType.LAZY, mappedBy = "process") public Set<WorkflowLog> getLogs() { return this.logs; } public void setLogs(Set<WorkflowLog> logs) { this.logs = logs; } @OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.REMOVE }, mappedBy = "process") public Set<WorkflowProcessUser> getProcessUsers() { return processUsers; } public void setProcessUsers(Set<WorkflowProcessUser> processUsers) { this.processUsers = processUsers; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "f_workflow_id", nullable = false) public Workflow getWorkflow() { return this.workflow; } public void setWorkflow(Workflow workflow) { this.workflow = workflow; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "f_user_id", nullable = false) public User getUser() { return user; } public void setUser(User user) { this.user = user; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "f_site_id", nullable = false) public Site getSite() { return this.site; } public void setSite(Site site) { this.site = site; } @Column(name = "f_data_id", nullable = false) public Integer getDataId() { return this.dataId; } public void setDataId(Integer dataId) { this.dataId = dataId; } @Temporal(TemporalType.TIMESTAMP) @Column(name = "f_begin_date", nullable = false, length = 19) public Date getBeginDate() { return this.beginDate; } public void setBeginDate(Date beginDate) { this.beginDate = beginDate; } @Temporal(TemporalType.TIMESTAMP) @Column(name = "f_end_date", length = 19) public Date getEndDate() { return this.endDate; } public void setEndDate(Date endDate) { this.endDate = endDate; } @Column(name = "f_step", nullable = false) public Integer getStep() { return this.step; } public void setStep(Integer step) { this.step = step; } @Column(name = "f_type", nullable = false) public Integer getType() { return type; } public void setType(Integer type) { this.type = type; } @Column(name = "f_is_rejection", nullable = false) public Boolean getRejection() { return rejection; } public void setRejection(Boolean rejection) { this.rejection = rejection; } @Column(name = "f_is_end", nullable = false) public Boolean getEnd() { return this.end; } public void setEnd(Boolean end) { this.end = end; } }