From 0bb92f511ceba2690a3433ad634cd83f251e0426 Mon Sep 17 00:00:00 2001 From: Jottyfan Date: Mon, 2 Jan 2023 22:47:24 +0100 Subject: [PATCH] show all official documents --- build.gradle | 2 +- .../module/camplist/CamplistGateway.java | 44 ++++++++++++++++--- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index e970901..03d38e1 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ apply plugin: 'war' apply plugin: 'application' group = 'de.jottyfan.camporganizer' -version = '0.2.6' +version = '0.2.7' sourceCompatibility = 17 mainClassName = "de.jottyfan.camporganizer.Main" diff --git a/src/main/java/de/jottyfan/camporganizer/module/camplist/CamplistGateway.java b/src/main/java/de/jottyfan/camporganizer/module/camplist/CamplistGateway.java index f8234b3..b8bf19b 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/camplist/CamplistGateway.java +++ b/src/main/java/de/jottyfan/camporganizer/module/camplist/CamplistGateway.java @@ -1,15 +1,20 @@ package de.jottyfan.camporganizer.module.camplist; +import static de.jottyfan.camporganizer.db.jooq.Tables.T_CAMP; import static de.jottyfan.camporganizer.db.jooq.Tables.T_CAMPDOCUMENT; import static de.jottyfan.camporganizer.db.jooq.Tables.T_DOCUMENT; import static de.jottyfan.camporganizer.db.jooq.Tables.T_DOCUMENTROLE; +import static de.jottyfan.camporganizer.db.jooq.Tables.T_LOCATION; import static de.jottyfan.camporganizer.db.jooq.Tables.T_PERSON; import static de.jottyfan.camporganizer.db.jooq.Tables.T_PROFILE; import static de.jottyfan.camporganizer.db.jooq.Tables.V_CAMP; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Map.Entry; import java.util.stream.Stream; import org.apache.logging.log4j.LogManager; @@ -18,7 +23,7 @@ import org.jooq.Condition; import org.jooq.DSLContext; import org.jooq.Record; import org.jooq.Record2; -import org.jooq.SelectConditionStep; +import org.jooq.SelectOrderByStep; import org.jooq.SelectSeekStep1; import org.jooq.SelectSeekStep2; import org.springframework.beans.factory.annotation.Autowired; @@ -26,6 +31,7 @@ import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import de.jottyfan.camporganizer.db.jooq.enums.EnumCamprole; +import de.jottyfan.camporganizer.db.jooq.enums.EnumDocument; import de.jottyfan.camporganizer.db.jooq.tables.TProfile; import de.jottyfan.camporganizer.db.jooq.tables.records.VCampRecord; @@ -141,7 +147,7 @@ public class CamplistGateway { } private List getAllDocumentBeans(Integer fkCamp, EnumCamprole camprole) { - SelectConditionStep> sql = jooq + SelectOrderByStep> sql = jooq // @formatter:off .select(T_DOCUMENT.NAME, T_DOCUMENT.PK) @@ -149,14 +155,40 @@ public class CamplistGateway { .leftJoin(T_DOCUMENT).on(T_DOCUMENT.PK.eq(T_CAMPDOCUMENT.FK_DOCUMENT)) .leftJoin(T_DOCUMENTROLE).on(T_DOCUMENTROLE.FK_DOCUMENT.eq(T_DOCUMENT.PK)) .where(T_CAMPDOCUMENT.FK_CAMP.eq(fkCamp)) - .and(T_DOCUMENTROLE.CAMPROLE.eq(camprole)); + .and(T_DOCUMENTROLE.CAMPROLE.eq(camprole)) + .unionAll(jooq + .select(T_DOCUMENT.NAME, + T_DOCUMENT.PK) + .from(T_CAMP) + .leftJoin(T_DOCUMENT).on(T_DOCUMENT.PK.eq(T_CAMP.FK_DOCUMENT)) + .leftJoin(T_DOCUMENTROLE).on(T_DOCUMENTROLE.FK_DOCUMENT.eq(T_DOCUMENT.PK)) + .where(T_CAMP.PK.eq(fkCamp)) + .and(T_DOCUMENTROLE.CAMPROLE.eq(camprole)) + ).unionAll(jooq + .select(T_DOCUMENT.NAME, + T_DOCUMENT.PK) + .from(T_LOCATION) + .leftJoin(T_DOCUMENT).on(T_DOCUMENT.PK.eq(T_LOCATION.FK_DOCUMENT)) + .leftJoin(T_DOCUMENTROLE).on(T_DOCUMENTROLE.FK_DOCUMENT.eq(T_DOCUMENT.PK)) + .leftJoin(T_CAMP).on(T_CAMP.FK_LOCATION.eq(T_LOCATION.PK)) + .where(T_CAMP.PK.eq(fkCamp)) + .and(T_DOCUMENTROLE.CAMPROLE.eq(camprole)) + ).unionAll(jooq + .select(T_DOCUMENT.NAME, + T_DOCUMENT.PK) + .from(T_DOCUMENT) + .where(T_DOCUMENT.DOCTYPE.eq(EnumDocument.camppass))); // @formatter:on LOGGER.debug(sql.toString()); - List list = new ArrayList<>(); + Map map = new HashMap<>(); // no duplicate on using a map for (Record r : sql.fetch()) { + map.put(r.get(T_DOCUMENT.PK), r.get(T_DOCUMENT.NAME)); + } + List list = new ArrayList<>(); + for (Entry entry : map.entrySet()) { DocumentBean bean = new DocumentBean(); - bean.setPk(r.get(T_DOCUMENT.PK)); - bean.setName(r.get(T_DOCUMENT.NAME)); + bean.setPk(entry.getKey()); + bean.setName(entry.getValue()); list.add(bean); } return list;