From 9e7850a4a188a2bd7fa662eea9d4240948fd740b Mon Sep 17 00:00:00 2001 From: Jottyfan Date: Sat, 28 Jan 2023 18:40:23 +0100 Subject: [PATCH] prepared file upload --- build.gradle | 2 +- .../module/admin/AdminController.java | 49 ++++- .../module/admin/AdminRepository.java | 186 ++++++++++++++++++ .../module/admin/AdminService.java | 33 ++++ .../module/admin/DocumentBean.java | 107 ++++++++++ ...gsGateway.java => BookingsRepository.java} | 4 +- .../bookings/impl/BookingsService.java | 2 +- ...ssGateway.java => BusinessRepository.java} | 4 +- .../business/impl/BusinessService.java | 2 +- .../{CampGateway.java => CampRepository.java} | 4 +- .../business/camp/impl/CampService.java | 2 +- ...Gateway.java => PrivilegesRepository.java} | 4 +- .../privileges/impl/PrivilegesService.java | 2 +- .../module/camplist/CamplistService.java | 4 +- ...teway.java => ConfirmationRepository.java} | 4 +- .../impl/ConfirmationService.java | 2 +- ...rsonGateway.java => PersonRepository.java} | 4 +- .../person/impl/PersonService.java | 2 +- ...dGateway.java => DashboardRepository.java} | 4 +- .../{ICalGateway.java => ICalRepository.java} | 4 +- .../module/ical/impl/ICalService.java | 2 +- ...teway.java => RegistrationRepository.java} | 4 +- .../registration/RegistrationService.java | 2 +- .../validate/UnusedUsernameValidator.java | 4 +- src/main/resources/static/css/style.css | 85 +++++--- .../resources/templates/admin/document.html | 58 ++++++ .../templates/admin/document_edit.html | 92 +++++++++ src/main/resources/templates/admin/mail.html | 2 +- src/main/resources/templates/admin/main.html | 7 +- .../resources/templates/business/booker.html | 2 +- .../templates/business/bookings.html | 2 +- .../templates/business/business.html | 2 +- .../resources/templates/business/camp.html | 2 +- .../templates/business/privileges.html | 2 +- .../templates/confirmation/confirmation.html | 2 +- .../templates/confirmation/person.html | 2 +- src/main/resources/templates/template.html | 6 +- 37 files changed, 625 insertions(+), 76 deletions(-) create mode 100644 src/main/java/de/jottyfan/camporganizer/module/admin/AdminRepository.java create mode 100644 src/main/java/de/jottyfan/camporganizer/module/admin/DocumentBean.java rename src/main/java/de/jottyfan/camporganizer/module/business/bookings/impl/{BookingsGateway.java => BookingsRepository.java} (99%) rename src/main/java/de/jottyfan/camporganizer/module/business/business/impl/{BusinessGateway.java => BusinessRepository.java} (98%) rename src/main/java/de/jottyfan/camporganizer/module/business/camp/impl/{CampGateway.java => CampRepository.java} (97%) rename src/main/java/de/jottyfan/camporganizer/module/business/privileges/impl/{PrivilegesGateway.java => PrivilegesRepository.java} (98%) rename src/main/java/de/jottyfan/camporganizer/module/confirmation/confirmation/impl/{ConfirmationGateway.java => ConfirmationRepository.java} (99%) rename src/main/java/de/jottyfan/camporganizer/module/confirmation/person/impl/{PersonGateway.java => PersonRepository.java} (99%) rename src/main/java/de/jottyfan/camporganizer/module/dashboard/{DashboardGateway.java => DashboardRepository.java} (98%) rename src/main/java/de/jottyfan/camporganizer/module/ical/impl/{ICalGateway.java => ICalRepository.java} (95%) rename src/main/java/de/jottyfan/camporganizer/module/registration/{RegistrationGateway.java => RegistrationRepository.java} (99%) create mode 100644 src/main/resources/templates/admin/document.html create mode 100644 src/main/resources/templates/admin/document_edit.html diff --git a/build.gradle b/build.gradle index ebf876f..a11143c 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ apply plugin: 'war' apply plugin: 'application' group = 'de.jottyfan.camporganizer' -version = '0.2.8' +version = '0.2.9' sourceCompatibility = 17 mainClassName = "de.jottyfan.camporganizer.Main" 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 69aeaab..bf2811c 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/admin/AdminController.java +++ b/src/main/java/de/jottyfan/camporganizer/module/admin/AdminController.java @@ -13,6 +13,7 @@ import org.springframework.validation.BindingResult; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import de.jottyfan.camporganizer.module.camplist.CommonController; @@ -34,6 +35,17 @@ public class AdminController extends CommonController { @Value("${spring.mail.username}") private String from; + @GetMapping("/admin") + public String getMain(Model model, HttpServletRequest request) { + super.setupSession(model, request); + return "/admin/main"; + } + + @GetMapping("/admin/main") + public String getMainDirectly() { + return "redirect:/admin/main"; + } + @GetMapping("/admin/mail") public String getMail(Model model, HttpServletRequest request) { super.setupSession(model, request); @@ -50,21 +62,44 @@ public class AdminController extends CommonController { super.setupSession(model, request); if (bindingResult.hasErrors()) { for (ObjectError error : bindingResult.getAllErrors()) - LOGGER.error("error {}: {}", error.getCode(), error.getDefaultMessage()); + LOGGER.error("error {}: {}", error.getCode(), error.getDefaultMessage()); return "/admin/mail"; } service.sendMail(bean); return "redirect:/admin"; } - @GetMapping("/admin") - public String getMain(Model model, HttpServletRequest request) { + @GetMapping("/admin/document") + public String getDocuments(Model model, HttpServletRequest request) { super.setupSession(model, request); - return "/admin/main"; + model.addAttribute("documents", service.getAllDocuments()); + return "/admin/document"; } - @GetMapping("/admin/main") - public String getMainDirectly() { - return "redirect:/admin/main"; + @GetMapping("/admin/document/add") + public String prepareAddDocument(Model model, HttpServletRequest request) { + super.setupSession(model, request); + model.addAttribute("bean", new DocumentBean()); + return "/admin/document_edit"; + } + + @GetMapping("/admin/document/edit/{id}") + public String prepareAddDocument(@PathVariable Integer id, Model model, HttpServletRequest request) { + super.setupSession(model, request); + model.addAttribute("bean", service.getDocument(id)); + return "/admin/document_edit"; + } + + @PostMapping("/admin/document/update") + public String updateDocument(@Valid @ModelAttribute("bean") DocumentBean bean, + final BindingResult bindingResult, Model model, HttpServletRequest request) { + super.setupSession(model, request); + if (bindingResult.hasErrors()) { + for (ObjectError error : bindingResult.getAllErrors()) + LOGGER.error("error {}: {}", error.getCode(), error.getDefaultMessage()); + return "/admin/document_edit"; + } + service.updateDocument(bean); + return "redirect:/admin/document"; } } diff --git a/src/main/java/de/jottyfan/camporganizer/module/admin/AdminRepository.java b/src/main/java/de/jottyfan/camporganizer/module/admin/AdminRepository.java new file mode 100644 index 0000000..f3ac379 --- /dev/null +++ b/src/main/java/de/jottyfan/camporganizer/module/admin/AdminRepository.java @@ -0,0 +1,186 @@ +package de.jottyfan.camporganizer.module.admin; + +import static de.jottyfan.camporganizer.db.jooq.Tables.T_DOCUMENT; +import static de.jottyfan.camporganizer.db.jooq.Tables.T_DOCUMENTROLE; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.jooq.DSLContext; +import org.jooq.DeleteConditionStep; +import org.jooq.Field; +import org.jooq.InsertResultStep; +import org.jooq.InsertReturningStep; +import org.jooq.Record5; +import org.jooq.SelectSeekStep1; +import org.jooq.UpdateConditionStep; +import org.jooq.exception.DataAccessException; +import org.jooq.impl.DSL; +import org.springframework.beans.factory.annotation.Autowired; +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.enums.EnumFiletype; +import de.jottyfan.camporganizer.db.jooq.tables.records.TDocumentRecord; +import de.jottyfan.camporganizer.db.jooq.tables.records.TDocumentroleRecord; +import de.jottyfan.camporganizer.module.camplist.LambdaResultWrapper; + +/** + * + * @author jotty + * + */ +@Repository +@Transactional(transactionManager = "transactionManager") +public class AdminRepository { + + private static final Logger LOGGER = LogManager.getLogger(AdminRepository.class); + + @Autowired + private DSLContext jooq; + + /** + * get the document with that ID + * + * @param id the ID of the document + * @return the document + */ + public DocumentBean getDocument(Integer id) { + Field ROLES = DSL.field("roles", EnumCamprole[].class); + SelectSeekStep1, Integer> sql = jooq + // @formatter:off + .select(T_DOCUMENT.PK, + T_DOCUMENT.NAME, + T_DOCUMENT.DOCTYPE, + T_DOCUMENT.FILETYPE, + DSL.arrayAgg(T_DOCUMENTROLE.CAMPROLE).as(ROLES)) + .from(T_DOCUMENT) + .leftJoin(T_DOCUMENTROLE).on(T_DOCUMENTROLE.FK_DOCUMENT.eq(T_DOCUMENT.PK)) + .where(T_DOCUMENT.PK.eq(id)) + .groupBy(T_DOCUMENT.PK, T_DOCUMENT.NAME, T_DOCUMENT.DOCTYPE, T_DOCUMENT.FILETYPE) + .orderBy(T_DOCUMENT.PK); + // @formatter:on + LOGGER.debug(sql.toString()); + Record5 r = sql.fetchOne(); + if (r != null ) { + 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)); + bean.setRoles(r.get(ROLES)); + return bean; + } + return null; + } + + /** + * get all documents from the database + * + * @return all documents + */ + public List getAllDocuments() { + Field ROLES = DSL.field("roles", EnumCamprole[].class); + SelectSeekStep1, Integer> sql = jooq + // @formatter:off + .select(T_DOCUMENT.PK, + T_DOCUMENT.NAME, + T_DOCUMENT.DOCTYPE, + T_DOCUMENT.FILETYPE, + DSL.arrayAgg(T_DOCUMENTROLE.CAMPROLE).as(ROLES)) + .from(T_DOCUMENT) + .leftJoin(T_DOCUMENTROLE).on(T_DOCUMENTROLE.FK_DOCUMENT.eq(T_DOCUMENT.PK)) + .groupBy(T_DOCUMENT.PK, T_DOCUMENT.NAME, T_DOCUMENT.DOCTYPE, T_DOCUMENT.FILETYPE) + .orderBy(T_DOCUMENT.PK); + // @formatter:on + LOGGER.debug(sql.toString()); + List list = new ArrayList<>(); + for (Record5 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)); + bean.setRoles(r.get(ROLES)); + list.add(bean); + } + return list; + } + + /** + * upsert document in t_document + * + * @param document + * @throws DataAccessException + */ + public Integer upsert(DocumentBean bean) throws DataAccessException { + LambdaResultWrapper lrw = new LambdaResultWrapper(); + jooq.transaction(c -> { + Integer pk = bean.getPk(); + if (bean.getPk() != null) { + UpdateConditionStep sql = DSL.using(c) + // @formatter:off + .update(T_DOCUMENT) + .set(T_DOCUMENT.NAME, bean.getName()) + .set(T_DOCUMENT.DOCTYPE, bean.getDoctype()) + .set(T_DOCUMENT.DOCUMENT, bean.getDocument()) + .set(T_DOCUMENT.FILETYPE, bean.getFiletype()) + .where(T_DOCUMENT.PK.eq(bean.getPk())); + // @formatter:on + LOGGER.debug("{}", sql.toString()); + lrw.add(sql.execute()); + } else { + InsertResultStep sql = DSL.using(c) + // @formatter:off + .insertInto(T_DOCUMENT, + T_DOCUMENT.NAME, + T_DOCUMENT.DOCTYPE, + T_DOCUMENT.DOCUMENT, + T_DOCUMENT.FILETYPE) + .values(bean.getName(), bean.getDoctype(), bean.getDocument(), bean.getFiletype()) + .returning(T_DOCUMENT.PK); + // @formatter:on + LOGGER.debug("{}", sql.toString()); + pk = sql.fetchOne().get(T_DOCUMENT.PK); + lrw.add(1); + } + List allEnums = Arrays.asList(EnumCamprole.values()); + Set removeCandidates = new HashSet<>(); + removeCandidates.addAll(allEnums); + for (EnumCamprole role : bean.getRoles()) { + try { + InsertReturningStep sql = DSL.using(c) + // @formatter:off + .insertInto(T_DOCUMENTROLE, + T_DOCUMENTROLE.FK_DOCUMENT, + T_DOCUMENTROLE.CAMPROLE) + .values(pk, role) + .onConflict(T_DOCUMENTROLE.FK_DOCUMENT, T_DOCUMENTROLE.CAMPROLE) + .doNothing(); + // @formatter:on + LOGGER.debug("{}", sql.toString()); + lrw.add(sql.execute()); + removeCandidates.remove(role); + } catch (IllegalArgumentException e) { + LOGGER.error(e); + } + } + DeleteConditionStep sql = DSL.using(c) + // @formatter:off + .deleteFrom(T_DOCUMENTROLE) + .where(T_DOCUMENTROLE.FK_DOCUMENT.eq(pk)) + .and(T_DOCUMENTROLE.CAMPROLE.in(removeCandidates)); + // @formatter:on + LOGGER.debug("{}", sql.toString()); + lrw.add(sql.execute()); + }); + return lrw.getCounter(); + } +} 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 194be24..1529d1d 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 java.util.List; + import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; @@ -19,8 +21,39 @@ public class AdminService { @Autowired private MailRepository mailRepository; + @Autowired + private AdminRepository adminRepository; + public void sendMail(@Valid MailBean bean) { mailRepository.sendMail(bean); } + /** + * get all documents + * + * @return a list of documents; an empty one at least + */ + public List getAllDocuments() { + return adminRepository.getAllDocuments(); + } + + /** + * get document from the database + * + * @param id the ID of the document + * @return the document or null + */ + public DocumentBean getDocument(Integer id) { + return adminRepository.getDocument(id); + } + + /** + * upsert the document bean + * + * @param bean the bean + * @return the number of affected database lines + */ + public Integer updateDocument(@Valid DocumentBean bean) { + return adminRepository.upsert(bean); + } } diff --git a/src/main/java/de/jottyfan/camporganizer/module/admin/DocumentBean.java b/src/main/java/de/jottyfan/camporganizer/module/admin/DocumentBean.java new file mode 100644 index 0000000..d4b5df3 --- /dev/null +++ b/src/main/java/de/jottyfan/camporganizer/module/admin/DocumentBean.java @@ -0,0 +1,107 @@ +package de.jottyfan.camporganizer.module.admin; + +import java.io.IOException; +import java.io.InputStream; +import java.io.Serializable; +import java.util.Base64; + +import javax.servlet.http.Part; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +import org.apache.commons.io.IOUtils; + +import de.jottyfan.camporganizer.db.jooq.enums.EnumCamprole; +import de.jottyfan.camporganizer.db.jooq.enums.EnumDocument; +import de.jottyfan.camporganizer.db.jooq.enums.EnumFiletype; + +/** + * + * @author jotty + * + */ +public class DocumentBean implements Serializable{ + + private static final long serialVersionUID = 1L; + + private Integer pk; + @NotNull + private EnumDocument doctype; + @NotBlank + private String name; + private String document; + @NotNull + private EnumFiletype filetype; + @NotNull + private Part uploadfile; + private EnumCamprole[] roles; + + public void encodeUpload() throws IOException { + if (uploadfile != null) { + InputStream inputStream = uploadfile.getInputStream(); + byte[] bytes = IOUtils.toByteArray(inputStream); + if (bytes.length > 0) { + document = Base64.getEncoder().encodeToString(bytes); + } // not uploaded files should not be changed, so document must be kept as is + } + } + + public Integer getPk() { + return pk; + } + + public void setDoctype(EnumDocument doctype) { + this.doctype = doctype; + } + + public EnumDocument getDoctype() { + return doctype; + } + + public void setName(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setDocument(String document) { + this.document = document; + } + + public String getDocument() { + return document; + } + + public void setFiletype(EnumFiletype filetype) { + this.filetype = filetype; + } + + public EnumFiletype getFiletype() { + return filetype; + } + + public Part getUploadfile() { + return uploadfile; + } + + public void setUploadfile(Part uploadfile) { + this.uploadfile = uploadfile; + } + + public EnumCamprole[] getRoles() { + return roles; + } + + public void setRoles(EnumCamprole[] roles) { + this.roles = roles; + } + + /** + * @param pk the pk to set + */ + public void setPk(Integer pk) { + this.pk = pk; + } +} diff --git a/src/main/java/de/jottyfan/camporganizer/module/business/bookings/impl/BookingsGateway.java b/src/main/java/de/jottyfan/camporganizer/module/business/bookings/impl/BookingsRepository.java similarity index 99% rename from src/main/java/de/jottyfan/camporganizer/module/business/bookings/impl/BookingsGateway.java rename to src/main/java/de/jottyfan/camporganizer/module/business/bookings/impl/BookingsRepository.java index bb41fb3..2eb0355 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/business/bookings/impl/BookingsGateway.java +++ b/src/main/java/de/jottyfan/camporganizer/module/business/bookings/impl/BookingsRepository.java @@ -34,8 +34,8 @@ import de.jottyfan.camporganizer.db.jooq.tables.records.TPersonRecord; */ @Repository @Transactional(transactionManager = "transactionManager") -public class BookingsGateway { - private static final Logger LOGGER = LogManager.getLogger(BookingsGateway.class); +public class BookingsRepository { + private static final Logger LOGGER = LogManager.getLogger(BookingsRepository.class); @Autowired private DSLContext jooq; diff --git a/src/main/java/de/jottyfan/camporganizer/module/business/bookings/impl/BookingsService.java b/src/main/java/de/jottyfan/camporganizer/module/business/bookings/impl/BookingsService.java index c5ae3d4..2deee15 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/business/bookings/impl/BookingsService.java +++ b/src/main/java/de/jottyfan/camporganizer/module/business/bookings/impl/BookingsService.java @@ -16,7 +16,7 @@ import de.jottyfan.camporganizer.module.business.bookings.IBookingsService; public class BookingsService implements IBookingsService { @Autowired - private BookingsGateway bookingsGateway; + private BookingsRepository bookingsGateway; @Override public List getBookers(String username) { diff --git a/src/main/java/de/jottyfan/camporganizer/module/business/business/impl/BusinessGateway.java b/src/main/java/de/jottyfan/camporganizer/module/business/business/impl/BusinessRepository.java similarity index 98% rename from src/main/java/de/jottyfan/camporganizer/module/business/business/impl/BusinessGateway.java rename to src/main/java/de/jottyfan/camporganizer/module/business/business/impl/BusinessRepository.java index cf57553..63a85df 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/business/business/impl/BusinessGateway.java +++ b/src/main/java/de/jottyfan/camporganizer/module/business/business/impl/BusinessRepository.java @@ -33,8 +33,8 @@ import de.jottyfan.camporganizer.db.jooq.tables.records.TPersonRecord; */ @Repository @Transactional(transactionManager = "transactionManager") -public class BusinessGateway { - private static final Logger LOGGER = LogManager.getLogger(BusinessGateway.class); +public class BusinessRepository { + private static final Logger LOGGER = LogManager.getLogger(BusinessRepository.class); @Autowired private DSLContext jooq; diff --git a/src/main/java/de/jottyfan/camporganizer/module/business/business/impl/BusinessService.java b/src/main/java/de/jottyfan/camporganizer/module/business/business/impl/BusinessService.java index eaae3f4..6ec3cc9 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/business/business/impl/BusinessService.java +++ b/src/main/java/de/jottyfan/camporganizer/module/business/business/impl/BusinessService.java @@ -19,7 +19,7 @@ import de.jottyfan.camporganizer.module.business.business.IBusinessService; @Service public class BusinessService implements IBusinessService { @Autowired - private BusinessGateway gateway; + private BusinessRepository gateway; @Override public String getCurrentUser(HttpServletRequest request) { diff --git a/src/main/java/de/jottyfan/camporganizer/module/business/camp/impl/CampGateway.java b/src/main/java/de/jottyfan/camporganizer/module/business/camp/impl/CampRepository.java similarity index 97% rename from src/main/java/de/jottyfan/camporganizer/module/business/camp/impl/CampGateway.java rename to src/main/java/de/jottyfan/camporganizer/module/business/camp/impl/CampRepository.java index 92b53cf..9f92342 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/business/camp/impl/CampGateway.java +++ b/src/main/java/de/jottyfan/camporganizer/module/business/camp/impl/CampRepository.java @@ -32,8 +32,8 @@ import de.jottyfan.camporganizer.db.jooq.enums.EnumSex; */ @Repository @Transactional(transactionManager = "transactionManager") -public class CampGateway { - private static final Logger LOGGER = LogManager.getLogger(CampGateway.class); +public class CampRepository { + private static final Logger LOGGER = LogManager.getLogger(CampRepository.class); @Autowired private DSLContext jooq; diff --git a/src/main/java/de/jottyfan/camporganizer/module/business/camp/impl/CampService.java b/src/main/java/de/jottyfan/camporganizer/module/business/camp/impl/CampService.java index 5932011..97d8944 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/business/camp/impl/CampService.java +++ b/src/main/java/de/jottyfan/camporganizer/module/business/camp/impl/CampService.java @@ -17,7 +17,7 @@ import de.jottyfan.camporganizer.module.business.camp.ICampService; public class CampService implements ICampService { @Autowired - private CampGateway campGateway; + private CampRepository campGateway; @Override public CampBean getCamp(Integer id, String username) { diff --git a/src/main/java/de/jottyfan/camporganizer/module/business/privileges/impl/PrivilegesGateway.java b/src/main/java/de/jottyfan/camporganizer/module/business/privileges/impl/PrivilegesRepository.java similarity index 98% rename from src/main/java/de/jottyfan/camporganizer/module/business/privileges/impl/PrivilegesGateway.java rename to src/main/java/de/jottyfan/camporganizer/module/business/privileges/impl/PrivilegesRepository.java index 5b401aa..e6c44bd 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/business/privileges/impl/PrivilegesGateway.java +++ b/src/main/java/de/jottyfan/camporganizer/module/business/privileges/impl/PrivilegesRepository.java @@ -29,8 +29,8 @@ import de.jottyfan.camporganizer.db.jooq.tables.records.TSalesprofileRecord; */ @Repository @Transactional(transactionManager = "transactionManager") -public class PrivilegesGateway { - private static final Logger LOGGER = LogManager.getLogger(PrivilegesGateway.class); +public class PrivilegesRepository { + private static final Logger LOGGER = LogManager.getLogger(PrivilegesRepository.class); @Autowired private DSLContext jooq; diff --git a/src/main/java/de/jottyfan/camporganizer/module/business/privileges/impl/PrivilegesService.java b/src/main/java/de/jottyfan/camporganizer/module/business/privileges/impl/PrivilegesService.java index 6046798..f963a85 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/business/privileges/impl/PrivilegesService.java +++ b/src/main/java/de/jottyfan/camporganizer/module/business/privileges/impl/PrivilegesService.java @@ -18,7 +18,7 @@ import de.jottyfan.camporganizer.module.business.privileges.IPrivilegesService; @Service public class PrivilegesService implements IPrivilegesService { @Autowired - private PrivilegesGateway gateway; + private PrivilegesRepository gateway; @Override public Map getPrivileges() { diff --git a/src/main/java/de/jottyfan/camporganizer/module/camplist/CamplistService.java b/src/main/java/de/jottyfan/camporganizer/module/camplist/CamplistService.java index e7529c2..cd03ef3 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/camplist/CamplistService.java +++ b/src/main/java/de/jottyfan/camporganizer/module/camplist/CamplistService.java @@ -13,7 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import de.jottyfan.camporganizer.db.jooq.tables.records.VCampRecord; -import de.jottyfan.camporganizer.module.dashboard.DashboardGateway; +import de.jottyfan.camporganizer.module.dashboard.DashboardRepository; /** * @@ -27,7 +27,7 @@ public class CamplistService { private CamplistGateway gateway; @Autowired - private DashboardGateway dashboardGateway; + private DashboardRepository dashboardGateway; /** * get all camps from the database and prepare them for the view diff --git a/src/main/java/de/jottyfan/camporganizer/module/confirmation/confirmation/impl/ConfirmationGateway.java b/src/main/java/de/jottyfan/camporganizer/module/confirmation/confirmation/impl/ConfirmationRepository.java similarity index 99% rename from src/main/java/de/jottyfan/camporganizer/module/confirmation/confirmation/impl/ConfirmationGateway.java rename to src/main/java/de/jottyfan/camporganizer/module/confirmation/confirmation/impl/ConfirmationRepository.java index 81b4cb3..b4601f2 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/confirmation/confirmation/impl/ConfirmationGateway.java +++ b/src/main/java/de/jottyfan/camporganizer/module/confirmation/confirmation/impl/ConfirmationRepository.java @@ -38,8 +38,8 @@ import de.jottyfan.camporganizer.db.jooq.enums.EnumModule; */ @Repository @Transactional(transactionManager = "transactionManager") -public class ConfirmationGateway { - private static final Logger LOGGER = LogManager.getLogger(ConfirmationGateway.class); +public class ConfirmationRepository { + private static final Logger LOGGER = LogManager.getLogger(ConfirmationRepository.class); @Autowired private DSLContext jooq; diff --git a/src/main/java/de/jottyfan/camporganizer/module/confirmation/confirmation/impl/ConfirmationService.java b/src/main/java/de/jottyfan/camporganizer/module/confirmation/confirmation/impl/ConfirmationService.java index 3398525..cb75d6d 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/confirmation/confirmation/impl/ConfirmationService.java +++ b/src/main/java/de/jottyfan/camporganizer/module/confirmation/confirmation/impl/ConfirmationService.java @@ -19,7 +19,7 @@ import de.jottyfan.camporganizer.module.confirmation.confirmation.IConfirmationS @Service public class ConfirmationService implements IConfirmationService { @Autowired - private ConfirmationGateway gateway; + private ConfirmationRepository gateway; @Override public String getCurrentUser(HttpServletRequest request) { diff --git a/src/main/java/de/jottyfan/camporganizer/module/confirmation/person/impl/PersonGateway.java b/src/main/java/de/jottyfan/camporganizer/module/confirmation/person/impl/PersonRepository.java similarity index 99% rename from src/main/java/de/jottyfan/camporganizer/module/confirmation/person/impl/PersonGateway.java rename to src/main/java/de/jottyfan/camporganizer/module/confirmation/person/impl/PersonRepository.java index 2df3001..12d9edd 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/confirmation/person/impl/PersonGateway.java +++ b/src/main/java/de/jottyfan/camporganizer/module/confirmation/person/impl/PersonRepository.java @@ -46,8 +46,8 @@ import de.jottyfan.camporganizer.module.mail.MailRepository; */ @Repository @Transactional(transactionManager = "transactionManager") -public class PersonGateway { - private static final Logger LOGGER = LogManager.getLogger(PersonGateway.class); +public class PersonRepository { + private static final Logger LOGGER = LogManager.getLogger(PersonRepository.class); @Autowired private DSLContext jooq; diff --git a/src/main/java/de/jottyfan/camporganizer/module/confirmation/person/impl/PersonService.java b/src/main/java/de/jottyfan/camporganizer/module/confirmation/person/impl/PersonService.java index 5ef776c..b47e99c 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/confirmation/person/impl/PersonService.java +++ b/src/main/java/de/jottyfan/camporganizer/module/confirmation/person/impl/PersonService.java @@ -15,7 +15,7 @@ import de.jottyfan.camporganizer.module.confirmation.person.IPersonService; @Service public class PersonService implements IPersonService { @Autowired - private PersonGateway gateway; + private PersonRepository gateway; @Override public PersonBean getPerson(String username, Integer pk) { diff --git a/src/main/java/de/jottyfan/camporganizer/module/dashboard/DashboardGateway.java b/src/main/java/de/jottyfan/camporganizer/module/dashboard/DashboardRepository.java similarity index 98% rename from src/main/java/de/jottyfan/camporganizer/module/dashboard/DashboardGateway.java rename to src/main/java/de/jottyfan/camporganizer/module/dashboard/DashboardRepository.java index 7278926..2331b5c 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/dashboard/DashboardGateway.java +++ b/src/main/java/de/jottyfan/camporganizer/module/dashboard/DashboardRepository.java @@ -31,8 +31,8 @@ import de.jottyfan.camporganizer.module.camplist.LambdaResultWrapper; */ @Repository @Transactional(transactionManager = "transactionManager") -public class DashboardGateway { - private static final Logger LOGGER = LogManager.getLogger(DashboardGateway.class); +public class DashboardRepository { + private static final Logger LOGGER = LogManager.getLogger(DashboardRepository.class); @Autowired private DSLContext jooq; diff --git a/src/main/java/de/jottyfan/camporganizer/module/ical/impl/ICalGateway.java b/src/main/java/de/jottyfan/camporganizer/module/ical/impl/ICalRepository.java similarity index 95% rename from src/main/java/de/jottyfan/camporganizer/module/ical/impl/ICalGateway.java rename to src/main/java/de/jottyfan/camporganizer/module/ical/impl/ICalRepository.java index ed45fdb..50329a3 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/ical/impl/ICalGateway.java +++ b/src/main/java/de/jottyfan/camporganizer/module/ical/impl/ICalRepository.java @@ -30,8 +30,8 @@ import biweekly.property.Summary; */ @Repository @Transactional(transactionManager = "transactionManager") -public class ICalGateway { - private static final Logger LOGGER = LogManager.getLogger(ICalGateway.class); +public class ICalRepository { + private static final Logger LOGGER = LogManager.getLogger(ICalRepository.class); @Autowired private DSLContext jooq; diff --git a/src/main/java/de/jottyfan/camporganizer/module/ical/impl/ICalService.java b/src/main/java/de/jottyfan/camporganizer/module/ical/impl/ICalService.java index ad0d7a4..ef411f6 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/ical/impl/ICalService.java +++ b/src/main/java/de/jottyfan/camporganizer/module/ical/impl/ICalService.java @@ -20,7 +20,7 @@ import de.jottyfan.camporganizer.module.ical.IICalService; public class ICalService implements IICalService { @Autowired - private ICalGateway gateway; + private ICalRepository gateway; @Override public Boolean generate(HttpServletResponse response) throws IOException { diff --git a/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationGateway.java b/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationRepository.java similarity index 99% rename from src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationGateway.java rename to src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationRepository.java index 389c584..11e3351 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationGateway.java +++ b/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationRepository.java @@ -53,8 +53,8 @@ import de.jottyfan.camporganizer.module.camplist.LambdaResultWrapper; */ @Repository @Transactional(transactionManager = "transactionManager") -public class RegistrationGateway { - private static final Logger LOGGER = LogManager.getLogger(RegistrationGateway.class); +public class RegistrationRepository { + private static final Logger LOGGER = LogManager.getLogger(RegistrationRepository.class); @Autowired private DSLContext jooq; diff --git a/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationService.java b/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationService.java index 3823601..9d4ff01 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationService.java +++ b/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationService.java @@ -17,7 +17,7 @@ public class RegistrationService { private final static Logger LOGGER = LogManager.getLogger(RegistrationService.class); @Autowired - private RegistrationGateway gateway; + private RegistrationRepository gateway; @Autowired private KeycloakRepository keycloak; diff --git a/src/main/java/de/jottyfan/camporganizer/module/registration/validate/UnusedUsernameValidator.java b/src/main/java/de/jottyfan/camporganizer/module/registration/validate/UnusedUsernameValidator.java index 41bf8ce..882d532 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/registration/validate/UnusedUsernameValidator.java +++ b/src/main/java/de/jottyfan/camporganizer/module/registration/validate/UnusedUsernameValidator.java @@ -6,7 +6,7 @@ import javax.validation.ConstraintValidatorContext; import org.springframework.beans.BeanWrapperImpl; import org.springframework.beans.factory.annotation.Autowired; -import de.jottyfan.camporganizer.module.registration.RegistrationGateway; +import de.jottyfan.camporganizer.module.registration.RegistrationRepository; /** * @@ -19,7 +19,7 @@ public class UnusedUsernameValidator implements ConstraintValidator + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
NameDokumententypZielgruppeInhaltDateityp
Wegbeschreibung BestätigungFreizeitpass + Teilnehmer + Mitarbeiter + Leiter + Küche +
neues Dokument anlegen
+ +
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/admin/document_edit.html b/src/main/resources/templates/admin/document_edit.html new file mode 100644 index 0000000..6deeb04 --- /dev/null +++ b/src/main/resources/templates/admin/document_edit.html @@ -0,0 +1,92 @@ + + + + + + + + + + +
+
+
+
+ +
+ +
+ [[${error}]]
+
+
+
+ +
+ [[${error}]]
+
+
+
+ +
+ [[${error}]]
+
+
+
+ +
+ [[${error}]]
+ +
+
+
+ +
+ [[${error}]]
+
+
+
+
+
+ + Abbrechen +
+
+ + +
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/admin/mail.html b/src/main/resources/templates/admin/mail.html index 4d9fcba..43c4e19 100644 --- a/src/main/resources/templates/admin/mail.html +++ b/src/main/resources/templates/admin/mail.html @@ -7,7 +7,7 @@ +
- TODO: implement + TODO: implement; list number of camps, registrations and documents or such
diff --git a/src/main/resources/templates/business/booker.html b/src/main/resources/templates/business/booker.html index 97b37ce..daa0542 100644 --- a/src/main/resources/templates/business/booker.html +++ b/src/main/resources/templates/business/booker.html @@ -7,7 +7,7 @@