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 } |