From ccd6c7839748b4bd157db17c170fda90f465aec9 Mon Sep 17 00:00:00 2001 From: Jottyfan Date: Mon, 12 Oct 2026 21:35:20 +0200 Subject: [PATCH] added camp description database value, see #27 --- .classpath | 7 ++++-- .settings/org.eclipse.jdt.core.prefs | 6 ++--- .settings/org.eclipse.wst.common.component | 21 ++++++----------- ....eclipse.wst.common.project.facet.core.xml | 2 +- build.gradle | 6 ++--- .../module/admin/AdminController.java | 3 +++ .../module/admin/AdminRepository.java | 23 +++++++++++++++---- .../module/admin/AdminService.java | 12 ++++++++++ .../module/admin/model/CampBean.java | 16 +++++++++++++ .../resources/templates/admin/camp_edit.html | 9 ++++++++ .../templates/fragments/camplist.html | 2 +- 11 files changed, 79 insertions(+), 28 deletions(-) diff --git a/.classpath b/.classpath index 41c429a..a48ab83 100644 --- a/.classpath +++ b/.classpath @@ -12,11 +12,14 @@ - + - + + + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index e9186c3..96e40c8 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,4 +1,4 @@ eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=21 -org.eclipse.jdt.core.compiler.compliance=21 -org.eclipse.jdt.core.compiler.source=21 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=25 +org.eclipse.jdt.core.compiler.compliance=25 +org.eclipse.jdt.core.compiler.source=25 diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index a57b052..59fc2ab 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,15 +1,8 @@ - - - - - - - - - - - - - - + + + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml index 842a656..a2943d3 100644 --- a/.settings/org.eclipse.wst.common.project.facet.core.xml +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -3,5 +3,5 @@ - + diff --git a/build.gradle b/build.gradle index 0b997b2..752d43c 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ plugins { } group = 'de.jottyfan.camporganizer' -version = '1.0.5' +version = '1.0.6' description = """CampOrganizer2""" @@ -32,7 +32,7 @@ application { java { toolchain { - languageVersion = JavaLanguageVersion.of(21) + languageVersion = JavaLanguageVersion.of(25) } } @@ -50,7 +50,7 @@ war { dependencies { implementation 'org.jooq:jooq:3.20.8' - implementation 'de.jottyfan:COJooq:2024.10.24' + implementation 'de.jottyfan:COJooq:2026.10.12' implementation 'org.apache.logging.log4j:log4j-api:2.25.2' implementation 'org.apache.logging.log4j:log4j-core:2.25.2' 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 c522e1c..34b9bdb 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/admin/AdminController.java +++ b/src/main/java/de/jottyfan/camporganizer/module/admin/AdminController.java @@ -151,6 +151,7 @@ public class AdminController extends CommonController { model.addAttribute("documents", service.getCampDocuments()); model.addAttribute("locations", service.getLocations()); model.addAttribute("profiles", service.getProfiles()); + model.addAttribute("campdescriptions", service.getCampdescriptions()); return "/admin/camp_edit"; } @@ -160,6 +161,7 @@ public class AdminController extends CommonController { model.addAttribute("documents", service.getCampDocuments()); model.addAttribute("locations", service.getLocations()); model.addAttribute("profiles", service.getProfiles()); + model.addAttribute("campdescriptions", service.getCampdescriptions()); String error = (String) request.getAttribute("error"); if (error != null) { model.addAttribute("error", error); @@ -177,6 +179,7 @@ public class AdminController extends CommonController { model.addAttribute("documents", service.getCampDocuments()); model.addAttribute("locations", service.getLocations()); model.addAttribute("profiles", service.getProfiles()); + model.addAttribute("campdescriptions", service.getCampdescriptions()); return "/admin/camp_edit"; } String error = service.upsertCamp(bean); 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 b64e9e9..4c190f7 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/admin/AdminRepository.java +++ b/src/main/java/de/jottyfan/camporganizer/module/admin/AdminRepository.java @@ -1,6 +1,7 @@ package de.jottyfan.camporganizer.module.admin; import static de.jottyfan.camporganizer.db.jooq.Tables.T_CAMP; +import static de.jottyfan.camporganizer.db.jooq.Tables.T_CAMPDESCRIPTION; import static de.jottyfan.camporganizer.db.jooq.Tables.T_CAMPDOCUMENT; import static de.jottyfan.camporganizer.db.jooq.Tables.T_CAMPPROFILE; import static de.jottyfan.camporganizer.db.jooq.Tables.T_DOCUMENT; @@ -26,7 +27,7 @@ import org.jooq.DeleteConditionStep; import org.jooq.Field; import org.jooq.InsertResultStep; import org.jooq.InsertReturningStep; -import org.jooq.InsertValuesStep16; +import org.jooq.InsertValuesStep17; import org.jooq.InsertValuesStep3; import org.jooq.Record4; import org.jooq.Record5; @@ -48,6 +49,7 @@ import de.jottyfan.camporganizer.db.jooq.enums.EnumDocument; import de.jottyfan.camporganizer.db.jooq.enums.EnumFiletype; import de.jottyfan.camporganizer.db.jooq.enums.EnumModule; import de.jottyfan.camporganizer.db.jooq.tables.records.TCampRecord; +import de.jottyfan.camporganizer.db.jooq.tables.records.TCampdescriptionRecord; import de.jottyfan.camporganizer.db.jooq.tables.records.TCampdocumentRecord; import de.jottyfan.camporganizer.db.jooq.tables.records.TCampprofileRecord; import de.jottyfan.camporganizer.db.jooq.tables.records.TDocumentRecord; @@ -448,7 +450,7 @@ public class AdminRepository { LocalDateTime arrive = arriveDate == null ? null : arriveDate.atStartOfDay(); LocalDateTime depart = departDate == null ? null : departDate.atStartOfDay(); if (bean.getPk() == null) { - InsertValuesStep16 sql = DSL + InsertValuesStep17 sql = DSL .using(t) // @formatter:off .insertInto(T_CAMP, @@ -467,10 +469,11 @@ public class AdminRepository { T_CAMP.BEDS_MALE, T_CAMP.BLOCKED_BEDS_FEMALE, T_CAMP.BLOCKED_BEDS_MALE, - T_CAMP.START_BOOKING) + T_CAMP.START_BOOKING, + T_CAMP.FK_CAMPDESCRIPTION) .values(arrive, bean.getCountries(), depart, bean.getFkDocument(), bean.getFkLocation(), bean.getFkProfile(), bean.getLockSales() != null ? bean.getLockSales() : false, bean.getMaxAge(), bean.getMinAge(), bean.getName(), bean.getPrice(), - bean.getBedsFemale(), bean.getBedsMale(), bean.getBlockedBedsFemale(), bean.getBlockedBedsMale(), bean.getStartBooking()); + bean.getBedsFemale(), bean.getBedsMale(), bean.getBlockedBedsFemale(), bean.getBlockedBedsMale(), bean.getStartBooking(), bean.getFkCampdescription()); // @formatter:on LOGGER.trace(sql); sql.execute(); @@ -494,6 +497,7 @@ public class AdminRepository { .set(T_CAMP.BLOCKED_BEDS_FEMALE, bean.getBlockedBedsFemale()) .set(T_CAMP.BLOCKED_BEDS_MALE, bean.getBlockedBedsMale()) .set(T_CAMP.START_BOOKING, bean.getStartBooking()) + .set(T_CAMP.FK_CAMPDESCRIPTION, bean.getFkCampdescription()) .where(T_CAMP.PK.eq(bean.getPk())); // @formatter:on LOGGER.trace(sql); @@ -739,4 +743,15 @@ public class AdminRepository { LOGGER.trace(sql); sql.execute(); } + + /** + * get all camp descriptions + * + * @return the list of all camp descriptions + */ + public List getCampdescriptions() { + SelectWhereStep sql = jooq.selectFrom(T_CAMPDESCRIPTION); + LOGGER.trace(sql); + return sql.fetchInto(TCampdescriptionRecord.class); + } } 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 ed6a44a..1b846a6 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/admin/AdminService.java +++ b/src/main/java/de/jottyfan/camporganizer/module/admin/AdminService.java @@ -14,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import de.jottyfan.camporganizer.db.jooq.enums.EnumDocument; +import de.jottyfan.camporganizer.db.jooq.tables.records.TCampdescriptionRecord; import de.jottyfan.camporganizer.module.admin.model.CampBean; import de.jottyfan.camporganizer.module.admin.model.CampDocumentBean; import de.jottyfan.camporganizer.module.admin.model.DocumentBean; @@ -247,4 +248,15 @@ public class AdminService { public void deleteCampDocument(Integer id) { adminRepository.deleteCampDocument(id); } + + /** + * get all camp descriptions; replace line breaks by / + * + * @return all camp descriptions + */ + public List getCampdescriptions() { + List list = adminRepository.getCampdescriptions(); + list.forEach(r -> r.setValue(r.getValue().replace("
", " / "))); + return list; + } } diff --git a/src/main/java/de/jottyfan/camporganizer/module/admin/model/CampBean.java b/src/main/java/de/jottyfan/camporganizer/module/admin/model/CampBean.java index a62c51f..19ee56c 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/admin/model/CampBean.java +++ b/src/main/java/de/jottyfan/camporganizer/module/admin/model/CampBean.java @@ -60,6 +60,7 @@ public class CampBean implements Serializable { @NotNull @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) private LocalDateTime startBooking; + private Integer fkCampdescription; /** * generate a camp bean out of r @@ -91,6 +92,7 @@ public class CampBean implements Serializable { bean.setBlockedBedsFemale(r.getBlockedBedsFemale()); bean.setBlockedBedsMale(r.getBlockedBedsMale()); bean.setStartBooking(r.getStartBooking()); + bean.setFkCampdescription(r.getFkCampdescription()); return bean; } @@ -367,4 +369,18 @@ public class CampBean implements Serializable { public void setStartBooking(LocalDateTime startBooking) { this.startBooking = startBooking; } + + /** + * @return the fkCampdescription + */ + public Integer getFkCampdescription() { + return fkCampdescription; + } + + /** + * @param fkCampdescription the fkCampdescription to set + */ + public void setFkCampdescription(Integer fkCampdescription) { + this.fkCampdescription = fkCampdescription; + } } diff --git a/src/main/resources/templates/admin/camp_edit.html b/src/main/resources/templates/admin/camp_edit.html index e2d5db7..0495198 100644 --- a/src/main/resources/templates/admin/camp_edit.html +++ b/src/main/resources/templates/admin/camp_edit.html @@ -19,6 +19,15 @@ th:class="${'form-control ' + (#fields.hasErrors('name') ? 'inputerror' : '')}"> +
+ +
+ +
+
diff --git a/src/main/resources/templates/fragments/camplist.html b/src/main/resources/templates/fragments/camplist.html index 22306cc..f84f77c 100644 --- a/src/main/resources/templates/fragments/camplist.html +++ b/src/main/resources/templates/fragments/camplist.html @@ -17,7 +17,7 @@
-
+
Biblische Geschichten
Nachtwanderung
Gruppenspiele
Ausflüge
Überraschungen