From e79e5c8f8e7165d8f3eb31fd110c15b5ea5714c0 Mon Sep 17 00:00:00 2001 From: ViacheslavKlimov Date: Tue, 19 Nov 2024 11:56:29 +0200 Subject: [PATCH] Fix ResourceService.getUsedResources; improve dashboard fields ordering --- .../controller/DashboardControllerTest.java | 3 ++- .../server/dao/resource/ResourceService.java | 4 ++-- .../server/common/data/Dashboard.java | 5 ++++- .../dao/resource/BaseResourceService.java | 19 +++++++++---------- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/application/src/test/java/org/thingsboard/server/controller/DashboardControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/DashboardControllerTest.java index 64c46ff4a8..88dd8f241c 100644 --- a/application/src/test/java/org/thingsboard/server/controller/DashboardControllerTest.java +++ b/application/src/test/java/org/thingsboard/server/controller/DashboardControllerTest.java @@ -606,7 +606,8 @@ public class DashboardControllerTest extends AbstractControllerTest { {"xxx": {"config":{"actions":{"elementClick":[ {"customResources":[{"url":{"entityType":"TB_RESOURCE","id": - "tb-resource;/api/resource/js_module/tenant/gateway-management-extension.js"},"isModule":true}]}]}}}} + "tb-resource;/api/resource/js_module/tenant/gateway-management-extension.js"},"isModule":true}, + {"url":"tb-resource;/api/resource/js_module/tenant/gateway-management-extension.js","isModule":true}]}]}}}} """))); dashboard = doPost("/api/dashboard", dashboard, Dashboard.class); diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/resource/ResourceService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/resource/ResourceService.java index 9b08ce48c9..0e2acb2e4e 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/resource/ResourceService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/resource/ResourceService.java @@ -84,9 +84,9 @@ public interface ResourceService extends EntityDaoService { boolean updateResourcesUsage(WidgetTypeDetails widgetTypeDetails); - List getUsedResources(Dashboard dashboard); + Collection getUsedResources(Dashboard dashboard); - List getUsedResources(WidgetTypeDetails widgetTypeDetails); + Collection getUsedResources(WidgetTypeDetails widgetTypeDetails); TbResource createOrUpdateSystemResource(ResourceType resourceType, String resourceKey, byte[] data); diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/Dashboard.java b/common/data/src/main/java/org/thingsboard/server/common/data/Dashboard.java index 20495f4ae7..c3843ac816 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/Dashboard.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/Dashboard.java @@ -16,6 +16,7 @@ package org.thingsboard.server.common.data; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.google.common.collect.Streams; @@ -32,6 +33,7 @@ import java.util.Optional; import java.util.stream.Collectors; @EqualsAndHashCode(callSuper = true) +@JsonPropertyOrder({"title", "image", "mobileHide", "mobileOrder", "configuration", "name", "resources"}) public class Dashboard extends DashboardInfo implements ExportableEntity { private static final long serialVersionUID = 872682138346187503L; @@ -68,7 +70,7 @@ public class Dashboard extends DashboardInfo implements ExportableEntity getUsedResources(Dashboard dashboard) { - return getUsedResources(dashboard.getTenantId(), dashboard.getConfiguration(), DASHBOARD_RESOURCES_MAPPING); + public Collection getUsedResources(Dashboard dashboard) { + return getUsedResources(dashboard.getTenantId(), dashboard.getConfiguration(), DASHBOARD_RESOURCES_MAPPING).values(); } @Override - public List getUsedResources(WidgetTypeDetails widgetTypeDetails) { - List resources = getUsedResources(widgetTypeDetails.getTenantId(), widgetTypeDetails.getDescriptor(), WIDGET_RESOURCES_MAPPING); + public Collection getUsedResources(WidgetTypeDetails widgetTypeDetails) { + Map resources = getUsedResources(widgetTypeDetails.getTenantId(), widgetTypeDetails.getDescriptor(), WIDGET_RESOURCES_MAPPING); JsonNode defaultConfig = widgetTypeDetails.getDefaultConfig(); if (defaultConfig != null) { - resources.addAll(getUsedResources(widgetTypeDetails.getTenantId(), defaultConfig, WIDGET_DEFAULT_CONFIG_RESOURCES_MAPPING)); + resources.putAll(getUsedResources(widgetTypeDetails.getTenantId(), defaultConfig, WIDGET_DEFAULT_CONFIG_RESOURCES_MAPPING)); } - return resources; + return resources.values(); } - private List getUsedResources(TenantId tenantId, JsonNode jsonNode, Map mapping) { - List resources = new ArrayList<>(); + private Map getUsedResources(TenantId tenantId, JsonNode jsonNode, Map mapping) { + Map resources = new HashMap<>(); processResources(jsonNode, mapping, value -> { String link = getResourceLink(value); if (link == null) { @@ -499,7 +498,7 @@ public class BaseResourceService extends AbstractCachedEntityService