show all official documents
This commit is contained in:
		| @@ -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; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user