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/UserResource.java | 202 ++++++++++++++++++++++++++++++++++++--------------
1 files changed, 146 insertions(+), 56 deletions(-)
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 8048e89..8788a02 100644
--- a/securis/src/main/java/net/curisit/securis/services/UserResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/UserResource.java
@@ -1,10 +1,21 @@
package net.curisit.securis.services;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
import javax.inject.Inject;
+import javax.inject.Provider;
+import javax.persistence.EntityManager;
+import javax.persistence.TypedQuery;
import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
+import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
@@ -14,10 +25,14 @@
import javax.ws.rs.core.Response.Status;
import net.curisit.integrity.commons.Utils;
+import net.curisit.securis.db.Organization;
+import net.curisit.securis.db.User;
import net.curisit.securis.utils.TokenHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
+import com.google.inject.persist.Transactional;
/**
* User resource
@@ -29,6 +44,9 @@
@Inject
TokenHelper tokenHelper;
+
+ @Inject
+ Provider<EntityManager> emProvider;
// private LicenseHelper licenseHelper = InjectorFactory.getInjector().getInstance(LicenseHelper.class);
private static final Logger log = LoggerFactory.getLogger(UserResource.class);
@@ -43,9 +61,134 @@
@GET
@Path("/")
@Produces(
- { MediaType.TEXT_PLAIN })
- public Response index(@Context HttpServletRequest request) {
- return Response.ok("User resource").build();
+ { MediaType.APPLICATION_JSON })
+ public Response index() {
+ log.info("Getting users list ");
+
+ EntityManager em = emProvider.get();
+ TypedQuery<User> q = em.createNamedQuery("list-users", User.class);
+
+ List<User> list = q.getResultList();
+
+ return Response.ok(list).build();
+ }
+
+ /**
+ *
+ * @return The user
+ */
+ @GET
+ @Path("/{uid}")
+ @Produces(
+ { MediaType.APPLICATION_JSON })
+ public Response get(@PathParam("uid") String uid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
+ log.info("Getting user data for id: {}: ", uid);
+ if (uid == null || uid.equals("")) {
+ log.error("User ID is mandatory");
+ return Response.status(Status.NOT_FOUND).build();
+ }
+
+ EntityManager em = emProvider.get();
+ User lt = em.find(User.class, Integer.parseInt(uid));
+ if (lt == null) {
+ log.error("User with id {} not found in DB", uid);
+ return Response.status(Status.NOT_FOUND).build();
+ }
+ return Response.ok(lt).build();
+ }
+
+ @POST
+ @Path("/")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(
+ { MediaType.APPLICATION_JSON })
+ @Transactional
+ public Response create(User user, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
+ log.info("Creating new user");
+ EntityManager em = emProvider.get();
+ List<Organization> orgs = null;
+ List<Integer> orgsIds = user.getOrgsIds();
+ if (orgsIds != null && orgsIds.size() > 0) {
+ orgs = new ArrayList<>();
+ for (Integer orgId : orgsIds) {
+ Organization o = em.find(Organization.class, orgId);
+ if (o == null) {
+ log.error("User organization with id {} not found in DB", orgId);
+ return Response.status(Status.NOT_FOUND).header("SECURIS_ERROR", "User's organization not found with ID: " + orgId).build();
+ }
+ orgs.add(o);
+ }
+ }
+
+ user.setOrganizations(orgs);
+ user.setModificationTimestamp(new Date());
+ user.setLastLogin(null);
+ user.setCreationTimestamp(new Date());
+ em.persist(user);
+
+ return Response.ok(user).build();
+ }
+
+ @PUT
+ @POST
+ @Path("/{uid}")
+ @Transactional
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(
+ { MediaType.APPLICATION_JSON })
+ public Response modify(User user, @PathParam("uid") String uid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
+ log.info("Modifying user with id: {}", uid);
+ EntityManager em = emProvider.get();
+ User currentUser = em.find(User.class, Integer.parseInt(uid));
+ if (currentUser == null) {
+ log.error("User with id {} not found in DB", uid);
+ return Response.status(Status.NOT_FOUND).header("SECURIS_ERROR", "User not found with ID: " + uid).build();
+ }
+
+ List<Organization> orgs = null;
+ List<Integer> orgsIds = user.getOrgsIds();
+ if (orgsIds != null && orgsIds.size() > 0) {
+ orgs = new ArrayList<>();
+ for (Integer orgId : orgsIds) {
+ Organization o = em.find(Organization.class, orgId);
+ if (o == null) {
+ log.error("User organization with id {} not found in DB", orgId);
+ return Response.status(Status.NOT_FOUND).header("SECURIS_ERROR", "User's user not found with ID: " + orgId).build();
+ }
+ orgs.add(o);
+ }
+ }
+
+ currentUser.setOrganizations(orgs);
+ currentUser.setFirstName(user.getFirstName());
+ currentUser.setLastName(user.getLastName());
+ currentUser.setRoles(user.getRoles());
+ currentUser.setLang(user.getLang());
+ currentUser.setModificationTimestamp(new Date());
+ currentUser.setPassword(user.getPassword());
+ currentUser.setLastLogin(user.getLastLogin());
+
+ em.persist(currentUser);
+
+ return Response.ok(currentUser).build();
+ }
+
+ @DELETE
+ @Path("/{uid}")
+ @Transactional
+ @Produces(
+ { MediaType.APPLICATION_JSON })
+ public Response delete(@PathParam("uid") String uid, @Context HttpServletRequest request) {
+ log.info("Deleting app with id: {}", uid);
+ EntityManager em = emProvider.get();
+ User app = em.find(User.class, Integer.parseInt(uid));
+ if (app == null) {
+ log.error("User with id {} can not be deleted, It was not found in DB", uid);
+ return Response.status(Status.NOT_FOUND).build();
+ }
+
+ em.remove(app);
+ return Response.ok(Utils.createMap("success", true, "id", uid)).build();
}
@POST
@@ -64,18 +207,6 @@
return Response.ok(Utils.createMap("success", true, "token", tokenAuth)).build();
}
- /**
- * @return the version of the three entities that can be synchronized (Users, DataSet and Settings)
- */
- @GET
- @Path("/{username}")
- @Produces(
- { MediaType.APPLICATION_JSON })
- // @RolesAllowed("advance")
- public Response main(@PathParam("username") String username) {
- return Response.ok().entity(Utils.createMap("name", "Pepito", "username", username)).build();
- }
-
@GET
@Path("/logout")
@Produces(
@@ -84,45 +215,4 @@
request.getSession().invalidate();
return Response.ok().build();
}
-
- //
- // private <T> ServiceResponse<T> buildErrorResponse(ServiceResponse<T> response, String msgErrorCode) {
- // response.setSuccess(false);
- // response.setErrorMessage(localManager.getString(msgErrorCode));
- // response.setErrorMessageCode(msgErrorCode);
- // return response;
- // }
- //
- // private Date calculateCaducation() {
- // Integer licenseExpiration = systemParams.getParamAsInt(SystemParams.Keys.CONFIG_SERVER_LICENSE_EXPIRATION);
- // if (licenseExpiration == null)
- // licenseExpiration = DEFAULT_LICENSE_EXPIRATION;
- // return Utils.addDays(new Date(), licenseExpiration);
- // }
- //
- // private boolean validateLicense(String license) {
- // BasicApplication ba = basicApplicationDao.findByLicense(license);
- // return (ba != null);
- // }
- //
- // private boolean validateVersion(int minorVersion, int majorVersion) {
- // return (versionManager.getMajorVersion() == majorVersion);
- // }
- //
- // private BasicApplication findBasicApp(String license) {
- // BasicApplication ba = basicApplicationDao.findByLicense(license);
- // return ba;
- // }
- //
- // private License generateLicense() {
- // // TODO complete all field of the license
- // License license = new License();
- // license.setCustomerCode(systemParams.getParam(SystemParams.Keys.CONFIG_COMMON_CUSTOMER_CODE));
- // license.setCSCode(systemParams.getParam(SystemParams.Keys.CONFIG_COMMON_CS_CODE));
- // license.setCRCLogo("00000000");
- // license.setExpirationDate(calculateCaducation());
- // license.setInstallCode(codeGenerator.generateInstalationNumber());
- // return license;
- // }
-
}
--
Gitblit v1.3.2