UnsubscribedEntity.java

package sk.iway.iwcm.dmail.jpa;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.PrePersist;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotBlank;

import lombok.Getter;
import lombok.Setter;
import sk.iway.iwcm.common.CloudToolsForCore;
import sk.iway.iwcm.database.ActiveRecordRepository;
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;

/**
 * Entita reprezentuje odhlaseny email z hromadneho mailingu
 * #54373
 */

@Entity
@Table(name = "emails_unsubscribed")
@Getter
@Setter
@EntityListeners(sk.iway.iwcm.system.adminlog.AuditEntityListener.class)
@EntityListenersType(sk.iway.iwcm.Adminlog.TYPE_DMAIL_BLACKLIST)
public class UnsubscribedEntity extends ActiveRecordRepository {

    //Set entity domain id
	@PrePersist
	public void prePersist() {
		if(domainId == null) domainId = CloudToolsForCore.getDomainId();
	}

    @Id
    @Column(name = "emails_unsubscribed_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "S_emails_unsubscribed")
    @DataTableColumn(inputType = DataTableColumnType.ID, title="ID", tab="basic")
    private Long id;

    @Column(name = "email")
    @NotBlank
    @DataTableColumn(
        inputType = DataTableColumnType.OPEN_EDITOR,
        renderFormat = "dt-format-text-wrap",
        className = "dt-style-text-wrap",
        editor = {
            @DataTableColumnEditor(type = "textarea")
        },
        title="components.dmail.unsubscribe.email"
    )
    private String email;

    @Column(name = "create_date")
    @Temporal(TemporalType.TIMESTAMP)
	@DataTableColumn(
        inputType = DataTableColumnType.DATETIME,
        title="components.dmail.unsubscribeDate",
        className = "hide-on-create",
        editor=@DataTableColumnEditor(attr = {
            @DataTableColumnEditorAttr(key = "disabled", value = "disabled")
        })
    )
	private Date createDate;

    @Column(name = "domain_id")
    @DataTableColumn(inputType = DataTableColumnType.HIDDEN)
    private Integer domainId;

    public void setId(Long id) {
        this.id = id;
    }
}