package com.jspxcms.core.domain;
import java.util.Collections;
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.Transient;
import org.apache.commons.collections.CollectionUtils;
/**
* WorkflowStep
*
* @author liufang
*
*/
@Entity
@Table(name = "cms_workflow_step")
public class WorkflowStep implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Transient
public Set<User> getUsers() {
Set<Role> roles = getRoles();
if (CollectionUtils.isNotEmpty(roles)) {
Set<User> users = new HashSet<User>();
for (Role role : roles) {
for (User user : role.getUsers()) {
users.add(user);
}
}
return users;
} else {
return Collections.emptySet();
}
}
@Transient
public Role getRole() {
Set<Role> roles = getRoles();
if (CollectionUtils.isNotEmpty(roles)) {
return roles.iterator().next();
} else {
return null;
}
}
@Transient
public Set<Role> getRoles() {
Set<WorkflowStepRole> stepRoles = getStepRoles();
if (stepRoles == null) {
return null;
}
Set<Role> roles = new HashSet<Role>(stepRoles.size());
for (WorkflowStepRole stepRole : stepRoles) {
roles.add(stepRole.getRole());
}
return roles;
}
@Transient
public void applyDefaultValue() {
}
private Integer id;
private Set<WorkflowStepRole> stepRoles = new HashSet<WorkflowStepRole>();
private Workflow workflow;
private String name;
private Integer seq;
@Id
@Column(name = "f_workflowstep_id", unique = true, nullable = false)
@TableGenerator(name = "tg_cms_workflow_step", pkColumnValue = "cms_workflow_step", table = "t_id_table", pkColumnName = "f_table", valueColumnName = "f_id_value", initialValue = 1, allocationSize = 1)
@GeneratedValue(strategy = GenerationType.TABLE, generator = "tg_cms_workflow_step")
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
@OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.REMOVE }, mappedBy = "step")
public Set<WorkflowStepRole> getStepRoles() {
return stepRoles;
}
public void setStepRoles(Set<WorkflowStepRole> stepRoles) {
this.stepRoles = stepRoles;
}
@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;
}
@Column(name = "f_name", nullable = false, length = 100)
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
@Column(name = "f_seq", nullable = false)
public Integer getSeq() {
return this.seq;
}
public void setSeq(Integer seq) {
this.seq = seq;
}
}