From c4d513ca26fe80946a5d90264de5d8e13e4ea974 Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Thu, 23 Oct 2014 17:21:24 +0000
Subject: [PATCH] #2021 feature - Added pack actions in server and in frontend
---
securis/src/main/java/net/curisit/securis/db/License.java | 64 ++++++++++++++++++++------------
1 files changed, 40 insertions(+), 24 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/db/License.java b/securis/src/main/java/net/curisit/securis/db/License.java
index e8ce296..037ccf5 100644
--- a/securis/src/main/java/net/curisit/securis/db/License.java
+++ b/securis/src/main/java/net/curisit/securis/db/License.java
@@ -16,11 +16,17 @@
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
+import javax.persistence.NonUniqueResultException;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.TypedQuery;
import net.curisit.integrity.commons.Utils;
+import net.curisit.securis.services.exception.SeCurisServiceException;
+import net.curisit.securis.services.exception.SeCurisServiceException.ErrorCodes;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonIgnore;
@@ -39,11 +45,13 @@
@JsonIgnoreProperties(ignoreUnknown = true)
@NamedQueries({
@NamedQuery(name = "list-licenses-by-pack", query = "SELECT l FROM License l where l.pack.id = :packId"),
+ @NamedQuery(name = "list-licenses-by-req-data", query = "SELECT l FROM License l where l.reqDataHash = :hash"),
@NamedQuery(name = "list-active-licenses-by-req-data", query = "SELECT l FROM License l where l.reqDataHash = :hash and l.status in ('AC', 'PA')")
})
public class License implements Serializable {
+ private static final long serialVersionUID = 2700310404904877227L;
- private static final long serialVersionUID = 1L;
+ private static final Logger LOG = LogManager.getLogger(License.class);
@Id
@GeneratedValue
@@ -63,8 +71,8 @@
@JsonIgnore
@ManyToOne
- @JoinColumn(name = "canceled_by")
- private User canceledBy;
+ @JoinColumn(name = "cancelled_by")
+ private User cancelledBy;
private LicenseStatus status;
@@ -78,6 +86,10 @@
@JsonProperty("request_data")
private String requestData;
+ /**
+ * request data hash is automatically set when we use
+ * {@link License#setRequestData(String)} method
+ */
@Column(name = "request_data_hash")
@JsonIgnore
private String reqDataHash;
@@ -158,18 +170,18 @@
}
}
- @JsonProperty("canceled_by_id")
- public String getCanceledById() {
- return canceledBy == null ? null : canceledBy.getUsername();
+ @JsonProperty("cancelled_by_id")
+ public String getCancelledById() {
+ return cancelledBy == null ? null : cancelledBy.getUsername();
}
- @JsonProperty("canceled_by_id")
- public void setCanceledById(String username) {
+ @JsonProperty("cancelled_by_id")
+ public void setCancelledById(String username) {
if (username == null) {
- canceledBy = null;
+ cancelledBy = null;
} else {
- canceledBy = new User();
- canceledBy.setUsername(username);
+ cancelledBy = new User();
+ cancelledBy.setUsername(username);
}
}
@@ -229,12 +241,12 @@
this.id = id;
}
- public User getCanceledBy() {
- return canceledBy;
+ public User getCancelledBy() {
+ return cancelledBy;
}
- public void setCanceledBy(User canceledBy) {
- this.canceledBy = canceledBy;
+ public void setCancelledBy(User cancelledBy) {
+ this.cancelledBy = cancelledBy;
}
public Date getLastAccessTimestamp() {
@@ -251,6 +263,7 @@
public void setRequestData(String requestData) {
this.requestData = requestData;
+ this.reqDataHash = BlockedRequest.generateHash(this.requestData);
}
public String getLicenseData() {
@@ -283,6 +296,10 @@
public void setExpirationDate(Date expirationDate) {
this.expirationDate = expirationDate;
+ }
+
+ public String getReqDataHash() {
+ return reqDataHash;
}
public static class Action {
@@ -323,17 +340,16 @@
}
}
- public License findLicenseByRequestData(String requestData, EntityManager em) {
+ public static License findLicenseByRequestData(String requestData, EntityManager em) throws SeCurisServiceException {
TypedQuery<License> query = em.createNamedQuery("list-active-licenses-by-req-data", License.class);
query.setParameter("hash", BlockedRequest.generateHash(requestData));
- return null;
+ try {
+ return query.getSingleResult();
+ } catch (NonUniqueResultException e) {
+ LOG.error("There are more than 1 active license for request data: {}\nHash: {}", requestData, BlockedRequest.generateHash(requestData));
+ throw new SeCurisServiceException(ErrorCodes.DUPLICATED_REQUEST_DATA, "There are more than 1 active license for request data hash: "
+ + BlockedRequest.generateHash(requestData));
+ }
}
- public String getReqDataHash() {
- return reqDataHash;
- }
-
- public void setReqDataHash(String reqDataHash) {
- this.reqDataHash = reqDataHash;
- }
}
--
Gitblit v1.3.2