AuditableEntity.java

/*
 * +====================================================================+
 * |         Copyright (C) 2015 Rochester Institute of Technology,      |
 * |            103 Lomb Memorial Drive, Rochester, NY - 14623          |
 * |                        All Rights Reserved.                        |
 * +====================================================================+
 *   FILENAME
 *    AuditableEntity.java
 *
 *   AUTHOR
 *    @author Khanh Ho (kchisd at rit.edu)
 *
 * =====================================================================
 */

package edu.rit.coopeval.model;

import javax.persistence.*;
import java.time.Instant;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.springframework.data.annotation.*;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

/**
 * Base abstract class for entity that requires auditing information.
 */
@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
public abstract class AuditableEntity {

    @CreatedDate
    @Column(name = "CREATED_AT")
    private Instant createdAt;

    @CreatedBy
    @Column(name = "CREATED_BY")
    private String createdBy;

    @LastModifiedDate
    @Column(name = "MOD_AT")
    private Instant modAt;

    @LastModifiedBy
    @Column(name = "MOD_BY")
    private String modBy;

    @JsonProperty
    public Instant getCreatedAt() {
        return createdAt;
    }

    @JsonIgnore
    public void setCreatedAt(Instant createdAt) {
        this.createdAt = createdAt;
    }

    @JsonProperty
    public String getCreatedBy() {
        return createdBy;
    }

    @JsonIgnore
    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }

    @JsonProperty
    public Instant getModAt() {
        return modAt;
    }

    @JsonIgnore
    public void setModAt(Instant modAt) {
        this.modAt = modAt;
    }

    @JsonProperty
    public String getModBy() {
        return modBy;
    }

    @JsonIgnore
    public void setModBy(String modBy) {
        this.modBy = modBy;
    }
}