StatClicksEntity.java

package sk.iway.iwcm.dmail.jpa;

import java.io.Serializable;
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.PrimaryKeyJoinColumn;
import javax.persistence.SecondaryTable;
import javax.persistence.Table;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;

import lombok.Getter;
import lombok.Setter;
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;

@Entity
@Table(name = "emails_stat_click")
@Getter
@Setter
@EntityListeners(sk.iway.iwcm.system.adminlog.AuditEntityListener.class)
@EntityListenersType(sk.iway.iwcm.Adminlog.TYPE_DMAIL)
@SecondaryTable(name = "emails", pkJoinColumns=@PrimaryKeyJoinColumn(name="email_id", referencedColumnName="email_id"))
public class StatClicksEntity extends ActiveRecordRepository implements Serializable {

    @Id
    @Column(name = "click_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "S_emails_stat_click")
    @DataTableColumn(inputType = DataTableColumnType.ID, title="ID", renderFormat = "dt-format-selector")
    private Long id;

    @Column(table="emails", name="recipient_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="user.Name"
    )
    private String recipientName;

    @Column(table="emails", name="recipient_email")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="user.email"
    )
    private String recipientEmail;

    @Column(name = "link")
    @NotEmpty
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.dmail.camp.link"
    )
    @Size(max = 255)
    private String link;

    @Column(table="emails", name="campain_id")
    @DataTableColumn(
        inputType = DataTableColumnType.HIDDEN
    )
    private Long campainId;

    @Column(name = "click_date")
    @NotEmpty
    @DataTableColumn(
        inputType = DataTableColumnType.DATETIME,
        title="components.dmail.camp.click_date"
    )
    private Date clickDate;

    @Column(name = "session_id")
    private Long sessionId;

    @Column(name = "browser_id")
    private Long browserId;

    @Column(name = "email_id")
    private Long emailId;

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