From 59cdd2b7ebceae94fbecdb1eeb46a969666dc88f Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Fri, 10 Jan 2014 12:25:27 +0000
Subject: [PATCH] #394 feature - Added all catalog resources with refereced fields

---
 securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java |   49 ++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 36 insertions(+), 13 deletions(-)

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 87b1c37..b229507 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.TypedQuery;
+import javax.persistence.Query;
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
@@ -23,6 +23,8 @@
 import javax.ws.rs.core.Response.Status;
 
 import net.curisit.integrity.commons.Utils;
+import net.curisit.securis.SecurisErrorHandler;
+import net.curisit.securis.db.Application;
 import net.curisit.securis.db.LicenseType;
 import net.curisit.securis.utils.TokenHelper;
 
@@ -39,13 +41,13 @@
 @Path("/licensetype")
 public class LicenseTypeResource {
 
+	private static final Logger log = LoggerFactory.getLogger(LicenseTypeResource.class);
+
 	@Inject
 	TokenHelper tokenHelper;
 
 	@Inject
 	Provider<EntityManager> emProvider;
-
-	private static final Logger log = LoggerFactory.getLogger(LicenseTypeResource.class);
 
 	public LicenseTypeResource() {
 	}
@@ -62,8 +64,9 @@
 		log.info("Getting license types list ");
 
 		EntityManager em = emProvider.get();
-		TypedQuery<LicenseType> q = em.createNamedQuery("list-license_types", LicenseType.class);
-		List<LicenseType> list = q.getResultList();
+		Query q = em.createNamedQuery("list-license_types");
+		@SuppressWarnings("unchecked")
+		List<Object> list = q.getResultList();
 
 		return Response.ok(list).build();
 	}
@@ -98,13 +101,23 @@
 	@Produces(
 		{ MediaType.APPLICATION_JSON })
 	@Transactional
-	public Response create(LicenseType app, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
+	public Response create(LicenseType lt, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
 		log.info("Creating new license type");
 		EntityManager em = emProvider.get();
-		app.setCreationTimestamp(new Date());
-		em.persist(app);
+		Application app = null;
+		if (lt.getApplicationId() != null) {
+			app = em.find(Application.class, lt.getApplicationId());
+			if (app == null) {
+				log.error("LicenseType application with id {} not found in DB", lt.getApplicationId());
+				return Response.status(Status.NOT_FOUND).header(SecurisErrorHandler.HEADER_ERROR_MESSAGE, "License type's app not found with ID: " + lt.getApplicationId()).build();
+			}
+		}
 
-		return Response.ok(app).build();
+		lt.setApplication(app);
+		lt.setCreationTimestamp(new Date());
+		em.persist(lt);
+
+		return Response.ok(lt).build();
 	}
 
 	@PUT
@@ -114,16 +127,26 @@
 	@Consumes(MediaType.APPLICATION_JSON)
 	@Produces(
 		{ MediaType.APPLICATION_JSON })
-	public Response modify(LicenseType app, @PathParam("ltid") String ltid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
+	public Response modify(LicenseType lt, @PathParam("ltid") String ltid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
 		log.info("Modifying license type with id: {}", ltid);
 		EntityManager em = emProvider.get();
 		LicenseType currentlt = em.find(LicenseType.class, Integer.parseInt(ltid));
 		if (currentlt == null) {
 			log.error("LicenseType with id {} not found in DB", ltid);
-			return Response.status(Status.NOT_FOUND).build();
+			return Response.status(Status.NOT_FOUND).header(SecurisErrorHandler.HEADER_ERROR_MESSAGE, "License type not found with ID: " + ltid).build();
 		}
-		currentlt.setName(app.getName());
-		currentlt.setDescription(app.getDescription());
+		Application app = null;
+		if (lt.getApplicationId() != null) {
+			app = em.find(Application.class, lt.getApplicationId());
+			if (app == null) {
+				log.error("LicenseType application with id {} not found in DB", lt.getApplicationId());
+				return Response.status(Status.NOT_FOUND).header(SecurisErrorHandler.HEADER_ERROR_MESSAGE, "License type's app not found with ID: " + lt.getApplicationId()).build();
+			}
+		}
+		currentlt.setCode(lt.getCode());
+		currentlt.setName(lt.getName());
+		currentlt.setDescription(lt.getDescription());
+		currentlt.setApplication(app);
 		em.persist(currentlt);
 
 		return Response.ok(currentlt).build();

--
Gitblit v1.3.2