Widget type export fix. Image delete validation fix

This commit is contained in:
Andrii Shvaika 2023-12-08 19:09:00 +02:00
parent fc698b4f31
commit 32fe5b3a52
2 changed files with 15 additions and 4 deletions

View File

@ -79,6 +79,7 @@ import java.util.regex.Pattern;
public class BaseImageService extends BaseResourceService implements ImageService { public class BaseImageService extends BaseResourceService implements ImageService {
private static final int MAX_ENTITIES_TO_FIND = 10; private static final int MAX_ENTITIES_TO_FIND = 10;
private static final String DEFAULT_CONFIG_TAG = "defaultConfig";
public static Map<String, String> DASHBOARD_BASE64_MAPPING = new HashMap<>(); public static Map<String, String> DASHBOARD_BASE64_MAPPING = new HashMap<>();
public static Map<String, String> WIDGET_TYPE_BASE64_MAPPING = new HashMap<>(); public static Map<String, String> WIDGET_TYPE_BASE64_MAPPING = new HashMap<>();
@ -302,12 +303,12 @@ public class BaseImageService extends BaseResourceService implements ImageServic
boolean updated = result.isUpdated(); boolean updated = result.isUpdated();
if (entity.getDescriptor().isObject()) { if (entity.getDescriptor().isObject()) {
ObjectNode descriptor = (ObjectNode) entity.getDescriptor(); ObjectNode descriptor = (ObjectNode) entity.getDescriptor();
JsonNode defaultConfig = Optional.ofNullable(descriptor.get("defaultConfig")) JsonNode defaultConfig = Optional.ofNullable(descriptor.get(DEFAULT_CONFIG_TAG))
.filter(JsonNode::isTextual).map(JsonNode::asText) .filter(JsonNode::isTextual).map(JsonNode::asText)
.map(JacksonUtil::toJsonNode).orElse(null); .map(JacksonUtil::toJsonNode).orElse(null);
if (defaultConfig != null) { if (defaultConfig != null) {
updated |= base64ToImageUrlUsingMapping(entity.getTenantId(), WIDGET_TYPE_BASE64_MAPPING, Collections.singletonMap("prefix", prefix), defaultConfig); updated |= base64ToImageUrlUsingMapping(entity.getTenantId(), WIDGET_TYPE_BASE64_MAPPING, Collections.singletonMap("prefix", prefix), defaultConfig);
descriptor.put("defaultConfig", defaultConfig.toString()); descriptor.put(DEFAULT_CONFIG_TAG, defaultConfig.toString());
} }
} }
updated |= base64ToImageUrlRecursively(entity.getTenantId(), prefix, entity.getDescriptor()); updated |= base64ToImageUrlRecursively(entity.getTenantId(), prefix, entity.getDescriptor());
@ -524,7 +525,17 @@ public class BaseImageService extends BaseResourceService implements ImageServic
public void inlineImages(WidgetTypeDetails widgetTypeDetails) { public void inlineImages(WidgetTypeDetails widgetTypeDetails) {
log.trace("Executing inlineImage [{}] [WidgetTypeDetails] [{}]", widgetTypeDetails.getTenantId(), widgetTypeDetails.getId()); log.trace("Executing inlineImage [{}] [WidgetTypeDetails] [{}]", widgetTypeDetails.getTenantId(), widgetTypeDetails.getId());
inlineImage(widgetTypeDetails); inlineImage(widgetTypeDetails);
inlineIntoJson(widgetTypeDetails.getTenantId(), widgetTypeDetails.getDescriptor()); ObjectNode descriptor = (ObjectNode) widgetTypeDetails.getDescriptor();
inlineIntoJson(widgetTypeDetails.getTenantId(), descriptor);
if (descriptor.has(DEFAULT_CONFIG_TAG) && descriptor.get(DEFAULT_CONFIG_TAG).isTextual()) {
try {
var defaultConfig = JacksonUtil.toJsonNode(descriptor.get(DEFAULT_CONFIG_TAG).asText());
inlineIntoJson(widgetTypeDetails.getTenantId(), defaultConfig);
descriptor.put(DEFAULT_CONFIG_TAG, JacksonUtil.toString(defaultConfig));
} catch (Exception e) {
log.debug("[{}][{}] Failed to process default config: ", widgetTypeDetails.getTenantId(), widgetTypeDetails.getId(), e);
}
}
} }
private void inlineIntoJson(TenantId tenantId, JsonNode root) { private void inlineIntoJson(TenantId tenantId, JsonNode root) {

View File

@ -204,7 +204,7 @@ public interface WidgetTypeInfoRepository extends JpaRepository<WidgetTypeInfoEn
@Query(nativeQuery = true, @Query(nativeQuery = true,
value = "SELECT * FROM widget_type_info_view wti WHERE wti.id IN " + value = "SELECT * FROM widget_type_info_view wti WHERE wti.id IN " +
"(select id from widget_type where image = :imageLink or descriptor ILIKE CONCAT('%\"', :imageLink, '\"%') limit :lmt)" "(select id from widget_type where image = :imageLink or descriptor ILIKE CONCAT('%', :imageLink, '%') limit :lmt)"
) )
List<WidgetTypeInfoEntity> findByImageUrl(@Param("imageLink") String imageLink, @Param("lmt") int lmt); List<WidgetTypeInfoEntity> findByImageUrl(@Param("imageLink") String imageLink, @Param("lmt") int lmt);
} }