Merge remote-tracking branch 'origin/feature/image-resources' into feature/image-resources

This commit is contained in:
ViacheslavKlimov 2023-12-01 14:27:23 +02:00
commit 3c16e908a3
7 changed files with 13 additions and 17 deletions

View File

@ -44,7 +44,7 @@ public interface ImageService {
TbImageDeleteResult deleteImage(TbResourceInfo imageInfo, boolean force);
TbResourceInfo findImageByTenantIdAndEtag(TenantId tenantId, String etag);
TbResourceInfo findSystemOrTenantImageByEtag(TenantId tenantId, String etag);
boolean replaceBase64WithImageUrl(HasImage entity, String type);
boolean replaceBase64WithImageUrl(Dashboard dashboard);

View File

@ -259,8 +259,8 @@ public class BaseImageService extends BaseResourceService implements ImageServic
}
@Override
public TbResourceInfo findImageByTenantIdAndEtag(TenantId tenantId, String etag) {
return resourceInfoDao.findByTenantIdAndEtag(tenantId, ResourceType.IMAGE, etag);
public TbResourceInfo findSystemOrTenantImageByEtag(TenantId tenantId, String etag) {
return resourceInfoDao.findSystemOrTenantImageByEtag(tenantId, ResourceType.IMAGE, etag);
}
@Transactional(propagation = Propagation.NOT_SUPPORTED)// we don't want transaction to rollback in case of an image processing failure
@ -417,10 +417,7 @@ public class BaseImageService extends BaseResourceService implements ImageServic
String extension = ImageUtils.mediaTypeToFileExtension(mdMediaType);
byte[] imageData = Base64.getDecoder().decode(base64Data);
String etag = calculateEtag(imageData);
var imageInfo = findImageByTenantIdAndEtag(tenantId, etag);
if (imageInfo == null && !tenantId.isSysTenantId()) {
imageInfo = findImageByTenantIdAndEtag(TenantId.SYS_TENANT_ID, etag);
}
var imageInfo = findSystemOrTenantImageByEtag(tenantId, etag);
if (imageInfo == null) {
TbResource image = new TbResource();
image.setTenantId(tenantId);

View File

@ -40,5 +40,5 @@ public interface TbResourceInfoDao extends Dao<TbResourceInfo> {
List<TbResourceInfo> findByTenantIdAndEtagAndKeyStartingWith(TenantId tenantId, String etag, String query);
TbResourceInfo findByTenantIdAndEtag(TenantId tenantId, ResourceType resourceType, String etag);
TbResourceInfo findSystemOrTenantImageByEtag(TenantId tenantId, ResourceType resourceType, String etag);
}

View File

@ -106,7 +106,7 @@ public class JpaTbResourceInfoDao extends JpaAbstractDao<TbResourceInfoEntity, T
}
@Override
public TbResourceInfo findByTenantIdAndEtag(TenantId tenantId, ResourceType resourceType, String etag) {
return DaoUtil.getData(resourceInfoRepository.findByTenantIdAndEtag(TenantId.SYS_TENANT_ID.getId(), tenantId.getId(), resourceType.name(), etag));
public TbResourceInfo findSystemOrTenantImageByEtag(TenantId tenantId, ResourceType resourceType, String etag) {
return DaoUtil.getData(resourceInfoRepository.findSystemOrTenantImageByEtag(TenantId.SYS_TENANT_ID.getId(), tenantId.getId(), resourceType.name(), etag));
}
}

View File

@ -66,8 +66,8 @@ public interface TbResourceInfoRepository extends JpaRepository<TbResourceInfoEn
List<TbResourceInfoEntity> findByTenantIdAndEtagAndResourceKeyStartingWith(UUID tenantId, String etag, String query);
@Query(value = "SELECT * FROM resource r WHERE (r.tenant_id = :systemTenantId OR r.tenant_id = :tenantId) AND r.resource_type = :resourceType AND r.etag = :etag LIMIT 1", nativeQuery = true)
TbResourceInfoEntity findByTenantIdAndEtag(@Param("systemTenantId") UUID sysTenantId,
@Param("tenantId") UUID tenantId,
@Param("resourceType") String resourceType,
@Param("etag") String etag);
TbResourceInfoEntity findSystemOrTenantImageByEtag(@Param("systemTenantId") UUID sysTenantId,
@Param("tenantId") UUID tenantId,
@Param("resourceType") String resourceType,
@Param("etag") String etag);
}

View File

@ -259,7 +259,7 @@ export class ImageGalleryComponent extends PageComponent implements OnInit, OnDe
}
} else {
this.gridImagesFilter = {
search: isNotEmptyStr(value) ? encodeURI(value) : null,
search: isNotEmptyStr(value) ? value.trim() : null,
includeSystemImages: this.includeSystemImages
};
this.cd.markForCheck();

View File

@ -111,8 +111,7 @@ export class ImportExportService {
this.imageService.exportImage(type, key).subscribe(
{
next: (imageData) => {
let name = imageData.title;
name = name.toLowerCase().replace(/\W/g, '_');
const name = imageData.fileName.split('.')[0];
this.exportToPc(imageData, name);
},
error: (e) => {