diff --git a/src/controller/roles/RolesControllerAdd.java b/src/controller/roles/RolesControllerAdd.java index 31c9cdd..49127ba 100644 --- a/src/controller/roles/RolesControllerAdd.java +++ b/src/controller/roles/RolesControllerAdd.java @@ -5,7 +5,6 @@ import com.google.appengine.api.datastore.KeyFactory; import controller.users.UsersControllerView; import model.Role; -import javax.jdo.JDOObjectNotFoundException; import javax.jdo.PersistenceManager; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; @@ -47,13 +46,7 @@ public class RolesControllerAdd extends HttpServlet { String name = request.getParameter("roleName"); Boolean status = Boolean.parseBoolean(request.getParameter("roleStatus")); - Role role = new Role(name,status); - - try{ - pm.makePersistent(role); - } finally { - System.out.println("Role creado"); - } + createRole(name,status,pm); break; @@ -94,5 +87,15 @@ public class RolesControllerAdd extends HttpServlet { doPost(request, response); } + public static String createRole(String name, boolean status, PersistenceManager pm){ + Role role = new Role(name,status); + + try{ + pm.makePersistent(role); + return role.getKey(); + } finally { + System.out.println("Role creado"); + } + } } diff --git a/src/controller/roles/RolesControllerView.java b/src/controller/roles/RolesControllerView.java index 1d25b60..384145e 100644 --- a/src/controller/roles/RolesControllerView.java +++ b/src/controller/roles/RolesControllerView.java @@ -108,4 +108,12 @@ public class RolesControllerView extends HttpServlet { pm.close(); return role; } + + @SuppressWarnings("unchecked") + public static List searchRole(String name){ + PersistenceManager pm = controller.PMF.get().getPersistenceManager(); + List users = (List) pm.newQuery("select from " + Role.class.getName() + " where name == '" + name + "'").execute(); + pm.close(); + return users; + } } diff --git a/src/controller/users/UsersControllerAdd.java b/src/controller/users/UsersControllerAdd.java index 36d6fe3..d7a9b18 100644 --- a/src/controller/users/UsersControllerAdd.java +++ b/src/controller/users/UsersControllerAdd.java @@ -1,5 +1,7 @@ package controller.users; +import controller.roles.RolesControllerAdd; +import controller.roles.RolesControllerView; import model.Role; import model.User; @@ -12,6 +14,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; +import java.util.List; @SuppressWarnings("serial") public class UsersControllerAdd extends HttpServlet { @@ -53,14 +56,21 @@ public class UsersControllerAdd extends HttpServlet { //Busca si ya existe una sesion iniciada HttpSession misesion = request.getSession(); - crearUsuario(userID, userEmail, userName, userImg, userRole, pm); + List roleList = RolesControllerView.searchRole(userRole); + + if (roleList.size() > 0){ + userRole = roleList.get(0).getKey(); + } else { + userRole = RolesControllerAdd.createRole(userRole,true,pm); + } + + createUser(userID, userEmail, userName, userImg, userRole, pm); //Si no existe la sesion, la crea usando el ID del usuario if (!sesionExist(misesion)) { misesion = request.getSession(true); misesion.setAttribute("userID", userID); - System.out.println("Sesiones: luego de add -> " + misesion.getAttribute("userID")); //La sesion perdurara sin actividad durante 1h. misesion.setMaxInactiveInterval(3600); @@ -73,12 +83,13 @@ public class UsersControllerAdd extends HttpServlet { HttpSession sesion= request.getSession(); RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Users/Add.jsp"); request.setAttribute("User",UsersControllerView.getUser(sesion.getAttribute("userID").toString())); + request.setAttribute("Roles",RolesControllerView.getAllRoles()); dispatcher.forward(request, response); break; //Si lo que se quiere es Crear (proviene del formulario) case "create": - crearUsuario(userID, userEmail, userName, userImg, userRole, pm); + createUser(userID, userEmail, userName, userImg, userRole, pm); break; //Si lo que se quiere es actualizar un Usuario @@ -89,7 +100,7 @@ public class UsersControllerAdd extends HttpServlet { user.setName(userName); user.setEmail(userEmail); user.setImgUrl(userImg); - user.setRole(new Role(userRole,true)); + user.setRole(userRole); break; @@ -141,14 +152,14 @@ public class UsersControllerAdd extends HttpServlet { } } - private void crearUsuario(String userID, String userEmail, String userName, String userImg, String userRole, PersistenceManager pm){ + private void createUser(String userID, String userEmail, String userName, String userImg, String userRole, PersistenceManager pm){ //Revisa si el usuario con su ID ya tiene un objeto User Persistente almacenado. //Si no existe, crea el objeto de tipo User con los datos que se obtienen del request, y lo hace Persistente. if (!userExists(userID, pm)){ //El new Role es provisional, hasta que termine la implementacion del CRUD de Role. - User user = new User(userID, userName, userImg, userEmail, new Role(userRole,true)); + User user = new User(userID, userName, userImg, userEmail, userRole); try{ pm.makePersistent(user); diff --git a/src/controller/users/UsersControllerIndex.java b/src/controller/users/UsersControllerIndex.java index ab77d2e..8a52d23 100644 --- a/src/controller/users/UsersControllerIndex.java +++ b/src/controller/users/UsersControllerIndex.java @@ -33,8 +33,8 @@ public class UsersControllerIndex extends HttpServlet { } //Si no la encuentra, redirige a la pagina inicial. catch (Exception e){ - System.err.println("Error catched. " + e.getMessage()); - response.getWriter().println(""); + System.err.println("UserControllerIndex: Error catched. " + e.getMessage()); + response.getWriter().println(""); } } diff --git a/src/controller/users/UsersControllerView.java b/src/controller/users/UsersControllerView.java index 846d2af..20a15cd 100644 --- a/src/controller/users/UsersControllerView.java +++ b/src/controller/users/UsersControllerView.java @@ -1,5 +1,6 @@ package controller.users; +import controller.roles.RolesControllerView; import model.User; import javax.jdo.JDOObjectNotFoundException; @@ -39,6 +40,7 @@ public class UsersControllerView extends HttpServlet { //Ya que se quiere editar, el atributo permitirEdicion es verdadero. Este atributo se comprueba en el JSP. request.setAttribute("editAllowed",true); request.setAttribute("action","Edit"); + request.setAttribute("Roles",RolesControllerView.getAllRoles()); try{ dispatcher.forward(request,response); } catch (javax.servlet.ServletException e){ @@ -50,6 +52,7 @@ public class UsersControllerView extends HttpServlet { RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Users/view.jsp"); request.setAttribute("User",getUser(userID)); request.setAttribute("UserLogged",getUser(request.getSession().getAttribute("userID").toString())); + request.setAttribute("Roles",RolesControllerView.getAllRoles()); //Ya que no quiere editar, el atributo permitirEdicion es falso. Este atributo se comprueba en el JSP. request.setAttribute("editAllowed",false); diff --git a/src/model/User.java b/src/model/User.java index a5468fd..4214502 100644 --- a/src/model/User.java +++ b/src/model/User.java @@ -1,5 +1,7 @@ package model; +import controller.roles.RolesControllerView; + import javax.jdo.annotations.IdentityType; import javax.jdo.annotations.PersistenceCapable; import javax.jdo.annotations.Persistent; @@ -26,12 +28,12 @@ public class User { @Persistent private String email; - //Rol del Usuario + //Rol del Usuario -> Lo que se alcamcena no es un objeto Role, sino la llave (key) de ese objeto. @Persistent - private Role role; + private String role; //Constructor - public User(String id, String name, String imgUrl, String email ,Role role){ + public User(String id, String name, String imgUrl, String email ,String role){ this.id = id; this.name = name; this.imgUrl = imgUrl; @@ -66,10 +68,13 @@ public class User { this.email = email; } - public Role getRole() { + public String getRole() { return role; } - public void setRole(Role role) { + public String getRoleName() { + return RolesControllerView.getRole(role).getName(); + } + public void setRole(String role) { this.role = role; } diff --git a/war/WEB-INF/View/Roles/add.jsp b/war/WEB-INF/View/Roles/add.jsp index a7356b4..0b7d877 100644 --- a/war/WEB-INF/View/Roles/add.jsp +++ b/war/WEB-INF/View/Roles/add.jsp @@ -76,17 +76,17 @@

- Add a Role + Create a Role

diff --git a/war/WEB-INF/View/Roles/view.jsp b/war/WEB-INF/View/Roles/view.jsp index 342171e..08db8c3 100644 --- a/war/WEB-INF/View/Roles/view.jsp +++ b/war/WEB-INF/View/Roles/view.jsp @@ -79,17 +79,17 @@

- <%=action%> a User + <%=action%> a Role

diff --git a/war/WEB-INF/View/Users/add.jsp b/war/WEB-INF/View/Users/add.jsp index 54c89ff..2444f39 100644 --- a/war/WEB-INF/View/Users/add.jsp +++ b/war/WEB-INF/View/Users/add.jsp @@ -1,5 +1,6 @@ <%@ page import="model.User" %> -<%@ page import="java.util.List" %><%-- +<%@ page import="java.util.List" %> +<%@ page import="model.Role" %><%-- Created by IntelliJ IDEA. User: Fernando Date: 07/06/2018 @@ -8,6 +9,7 @@ --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% User user = (User) request.getAttribute("User"); %> +<% List roles = (List) request.getAttribute("Roles"); %> Add a User - Hotel Services @@ -77,16 +79,16 @@

- Add a User + Create a User

@@ -110,7 +112,13 @@
Role of the User:
- + +