package net.curisit.securis.db; import java.io.Serializable; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EntityManager; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import net.curisit.integrity.commons.Utils; 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; /** * Entity implementation class for Entity: pack * */ @JsonAutoDetect @JsonInclude(Include.NON_NULL) @Entity @Table(name = "blocked_request") @JsonIgnoreProperties(ignoreUnknown = true) public class BlockedRequest implements Serializable { private static final long serialVersionUID = 1L; @Id private String hash; @Column(name = "request_data") @JsonProperty("request_data") private String requestData; @Column(name = "creation_timestamp") @JsonProperty("creation_timestamp") private Date creationTimestamp; @JsonIgnore @ManyToOne @JoinColumn(name = "blocked_by") private User blockedBy; public Date getCreationTimestamp() { return creationTimestamp; } public void setCreationTimestamp(Date creationTimestamp) { this.creationTimestamp = creationTimestamp; } @Override public boolean equals(Object obj) { if (!(obj instanceof BlockedRequest)) return false; BlockedRequest other = (BlockedRequest) obj; return (hash == null && other.hash == null) || hash.equals(other.hash); } @Override public int hashCode() { return (hash == null ? 0 : hash.hashCode()); } public String getRequestData() { return requestData; } public void setRequestData(String requestData) { this.requestData = requestData; this.hash = generateHash(this.requestData); } public User getBlockedBy() { return blockedBy; } public void setBlockedBy(User blockedBy) { this.blockedBy = blockedBy; } public static String generateHash(String reqData) { return (reqData != null ? Utils.sha256(reqData) : null); } public static boolean isRequestBlocked(String requestData, EntityManager em) { String hash = generateHash(requestData); BlockedRequest br = em.find(BlockedRequest.class, hash); return br != null; } }