|
|
|
@ -17,15 +17,19 @@ package org.thingsboard.server.dao.resource; |
|
|
|
|
|
|
|
import com.google.common.hash.Hashing; |
|
|
|
import com.google.common.util.concurrent.ListenableFuture; |
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.hibernate.exception.ConstraintViolationException; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.context.annotation.Lazy; |
|
|
|
import org.springframework.context.annotation.Primary; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.event.TransactionalEventListener; |
|
|
|
import org.thingsboard.common.util.JacksonUtil; |
|
|
|
import org.thingsboard.common.util.RegexUtils; |
|
|
|
import org.thingsboard.server.cache.resourceInfo.ResourceInfoCacheKey; |
|
|
|
import org.thingsboard.server.cache.resourceInfo.ResourceInfoEvictEvent; |
|
|
|
import org.thingsboard.server.common.data.Dashboard; |
|
|
|
import org.thingsboard.server.common.data.EntityType; |
|
|
|
import org.thingsboard.server.common.data.ResourceType; |
|
|
|
import org.thingsboard.server.common.data.TbResource; |
|
|
|
@ -54,7 +58,7 @@ import static org.thingsboard.server.dao.service.Validator.validateId; |
|
|
|
|
|
|
|
@Service("TbResourceDaoService") |
|
|
|
@Slf4j |
|
|
|
@AllArgsConstructor |
|
|
|
@RequiredArgsConstructor |
|
|
|
@Primary |
|
|
|
public class BaseResourceService extends AbstractCachedEntityService<ResourceInfoCacheKey, TbResourceInfo, ResourceInfoEvictEvent> implements ResourceService { |
|
|
|
|
|
|
|
@ -62,6 +66,8 @@ public class BaseResourceService extends AbstractCachedEntityService<ResourceInf |
|
|
|
protected final TbResourceDao resourceDao; |
|
|
|
protected final TbResourceInfoDao resourceInfoDao; |
|
|
|
protected final ResourceDataValidator resourceValidator; |
|
|
|
@Autowired @Lazy |
|
|
|
private ImageService imageService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public TbResource saveResource(TbResource resource, boolean doValidate) { |
|
|
|
@ -243,6 +249,11 @@ public class BaseResourceService extends AbstractCachedEntityService<ResourceInf |
|
|
|
public TbResource createOrUpdateSystemResource(ResourceType resourceType, String resourceKey, String data) { |
|
|
|
if (resourceType == ResourceType.DASHBOARD) { |
|
|
|
data = checkSystemResourcesUsage(data, ResourceType.JS_MODULE); |
|
|
|
|
|
|
|
Dashboard dashboard = JacksonUtil.fromString(data, Dashboard.class); |
|
|
|
dashboard.setTenantId(TenantId.SYS_TENANT_ID); |
|
|
|
imageService.replaceBase64WithImageUrl(dashboard); |
|
|
|
data = JacksonUtil.toString(dashboard); |
|
|
|
} |
|
|
|
|
|
|
|
TbResource resource = findResourceByTenantIdAndKey(TenantId.SYS_TENANT_ID, resourceType, resourceKey); |
|
|
|
|