From 1ed7bc42993b3d23d92dfc38dfd34026a4619ae7 Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Mon, 05 Dec 2016 15:23:22 +0000
Subject: [PATCH] #3410 #3411 fix - Fixed user roles and organizations and Pack date fields on saving action
---
securis/src/main/java/net/curisit/securis/services/PackResource.java | 642 ++++++++++++++++++++++++++++------------------------------
1 files changed, 311 insertions(+), 331 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 2c677b3..4bdf7f6 100644
--- a/securis/src/main/java/net/curisit/securis/services/PackResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/PackResource.java
@@ -24,6 +24,9 @@
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
import net.curisit.integrity.commons.Utils;
import net.curisit.securis.DefaultExceptionHandler;
import net.curisit.securis.SeCurisException;
@@ -44,9 +47,6 @@
import net.curisit.securis.utils.LicUtils;
import net.curisit.securis.utils.TokenHelper;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
/**
* Pack resource, this service will provide methods to create, modify and delete
* packs
@@ -56,383 +56,363 @@
@Path("/pack")
public class PackResource {
- private static final Logger LOG = LogManager.getLogger(PackResource.class);
+ private static final Logger LOG = LogManager.getLogger(PackResource.class);
- @Inject
- TokenHelper tokenHelper;
+ @Inject
+ TokenHelper tokenHelper;
- @Context
- EntityManager em;
+ @Context
+ EntityManager em;
- @Inject
- private LicenseHelper licenseHelper;
+ @Inject
+ private LicenseHelper licenseHelper;
- /**
- *
- * @return the server version in format majorVersion.minorVersion
- */
- @GET
- @Path("/")
- @Securable
- @Produces({
- MediaType.APPLICATION_JSON
- })
- public Response index(@Context BasicSecurityContext bsc) {
- LOG.info("Getting packs list ");
+ /**
+ *
+ * @return the server version in format majorVersion.minorVersion
+ */
+ @GET
+ @Path("/")
+ @Securable
+ @Produces({ MediaType.APPLICATION_JSON })
+ public Response index(@Context BasicSecurityContext bsc) {
+ LOG.info("Getting packs list ");
- // EntityManager em = emProvider.get();
- em.clear();
+ // EntityManager em = emProvider.get();
+ em.clear();
- TypedQuery<Pack> q;
- if (bsc.isUserInRole(BasicSecurityContext.ROL_ADMIN)) {
- LOG.info("Getting all packs for user: " + bsc.getUserPrincipal());
- q = em.createNamedQuery("list-packs", Pack.class);
- } else {
- q = em.createNamedQuery("list-packs-by-orgs", Pack.class);
- if (bsc.getOrganizationsIds() == null) {
- Response.ok().build();
- }
- q.setParameter("list_ids", bsc.getOrganizationsIds());
- }
+ TypedQuery<Pack> q;
+ if (bsc.isUserInRole(BasicSecurityContext.ROL_ADMIN)) {
+ LOG.info("Getting all packs for user: " + bsc.getUserPrincipal());
+ q = em.createNamedQuery("list-packs", Pack.class);
+ } else {
+ q = em.createNamedQuery("list-packs-by-orgs", Pack.class);
+ if (bsc.getOrganizationsIds() == null) {
+ Response.ok().build();
+ }
+ q.setParameter("list_ids", bsc.getOrganizationsIds());
+ }
- List<Pack> list = q.getResultList();
+ List<Pack> list = q.getResultList();
- return Response.ok(list).build();
- }
+ return Response.ok(list).build();
+ }
- private Response generateErrorUnathorizedAccess(Pack pack, Principal user) {
- LOG.error("Pack with id {} not accesible by user {}", pack, user);
- return Response.status(Status.UNAUTHORIZED).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Unathorized access to pack").build();
- }
+ private Response generateErrorUnathorizedAccess(Pack pack, Principal user) {
+ LOG.error("Pack with id {} not accesible by user {}", pack, user);
+ return Response.status(Status.UNAUTHORIZED).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Unathorized access to pack").build();
+ }
- /**
- *
- * @return the server version in format majorVersion.minorVersion
- */
- @GET
- @Path("/{packId}")
- @Securable
- @Produces({
- MediaType.APPLICATION_JSON
- })
- public Response get(@PathParam("packId") Integer packId, @Context BasicSecurityContext bsc) {
- LOG.info("Getting pack data for id: {}: ", packId);
- if (packId == null || "".equals(packId)) {
- LOG.error("Pack ID is mandatory");
- return Response.status(Status.NOT_FOUND).build();
- }
+ /**
+ *
+ * @return the server version in format majorVersion.minorVersion
+ */
+ @GET
+ @Path("/{packId}")
+ @Securable
+ @Produces({ MediaType.APPLICATION_JSON })
+ public Response get(@PathParam("packId") Integer packId, @Context BasicSecurityContext bsc) {
+ LOG.info("Getting pack data for id: {}: ", packId);
+ if (packId == null || "".equals(packId)) {
+ LOG.error("Pack ID is mandatory");
+ return Response.status(Status.NOT_FOUND).build();
+ }
- // EntityManager em = emProvider.get();
- em.clear();
- Pack pack = em.find(Pack.class, packId);
- if (pack == null) {
- LOG.error("Pack with id {} not found in DB", packId);
- return Response.status(Status.NOT_FOUND).build();
- }
- if (bsc.isUserInRole(BasicSecurityContext.ROL_ADVANCE)
- && (bsc.getOrganizationsIds() == null || !bsc.getOrganizationsIds().contains(pack.getOrgId()))) {
- return generateErrorUnathorizedAccess(pack, bsc.getUserPrincipal());
- }
- return Response.ok(pack).build();
- }
+ // EntityManager em = emProvider.get();
+ em.clear();
+ Pack pack = em.find(Pack.class, packId);
+ if (pack == null) {
+ LOG.error("Pack with id {} not found in DB", packId);
+ return Response.status(Status.NOT_FOUND).build();
+ }
+ if (bsc.isUserInRole(BasicSecurityContext.ROL_ADVANCE) && (bsc.getOrganizationsIds() == null || !bsc.getOrganizationsIds().contains(pack.getOrgId()))) {
+ return generateErrorUnathorizedAccess(pack, bsc.getUserPrincipal());
+ }
+ return Response.ok(pack).build();
+ }
- @POST
- @Path("/")
- @Securable
- @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
- @Consumes(MediaType.APPLICATION_JSON)
- @Produces({
- MediaType.APPLICATION_JSON
- })
- @EnsureTransaction
- public Response create(Pack pack, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
- LOG.info("Creating new pack");
- // EntityManager em = emProvider.get();
+ @POST
+ @Path("/")
+ @Securable
+ @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces({ MediaType.APPLICATION_JSON })
+ @EnsureTransaction
+ public Response create(Pack pack, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
+ LOG.info("Creating new pack");
+ // EntityManager em = emProvider.get();
- if (checkIfCodeExists(pack.getCode(), em)) {
- throw new SeCurisServiceException(ErrorCodes.INVALID_DATA, "The pack code is already used in an existing pack");
- }
+ if (checkIfCodeExists(pack.getCode(), em)) {
+ throw new SeCurisServiceException(ErrorCodes.INVALID_DATA, "The pack code is already used in an existing pack");
+ }
- try {
- setPackOrganization(pack, pack.getOrgId(), em);
- } catch (SeCurisException e) {
- return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
- }
+ try {
+ setPackOrganization(pack, pack.getOrgId(), em);
+ } catch (SeCurisException e) {
+ return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
+ }
- try {
- setPackLicenseType(pack, pack.getLicTypeId(), em);
- } catch (SeCurisException e) {
- return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
- }
+ try {
+ setPackLicenseType(pack, pack.getLicTypeId(), em);
+ } catch (SeCurisException e) {
+ return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
+ }
- User user = em.find(User.class, bsc.getUserPrincipal().getName());
+ User user = em.find(User.class, bsc.getUserPrincipal().getName());
- pack.setStatus(PackStatus.CREATED);
- pack.setCreatedBy(user);
- pack.setCreationTimestamp(new Date());
- em.persist(pack);
- Set<PackMetadata> newMD = pack.getMetadata();
+ pack.setStatus(PackStatus.CREATED);
+ pack.setCreatedBy(user);
+ pack.setCreationTimestamp(new Date());
+ em.persist(pack);
+ Set<PackMetadata> newMD = pack.getMetadata();
- if (newMD != null) {
- for (PackMetadata md : newMD) {
- md.setPack(pack);
- em.persist(md);
- }
- }
- pack.setMetadata(newMD);
- return Response.ok(pack).build();
- }
+ if (newMD != null) {
+ for (PackMetadata md : newMD) {
+ md.setPack(pack);
+ em.persist(md);
+ }
+ }
+ pack.setMetadata(newMD);
+ return Response.ok(pack).build();
+ }
- /**
- * Check if there is some pack with the same code
- *
- * @param code
- * Pack code
- * @param em
- * DB session object
- * @return <code>true</code> if code is already used, <code>false</code>
- * otherwise
- */
- private boolean checkIfCodeExists(String code, EntityManager em) {
- TypedQuery<Pack> query = em.createNamedQuery("pack-by-code", Pack.class);
- query.setParameter("code", code);
- int packs = query.getResultList().size();
- return packs > 0;
- }
+ /**
+ * Check if there is some pack with the same code
+ *
+ * @param code
+ * Pack code
+ * @param em
+ * DB session object
+ * @return <code>true</code> if code is already used, <code>false</code>
+ * otherwise
+ */
+ private boolean checkIfCodeExists(String code, EntityManager em) {
+ TypedQuery<Pack> query = em.createNamedQuery("pack-by-code", Pack.class);
+ query.setParameter("code", code);
+ int packs = query.getResultList().size();
+ return packs > 0;
+ }
- /**
- *
- * @return The next available code suffix in pack for license code
- * @throws SeCurisServiceException
- */
- @GET
- @Path("/{packId}/next_license_code")
- @Securable
- @Produces({
- MediaType.TEXT_PLAIN
- })
- public Response getCodeSuffix(@PathParam("packId") Integer packId, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
- // EntityManager em = emProvider.get();
+ /**
+ *
+ * @return The next available code suffix in pack for license code
+ * @throws SeCurisServiceException
+ */
+ @GET
+ @Path("/{packId}/next_license_code")
+ @Securable
+ @Produces({ MediaType.TEXT_PLAIN })
+ public Response getCodeSuffix(@PathParam("packId") Integer packId, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
+ // EntityManager em = emProvider.get();
- if (packId == null) {
- throw new SeCurisServiceException(ErrorCodes.INVALID_DATA, "The pack code is mandatory");
- }
- Integer codeSuffix = licenseHelper.getNextCodeSuffix(packId, em);
- Pack pack = em.find(Pack.class, packId);
- ;
+ if (packId == null) {
+ throw new SeCurisServiceException(ErrorCodes.INVALID_DATA, "The pack code is mandatory");
+ }
+ Integer codeSuffix = licenseHelper.getNextCodeSuffix(packId, em);
+ Pack pack = em.find(Pack.class, packId);
+ ;
- String licCode = LicUtils.getLicenseCode(pack.getCode(), codeSuffix);
- return Response.ok(licCode).build();
- }
+ String licCode = LicUtils.getLicenseCode(pack.getCode(), codeSuffix);
+ return Response.ok(licCode).build();
+ }
- private void setPackLicenseType(Pack pack, Integer licTypeId, EntityManager em) throws SeCurisException {
- LicenseType lt = null;
- if (licTypeId != null) {
- lt = em.find(LicenseType.class, pack.getLicTypeId());
- if (lt == null) {
- LOG.error("Pack license type with id {} not found in DB", licTypeId);
- throw new SeCurisException("Pack license type not found with ID: " + licTypeId);
- }
- }
- pack.setLicenseType(lt);
- }
+ private void setPackLicenseType(Pack pack, Integer licTypeId, EntityManager em) throws SeCurisException {
+ LicenseType lt = null;
+ if (licTypeId != null) {
+ lt = em.find(LicenseType.class, pack.getLicTypeId());
+ if (lt == null) {
+ LOG.error("Pack license type with id {} not found in DB", licTypeId);
+ throw new SeCurisException("Pack license type not found with ID: " + licTypeId);
+ }
+ }
+ pack.setLicenseType(lt);
+ }
- private Set<String> getMdKeys(Set<PackMetadata> mds) {
- Set<String> ids = new HashSet<String>();
- if (mds != null) {
- for (PackMetadata md : mds) {
- ids.add(md.getKey());
- }
- }
- return ids;
- }
+ private Set<String> getMdKeys(Set<PackMetadata> mds) {
+ Set<String> ids = new HashSet<String>();
+ if (mds != null) {
+ for (PackMetadata md : mds) {
+ ids.add(md.getKey());
+ }
+ }
+ return ids;
+ }
- @PUT
- @POST
- @Path("/{packId}")
- @EnsureTransaction
- @Securable
- @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
- @Consumes(MediaType.APPLICATION_JSON)
- @Produces({
- MediaType.APPLICATION_JSON
- })
- public Response modify(Pack pack, @PathParam("packId") Integer packId) {
- LOG.info("Modifying pack with id: {}", packId);
- // EntityManager em = emProvider.get();
- Pack currentPack = em.find(Pack.class, packId);
+ @PUT
+ @POST
+ @Path("/{packId}")
+ @EnsureTransaction
+ @Securable
+ @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces({ MediaType.APPLICATION_JSON })
+ public Response modify(Pack pack, @PathParam("packId") Integer packId) {
+ LOG.info("Modifying pack with id: {}", packId);
+ // EntityManager em = emProvider.get();
+ Pack currentPack = em.find(Pack.class, packId);
- try {
- setPackOrganization(currentPack, pack.getOrgId(), em);
- } catch (SeCurisException e) {
- return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
- }
+ try {
+ setPackOrganization(currentPack, pack.getOrgId(), em);
+ } catch (SeCurisException e) {
+ return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
+ }
- try {
- setPackLicenseType(currentPack, pack.getLicTypeId(), em);
- } catch (SeCurisException e) {
- return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
- }
+ try {
+ setPackLicenseType(currentPack, pack.getLicTypeId(), em);
+ } catch (SeCurisException e) {
+ return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
+ }
- currentPack.setLicensePreactivation(pack.isLicensePreactivation());
- currentPack.setCode(pack.getCode());
- currentPack.setComments(pack.getComments());
- currentPack.setNumLicenses(pack.getNumLicenses());
- currentPack.setPreactivationValidPeriod(pack.getPreactivationValidPeriod());
- currentPack.setRenewValidPeriod(pack.getRenewValidPeriod());
+ currentPack.setLicensePreactivation(pack.isLicensePreactivation());
+ currentPack.setCode(pack.getCode());
+ currentPack.setComments(pack.getComments());
+ currentPack.setNumLicenses(pack.getNumLicenses());
+ currentPack.setPreactivationValidPeriod(pack.getPreactivationValidPeriod());
+ currentPack.setRenewValidPeriod(pack.getRenewValidPeriod());
+ currentPack.setInitValidDate(pack.getInitValidDate());
+ currentPack.setEndValidDate(pack.getEndValidDate());
- Set<PackMetadata> newMD = pack.getMetadata();
- Set<String> newMdKeys = getMdKeys(newMD);
- for (PackMetadata currentMd : currentPack.getMetadata()) {
- if (!newMdKeys.contains(currentMd.getKey())) {
- em.remove(currentMd);
- }
- }
+ Set<PackMetadata> newMD = pack.getMetadata();
+ Set<String> newMdKeys = getMdKeys(newMD);
+ for (PackMetadata currentMd : currentPack.getMetadata()) {
+ if (!newMdKeys.contains(currentMd.getKey())) {
+ em.remove(currentMd);
+ }
+ }
- if (newMD != null) {
- Set<PackMetadata> oldMD = currentPack.getMetadata();
- Set<String> oldMdKeys = getMdKeys(newMD);
- for (PackMetadata md : newMD) {
- if (oldMdKeys.contains(md.getKey())) {
- em.merge(md);
- } else {
- md.setPack(currentPack);
- em.persist(md);
- }
- }
- }
- currentPack.setMetadata(newMD);
- em.merge(currentPack);
+ if (newMD != null) {
+ Set<String> oldMdKeys = getMdKeys(newMD);
+ for (PackMetadata md : newMD) {
+ if (oldMdKeys.contains(md.getKey())) {
+ em.merge(md);
+ } else {
+ md.setPack(currentPack);
+ em.persist(md);
+ }
+ }
+ }
+ currentPack.setMetadata(newMD);
+ em.merge(currentPack);
- return Response.ok(currentPack).build();
- }
+ return Response.ok(currentPack).build();
+ }
- @POST
- @Path("/{packId}/activate")
- @EnsureTransaction
- @Securable
- @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
- @Consumes(MediaType.APPLICATION_JSON)
- @Produces({
- MediaType.APPLICATION_JSON
- })
- public Response activate(@PathParam("packId") Integer packId) throws SeCurisServiceException {
- LOG.info("Activating pack with id: {}", packId);
- // EntityManager em = emProvider.get();
+ @POST
+ @Path("/{packId}/activate")
+ @EnsureTransaction
+ @Securable
+ @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces({ MediaType.APPLICATION_JSON })
+ public Response activate(@PathParam("packId") Integer packId) throws SeCurisServiceException {
+ LOG.info("Activating pack with id: {}", packId);
+ // EntityManager em = emProvider.get();
- Pack currentPack = em.find(Pack.class, packId);
+ Pack currentPack = em.find(Pack.class, packId);
- if (!Pack.Status.isActionValid(Pack.Action.ACTIVATION, currentPack.getStatus())) {
- LOG.error("Pack with id {} cannot be activaed from status {}", packId, currentPack.getStatus().name());
- throw new SeCurisServiceException(ErrorCodes.WRONG_STATUS, "Pack cannot be activated in status: " + currentPack.getStatus().name());
- }
+ if (!Pack.Status.isActionValid(Pack.Action.ACTIVATION, currentPack.getStatus())) {
+ LOG.error("Pack with id {} cannot be activaed from status {}", packId, currentPack.getStatus().name());
+ throw new SeCurisServiceException(ErrorCodes.WRONG_STATUS, "Pack cannot be activated in status: " + currentPack.getStatus().name());
+ }
- currentPack.setStatus(PackStatus.ACTIVE);
- em.persist(currentPack);
+ currentPack.setStatus(PackStatus.ACTIVE);
+ em.persist(currentPack);
- return Response.ok(currentPack).build();
- }
+ return Response.ok(currentPack).build();
+ }
- @POST
- @Path("/{packId}/putonhold")
- @EnsureTransaction
- @Securable
- @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
- @Consumes(MediaType.APPLICATION_JSON)
- @Produces({
- MediaType.APPLICATION_JSON
- })
- public Response onhold(@PathParam("packId") Integer packId) throws SeCurisServiceException {
- LOG.info("Putting On hold pack with id: {}", packId);
- // EntityManager em = emProvider.get();
+ @POST
+ @Path("/{packId}/putonhold")
+ @EnsureTransaction
+ @Securable
+ @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces({ MediaType.APPLICATION_JSON })
+ public Response onhold(@PathParam("packId") Integer packId) throws SeCurisServiceException {
+ LOG.info("Putting On hold pack with id: {}", packId);
+ // EntityManager em = emProvider.get();
- Pack currentPack = em.find(Pack.class, packId);
+ Pack currentPack = em.find(Pack.class, packId);
- if (!Pack.Status.isActionValid(Pack.Action.PUT_ONHOLD, currentPack.getStatus())) {
- LOG.error("Pack with id {} cannot be put on hold from status {}", packId, currentPack.getStatus().name());
- throw new SeCurisServiceException(ErrorCodes.WRONG_STATUS, "Pack cannot be put on hold in status: " + currentPack.getStatus().name());
- }
+ if (!Pack.Status.isActionValid(Pack.Action.PUT_ONHOLD, currentPack.getStatus())) {
+ LOG.error("Pack with id {} cannot be put on hold from status {}", packId, currentPack.getStatus().name());
+ throw new SeCurisServiceException(ErrorCodes.WRONG_STATUS, "Pack cannot be put on hold in status: " + currentPack.getStatus().name());
+ }
- currentPack.setStatus(PackStatus.ON_HOLD);
- em.persist(currentPack);
+ currentPack.setStatus(PackStatus.ON_HOLD);
+ em.persist(currentPack);
- return Response.ok(currentPack).build();
- }
+ return Response.ok(currentPack).build();
+ }
- @POST
- @Path("/{packId}/cancel")
- @EnsureTransaction
- @Securable
- @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
- @Consumes(MediaType.APPLICATION_JSON)
- @Produces({
- MediaType.APPLICATION_JSON
- })
- 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();
+ @POST
+ @Path("/{packId}/cancel")
+ @EnsureTransaction
+ @Securable
+ @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces({ MediaType.APPLICATION_JSON })
+ 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);
+ Pack currentPack = em.find(Pack.class, packId);
- if (!Pack.Status.isActionValid(Pack.Action.CANCEL, currentPack.getStatus())) {
- LOG.error("Pack with id {} cannot cancelled from status {}", packId, currentPack.getStatus().name());
- throw new SeCurisServiceException(ErrorCodes.WRONG_STATUS, "Pack cannot be cancelled in status: " + currentPack.getStatus().name());
- }
+ if (!Pack.Status.isActionValid(Pack.Action.CANCEL, currentPack.getStatus())) {
+ LOG.error("Pack with id {} cannot cancelled from status {}", packId, currentPack.getStatus().name());
+ 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);
+ 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);
- return Response.ok(currentPack).build();
- }
+ return Response.ok(currentPack).build();
+ }
- private void setPackOrganization(Pack currentPack, Integer orgId, EntityManager em) throws SeCurisException {
- Organization org = null;
- if (orgId != null) {
- org = em.find(Organization.class, orgId);
- if (org == null) {
- LOG.error("Organization pack with id {} not found in DB", orgId);
- throw new SeCurisException("Pack organization not found with ID: " + orgId);
- }
- }
- currentPack.setOrganization(org);
- }
+ private void setPackOrganization(Pack currentPack, Integer orgId, EntityManager em) throws SeCurisException {
+ Organization org = null;
+ if (orgId != null) {
+ org = em.find(Organization.class, orgId);
+ if (org == null) {
+ LOG.error("Organization pack with id {} not found in DB", orgId);
+ throw new SeCurisException("Pack organization not found with ID: " + orgId);
+ }
+ }
+ currentPack.setOrganization(org);
+ }
- @DELETE
- @Path("/{packId}")
- @Securable
- @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
- @EnsureTransaction
- @Produces({
- MediaType.APPLICATION_JSON
- })
- 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));
- if (pack == null) {
- LOG.error("Pack with id {} can not be deleted, It was not found in DB", packId);
- return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Pack was not found, ID: " + packId)
- .build();
- }
- // Pack metadata is removed in cascade automatically.
+ @DELETE
+ @Path("/{packId}")
+ @Securable
+ @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
+ @EnsureTransaction
+ @Produces({ MediaType.APPLICATION_JSON })
+ 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));
+ if (pack == null) {
+ LOG.error("Pack with id {} can not be deleted, It was not found in DB", packId);
+ return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Pack was not found, ID: " + packId).build();
+ }
+ // 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);
- }
+ 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);
- return Response.ok(Utils.createMap("success", true, "id", packId)).build();
- }
+ em.remove(pack);
+ return Response.ok(Utils.createMap("success", true, "id", packId)).build();
+ }
}
--
Gitblit v1.3.2