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); 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(HasImage entity, String type);
boolean replaceBase64WithImageUrl(Dashboard dashboard); boolean replaceBase64WithImageUrl(Dashboard dashboard);

View File

@ -259,8 +259,8 @@ public class BaseImageService extends BaseResourceService implements ImageServic
} }
@Override @Override
public TbResourceInfo findImageByTenantIdAndEtag(TenantId tenantId, String etag) { public TbResourceInfo findSystemOrTenantImageByEtag(TenantId tenantId, String etag) {
return resourceInfoDao.findByTenantIdAndEtag(tenantId, ResourceType.IMAGE, 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 @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); String extension = ImageUtils.mediaTypeToFileExtension(mdMediaType);
byte[] imageData = Base64.getDecoder().decode(base64Data); byte[] imageData = Base64.getDecoder().decode(base64Data);
String etag = calculateEtag(imageData); String etag = calculateEtag(imageData);
var imageInfo = findImageByTenantIdAndEtag(tenantId, etag); var imageInfo = findSystemOrTenantImageByEtag(tenantId, etag);
if (imageInfo == null && !tenantId.isSysTenantId()) {
imageInfo = findImageByTenantIdAndEtag(TenantId.SYS_TENANT_ID, etag);
}
if (imageInfo == null) { if (imageInfo == null) {
TbResource image = new TbResource(); TbResource image = new TbResource();
image.setTenantId(tenantId); image.setTenantId(tenantId);

View File

@ -40,5 +40,5 @@ public interface TbResourceInfoDao extends Dao<TbResourceInfo> {
List<TbResourceInfo> findByTenantIdAndEtagAndKeyStartingWith(TenantId tenantId, String etag, String query); 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 @Override
public TbResourceInfo findByTenantIdAndEtag(TenantId tenantId, ResourceType resourceType, String etag) { public TbResourceInfo findSystemOrTenantImageByEtag(TenantId tenantId, ResourceType resourceType, String etag) {
return DaoUtil.getData(resourceInfoRepository.findByTenantIdAndEtag(TenantId.SYS_TENANT_ID.getId(), tenantId.getId(), resourceType.name(), 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); 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) @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, TbResourceInfoEntity findSystemOrTenantImageByEtag(@Param("systemTenantId") UUID sysTenantId,
@Param("tenantId") UUID tenantId, @Param("tenantId") UUID tenantId,
@Param("resourceType") String resourceType, @Param("resourceType") String resourceType,
@Param("etag") String etag); @Param("etag") String etag);
} }

View File

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

View File

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