Fix refEntity import-export
This commit is contained in:
		
							parent
							
								
									44a7bf82c4
								
							
						
					
					
						commit
						4daf4ba988
					
				@ -19,6 +19,7 @@ import org.springframework.stereotype.Service;
 | 
			
		||||
import org.thingsboard.server.common.data.EntityType;
 | 
			
		||||
import org.thingsboard.server.common.data.cf.CalculatedField;
 | 
			
		||||
import org.thingsboard.server.common.data.id.CalculatedFieldId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.EntityId;
 | 
			
		||||
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;
 | 
			
		||||
@ -32,6 +33,12 @@ public class CalculatedFieldExportService extends BaseEntityExportService<Calcul
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void setRelatedEntities(EntitiesExportCtx<?> ctx, CalculatedField calculatedField, EntityExportData<CalculatedField> exportData) {
 | 
			
		||||
        calculatedField.setEntityId(getExternalIdOrElseInternal(ctx, calculatedField.getEntityId()));
 | 
			
		||||
        calculatedField.getConfiguration().getArguments().values().forEach(argument -> {
 | 
			
		||||
            if (argument.getRefEntityId() != null) {
 | 
			
		||||
                EntityId internalEntityId = getExternalIdOrElseInternal(ctx, argument.getRefEntityId());
 | 
			
		||||
                argument.setRefEntityId(internalEntityId);
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
 | 
			
		||||
@ -23,6 +23,7 @@ import org.thingsboard.server.common.data.audit.ActionType;
 | 
			
		||||
import org.thingsboard.server.common.data.cf.CalculatedField;
 | 
			
		||||
import org.thingsboard.server.common.data.exception.ThingsboardException;
 | 
			
		||||
import org.thingsboard.server.common.data.id.CalculatedFieldId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.EntityId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.TenantId;
 | 
			
		||||
import org.thingsboard.server.common.data.sync.ie.EntityExportData;
 | 
			
		||||
import org.thingsboard.server.dao.cf.CalculatedFieldService;
 | 
			
		||||
@ -45,6 +46,12 @@ public class CalculatedFieldImportService extends BaseEntityImportService<Calcul
 | 
			
		||||
    @Override
 | 
			
		||||
    protected CalculatedField prepare(EntitiesImportCtx ctx, CalculatedField calculatedField, CalculatedField oldEntity, EntityExportData<CalculatedField> exportData, IdProvider idProvider) {
 | 
			
		||||
        calculatedField.setEntityId(idProvider.getInternalId(calculatedField.getEntityId()));
 | 
			
		||||
        calculatedField.getConfiguration().getArguments().values().forEach(argument -> {
 | 
			
		||||
            if (argument.getRefEntityId() != null) {
 | 
			
		||||
                EntityId internalEntityId = idProvider.getInternalId(argument.getRefEntityId());
 | 
			
		||||
                argument.setRefEntityId(internalEntityId);
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        return calculatedField;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -204,7 +204,7 @@ public class ExportImportServiceSqlTest extends AbstractControllerTest {
 | 
			
		||||
        Asset asset = createAsset(tenantId1, null, assetProfile.getId(), "Asset 1");
 | 
			
		||||
        DeviceProfile deviceProfile = createDeviceProfile(tenantId1, ruleChain.getId(), dashboard.getId(), "Device profile 1");
 | 
			
		||||
        Device device = createDevice(tenantId1, null, deviceProfile.getId(), "Device 1");
 | 
			
		||||
        CalculatedField calculatedField = createCalculatedField(tenantId1, device.getId(), device.getId());
 | 
			
		||||
        CalculatedField calculatedField = createCalculatedField(tenantId1, device.getId(), asset.getId());
 | 
			
		||||
 | 
			
		||||
        Map<EntityType, EntityExportData> entitiesExportData = Stream.of(customer.getId(), asset.getId(), device.getId(),
 | 
			
		||||
                        ruleChain.getId(), dashboard.getId(), assetProfile.getId(), deviceProfile.getId(), calculatedField.getId())
 | 
			
		||||
@ -364,6 +364,7 @@ public class ExportImportServiceSqlTest extends AbstractControllerTest {
 | 
			
		||||
        CalculatedField exportedCalculatedField = (CalculatedField) exportEntity(tenantAdmin2, (CalculatedFieldId) ids.get(calculatedField.getId())).getEntity();
 | 
			
		||||
        assertThat(exportedCalculatedField.getName()).isEqualTo(calculatedField.getName());
 | 
			
		||||
        assertThat(exportedCalculatedField.getEntityId()).isEqualTo(device.getId());
 | 
			
		||||
        assertThat(exportedCalculatedField.getConfiguration().getReferencedEntities()).isEqualTo(calculatedField.getConfiguration().getReferencedEntities());
 | 
			
		||||
 | 
			
		||||
        deviceProfile.setDefaultDashboardId(null);
 | 
			
		||||
        deviceProfileService.saveDeviceProfile(deviceProfile);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user