From bcf2076c3ce138904665631abc62cfaf3c57df16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Henke?= Date: Wed, 6 Jul 2022 22:01:56 +0200 Subject: [PATCH] added job manipulation --- .../spring/done/job/IJobService.java | 14 ++++ .../spring/done/job/JobController.java | 62 +++++++++++++++ .../spring/done/job/impl/JobGateway.java | 78 +++++++++++++++++++ .../spring/done/job/impl/JobService.java | 52 +++++++++++++ .../spring/done/module/IModuleService.java | 6 +- .../spring/done/module/ModuleController.java | 6 +- .../done/module/impl/ModuleService.java | 6 +- .../spring/done/project/IProjectService.java | 6 +- .../done/project/ProjectController.java | 6 +- .../done/project/impl/ProjectService.java | 6 +- src/main/resources/templates/done/job.html | 42 ++++++++++ src/main/resources/templates/done/list.html | 9 +++ 12 files changed, 275 insertions(+), 18 deletions(-) create mode 100644 src/main/java/de/jottyfan/timetrack/spring/done/job/IJobService.java create mode 100644 src/main/java/de/jottyfan/timetrack/spring/done/job/JobController.java create mode 100644 src/main/java/de/jottyfan/timetrack/spring/done/job/impl/JobGateway.java create mode 100644 src/main/java/de/jottyfan/timetrack/spring/done/job/impl/JobService.java create mode 100644 src/main/resources/templates/done/job.html diff --git a/src/main/java/de/jottyfan/timetrack/spring/done/job/IJobService.java b/src/main/java/de/jottyfan/timetrack/spring/done/job/IJobService.java new file mode 100644 index 0000000..54c55b1 --- /dev/null +++ b/src/main/java/de/jottyfan/timetrack/spring/done/job/IJobService.java @@ -0,0 +1,14 @@ +package de.jottyfan.timetrack.spring.done.job; + +import de.jottyfan.timetrack.db.done.tables.records.TJobRecord; + +/** + * + * @author henkej + * + */ +public interface IJobService { + public TJobRecord get(Integer id); + public Integer doUpsert(TJobRecord bean); + public Integer doDelete(Integer id); +} diff --git a/src/main/java/de/jottyfan/timetrack/spring/done/job/JobController.java b/src/main/java/de/jottyfan/timetrack/spring/done/job/JobController.java new file mode 100644 index 0000000..8d0486a --- /dev/null +++ b/src/main/java/de/jottyfan/timetrack/spring/done/job/JobController.java @@ -0,0 +1,62 @@ +package de.jottyfan.timetrack.spring.done.job; + +import javax.annotation.security.RolesAllowed; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import de.jottyfan.timetrack.db.done.tables.records.TJobRecord; +import de.jottyfan.timetrack.spring.done.DoneController; +import de.jottyfan.timetrack.spring.done.DoneModel; + +/** + * + * @author henkej + * + */ +@Controller +public class JobController { + private static final Logger LOGGER = LogManager.getLogger(JobController.class); + + @Autowired + private IJobService jobService; + + @Autowired + private DoneController doneController; + + @RolesAllowed("timetrack_user") + @GetMapping("/done/edit/job/{id}") + public String toJob(@PathVariable Integer id, Model model) { + TJobRecord job = jobService.get(id); + model.addAttribute("jobBean", job); + return "done/job"; + } + + @RolesAllowed("timetrack_user") + @RequestMapping(value = "/done/upsert/job", method = RequestMethod.POST) + public String doUpsert(Model model, @ModelAttribute TJobRecord bean) { + Integer amount = jobService.doUpsert(bean); + return amount.equals(1) ? doneController.getList(new DoneModel(), model) : toJob(bean.getPk(), model); + } + + @RolesAllowed("timetrack_user") + @RequestMapping(value = "/done/add/job", method = RequestMethod.GET) + public String toAddJob(Model model) { + return toJob(null, model); + } + + @RolesAllowed("timetrack_user") + @GetMapping(value = "/done/delete/job/{id}") + public String doDeleteJob(@PathVariable Integer id, Model model) { + Integer amount = jobService.doDelete(id); + return amount.equals(1) ? doneController.getList(new DoneModel(), model) : toJob(id, model); + } +} diff --git a/src/main/java/de/jottyfan/timetrack/spring/done/job/impl/JobGateway.java b/src/main/java/de/jottyfan/timetrack/spring/done/job/impl/JobGateway.java new file mode 100644 index 0000000..4315586 --- /dev/null +++ b/src/main/java/de/jottyfan/timetrack/spring/done/job/impl/JobGateway.java @@ -0,0 +1,78 @@ +package de.jottyfan.timetrack.spring.done.job.impl; + +import static de.jottyfan.timetrack.db.done.Tables.T_JOB; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.jooq.DSLContext; +import org.jooq.DeleteConditionStep; +import org.jooq.InsertReturningStep; +import org.jooq.SelectConditionStep; +import org.jooq.UpdateConditionStep; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; + +import de.jottyfan.timetrack.db.done.tables.records.TJobRecord; + +/** + * + * @author jotty + * + */ +@Repository +public class JobGateway { + private static final Logger LOGGER = LogManager.getLogger(JobGateway.class); + private final DSLContext jooq; + + public JobGateway(@Autowired DSLContext jooq) throws Exception { + this.jooq = jooq; + } + + public DSLContext getJooq() { + return this.jooq; + } + + public TJobRecord get(Integer id) { + SelectConditionStep sql = getJooq().selectFrom(T_JOB).where(T_JOB.PK.eq(id)); + LOGGER.debug(sql.toString()); + return sql.fetchOne(); + } + + public Integer upsert(TJobRecord bean) { + return bean.getPk() != null ? update(bean) : insert(bean); + } + + private Integer insert(TJobRecord bean) { + InsertReturningStep sql = getJooq() + // @formatter:off + .insertInto(T_JOB, + T_JOB.NAME) + .values(bean.getName()) + .onConflict(T_JOB.NAME) + .doNothing(); + // @formatter:on + LOGGER.debug(sql.toString()); + return sql.execute(); + } + + private Integer update(TJobRecord bean) { + UpdateConditionStep sql = getJooq() + // @formatter:off + .update(T_JOB) + .set(T_JOB.NAME, bean.getName()) + .where(T_JOB.PK.eq(bean.getPk())); + // @formatter:on + LOGGER.debug(sql.toString()); + return sql.execute(); + } + + public Integer delete(Integer id) { + DeleteConditionStep sql = getJooq() + // @formatter:off + .deleteFrom(T_JOB) + .where(T_JOB.PK.eq(id)); + // @formatter:on + LOGGER.debug(sql.toString()); + return sql.execute(); + } +} diff --git a/src/main/java/de/jottyfan/timetrack/spring/done/job/impl/JobService.java b/src/main/java/de/jottyfan/timetrack/spring/done/job/impl/JobService.java new file mode 100644 index 0000000..e41d238 --- /dev/null +++ b/src/main/java/de/jottyfan/timetrack/spring/done/job/impl/JobService.java @@ -0,0 +1,52 @@ +package de.jottyfan.timetrack.spring.done.job.impl; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.jooq.DSLContext; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import de.jottyfan.timetrack.db.done.tables.records.TJobRecord; +import de.jottyfan.timetrack.db.done.tables.records.TModuleRecord; +import de.jottyfan.timetrack.spring.done.job.IJobService; + +@Service +@Transactional(transactionManager = "transactionManager") +public class JobService implements IJobService { + private static final Logger LOGGER = LogManager.getLogger(JobService.class); + + @Autowired + private DSLContext dsl; + + + @Override + public TJobRecord get(Integer id) { + try { + return id == null ? new TJobRecord() : new JobGateway(dsl).get(id); + } catch (Exception e) { + LOGGER.error(e); + return null; + } + } + + @Override + public Integer doUpsert(TJobRecord bean) { + try { + return new JobGateway(dsl).upsert(bean); + } catch (Exception e) { + LOGGER.error(e); + return -1; + } + } + + @Override + public Integer doDelete(Integer id) { + try { + return new JobGateway(dsl).delete(id); + } catch (Exception e) { + LOGGER.error(e); + return -1; + } + } +} diff --git a/src/main/java/de/jottyfan/timetrack/spring/done/module/IModuleService.java b/src/main/java/de/jottyfan/timetrack/spring/done/module/IModuleService.java index 10c5763..e486be9 100644 --- a/src/main/java/de/jottyfan/timetrack/spring/done/module/IModuleService.java +++ b/src/main/java/de/jottyfan/timetrack/spring/done/module/IModuleService.java @@ -8,7 +8,7 @@ import de.jottyfan.timetrack.db.done.tables.records.TModuleRecord; * */ public interface IModuleService { - public TModuleRecord getModule(Integer id); - public Integer doUpsertModule(TModuleRecord bean); - public Integer doDeleteModule(Integer id); + public TModuleRecord get(Integer id); + public Integer doUpsert(TModuleRecord bean); + public Integer doDelete(Integer id); } diff --git a/src/main/java/de/jottyfan/timetrack/spring/done/module/ModuleController.java b/src/main/java/de/jottyfan/timetrack/spring/done/module/ModuleController.java index 30bb5fc..1efbf66 100644 --- a/src/main/java/de/jottyfan/timetrack/spring/done/module/ModuleController.java +++ b/src/main/java/de/jottyfan/timetrack/spring/done/module/ModuleController.java @@ -35,7 +35,7 @@ public class ModuleController { @RolesAllowed("timetrack_user") @GetMapping("/done/edit/module/{id}") public String toModule(@PathVariable Integer id, Model model) { - TModuleRecord module = moduleService.getModule(id); + TModuleRecord module = moduleService.get(id); model.addAttribute("moduleBean", module); return "done/module"; } @@ -43,7 +43,7 @@ public class ModuleController { @RolesAllowed("timetrack_user") @RequestMapping(value = "/done/upsert/module", method = RequestMethod.POST) public String doUpsert(Model model, @ModelAttribute TModuleRecord bean) { - Integer amount = moduleService.doUpsertModule(bean); + Integer amount = moduleService.doUpsert(bean); return amount.equals(1) ? doneController.getList(new DoneModel(), model) : toModule(bean.getPk(), model); } @@ -56,7 +56,7 @@ public class ModuleController { @RolesAllowed("timetrack_user") @GetMapping(value = "/done/delete/module/{id}") public String doDeleteModule(@PathVariable Integer id, Model model) { - Integer amount = moduleService.doDeleteModule(id); + Integer amount = moduleService.doDelete(id); return amount.equals(1) ? doneController.getList(new DoneModel(), model) : toModule(id, model); } } diff --git a/src/main/java/de/jottyfan/timetrack/spring/done/module/impl/ModuleService.java b/src/main/java/de/jottyfan/timetrack/spring/done/module/impl/ModuleService.java index c9e1da9..1ca7b3b 100644 --- a/src/main/java/de/jottyfan/timetrack/spring/done/module/impl/ModuleService.java +++ b/src/main/java/de/jottyfan/timetrack/spring/done/module/impl/ModuleService.java @@ -22,7 +22,7 @@ public class ModuleService implements IModuleService { @Override - public TModuleRecord getModule(Integer id) { + public TModuleRecord get(Integer id) { try { return id == null ? new TModuleRecord() : new ModuleGateway(dsl).getModule(id); } catch (Exception e) { @@ -32,7 +32,7 @@ public class ModuleService implements IModuleService { } @Override - public Integer doUpsertModule(TModuleRecord bean) { + public Integer doUpsert(TModuleRecord bean) { try { return new ModuleGateway(dsl).upsert(bean); } catch (Exception e) { @@ -42,7 +42,7 @@ public class ModuleService implements IModuleService { } @Override - public Integer doDeleteModule(Integer id) { + public Integer doDelete(Integer id) { try { return new ModuleGateway(dsl).delete(id); } catch (Exception e) { diff --git a/src/main/java/de/jottyfan/timetrack/spring/done/project/IProjectService.java b/src/main/java/de/jottyfan/timetrack/spring/done/project/IProjectService.java index dcb0576..7831456 100644 --- a/src/main/java/de/jottyfan/timetrack/spring/done/project/IProjectService.java +++ b/src/main/java/de/jottyfan/timetrack/spring/done/project/IProjectService.java @@ -8,7 +8,7 @@ import de.jottyfan.timetrack.db.done.tables.records.TProjectRecord; * */ public interface IProjectService { - public TProjectRecord getProject(Integer id); - public Integer doUpsertProject(TProjectRecord bean); - public Integer doDeleteProject(Integer id); + public TProjectRecord get(Integer id); + public Integer doUpsert(TProjectRecord bean); + public Integer doDelete(Integer id); } diff --git a/src/main/java/de/jottyfan/timetrack/spring/done/project/ProjectController.java b/src/main/java/de/jottyfan/timetrack/spring/done/project/ProjectController.java index 43d4977..8bd5ac2 100644 --- a/src/main/java/de/jottyfan/timetrack/spring/done/project/ProjectController.java +++ b/src/main/java/de/jottyfan/timetrack/spring/done/project/ProjectController.java @@ -36,7 +36,7 @@ public class ProjectController { @RolesAllowed("timetrack_user") @GetMapping("/done/edit/project/{id}") public String toProject(@PathVariable Integer id, Model model) { - TProjectRecord project = projectService.getProject(id); + TProjectRecord project = projectService.get(id); model.addAttribute("projectBean", project); return "done/project"; } @@ -44,7 +44,7 @@ public class ProjectController { @RolesAllowed("timetrack_user") @RequestMapping(value = "/done/upsert/project", method = RequestMethod.POST) public String doUpsert(Model model, @ModelAttribute TProjectRecord bean) { - Integer amount = projectService.doUpsertProject(bean); + Integer amount = projectService.doUpsert(bean); return amount.equals(1) ? doneController.getList(new DoneModel(), model) : toProject(bean.getPk(), model); } @@ -57,7 +57,7 @@ public class ProjectController { @RolesAllowed("timetrack_user") @GetMapping(value = "/done/delete/project/{id}") public String doDeleteProject(@PathVariable Integer id, Model model) { - Integer amount = projectService.doDeleteProject(id); + Integer amount = projectService.doDelete(id); return amount.equals(1) ? doneController.getList(new DoneModel(), model) : toProject(id, model); } } diff --git a/src/main/java/de/jottyfan/timetrack/spring/done/project/impl/ProjectService.java b/src/main/java/de/jottyfan/timetrack/spring/done/project/impl/ProjectService.java index c69b258..829e7b9 100644 --- a/src/main/java/de/jottyfan/timetrack/spring/done/project/impl/ProjectService.java +++ b/src/main/java/de/jottyfan/timetrack/spring/done/project/impl/ProjectService.java @@ -20,7 +20,7 @@ public class ProjectService implements IProjectService { @Override - public TProjectRecord getProject(Integer id) { + public TProjectRecord get(Integer id) { try { return id == null ? new TProjectRecord() : new ProjectGateway(dsl).getProject(id); } catch (Exception e) { @@ -30,7 +30,7 @@ public class ProjectService implements IProjectService { } @Override - public Integer doUpsertProject(TProjectRecord bean) { + public Integer doUpsert(TProjectRecord bean) { try { return new ProjectGateway(dsl).upsert(bean); } catch (Exception e) { @@ -40,7 +40,7 @@ public class ProjectService implements IProjectService { } @Override - public Integer doDeleteProject(Integer id) { + public Integer doDelete(Integer id) { try { return new ProjectGateway(dsl).delete(id); } catch (Exception e) { diff --git a/src/main/resources/templates/done/job.html b/src/main/resources/templates/done/job.html new file mode 100644 index 0000000..aba36d5 --- /dev/null +++ b/src/main/resources/templates/done/job.html @@ -0,0 +1,42 @@ + + + +Aufgabe aktualisieren + + +
    +
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
Änderung
+
+ + abbrechen + +
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/done/list.html b/src/main/resources/templates/done/list.html index 12e0a3d..26298ac 100644 --- a/src/main/resources/templates/done/list.html +++ b/src/main/resources/templates/done/list.html @@ -131,14 +131,23 @@ Name Benutzt in % + + + + + + neue Aufgabe + + +