show all official documents

This commit is contained in:
Jottyfan 2023-01-02 22:47:24 +01:00
parent cb70e53bb7
commit 0bb92f511c
2 changed files with 39 additions and 7 deletions

View File

@ -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"

View File

@ -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<DocumentBean> getAllDocumentBeans(Integer fkCamp, EnumCamprole camprole) {
SelectConditionStep<Record2<String, Integer>> sql = jooq
SelectOrderByStep<Record2<String, Integer>> 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<DocumentBean> list = new ArrayList<>();
Map<Integer, String> 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<DocumentBean> list = new ArrayList<>();
for (Entry<Integer, String> 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;