From c8eb07e8dc020346aaee0d859040ccabb79349bd Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Fri, 17 Jan 2014 12:26:05 +0000
Subject: [PATCH] #395 feature - Changes in REST API for license system
---
securis/src/main/java/net/curisit/securis/db/License.java | 189 +++++++++++++++++++++++++++----
securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java | 7
securis/src/main/java/net/curisit/securis/services/UserResource.java | 2
securis/src/main/java/net/curisit/securis/db/LicenseType.java | 9 +
securis/src/main/java/net/curisit/securis/db/Pack.java | 99 ++++++++++++++++
5 files changed, 276 insertions(+), 30 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 fb4ce46..6ef4659 100644
--- a/securis/src/main/java/net/curisit/securis/db/License.java
+++ b/securis/src/main/java/net/curisit/securis/db/License.java
@@ -14,6 +14,8 @@
import javax.persistence.Table;
import org.codehaus.jackson.annotate.JsonAutoDetect;
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonSerialize;
/**
@@ -36,22 +38,45 @@
private String code;
- @Column(name = "creation_timestamp")
- private Date creationTimestamp;
-
- @ManyToOne
- @JoinColumn(name = "organization_id")
- private Organization organization;
-
+ @JsonIgnore
@ManyToOne
@JoinColumn(name = "pack_id")
private Pack pack;
+ @JsonIgnore
@ManyToOne
@JoinColumn(name = "created_by")
private User createdBy;
- private int numLicenses;
+ @JsonIgnore
+ @ManyToOne
+ @JoinColumn(name = "canceled_by")
+ private User canceledBy;
+
+ private int status;
+
+ @JoinColumn(name = "full_name")
+ private String fullName;
+
+ private String email;
+
+ @Column(name = "creation_timestamp")
+ private Date creationTimestamp;
+
+ @Column(name = "modification_timestamp")
+ private Date modificationTimestamp;
+
+ @Column(name = "activation_timestamp")
+ private Date activationTimestamp;
+
+ @Column(name = "cancelation_timestamp")
+ private Date cancelationTimestamp;
+
+ @Column(name = "send_timestamp")
+ private Date sendTimestamp;
+
+ @Column(name = "last_access_timestamp")
+ private Date lastAccessTimestamp;
public int getId() {
return id;
@@ -73,28 +98,12 @@
this.creationTimestamp = creationTimestamp;
}
- public Organization getOrganization() {
- return organization;
- }
-
- public void setOrganization(Organization organization) {
- this.organization = organization;
- }
-
public User getCreatedBy() {
return createdBy;
}
public void setCreatedBy(User createdBy) {
this.createdBy = createdBy;
- }
-
- public int getNumLicenses() {
- return numLicenses;
- }
-
- public void setNumLicenses(int numLicenses) {
- this.numLicenses = numLicenses;
}
public Pack getPack() {
@@ -105,4 +114,136 @@
this.pack = pack;
}
+ @JsonProperty("created_by_id")
+ public String getCreatedById() {
+ return createdBy == null ? null : createdBy.getUsername();
+ }
+
+ @JsonProperty("created_by_id")
+ public void setCreatedById(String username) {
+ if (username == null) {
+ createdBy = null;
+ } else {
+ createdBy = new User();
+ createdBy.setUsername(username);
+ }
+ }
+
+ @JsonProperty("canceled_by_id")
+ public String getCanceledById() {
+ return canceledBy == null ? null : canceledBy.getUsername();
+ }
+
+ @JsonProperty("canceled_by_id")
+ public void setCanceledById(String username) {
+ if (username == null) {
+ canceledBy = null;
+ } else {
+ canceledBy = new User();
+ canceledBy.setUsername(username);
+ }
+ }
+
+ @JsonProperty("pack_code")
+ public String getLicenseTypcode() {
+ return pack == null ? null : pack.getCode();
+ }
+
+ @JsonProperty("pack_id")
+ public Integer getOrgId() {
+ return pack == null ? null : pack.getId();
+ }
+
+ @JsonProperty("pack_id")
+ public void setOrgId(Integer idPack) {
+ if (idPack == null) {
+ pack = null;
+ } else {
+ pack = new Pack();
+ pack.setId(idPack);
+ }
+ }
+
+ public int getStatus() {
+ return status;
+ }
+
+ public void setStatus(int status) {
+ this.status = status;
+ }
+
+ public Date getModificationTimestamp() {
+ return modificationTimestamp;
+ }
+
+ public void setModificationTimestamp(Date modificationTimestamp) {
+ this.modificationTimestamp = modificationTimestamp;
+ }
+
+ public String getFullName() {
+ return fullName;
+ }
+
+ public void setFullName(String fullName) {
+ this.fullName = fullName;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public Date getActivationTimestamp() {
+ return activationTimestamp;
+ }
+
+ public void setActivationTimestamp(Date activationTimestamp) {
+ this.activationTimestamp = activationTimestamp;
+ }
+
+ public Date getSendTimestamp() {
+ return sendTimestamp;
+ }
+
+ public void setSendTimestamp(Date sendTimestamp) {
+ this.sendTimestamp = sendTimestamp;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public User getCanceledBy() {
+ return canceledBy;
+ }
+
+ public void setCanceledBy(User canceledBy) {
+ this.canceledBy = canceledBy;
+ }
+
+ public Date getCancelationTimestamp() {
+ return cancelationTimestamp;
+ }
+
+ public void setCancelationTimestamp(Date cancelationTimestamp) {
+ this.cancelationTimestamp = cancelationTimestamp;
+ }
+
+ public Date getLastAccessTimestamp() {
+ return lastAccessTimestamp;
+ }
+
+ public void setLastAccessTimestamp(Date lastAccessTimestamp) {
+ this.lastAccessTimestamp = lastAccessTimestamp;
+ }
+
+ public static class Status {
+ public static final int CREATED = 0;
+ public static final int SENT = 1;
+ public static final int ACTIVE = 2;
+ public static final int CANCELED = 3;
+ }
}
diff --git a/securis/src/main/java/net/curisit/securis/db/LicenseType.java b/securis/src/main/java/net/curisit/securis/db/LicenseType.java
index a805a98..ecc0253 100644
--- a/securis/src/main/java/net/curisit/securis/db/LicenseType.java
+++ b/securis/src/main/java/net/curisit/securis/db/LicenseType.java
@@ -14,6 +14,7 @@
import javax.persistence.Table;
import org.codehaus.jackson.annotate.JsonAutoDetect;
+import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonSerialize;
@@ -30,7 +31,7 @@
@Entity
@Table(name = "license_type")
@NamedQueries(
- { @NamedQuery(name = "list-license_types", query = "SELECT new map(lt.id as id, lt.code as code, lt.name as name, lt.description as description, lt.creationTimestamp as creationTimestamp, ap.id as application_id, ap.name as application_name) FROM LicenseType lt inner join lt.application ap") })
+ { @NamedQuery(name = "list-license_types", query = "SELECT lt FROM LicenseType lt") })
public class LicenseType implements Serializable {
private static final Logger log = LoggerFactory.getLogger(LicenseType.class);
@@ -47,6 +48,7 @@
@Column(name = "creation_timestamp")
private Date creationTimestamp;
+ @JsonIgnore
@ManyToOne
@JoinColumn(name = "application_id")
private Application application;
@@ -83,6 +85,11 @@
return application;
}
+ @JsonProperty("application_name")
+ public String getParentOrgName() {
+ return application == null ? null : application.getName();
+ }
+
@JsonProperty("application_id")
public Integer getApplicationId() {
log.info("application " + application);
diff --git a/securis/src/main/java/net/curisit/securis/db/Pack.java b/securis/src/main/java/net/curisit/securis/db/Pack.java
index 4c93f08..39e99ab 100644
--- a/securis/src/main/java/net/curisit/securis/db/Pack.java
+++ b/securis/src/main/java/net/curisit/securis/db/Pack.java
@@ -17,6 +17,8 @@
import javax.persistence.Table;
import org.codehaus.jackson.annotate.JsonAutoDetect;
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonSerialize;
/**
@@ -42,25 +44,34 @@
@Column(name = "creation_timestamp")
private Date creationTimestamp;
+ @JsonIgnore
@ManyToOne
@JoinColumn(name = "organization_id")
private Organization organization;
+ @JsonIgnore
@ManyToOne
@JoinColumn(name = "license_type_id")
private LicenseType licenseType;
+ @JsonIgnore
@ManyToOne
@JoinColumn(name = "created_by")
private User createdBy;
+ @JsonIgnore
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "pack")
private Set<License> licenses;
+ @JoinColumn(name = "num_licenses")
private int numLicenses;
public int getId() {
return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
}
public String getCode() {
@@ -111,4 +122,92 @@
this.numLicenses = numLicenses;
}
+ @JsonProperty("num_activations")
+ public int getNumActivations() {
+ if (licenses == null)
+ return 0;
+ int num = 0;
+ for (License lic : licenses) {
+ if (lic.getStatus() == License.Status.ACTIVE)
+ num++;
+ }
+ return num;
+ }
+
+ /**
+ * Counts all created licenses, It counts active licenses and licenses waiting for activation This number will be used to control the max number of licenses created. Ignore canceled licenses.
+ *
+ * @return
+ */
+ @JsonProperty("num_creations")
+ public int getNumCreations() {
+ if (licenses == null)
+ return 0;
+ int num = 0;
+ for (License lic : licenses) {
+ if (lic.getStatus() != License.Status.CANCELED)
+ num++;
+ }
+ return num;
+ }
+
+ /**
+ * Number of available licenses in this pack
+ *
+ * @return
+ */
+ @JsonProperty("num_available")
+ public int getNumAvailables() {
+ return numLicenses - getNumCreations();
+ }
+
+ @JsonProperty("organization_name")
+ public String getOrgName() {
+ return organization == null ? null : organization.getName();
+ }
+
+ @JsonProperty("application_name")
+ public String getAppName() {
+ if (licenseType == null)
+ return null;
+ Application app = licenseType.getApplication();
+ return app == null ? null : app.getName();
+ }
+
+ @JsonProperty("organization_id")
+ public Integer getOrgId() {
+ return organization == null ? null : organization.getId();
+ }
+
+ @JsonProperty("organization_id")
+ public void setOrgId(Integer idOrg) {
+ if (idOrg == null) {
+ organization = null;
+ } else {
+ organization = new Organization();
+ organization.setId(idOrg);
+ }
+ }
+
+ @JsonProperty("license_type_id")
+ public Integer getLicTypeId() {
+ return licenseType == null ? null : licenseType.getId();
+ }
+
+ @JsonProperty("created_by_id")
+ public String getCreatedById() {
+ return createdBy == null ? null : createdBy.getUsername();
+ }
+
+ @JsonProperty("created_by_id")
+ public void setCreatedById(String username) {
+ createdBy = new User();
+ createdBy.setUsername(username);
+ }
+
+ @JsonProperty("licensetype_code")
+ public String getLicenseTypcode() {
+ return licenseType == null ? null : licenseType.getCode();
+ }
+
}
diff --git a/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java b/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
index e805b47..5179ff6 100644
--- a/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
@@ -6,7 +6,7 @@
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
-import javax.persistence.Query;
+import javax.persistence.TypedQuery;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
@@ -64,9 +64,8 @@
log.info("Getting license types list ");
EntityManager em = emProvider.get();
- Query q = em.createNamedQuery("list-license_types");
- @SuppressWarnings("unchecked")
- List<Object> list = q.getResultList();
+ TypedQuery<LicenseType> q = em.createNamedQuery("list-license_types", LicenseType.class);
+ List<LicenseType> list = q.getResultList();
return Response.ok(list).build();
}
diff --git a/securis/src/main/java/net/curisit/securis/services/UserResource.java b/securis/src/main/java/net/curisit/securis/services/UserResource.java
index 28fab1d..0b5e208 100644
--- a/securis/src/main/java/net/curisit/securis/services/UserResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/UserResource.java
@@ -208,7 +208,7 @@
request.getSession().setAttribute("username", user);
if ("no".equals(password))
- return Response.status(Status.FORBIDDEN).build();
+ return Response.status(Status.UNAUTHORIZED).build();
String tokenAuth = tokenHelper.generateToken(user);
return Response.ok(Utils.createMap("success", true, "token", tokenAuth)).build();
}
--
Gitblit v1.3.2