package org.bubblecloud.ilves.model; import org.apache.commons.lang.StringUtils; import javax.persistence.*; import java.io.Serializable; import java.util.Date; /** * AuditLogEntry. * * @author Tommi S.E. Laukkanen */ @Entity @Table(name = "auditlogentry") public final class AuditLogEntry implements Serializable { /** Java serialization version UID. */ private static final long serialVersionUID = 1L; /** Unique UUID of the entity. */ @Id @GeneratedValue(generator = "uuid") private String auditLogEntryId; /** Action. */ @Column(nullable = false) private String event; /** Component IP address and port. */ @Column(nullable = false) private String componentAddress; /** Component Type. */ @Column(nullable = false) private String componentType; /** User IP address and port. */ @Column(nullable = true) private String userAddress; /** User ID. */ @Column(nullable = true) private String userId; /** User Name. */ @Column(nullable = true) private String userName; /** Data Type. */ @Column(nullable = true) private String dataType; /** Data ID. */ @Column(nullable = true) private String dataId; /** Data Old Version ID. */ @Column(nullable = true) private String dataOldVersionId; /** Data New Version ID. */ @Column(nullable = true) private String dataNewVersionId; /** Data Label. */ @Column(nullable = true) private String dataLabel; /** Created time of the task. */ @Temporal(TemporalType.TIMESTAMP) @Column(nullable = false) private Date created; /** * The default constructor. */ public AuditLogEntry() { super(); } public AuditLogEntry(String event, String componentAddress, String componentType, String userAddress, String userId, String userName, String dataType, String dataId, String dataOldVersionId, String dataNewVersionId, String dataLabel, Date created) { this.event = StringUtils.abbreviate(event, 255); this.componentAddress = StringUtils.abbreviate(componentAddress, 60); this.componentType = StringUtils.abbreviate(componentType, 20); this.userAddress = StringUtils.abbreviate(userAddress, 60); this.userId = StringUtils.abbreviate(userId, 36); this.userName = StringUtils.abbreviate(userName, 40); this.dataType = StringUtils.abbreviate(dataType, 20); this.dataId = StringUtils.abbreviate(dataId, 36); this.dataOldVersionId = StringUtils.abbreviate(dataOldVersionId, 36); this.dataNewVersionId = StringUtils.abbreviate(dataNewVersionId, 36); this.dataLabel = StringUtils.abbreviate(dataLabel, 40); this.created = created; } public String getAuditLogEntryId() { return auditLogEntryId; } public String getEvent() { return event; } public String getComponentAddress() { return componentAddress; } public String getComponentType() { return componentType; } public String getUserAddress() { return userAddress; } public String getUserId() { return userId; } public String getUserName() { return userName; } public String getDataType() { return dataType; } public String getDataId() { return dataId; } public String getDataOldVersionId() { return dataOldVersionId; } public String getDataNewVersionId() { return dataNewVersionId; } public String getDataLabel() { return dataLabel; } public Date getCreated() { return created; } @Override public String toString() { final StringBuilder builder = new StringBuilder(); builder.append("Audit >>> "); if (userName != null) { builder.append(userName); } if (event != null) { if (builder.length() > 0) { builder.append(' '); } builder.append(event); } if (dataLabel != null) { if (builder.length() > 0) { builder.append(' '); } builder.append(dataLabel); builder.append('.'); } if (dataId != null) { if (builder.length() > 0) { builder.append(' '); } builder.append("ID: '"); builder.append(dataId); builder.append("' Type: '"); builder.append(dataType); builder.append("'"); } if (dataOldVersionId != null || dataNewVersionId != null) { if (builder.length() > 0) { builder.append(' '); } builder.append(" Versions: '"); builder.append(dataOldVersionId); builder.append("' -> '"); builder.append(dataNewVersionId); builder.append("'"); } return builder.toString(); } @Override public int hashCode() { return auditLogEntryId.hashCode(); } @Override public boolean equals(final Object obj) { return obj != null && obj instanceof Group && auditLogEntryId.equals(((Group) obj).getGroupId()); } }