From b6b0402a5effb068fbab42897534fbaffb107da7 Mon Sep 17 00:00:00 2001 From: Sebastiaan de Schaetzen Date: Wed, 18 Jun 2025 08:14:45 +0200 Subject: [PATCH] update asset descriptor retrieval and editing for composite assets --- .../pcinv/controllers/WebController.java | 4 +-- .../pcinv/services/AssetService.java | 25 ++++++++++--------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/main/java/be/seeseepuff/pcinv/controllers/WebController.java b/src/main/java/be/seeseepuff/pcinv/controllers/WebController.java index d0411b0..b22cf3b 100644 --- a/src/main/java/be/seeseepuff/pcinv/controllers/WebController.java +++ b/src/main/java/be/seeseepuff/pcinv/controllers/WebController.java @@ -352,7 +352,7 @@ public class WebController { String assetType = asset.getAsset().getType(); model.addAttribute(ACTION, "edit"); model.addAttribute(ASSET, asset); - model.addAttribute(DESCRIPTORS, assetService.getAssetDescriptorTree(assetType)); + model.addAttribute(DESCRIPTORS, assetService.getAssetDescriptorTree(asset)); model.addAttribute(DESCRIPTOR, assetService.getAssetDescriptor(assetType)); model.addAttribute(INPUT_LIST, assetService.getInputList(assetType)); model.addAttribute(BUILDS, buildService.getAllBuilds()); @@ -374,7 +374,7 @@ public class WebController { String assetType = asset.getAsset().getType(); model.addAttribute(ACTION, "duplicate"); model.addAttribute(ASSET, asset); - model.addAttribute(DESCRIPTORS, assetService.getAssetDescriptorTree(assetType)); + model.addAttribute(DESCRIPTORS, assetService.getAssetDescriptorTree(asset)); model.addAttribute(DESCRIPTOR, assetService.getAssetDescriptor(assetType)); model.addAttribute(INPUT_LIST, assetService.getInputList(assetType)); return "create_asset"; diff --git a/src/main/java/be/seeseepuff/pcinv/services/AssetService.java b/src/main/java/be/seeseepuff/pcinv/services/AssetService.java index 58ab1bf..3691c40 100644 --- a/src/main/java/be/seeseepuff/pcinv/services/AssetService.java +++ b/src/main/java/be/seeseepuff/pcinv/services/AssetService.java @@ -160,10 +160,10 @@ public class AssetService { * Retrieves a tree of asset descriptors for the specified composite. * * @param composite the composite to retrieve descriptors for - * @return a list of AssetDescriptors for the composite + * @return a set of AssetDescriptors for the composite */ - public List getAssetDescriptorTree(Composite composite) { - var tree = new ArrayList(); + public Set getAssetDescriptorTree(Composite composite) { + var tree = new TreeSet<>(Comparator.comparing(AssetDescriptor::getDisplayName)); tree.add(getAssetDescriptor(GenericAsset.TYPE)); for (var asset : composite.getAssets()) { tree.add(getAssetDescriptor(asset)); @@ -235,20 +235,21 @@ public class AssetService { */ @Transactional public Asset editAsset(long qr, Map formData) { - var genericAsset = genericRepository.findByQr(qr); - if (genericAsset == null) { + var composite = getAssetByQr(qr); + if (composite == null) { throw new IllegalArgumentException("No asset found with QR code: " + qr); } - var assetType = genericAsset.getType(); - var assetDescriptor = getAssetDescriptor(assetType); - var asset = getRepositoryFor(assetType).findByAsset(genericAsset); + fillIn(composite.getGenericAsset(), getAssetDescriptor(GenericAsset.TYPE), formData); + genericRepository.saveAndFlush(composite.getGenericAsset()); - fillIn(genericAsset, getAssetDescriptor(GenericAsset.TYPE), formData); - fillIn(asset, assetDescriptor, formData); + for (var asset : composite.getAssets()) { + var assetDescriptor = getAssetDescriptor(asset); + fillIn(asset, assetDescriptor, formData); + getRepositoryFor(assetDescriptor.getType()).saveAndFlushAsset(asset); + } - genericRepository.saveAndFlush(genericAsset); - return getRepositoryFor(assetType).saveAndFlushAsset(asset); + return getAssetByQr(qr); } /**