/* * Copyright @ 2013 CurisTEC, S.A.S. All Rights Reserved. */ package net.curisit.securis.db; import java.io.Serializable; import java.util.Date; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.NamedQueries; import jakarta.persistence.NamedQuery; import jakarta.persistence.Table; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; /** * LicenseHistory *
* Audit trail entries for a given license (who/what/when). * * Mapping details: * - Table: license_history * - Many-to-one to License and User (ignored in JSON). * - NamedQuery: list-license-history by license id. * * @author JRA * Last reviewed by JRA on Oct 5, 2025. */ @JsonAutoDetect @JsonInclude(Include.NON_NULL) @Entity @Table(name = "license_history") @JsonIgnoreProperties(ignoreUnknown = true) @NamedQueries({ @NamedQuery(name = "list-license-history", query = "SELECT lh FROM LicenseHistory lh where lh.license.id = :licId") }) public class LicenseHistory implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue private int id; @JsonIgnore @ManyToOne @JoinColumn(name = "license_id") private License license; @JsonIgnore @ManyToOne @JoinColumn(name = "username") private User user; private String action; private String comments; @Column(name = "creation_timestamp") @JsonProperty("creation_timestamp") private Date creationTimestamp; // ---------------- Getters & setters ---------------- /** * getId
* Return primary key. * * @return id */ public int getId() { return id; } /** * getLicense
* Return parent license (entity). * * @return license */ public License getLicense() { return license; } /** * setLicense
* Set parent license (entity). * * @return license */ public void setLicense(License license) { this.license = license; } /** * getUser
* Return actor user (entity). * * @return user */ public User getUser() { return user; } /** * getUsername
* Expose username for JSON. * * @return username */ @JsonProperty("username") public String getUsername() { return user == null ? null : user.getUsername(); } /** * setUser
* Set actor user (entity). * * @param user */ public void setUser(User user) { this.user = user; } /** * getAction
* Return action key (e.g., "activate"). * * @return action */ public String getAction() { return action; } /** * setAction
* Set action key. * * @param action */ public void setAction(String action) { this.action = action; } /** * getComments
* Return optional comments. * * @return comments */ public String getComments() { return comments; } /** * setComments
* Set optional comments. * * @param comments */ public void setComments(String comments) { this.comments = comments; } /** * setId
* Set primary key (normally framework-managed) * * @param id. */ public void setId(int id) { this.id = id; } /** * getCreationTimestamp
* Return timestamp. * * @return creationTimestamp */ public Date getCreationTimestamp() { return creationTimestamp; } /** * setCreationTimestamp
* Set timestamp. * * @param creationTimestamp */ public void setCreationTimestamp(Date creationTimestamp) { this.creationTimestamp = creationTimestamp; } /** * Actions
* Catalog of action names. */ public static class Actions { public static final String CREATE = "creation"; public static final String ADD_REQUEST = "request"; public static final String SEND = "send"; public static final String MODIFY = "modify"; public static final String DOWNLOAD = "download"; public static final String ACTIVATE = "activate"; public static final String PRE_ACTIVATE = "pre-activate"; public static final String RENEW = "renew"; public static final String CANCEL = "cancel"; public static final String BLOCK = "block"; public static final String UNBLOCK = "unblock"; public static final String DELETE = "delete"; } }