diff --git a/src/main/java/de/jottyfan/camporganizer/module/admin/AdminController.java b/src/main/java/de/jottyfan/camporganizer/module/admin/AdminController.java index ee4af05..3b4ac0e 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/admin/AdminController.java +++ b/src/main/java/de/jottyfan/camporganizer/module/admin/AdminController.java @@ -121,6 +121,7 @@ public class AdminController extends CommonController { public String prepareAddLocation(Model model, HttpServletRequest request) { super.setupSession(model, request); model.addAttribute("bean", new LocationBean()); + model.addAttribute("documents", service.getLocationDocuments()); return "/admin/location_edit"; } @@ -128,6 +129,7 @@ public class AdminController extends CommonController { public String prepareAddLocation(@PathVariable Integer id, Model model, HttpServletRequest request) { super.setupSession(model, request); model.addAttribute("bean", service.getLocation(id)); + model.addAttribute("documents", service.getLocationDocuments()); return "/admin/location_edit"; } diff --git a/src/main/java/de/jottyfan/camporganizer/module/admin/AdminRepository.java b/src/main/java/de/jottyfan/camporganizer/module/admin/AdminRepository.java index a88708e..15405f5 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/admin/AdminRepository.java +++ b/src/main/java/de/jottyfan/camporganizer/module/admin/AdminRepository.java @@ -13,11 +13,13 @@ import java.util.Set; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.jooq.Condition; import org.jooq.DSLContext; import org.jooq.DeleteConditionStep; import org.jooq.Field; import org.jooq.InsertResultStep; import org.jooq.InsertReturningStep; +import org.jooq.Record4; import org.jooq.Record5; import org.jooq.SelectConditionStep; import org.jooq.SelectSeekStep1; @@ -121,6 +123,36 @@ public class AdminRepository { return list; } + /** + * get all documents from the database that fit to condition + * + * @param condition the where condition, e.g. to filter for doctype + * + * @return all documents + */ + public List getAllDocumentsWith(Condition condition) { + SelectConditionStep> sql = jooq + // @formatter:off + .select(T_DOCUMENT.PK, + T_DOCUMENT.NAME, + T_DOCUMENT.DOCTYPE, + T_DOCUMENT.FILETYPE) + .from(T_DOCUMENT) + .where(condition); + // @formatter:on + LOGGER.debug(sql.toString()); + List list = new ArrayList<>(); + for (Record4 r : sql.fetch()) { + DocumentBean bean = new DocumentBean(); + bean.setPk(r.get(T_DOCUMENT.PK)); + bean.setName(r.get(T_DOCUMENT.NAME)); + bean.setDoctype(r.get(T_DOCUMENT.DOCTYPE)); + bean.setFiletype(r.get(T_DOCUMENT.FILETYPE)); + list.add(bean); + } + return list; + } + /** * upsert document in t_document * diff --git a/src/main/java/de/jottyfan/camporganizer/module/admin/AdminService.java b/src/main/java/de/jottyfan/camporganizer/module/admin/AdminService.java index 2dcbadd..0a7747d 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/admin/AdminService.java +++ b/src/main/java/de/jottyfan/camporganizer/module/admin/AdminService.java @@ -1,5 +1,7 @@ package de.jottyfan.camporganizer.module.admin; +import static de.jottyfan.camporganizer.db.jooq.Tables.T_DOCUMENT; + import java.io.IOException; import java.util.List; @@ -11,6 +13,7 @@ import org.jooq.exception.DataAccessException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import de.jottyfan.camporganizer.db.jooq.enums.EnumDocument; import de.jottyfan.camporganizer.module.mail.MailBean; import de.jottyfan.camporganizer.module.mail.MailRepository; @@ -103,4 +106,13 @@ public class AdminService { public void deleteLocation(Integer id) { throw new DataAccessException("not yet implemented"); } + + /** + * get all documents that fit to the location definitions + * + * @return the location documents + */ + public List getLocationDocuments() { + return adminRepository.getAllDocumentsWith(T_DOCUMENT.DOCTYPE.eq(EnumDocument.location)); + } } diff --git a/src/main/java/de/jottyfan/camporganizer/module/admin/LocationBean.java b/src/main/java/de/jottyfan/camporganizer/module/admin/LocationBean.java index 840b8eb..2552f3c 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/admin/LocationBean.java +++ b/src/main/java/de/jottyfan/camporganizer/module/admin/LocationBean.java @@ -2,6 +2,9 @@ package de.jottyfan.camporganizer.module.admin; import java.io.Serializable; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + import de.jottyfan.camporganizer.db.jooq.tables.records.TLocationRecord; /** @@ -13,8 +16,12 @@ public class LocationBean implements Serializable { private static final long serialVersionUID = 1L; private Integer pk; + + @NotBlank private String name; + @NotNull private Integer fkDocument; + @NotBlank private String url; public static LocationBean of(TLocationRecord r) { diff --git a/src/main/resources/templates/admin/location_edit.html b/src/main/resources/templates/admin/location_edit.html index 3f96516..3112494 100644 --- a/src/main/resources/templates/admin/location_edit.html +++ b/src/main/resources/templates/admin/location_edit.html @@ -28,7 +28,23 @@ th:class="${'form-control ' + (#fields.hasErrors('name') ? 'inputerror' : '')}"> - +
+ +
+ [[${error}]]
+
+
+
+ +
+ [[${error}]]
+
+