diff --git a/src/controller/resources/ResourcesControllerAdd.java b/src/controller/resources/ResourcesControllerAdd.java index 04100e8..94c06a8 100644 --- a/src/controller/resources/ResourcesControllerAdd.java +++ b/src/controller/resources/ResourcesControllerAdd.java @@ -1,15 +1,73 @@ package controller.resources; +import javax.jdo.JDOObjectNotFoundException; +import javax.jdo.PersistenceManager; +import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import java.io.IOException; @SuppressWarnings("serial") public class ResourcesControllerAdd extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + PersistenceManager pm = controller.PMF.get().getPersistenceManager(); + //Accion a realizar + String action = request.getParameter("action"); + + if (action == null) + action = ""; + + switch (action){ + //Crea + case "create": + + String url = request.getParameter("url"); + Boolean status = Boolean.parseBoolean(request.getParameter("status")); + + Resource resource = new Resource(url,status); + + try{ + pm.makePersistent(resource); + } finally { + System.out.println("Recurso creado"); + } + + break; + + case "redirect": + HttpSession sesion= request.getSession(); + RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Resources/add.jsp"); + request.setAttribute("User",UsersControllerView.getUser(sesion.getAttribute("userID").toString())); + dispatcher.forward(request, response); + break; + + case "update": + + Key a = KeyFactory.stringToKey(request.getParameter("key")); + + Resource resource = pm.getObjectById(Resource.class, a); + + resource.setName(request.getParameter("url")); + resource.setStatus(Boolean.parseBoolean(request.getParameter("status"))); + break; + + } + + pm.close(); + try{ + response.sendRedirect("/resource"); + } + //Al redirigr al jsp para crear, se usa RequestDispatcher, y este entra en conflicto con sendRedirect. + catch (IllegalStateException e){ + System.err.println("IllegalStateException: There was a double redirect."); + } + + } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { diff --git a/src/controller/resources/ResourcesControllerDelete.java b/src/controller/resources/ResourcesControllerDelete.java index ea5af20..7640b22 100644 --- a/src/controller/resources/ResourcesControllerDelete.java +++ b/src/controller/resources/ResourcesControllerDelete.java @@ -1,15 +1,40 @@ package controller.resources; +import com.google.appengine.api.datastore.Key; +import com.google.appengine.api.datastore.KeyFactory; +import model.Resource; + +import javax.jdo.JDOObjectNotFoundException; +import javax.jdo.PersistenceManager; + import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; + @SuppressWarnings("serial") public class ResourcesControllerDelete extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + PersistenceManager pm = controller.PMF.get().getPersistenceManager(); + try { + Key k = KeyFactory.stringToKey(request.getParameter("key")); + try{ + pm.deletePersistent(pm.getObjectById(Role.class, k)); + } catch (JDOObjectNotFoundException e){ + System.err.println("Exception catched -> " + e.getMessage()); + } + + + } catch (NullPointerException e){ + System.err.println("Exception captured -> " + e.getMessage()); + } + + response.sendRedirect("/resource"); + } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { diff --git a/src/controller/resources/ResourcesControllerIndex.java b/src/controller/resources/ResourcesControllerIndex.java index 29e617b..b0b1836 100644 --- a/src/controller/resources/ResourcesControllerIndex.java +++ b/src/controller/resources/ResourcesControllerIndex.java @@ -1,15 +1,41 @@ package controller.resources; +import controller.users.UsersControllerView; +import model.User; + +import javax.jdo.PersistenceManager; +import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import java.io.IOException; @SuppressWarnings("serial") public class ResourcesControllerIndex extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + //Se usa para revisar si hay una sesion activa + HttpSession sesion= request.getSession(); + //Intenta hallar una sesion activa + try{ + User user = UsersControllerView.getUser(sesion.getAttribute("userID").toString()); + if (user == null) throw new NullPointerException("UsersControllerIndex: El usuario recibido es nulo."); + + request.setAttribute("User",user); + request.setAttribute("ResourceList",RolesControllerView.getAllRoles()); + RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Resource/index.jsp"); + dispatcher.forward(request,response); + + } + //Si no la encuentra, redirige a la pagina inicial. + catch (Exception e){ + e.printStackTrace(); + response.getWriter().println("
"); + } + } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { diff --git a/src/controller/resources/ResourcesControllerView.java b/src/controller/resources/ResourcesControllerView.java index 08be4db..66dd12c 100644 --- a/src/controller/resources/ResourcesControllerView.java +++ b/src/controller/resources/ResourcesControllerView.java @@ -1,18 +1,94 @@ package controller.resources; +import com.google.appengine.api.datastore.Key; +import com.google.appengine.api.datastore.KeyFactory; +import controller.users.UsersControllerView; +import model.Resource; + +import javax.jdo.PersistenceManager; +import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.List; @SuppressWarnings("serial") public class ResourcesControllerView extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + String action = request.getParameter("action"); + //Para evitar errores, si no hay ninguna accion, se establece a vacio. + if (action == null) + action = ""; + + String key = request.getParameter("key"); + + //Redirige al formulario para editar un Resource (resource/view) + if (action.equals("editRedirect") && key != null){ + RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Resource/view.jsp"); + request.setAttribute("Resource",getRole(key)); + request.setAttribute("UserLogged",UsersControllerView.getUser(request.getSession().getAttribute("userID").toString())); + + //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"); + try{ + dispatcher.forward(request,response); + } catch (javax.servlet.ServletException e){ + System.err.println("Exception captured -> " + e.getMessage()); + } + } + //Redirige al formulario para ver un usuario (user/view) + else if (action.equals("viewRedirect") && key != null){ + RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Resource/view.jsp"); + request.setAttribute("Resource",getRole(key)); + request.setAttribute("UserLogged",UsersControllerView.getUser(request.getSession().getAttribute("userID").toString())); + + //Ya que no quiere editar, el atributo permitirEdicion es falso. Este atributo se comprueba en el JSP. + request.setAttribute("editAllowed",false); + request.setAttribute("action","View"); + try{ + dispatcher.forward(request,response); + } catch (javax.servlet.ServletException e){ + System.err.println("Exception captured -> " + e.getMessage()); + } + + } + //Si no se encontró acción, regresa al inicio + else { + response.getWriter().println(""); + } + + } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } + + /** + * Metodo Estatico getAllResources + * + * Devuelve un list con todos los Recursos que existen desde cualquier parte del codigo. + * + * @return Un ListURL | +Status | +Date created | +|
<%= recourse.getName()%> | +<%= recourse.getStatus()%> | +<%= recourse.getCreateDate()%> | ++ View + | Edit + | Delete | +