package net.curisit.securis.db; import java.io.Serializable; import java.util.Date; import java.util.Objects; import jakarta.persistence.Column; import jakarta.persistence.Entity; 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 org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonBackReference; 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; import net.curisit.securis.db.common.Metadata; /** * Entity implementation class for Entity: application_metadata * */ @JsonAutoDetect @JsonInclude(Include.NON_NULL) @Entity @Table(name = "application_metadata") @JsonIgnoreProperties(ignoreUnknown = true) @NamedQueries({ @NamedQuery(name = "list-application-metadata", query = "SELECT a FROM ApplicationMetadata a where a.application.id = :applicationId") }) public class ApplicationMetadata implements Serializable, Metadata { private static final Logger LOG = LogManager.getLogger(ApplicationMetadata.class); private static final long serialVersionUID = 1L; @Id @ManyToOne @JoinColumn(name = "application_id") @JsonBackReference private Application application; @Id @Column(name = "\"key\"") private String key; private String value; private boolean mandatory; @Column(name = "creation_timestamp") @JsonProperty("creation_timestamp") private Date creationTimestamp; public String getKey() { return key; } public void setKey(String key) { this.key = key; } public Application getApplication() { LOG.info("Getting application from app metadata: {}", application); return application; } public void setApplication(Application application) { this.application = application; } public Date getCreationTimestamp() { return creationTimestamp; } public void setCreationTimestamp(Date creationTimestamp) { this.creationTimestamp = creationTimestamp; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public boolean isMandatory() { return mandatory; } public void setMandatory(boolean mandatory) { this.mandatory = mandatory; } @Override public String toString() { return String.format("AppMd (%s: %s)", this.key, value); } @Override public boolean equals(Object obj) { if (!(obj instanceof ApplicationMetadata)) return false; ApplicationMetadata other = (ApplicationMetadata) obj; return Objects.equals(key, other.key) && Objects.equals(application, other.application); } @Override public int hashCode() { return Objects.hash(key, application); } }