aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/berzerkula/builddb/controllers/PkgController.java
diff options
context:
space:
mode:
authorWilliam Harrington <kb0iic@berzerkula.org>2025-02-11 21:30:34 -0600
committerWilliam Harrington <kb0iic@berzerkula.org>2025-02-11 21:30:34 -0600
commit5db196eebb04155491630b5396d1b7a7f2eab4e6 (patch)
treefc53afeb77808ca6c8ed39a055ac79241c756540 /src/main/java/org/berzerkula/builddb/controllers/PkgController.java
parent0adf14e0466bc153f4924cef62b18352aa987827 (diff)
Push initial release 1.0.0
Diffstat (limited to 'src/main/java/org/berzerkula/builddb/controllers/PkgController.java')
-rw-r--r--src/main/java/org/berzerkula/builddb/controllers/PkgController.java169
1 files changed, 169 insertions, 0 deletions
diff --git a/src/main/java/org/berzerkula/builddb/controllers/PkgController.java b/src/main/java/org/berzerkula/builddb/controllers/PkgController.java
new file mode 100644
index 0000000..404a58b
--- /dev/null
+++ b/src/main/java/org/berzerkula/builddb/controllers/PkgController.java
@@ -0,0 +1,169 @@
+package org.berzerkula.builddb.controllers;
+
+
+import jakarta.persistence.OrderBy;
+import jakarta.validation.Valid;
+import org.berzerkula.builddb.models.Pkg;
+import org.berzerkula.builddb.models.PkgDto;
+import org.berzerkula.builddb.repositories.PkgRepository;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Objects;
+
+@Controller
+@RequestMapping("/pkgs")
+public class PkgController {
+
+ private static final Logger logger = LoggerFactory.getLogger(PkgController.class);
+
+ @Autowired
+ private PkgRepository repo;
+
+ @GetMapping({"", "/", "/index"})
+ public String showPkgList(Model model,
+ @RequestParam(defaultValue = "sequence,asc") String[] sort,
+ @RequestParam(defaultValue = "") String repotable) {
+ try {
+ String sortField = sort[0];
+ String sortDirection = sort[1];
+
+ Sort.Direction direction = sortDirection.equals("desc") ? Sort.Direction.DESC : Sort.Direction.ASC;
+ Sort.Order order = new Sort.Order(direction, sortField);
+
+ List<Pkg> pkgs = repo.findAll(Sort.by(order));
+
+ model.addAttribute("pkgs", pkgs);
+ model.addAttribute("sortField", sortField);
+ model.addAttribute("sortDirection", sortDirection);
+ model.addAttribute("reverseSortDirection", sortDirection.equals("asc") ? "desc" : "asc");
+
+ } catch (Exception e) {
+ logger.error(e.getMessage());
+ }
+
+ return "pkgs/index";
+ }
+
+ @GetMapping("/add")
+ public String showAddPkgForm(Model model) {
+ PkgDto pkgDto = new PkgDto();
+ model.addAttribute("pkgDto", pkgDto);
+ return "pkgs/add";
+ }
+
+ @PostMapping("/add")
+ public String addPkg(
+ @Valid
+ @ModelAttribute
+ PkgDto pkgDto, BindingResult result ) {
+
+ if (result.hasErrors()) {
+ return "pkgs/add";
+ }
+
+ try {
+
+ Pkg pkg = new Pkg();
+ pkg.setSequence(pkgDto.getSequence());
+ pkg.setName(pkgDto.getName());
+ pkg.setVersion(pkgDto.getVersion());
+ pkg.setConfigure(pkgDto.getConfigure());
+ pkg.setBuild(pkgDto.getBuild());
+ pkg.setInstall(pkgDto.getInstall());
+ pkg.setSetup(pkgDto.getSetup());
+ pkg.setNotes(pkgDto.getNotes());
+ pkg.setUrl(pkgDto.getUrl());
+
+ repo.save(pkg);
+
+ } catch (Exception e) {
+ logger.error(e.getMessage());
+ }
+
+ return "redirect:/pkgs";
+ }
+
+ @GetMapping("/edit")
+ public String showEditPkgForm(Model model, @RequestParam int id) {
+
+ try {
+ Pkg pkg = repo.findById(id).get();
+ model.addAttribute("pkg", pkg);
+
+ PkgDto pkgDto = new PkgDto();
+ pkgDto.setSequence(pkg.getSequence());
+ pkgDto.setName(pkg.getName());
+ pkgDto.setVersion(pkg.getVersion());
+ pkgDto.setConfigure(pkg.getConfigure());
+ pkgDto.setBuild(pkg.getBuild());
+ pkgDto.setInstall(pkg.getInstall());
+ pkgDto.setSetup(pkg.getSetup());
+ pkgDto.setNotes(pkg.getNotes());
+ pkgDto.setUrl(pkg.getUrl());
+
+ model.addAttribute("pkgDto", pkgDto);
+
+ } catch(Exception ex) {
+ logger.error("Exception: {}", ex.getMessage());
+ }
+
+ return "pkgs/edit";
+ }
+
+ @PostMapping("/edit")
+ public String editPkg(
+ Model model,
+ @RequestParam int id,
+ @Valid
+ @ModelAttribute PkgDto pkgDto, BindingResult result ) {
+
+ try {
+ Pkg pkg = repo.findById(id).get();
+ model.addAttribute("pkg", pkg);
+
+ if (result.hasErrors()) {
+ return "pkgs/edit";
+ }
+
+ pkg.setSequence(pkgDto.getSequence());
+ pkg.setName(pkgDto.getName());
+ pkg.setVersion(pkgDto.getVersion());
+ pkg.setConfigure(pkgDto.getConfigure());
+ pkg.setBuild(pkgDto.getBuild());
+ pkg.setInstall(pkgDto.getInstall());
+ pkg.setSetup(pkgDto.getSetup());
+ pkg.setNotes(pkgDto.getNotes());
+ pkg.setUrl(pkgDto.getUrl());
+
+ repo.save(pkg);
+
+ } catch(Exception ex) {
+ logger.error("Exception: {}", ex.getMessage());
+ }
+ return "redirect:/pkgs/#" + id;
+
+ }
+
+ @GetMapping("/delete")
+ public String deletePkg(@RequestParam int id) {
+
+ try {
+ Pkg pkg = repo.findById(id).get();
+
+ repo.delete(pkg);
+
+ } catch (Exception ex) {
+ logger.error("Exception: {}", ex.getMessage());
+ }
+
+ return "redirect:/pkgs/";
+ }
+}