GroupsApproveEntity.java
package sk.iway.iwcm.components.users.groups_approve;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Convert;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
import sk.iway.iwcm.doc.GroupDetails;
import sk.iway.iwcm.doc.GroupDetailsConverter;
import sk.iway.iwcm.system.adminlog.EntityListenersType;
import sk.iway.iwcm.system.datatable.DataTableColumnType;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumn;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnEditor;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnEditorAttr;
import sk.iway.iwcm.users.UserBasicDto;
import sk.iway.iwcm.users.jpa.UserBasicDtoConverter;
/**
* Pouzivatelia - mapovanie schvalovania
*/
@Entity
@Table(name = "groups_approve")
@Getter
@Setter
@EntityListeners(sk.iway.iwcm.system.adminlog.AuditEntityListener.class)
@EntityListenersType(sk.iway.iwcm.Adminlog.TYPE_USER_UPDATE)
public class GroupsApproveEntity implements Serializable {
@Id
@Column(name = "approve_id")
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "S_groups_approve")
@DataTableColumn(
inputType = DataTableColumnType.ID,
title = "datatables.id.js"
)
private Long id;
@NotNull
@Valid
@Column(name = "group_id")
@Convert(converter = GroupDetailsConverter.class)
@DataTableColumn(
inputType = { DataTableColumnType.OPEN_EDITOR, DataTableColumnType.JSON },
className = "dt-tree-group",
title = "useredit.approve.dir"
)
private GroupDetails group;
@NotNull
@Column(name = "user_id")
@DataTableColumn(
inputType = DataTableColumnType.HIDDEN
)
private Long userId;
@NotNull
@Column(name = "approve_mode")
@DataTableColumn(
inputType = DataTableColumnType.SELECT,
title = "useredit.approve.mode",
editor = {
@DataTableColumnEditor(
options = {
@DataTableColumnEditorAttr(key = "useredit.approveMode.approve", value = "0"),
@DataTableColumnEditorAttr(key = "useredit.approveMode.notify", value = "1"),
@DataTableColumnEditorAttr(key = "useredit.approveMode.none", value = "2"),
@DataTableColumnEditorAttr(key = "useredit.approveMode.level2", value = "3")
}
)
}
)
private Integer approveMode;
//User detials, who is approver
@Column(name = "user_id", insertable = false, updatable = false) // author_id is allready used, so this one must be read onl
@Convert(converter = UserBasicDtoConverter.class)
@JsonProperty(access = JsonProperty.Access.READ_ONLY) //toto nepotrebujeme deserializovat pri post requeste
private UserBasicDto userDetails;
}