From 82f4723898a7c251c132dc72ac59bd735882083d Mon Sep 17 00:00:00 2001 From: YevhenBondarenko Date: Tue, 19 Sep 2023 12:12:51 +0200 Subject: [PATCH 1/2] fixed delete all types from widgets bundle --- .../server/dao/service/Validator.java | 6 ++++ .../dao/widget/WidgetTypeServiceImpl.java | 2 +- .../dao/service/WidgetTypeServiceTest.java | 29 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/dao/src/main/java/org/thingsboard/server/dao/service/Validator.java b/dao/src/main/java/org/thingsboard/server/dao/service/Validator.java index e9e664e9c1..d8c4ffddc9 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/service/Validator.java +++ b/dao/src/main/java/org/thingsboard/server/dao/service/Validator.java @@ -157,4 +157,10 @@ public class Validator { return StringUtils.isEmpty(key) || RegexUtils.matches(key, PROPERTY_PATTERN); } + public static void checkNotNull(Object reference, String errorMessage) { + if (reference == null) { + throw new IncorrectParameterException(errorMessage); + } + } + } diff --git a/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetTypeServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetTypeServiceImpl.java index 410e0e4a3f..7db38b6b18 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetTypeServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetTypeServiceImpl.java @@ -178,7 +178,7 @@ public class WidgetTypeServiceImpl implements WidgetTypeService { log.trace("Executing updateWidgetsBundleWidgetTypes, tenantId [{}], widgetsBundleId [{}], widgetTypeIds [{}]", tenantId, widgetsBundleId, widgetTypeIds); Validator.validateId(tenantId, INCORRECT_TENANT_ID + tenantId); Validator.validateId(widgetsBundleId, INCORRECT_WIDGETS_BUNDLE_ID + widgetsBundleId); - validateIds(widgetTypeIds, "Incorrect widgetTypeIds " + widgetTypeIds); + Validator.checkNotNull(widgetTypeIds, "Incorrect widgetTypeIds " + widgetTypeIds); List bundleWidgets = new ArrayList<>(); for (int index = 0; index < widgetTypeIds.size(); index++) { bundleWidgets.add(new WidgetsBundleWidget(widgetsBundleId, widgetTypeIds.get(index), index)); diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/WidgetTypeServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/WidgetTypeServiceTest.java index 679c288ae7..c1802d9865 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/WidgetTypeServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/WidgetTypeServiceTest.java @@ -218,4 +218,33 @@ public class WidgetTypeServiceTest extends AbstractServiceTest { widgetsBundleService.deleteWidgetsBundle(tenantId, savedWidgetsBundle.getId()); } + @Test + public void testDeleteAllTypesFromWidgetsBundle() { + WidgetsBundle widgetsBundle = new WidgetsBundle(); + widgetsBundle.setTenantId(tenantId); + widgetsBundle.setTitle("Widgets bundle"); + WidgetsBundle savedWidgetsBundle = widgetsBundleService.saveWidgetsBundle(widgetsBundle); + + List widgetTypes = new ArrayList<>(); + for (int i = 0; i < 5; i++) { + WidgetTypeDetails widgetType = new WidgetTypeDetails(); + widgetType.setTenantId(tenantId); + widgetType.setName("Widget Type " + i); + widgetType.setDescriptor(JacksonUtil.fromString("{ \"someKey\": \"someValue\" }", JsonNode.class)); + widgetTypes.add(new WidgetType(widgetTypeService.saveWidgetType(widgetType))); + } + + List widgetTypeIds = widgetTypes.stream().map(WidgetType::getId).collect(Collectors.toList()); + + widgetTypeService.updateWidgetsBundleWidgetTypes(tenantId, savedWidgetsBundle.getId(), widgetTypeIds); + + List loadedWidgetTypes = widgetTypeService.findWidgetTypesByWidgetsBundleId(tenantId, savedWidgetsBundle.getId()); + Assert.assertEquals(widgetTypes.size(), loadedWidgetTypes.size()); + + widgetTypeService.updateWidgetsBundleWidgetTypes(tenantId, savedWidgetsBundle.getId(), Collections.emptyList()); + + loadedWidgetTypes = widgetTypeService.findWidgetTypesByWidgetsBundleId(tenantId, savedWidgetsBundle.getId()); + Assert.assertEquals(0, loadedWidgetTypes.size()); + } + } From 069efc06c33679b0f4848743400a524e3b24f6e8 Mon Sep 17 00:00:00 2001 From: YevhenBondarenko Date: Wed, 20 Sep 2023 11:48:21 +0200 Subject: [PATCH 2/2] widget test service improvements --- .../thingsboard/server/dao/widget/WidgetTypeServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetTypeServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetTypeServiceImpl.java index 7db38b6b18..4bd0b62f4b 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetTypeServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetTypeServiceImpl.java @@ -179,6 +179,9 @@ public class WidgetTypeServiceImpl implements WidgetTypeService { Validator.validateId(tenantId, INCORRECT_TENANT_ID + tenantId); Validator.validateId(widgetsBundleId, INCORRECT_WIDGETS_BUNDLE_ID + widgetsBundleId); Validator.checkNotNull(widgetTypeIds, "Incorrect widgetTypeIds " + widgetTypeIds); + if (!widgetTypeIds.isEmpty()) { + validateIds(widgetTypeIds, "Incorrect widgetTypeIds " + widgetTypeIds); + } List bundleWidgets = new ArrayList<>(); for (int index = 0; index < widgetTypeIds.size(); index++) { bundleWidgets.add(new WidgetsBundleWidget(widgetsBundleId, widgetTypeIds.get(index), index));