package com.sobey.cmop.mvc.entity;
import java.util.List;
import javax.persistence.CollectionTable;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import com.google.common.collect.Lists;
/**
* Group entity. @author MyEclipse Persistence Tools
*/
@Entity
@Table(name = "group", catalog = "cmop")
public class Group implements java.io.Serializable {
// Fields
private Integer id;
private String name;
private List<String> permissionList = Lists.newArrayList();
// Constructors
/** default constructor */
public Group() {
}
/** full constructor */
public Group(String name) {
this.name = name;
}
// Property accessors
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name = "name", nullable = false, length = 20)
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
@ElementCollection
@CollectionTable(name = "group_permission", joinColumns = { @JoinColumn(name = "group_id") })
@Column(name = "permission")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public List<String> getPermissionList() {
return permissionList;
}
public void setPermissionList(List<String> permissionList) {
this.permissionList = permissionList;
}
@Transient
public String getPermissionNames() {
List<String> permissionNameList = Lists.newArrayList();
for (String permission : permissionList) {
permissionNameList.add(Permission.parse(permission).displayName);
}
return StringUtils.join(permissionNameList, ",");
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}