src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java

changeset 47
57cfb94ab99f
parent 45
cc7f082c5ef3
child 51
dd0a45ae25d7
equal deleted inserted replaced
46:1574965c7dc7 47:57cfb94ab99f
29 package de.uapcore.lightpit.modules; 29 package de.uapcore.lightpit.modules;
30 30
31 31
32 import de.uapcore.lightpit.*; 32 import de.uapcore.lightpit.*;
33 import de.uapcore.lightpit.dao.DataAccessObjects; 33 import de.uapcore.lightpit.dao.DataAccessObjects;
34 import de.uapcore.lightpit.entities.Project;
35 import de.uapcore.lightpit.entities.User;
34 36
35 import javax.servlet.annotation.WebServlet; 37 import javax.servlet.annotation.WebServlet;
36 import javax.servlet.http.HttpServletRequest; 38 import javax.servlet.http.HttpServletRequest;
39 import java.sql.SQLException;
40 import java.util.Optional;
37 41
38 @LightPITModule( 42 @LightPITModule(
39 bundleBaseName = "localization.projects", 43 bundleBaseName = "localization.projects",
40 modulePath = "projects", 44 modulePath = "projects",
41 defaultPriority = 20 45 defaultPriority = 20
45 urlPatterns = "/projects/*" 49 urlPatterns = "/projects/*"
46 ) 50 )
47 public final class ProjectsModule extends AbstractLightPITServlet { 51 public final class ProjectsModule extends AbstractLightPITServlet {
48 52
49 @RequestMapping(method = HttpMethod.GET) 53 @RequestMapping(method = HttpMethod.GET)
50 public ResponseType index(HttpServletRequest req, DataAccessObjects dao) { 54 public ResponseType index(HttpServletRequest req, DataAccessObjects dao) throws SQLException {
55 final var projectDao = dao.getProjectDao();
56
57 req.setAttribute("projects", projectDao.list());
58 setDynamicFragment(req, "projects");
51 59
52 return ResponseType.HTML; 60 return ResponseType.HTML;
53 } 61 }
54 62
55 @RequestMapping(method = HttpMethod.GET, requestPath = "versions", menuKey = "menu.versions") 63 @RequestMapping(requestPath = "edit", method = HttpMethod.GET)
64 public ResponseType displayCreateForm(HttpServletRequest req, DataAccessObjects dao) throws SQLException {
65 final var projectDao = dao.getProjectDao();
66
67 Optional<Integer> id = getParameter(req, Integer.class, "id");
68 if (id.isPresent()) {
69 req.setAttribute("project", Optional.ofNullable(projectDao.find(id.get())).orElse(new Project(-1)));
70 } else {
71 req.setAttribute("project", new Project(-1));
72 }
73
74 setDynamicFragment(req, "project-form");
75
76 return ResponseType.HTML;
77 }
78
79 @RequestMapping(requestPath = "commit", method = HttpMethod.POST)
80 public ResponseType commit(HttpServletRequest req, DataAccessObjects dao) {
81
82 Project project = new Project(-1);
83 try {
84 project = new Project(getParameter(req, Integer.class, "id").orElseThrow());
85 project.setName(getParameter(req, String.class, "name").orElseThrow());
86 getParameter(req, String.class, "description").ifPresent(project::setDescription);
87 getParameter(req, String.class, "repoUrl").ifPresent(project::setRepoUrl);
88 getParameter(req, Integer.class, "owner").map(
89 ownerId -> ownerId >= 0 ? new User(ownerId) : null
90 ).ifPresent(project::setOwner);
91
92 dao.getProjectDao().saveOrUpdate(project);
93
94 setRedirectLocation(req, "./projects/");
95 setDynamicFragment(req, Constants.DYN_FRAGMENT_COMMIT_SUCCESSFUL);
96 } catch (NullPointerException | NumberFormatException | SQLException ex) {
97 // TODO: set request attribute with error text
98 req.setAttribute("project", project);
99 setDynamicFragment(req, "project-form");
100 }
101
102 return ResponseType.HTML;
103 }
104
105
106 @RequestMapping(requestPath = "versions", method = HttpMethod.GET, menuKey = "menu.versions")
56 public ResponseType versions(HttpServletRequest req, DataAccessObjects dao) { 107 public ResponseType versions(HttpServletRequest req, DataAccessObjects dao) {
57 108
58 return ResponseType.HTML; 109 return ResponseType.HTML;
59 } 110 }
60 } 111 }

mercurial