From 4e966ed56edf2e85476f4db18f7fd185b4a59f9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Henke?= Date: Sat, 9 Apr 2022 14:42:58 +0200 Subject: [PATCH] finalized contacts --- .../timetrack/spring/contact/ContactBean.java | 10 +++- .../spring/contact/ContactController.java | 49 +++++++++------- .../spring/contact/IContactService.java | 6 +- .../spring/contact/impl/ContactGateway.java | 24 ++++++++ .../spring/contact/impl/ContactService.java | 29 +++++----- src/main/resources/static/css/style.css | 26 +++++++-- .../resources/templates/contact/item.html | 57 ++++++++++++++----- .../contact/{contacts.html => list.html} | 0 src/main/resources/templates/layout/main.html | 2 +- 9 files changed, 146 insertions(+), 57 deletions(-) rename src/main/resources/templates/contact/{contacts.html => list.html} (100%) diff --git a/src/main/java/de/jottyfan/timetrack/spring/contact/ContactBean.java b/src/main/java/de/jottyfan/timetrack/spring/contact/ContactBean.java index 923ae90..7f8afc4 100644 --- a/src/main/java/de/jottyfan/timetrack/spring/contact/ContactBean.java +++ b/src/main/java/de/jottyfan/timetrack/spring/contact/ContactBean.java @@ -12,12 +12,17 @@ import de.jottyfan.timetrack.db.contact.enums.EnumContacttype; public class ContactBean implements Serializable, Comparable { private static final long serialVersionUID = 1L; - private final Integer pk; + private Integer pk; private String forename; private String surname; private String contact; private EnumContacttype type; + public ContactBean() { + super(); + this.pk = null; + } + public ContactBean(Integer pk) { super(); this.pk = pk; @@ -77,4 +82,7 @@ public class ContactBean implements Serializable, Comparable { return pk; } + public void setPk(Integer pk) { + this.pk = pk; + } } diff --git a/src/main/java/de/jottyfan/timetrack/spring/contact/ContactController.java b/src/main/java/de/jottyfan/timetrack/spring/contact/ContactController.java index c144a48..427a0e4 100644 --- a/src/main/java/de/jottyfan/timetrack/spring/contact/ContactController.java +++ b/src/main/java/de/jottyfan/timetrack/spring/contact/ContactController.java @@ -1,5 +1,6 @@ package de.jottyfan.timetrack.spring.contact; +import java.util.Arrays; import java.util.List; import javax.annotation.security.RolesAllowed; @@ -18,6 +19,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; +import de.jottyfan.timetrack.db.contact.enums.EnumContacttype; + /** * * @author henkej @@ -55,36 +58,44 @@ public class ContactController { } @RolesAllowed("timetrack_user") - @RequestMapping(value = "/contact/contacts") - public String getList(Model model, @ModelAttribute ContactBean bean) { - List list = contactService.toList(); + @RequestMapping(value = "/contact/list") + public String getList(Model model) { + List list = contactService.getList(); model.addAttribute("contactList", list); - return "contact/contacts"; + return "contact/list"; } @RolesAllowed("timetrack_user") - @RequestMapping(value = "/contact/add/") + @RequestMapping(value = "/contact/add", method = RequestMethod.GET) public String toAdd(Model model) { - return "contact/item"; - } - - @RolesAllowed("timetrack_user") - @RequestMapping(value = "/contact/insert", method = RequestMethod.POST) - public String doInsert(Model model, @ModelAttribute ContactBean bean) { - Integer amount = contactService.doInsert(bean); - return amount.equals(1) ? "contact/contacts" : "concact/item"; + return toItem(null, model); } @RolesAllowed("timetrack_user") @GetMapping("/contact/edit/{id}") - public String toEdit(@PathVariable Integer id, Model model) { - return "not yet implemented"; + public String toItem(@PathVariable Integer id, Model model) { + ContactBean bean = contactService.getBean(id); + if (bean == null) { + bean = new ContactBean(); // the add case + } + model.addAttribute("contactBean", bean); + model.addAttribute("types", Arrays.asList(EnumContacttype.values())); + return "contact/item"; } @RolesAllowed("timetrack_user") - @RequestMapping(value = "/contact/delete/") - public String doDelete(Model model, @ModelAttribute ContactBean bean) { - Integer amount = contactService.doDelete(bean.getPk()); - return amount.equals(1) ? "contact/contacts" : "contact/contacts"; + @RequestMapping(value = "/contact/upsert", method = RequestMethod.POST) + public String doUpsert(Model model, @ModelAttribute ContactBean bean) { + Integer amount = contactService.doUpsert(bean); + return amount.equals(1) ? getList(model) : toItem(bean.getPk(), model); + } + + @RolesAllowed("timetrack_user") + @GetMapping(value = "/contact/delete/{id}") + public String doDelete(@PathVariable Integer id, Model model) { + LOGGER.info("up to delete bean {}", id); + Integer amount = contactService.doDelete(id); + LOGGER.info("deleted {} rows", amount); + return amount.equals(1) ? getList(model) : toItem(id, model); } } diff --git a/src/main/java/de/jottyfan/timetrack/spring/contact/IContactService.java b/src/main/java/de/jottyfan/timetrack/spring/contact/IContactService.java index 5fb9e0b..dc917ad 100644 --- a/src/main/java/de/jottyfan/timetrack/spring/contact/IContactService.java +++ b/src/main/java/de/jottyfan/timetrack/spring/contact/IContactService.java @@ -10,10 +10,10 @@ import javax.servlet.http.HttpServletRequest; * */ public interface IContactService { - public List toList(); - public Integer doInsert(ContactBean bean); - public Integer doUdate(ContactBean bean); + public List getList(); + public Integer doUpsert(ContactBean bean); public Integer doDelete(Integer pk); public Integer getAmount(); public String getCurrentUser(HttpServletRequest request); + public ContactBean getBean(Integer id); } diff --git a/src/main/java/de/jottyfan/timetrack/spring/contact/impl/ContactGateway.java b/src/main/java/de/jottyfan/timetrack/spring/contact/impl/ContactGateway.java index 99d655d..23b9ea7 100644 --- a/src/main/java/de/jottyfan/timetrack/spring/contact/impl/ContactGateway.java +++ b/src/main/java/de/jottyfan/timetrack/spring/contact/impl/ContactGateway.java @@ -14,6 +14,7 @@ import org.jooq.DeleteConditionStep; import org.jooq.InsertValuesStep4; import org.jooq.Record1; import org.jooq.Record5; +import org.jooq.SelectConditionStep; import org.jooq.SelectJoinStep; import org.jooq.UpdateConditionStep; import org.jooq.exception.DataAccessException; @@ -166,4 +167,27 @@ public class ContactGateway { public List getTypes() { return new ArrayList<>(Arrays.asList(EnumContacttype.values())); } + + public ContactBean getBean(Integer id) { + SelectConditionStep> sql = getJooq() + // @formatter:off + .select(T_CONTACT.PK, + T_CONTACT.FORENAME, + T_CONTACT.SURNAME, + T_CONTACT.CONTACT, + T_CONTACT.TYPE) + .from(T_CONTACT) + .where(T_CONTACT.PK.eq(id)); + // @formatter:on + LOGGER.debug("{}", sql.toString()); + for (Record5 r : sql.fetch()) { + ContactBean bean = new ContactBean(r.get(T_CONTACT.PK)); + bean.setForename(r.get(T_CONTACT.FORENAME)); + bean.setSurname(r.get(T_CONTACT.SURNAME)); + bean.setContact(r.get(T_CONTACT.CONTACT)); + bean.setType(r.get(T_CONTACT.TYPE)); + return bean; + } + return null; + } } diff --git a/src/main/java/de/jottyfan/timetrack/spring/contact/impl/ContactService.java b/src/main/java/de/jottyfan/timetrack/spring/contact/impl/ContactService.java index b8bc08f..d37959e 100644 --- a/src/main/java/de/jottyfan/timetrack/spring/contact/impl/ContactService.java +++ b/src/main/java/de/jottyfan/timetrack/spring/contact/impl/ContactService.java @@ -36,7 +36,7 @@ public class ContactService implements IContactService { } @Override - public List toList() { + public List getList() { try { return new ContactGateway(dsl).getAll(); } catch (Exception e) { @@ -46,19 +46,10 @@ public class ContactService implements IContactService { } @Override - public Integer doInsert(ContactBean bean) { + public Integer doUpsert(ContactBean bean) { try { - return new ContactGateway(dsl).add(bean); - } catch (Exception e) { - LOGGER.error(e); - return 0; - } - } - - @Override - public Integer doUdate(ContactBean bean) { - try { - return new ContactGateway(dsl).update(bean); + ContactGateway gw = new ContactGateway(dsl); + return bean.getPk() == null ? gw.add(bean) : gw.update(bean); } catch (Exception e) { LOGGER.error(e); return 0; @@ -77,6 +68,16 @@ public class ContactService implements IContactService { @Override public Integer getAmount() { - return toList().size(); + return getList().size(); + } + + @Override + public ContactBean getBean(Integer id) { + try { + return new ContactGateway(dsl).getBean(id); + } catch (Exception e) { + LOGGER.error(e); + return null; + } } } diff --git a/src/main/resources/static/css/style.css b/src/main/resources/static/css/style.css index 25758a3..6c82296 100644 --- a/src/main/resources/static/css/style.css +++ b/src/main/resources/static/css/style.css @@ -3,10 +3,30 @@ html { } body { - background-color: #eee; + background-color: #99c1f1; height: calc(100% - 76px); } +.formpane { + margin: 24px; + border: 1px solid silver; + border-radius: 4px; + padding: 24px; + background: whitesmoke; +} + +.menudangerbutton { + color: #e00 !important; + border: 1px solid rgba(0,0,0,0); +} + +.menudangerbutton:hover { + color: #f00 !important; + border: 1px solid silver; + border-radius: 4px; + background: rgba(255,0,0,0.2); +} + .body { height: 100%; width: 100%; @@ -14,11 +34,9 @@ body { } .page { - height: 100%; width: 100%; padding-bottom: 12px; - background-image: linear-gradient(to bottom, #eee, #777) - !important; + background-image: linear-gradient(to bottom, #99c1f1, #1a5f64) !important; } .emph { diff --git a/src/main/resources/templates/contact/item.html b/src/main/resources/templates/contact/item.html index e2cb681..c8cdd79 100644 --- a/src/main/resources/templates/contact/item.html +++ b/src/main/resources/templates/contact/item.html @@ -6,26 +6,53 @@
-
-
-

- Inhalt von Eintrag : -

- -
- +
+ +
+ +
+ +
-
- +
+ +
+ +
-
- +
+ +
+ +
-
- +
+ +
+ +
+
+
+ +
+ +
+
+
+
Änderung
+
+ + +
diff --git a/src/main/resources/templates/contact/contacts.html b/src/main/resources/templates/contact/list.html similarity index 100% rename from src/main/resources/templates/contact/contacts.html rename to src/main/resources/templates/contact/list.html diff --git a/src/main/resources/templates/layout/main.html b/src/main/resources/templates/layout/main.html index 66a3308..eae87dc 100644 --- a/src/main/resources/templates/layout/main.html +++ b/src/main/resources/templates/layout/main.html @@ -32,7 +32,7 @@