From 1c65630565fb4c0413de089fdde8783c54eaa9f2 Mon Sep 17 00:00:00 2001 From: Sebastiaan de Schaetzen Date: Sat, 7 Jun 2025 19:30:42 +0200 Subject: [PATCH] Add asset creation form handling and update asset interface --- .../pcinv/controllers/WebController.java | 21 +++++++++++++++++++ .../be/seeseepuff/pcinv/models/Asset.java | 2 ++ .../resources/templates/create_asset.html | 2 +- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/main/java/be/seeseepuff/pcinv/controllers/WebController.java b/src/main/java/be/seeseepuff/pcinv/controllers/WebController.java index 80676ae..5b303c2 100644 --- a/src/main/java/be/seeseepuff/pcinv/controllers/WebController.java +++ b/src/main/java/be/seeseepuff/pcinv/controllers/WebController.java @@ -2,10 +2,14 @@ package be.seeseepuff.pcinv.controllers; import be.seeseepuff.pcinv.services.AssetService; import lombok.RequiredArgsConstructor; +import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; /** * Controller for handling web requests related to assets. @@ -51,4 +55,21 @@ public class WebController { model.addAttribute(DESCRIPTOR, assetService.getAssetDescriptor(type)); return "create_asset"; } + + /** + * Handles the form submission for creating an asset. + * + * @param model The model to add attributes to. + * @param type The type of asset to create. + * @return The view name for creating the asset. + */ + @PostMapping( + value = "/create/{type}", + consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE + ) + public String createTypePost(Model model, @PathVariable String type, @RequestBody MultiValueMap formData) { + model.addAttribute(DESCRIPTORS, assetService.getAssetDescriptorTree(type)); + model.addAttribute(DESCRIPTOR, assetService.getAssetDescriptor(type)); + return "create_asset"; + } } diff --git a/src/main/java/be/seeseepuff/pcinv/models/Asset.java b/src/main/java/be/seeseepuff/pcinv/models/Asset.java index 7e295d6..aec1485 100644 --- a/src/main/java/be/seeseepuff/pcinv/models/Asset.java +++ b/src/main/java/be/seeseepuff/pcinv/models/Asset.java @@ -4,4 +4,6 @@ public interface Asset { long getId(); GenericAsset getAsset(); + + void setAsset(GenericAsset asset); } diff --git a/src/main/resources/templates/create_asset.html b/src/main/resources/templates/create_asset.html index 53e4451..9688384 100644 --- a/src/main/resources/templates/create_asset.html +++ b/src/main/resources/templates/create_asset.html @@ -1,7 +1,7 @@
Create a -
+