From 1d9d7b5f03b3e7b6af5600574a0ae6053843b77b Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Tue, 28 Oct 2014 13:07:05 +0000
Subject: [PATCH] #2021 feature - Fixing pack cacnellation and deletion actions
---
securis/src/main/java/net/curisit/securis/services/PackResource.java | 35 +++++++++++++++++++++++++++--------
1 files changed, 27 insertions(+), 8 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/services/PackResource.java b/securis/src/main/java/net/curisit/securis/services/PackResource.java
index a3b65a9..cd18426 100644
--- a/securis/src/main/java/net/curisit/securis/services/PackResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/PackResource.java
@@ -12,6 +12,7 @@
import javax.persistence.TypedQuery;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
+import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
@@ -26,6 +27,8 @@
import net.curisit.integrity.commons.Utils;
import net.curisit.securis.DefaultExceptionHandler;
import net.curisit.securis.SeCurisException;
+import net.curisit.securis.db.License;
+import net.curisit.securis.db.LicenseStatus;
import net.curisit.securis.db.LicenseType;
import net.curisit.securis.db.Organization;
import net.curisit.securis.db.Pack;
@@ -36,6 +39,8 @@
import net.curisit.securis.security.Securable;
import net.curisit.securis.services.exception.SeCurisServiceException;
import net.curisit.securis.services.exception.SeCurisServiceException.ErrorCodes;
+import net.curisit.securis.services.helpers.LicenseHelper;
+import net.curisit.securis.services.helpers.UserHelper;
import net.curisit.securis.utils.TokenHelper;
import org.apache.logging.log4j.LogManager;
@@ -60,8 +65,11 @@
@Inject
Provider<EntityManager> emProvider;
- public PackResource() {
- }
+ @Inject
+ private UserHelper userHelper;
+
+ @Inject
+ private LicenseHelper licenseHelper;
/**
*
@@ -297,8 +305,9 @@
@Produces({
MediaType.APPLICATION_JSON
})
- public Response cancel(@PathParam("packId") Integer packId) throws SeCurisServiceException {
- LOG.info("Putting On hold pack with id: {}", packId);
+ public Response cancel(@PathParam("packId") Integer packId, @FormParam("reason") String reason, @Context BasicSecurityContext bsc)
+ throws SeCurisServiceException {
+ LOG.info("Cancelling pack with id: {}", packId);
EntityManager em = emProvider.get();
Pack currentPack = em.find(Pack.class, packId);
@@ -308,6 +317,12 @@
throw new SeCurisServiceException(ErrorCodes.WRONG_STATUS, "Pack cannot be cancelled in status: " + currentPack.getStatus().name());
}
+ Set<License> licenses = currentPack.getLicenses();
+ for (License license : licenses) {
+ if (license.getStatus() == LicenseStatus.ACTIVE || license.getStatus() == LicenseStatus.PRE_ACTIVE) {
+ licenseHelper.cancelLicense(license, "Pack cancellation. " + reason, bsc, em);
+ }
+ }
currentPack.setStatus(PackStatus.CANCELLED);
em.persist(currentPack);
@@ -334,7 +349,7 @@
@Produces({
MediaType.APPLICATION_JSON
})
- public Response delete(@PathParam("packId") String packId) {
+ public Response delete(@PathParam("packId") String packId) throws SeCurisServiceException {
LOG.info("Deleting pack with id: {}", packId);
EntityManager em = emProvider.get();
Pack pack = em.find(Pack.class, Integer.parseInt(packId));
@@ -343,10 +358,14 @@
return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Pack was not found, ID: " + packId)
.build();
}
- if (pack.getMetadata() != null) {
- for (PackMetadata md : pack.getMetadata()) {
- em.remove(md);
+ // Pack metadata is removed in cascade automatically.
+
+ Set<License> licenses = pack.getLicenses();
+ for (License license : licenses) {
+ if (license.getStatus() == LicenseStatus.ACTIVE || license.getStatus() == LicenseStatus.PRE_ACTIVE) {
+ throw new SeCurisServiceException(ErrorCodes.WRONG_STATUS, "An active license cannot be deleted. License code: " + license.getCode());
}
+ em.remove(license);
}
em.remove(pack);
--
Gitblit v1.3.2