VC: improve images import/export
This commit is contained in:
		
							parent
							
								
									b16ee4e9b3
								
							
						
					
					
						commit
						927479095f
					
				@ -18,9 +18,11 @@ package org.thingsboard.server.service.sync.ie.exporting.impl;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.thingsboard.server.common.data.EntityType;
 | 
			
		||||
import org.thingsboard.server.common.data.TbResource;
 | 
			
		||||
import org.thingsboard.server.common.data.exception.ThingsboardException;
 | 
			
		||||
import org.thingsboard.server.common.data.id.TbResourceId;
 | 
			
		||||
import org.thingsboard.server.common.data.sync.ie.EntityExportData;
 | 
			
		||||
import org.thingsboard.server.queue.util.TbCoreComponent;
 | 
			
		||||
import org.thingsboard.server.service.sync.vc.data.EntitiesExportCtx;
 | 
			
		||||
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
@ -28,6 +30,12 @@ import java.util.Set;
 | 
			
		||||
@TbCoreComponent
 | 
			
		||||
public class ResourceExportService extends BaseEntityExportService<TbResourceId, TbResource, EntityExportData<TbResource>> {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void setAdditionalExportData(EntitiesExportCtx<?> ctx, TbResource resource, EntityExportData<TbResource> exportData) throws ThingsboardException {
 | 
			
		||||
        super.setAdditionalExportData(ctx, resource, exportData);
 | 
			
		||||
        resource.setPreview(null); // will be generated on import
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Set<EntityType> getSupportedEntityTypes() {
 | 
			
		||||
        return Set.of(EntityType.TB_RESOURCE);
 | 
			
		||||
 | 
			
		||||
@ -18,12 +18,14 @@ package org.thingsboard.server.service.sync.ie.importing.impl;
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.thingsboard.server.common.data.EntityType;
 | 
			
		||||
import org.thingsboard.server.common.data.ResourceType;
 | 
			
		||||
import org.thingsboard.server.common.data.TbResource;
 | 
			
		||||
import org.thingsboard.server.common.data.User;
 | 
			
		||||
import org.thingsboard.server.common.data.exception.ThingsboardException;
 | 
			
		||||
import org.thingsboard.server.common.data.id.TbResourceId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.TenantId;
 | 
			
		||||
import org.thingsboard.server.common.data.sync.ie.EntityExportData;
 | 
			
		||||
import org.thingsboard.server.dao.resource.ImageService;
 | 
			
		||||
import org.thingsboard.server.dao.resource.ResourceService;
 | 
			
		||||
import org.thingsboard.server.queue.util.TbCoreComponent;
 | 
			
		||||
import org.thingsboard.server.service.sync.vc.data.EntitiesImportCtx;
 | 
			
		||||
@ -34,6 +36,7 @@ import org.thingsboard.server.service.sync.vc.data.EntitiesImportCtx;
 | 
			
		||||
public class ResourceImportService extends BaseEntityImportService<TbResourceId, TbResource, EntityExportData<TbResource>> {
 | 
			
		||||
 | 
			
		||||
    private final ResourceService resourceService;
 | 
			
		||||
    private final ImageService imageService;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void setOwner(TenantId tenantId, TbResource resource, IdProvider idProvider) {
 | 
			
		||||
@ -66,7 +69,14 @@ public class ResourceImportService extends BaseEntityImportService<TbResourceId,
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected TbResource saveOrUpdate(EntitiesImportCtx ctx, TbResource resource, EntityExportData<TbResource> exportData, IdProvider idProvider) {
 | 
			
		||||
        return resourceService.saveResource(resource);
 | 
			
		||||
        if (resource.getResourceType() == ResourceType.IMAGE) {
 | 
			
		||||
            return new TbResource(imageService.saveImage(resource));
 | 
			
		||||
        } else {
 | 
			
		||||
            resource = resourceService.saveResource(resource);
 | 
			
		||||
            resource.setData(null);
 | 
			
		||||
            resource.setPreview(null);
 | 
			
		||||
            return resource;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
 | 
			
		||||
@ -39,6 +39,7 @@ import org.eclipse.jgit.diff.EditList;
 | 
			
		||||
import org.eclipse.jgit.diff.HistogramDiff;
 | 
			
		||||
import org.eclipse.jgit.diff.RawText;
 | 
			
		||||
import org.eclipse.jgit.diff.RawTextComparator;
 | 
			
		||||
import org.eclipse.jgit.errors.LargeObjectException;
 | 
			
		||||
import org.eclipse.jgit.lib.Constants;
 | 
			
		||||
import org.eclipse.jgit.lib.ObjectId;
 | 
			
		||||
import org.eclipse.jgit.lib.ObjectLoader;
 | 
			
		||||
@ -236,8 +237,12 @@ public class GitRepository {
 | 
			
		||||
            ObjectId blobId = treeWalk.getObjectId(0);
 | 
			
		||||
            try (ObjectReader objectReader = git.getRepository().newObjectReader()) {
 | 
			
		||||
                ObjectLoader objectLoader = objectReader.open(blobId);
 | 
			
		||||
                byte[] bytes = objectLoader.getBytes();
 | 
			
		||||
                return new String(bytes, StandardCharsets.UTF_8);
 | 
			
		||||
                try {
 | 
			
		||||
                    byte[] bytes = objectLoader.getBytes();
 | 
			
		||||
                    return new String(bytes, StandardCharsets.UTF_8);
 | 
			
		||||
                } catch (LargeObjectException e) {
 | 
			
		||||
                    throw new RuntimeException("File " + file + " is too big to load");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user