Merge pull request #7250 from dmytro-landiak/bulk-import-fix
[3.4.2][Bug] Bulk import null node handling fix
This commit is contained in:
		
						commit
						952ddf791a
					
				@ -20,19 +20,18 @@ import com.fasterxml.jackson.databind.node.TextNode;
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import lombok.SneakyThrows;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.thingsboard.common.util.JacksonUtil;
 | 
			
		||||
import org.thingsboard.server.common.data.EntityType;
 | 
			
		||||
import org.thingsboard.server.common.data.StringUtils;
 | 
			
		||||
import org.thingsboard.server.common.data.asset.Asset;
 | 
			
		||||
import org.thingsboard.server.common.data.asset.AssetProfile;
 | 
			
		||||
import org.thingsboard.server.common.data.id.TenantId;
 | 
			
		||||
import org.thingsboard.server.common.data.sync.ie.importing.csv.BulkImportColumnType;
 | 
			
		||||
import org.thingsboard.server.dao.asset.AssetProfileService;
 | 
			
		||||
import org.thingsboard.server.dao.asset.AssetService;
 | 
			
		||||
import org.thingsboard.server.queue.util.TbCoreComponent;
 | 
			
		||||
import org.thingsboard.server.service.sync.ie.importing.csv.AbstractBulkImportService;
 | 
			
		||||
import org.thingsboard.server.common.data.sync.ie.importing.csv.BulkImportColumnType;
 | 
			
		||||
import org.thingsboard.server.service.entitiy.asset.TbAssetService;
 | 
			
		||||
import org.thingsboard.server.service.security.model.SecurityUser;
 | 
			
		||||
import org.thingsboard.server.service.sync.ie.importing.csv.AbstractBulkImportService;
 | 
			
		||||
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
@ -47,7 +46,7 @@ public class AssetBulkImportService extends AbstractBulkImportService<Asset> {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void setEntityFields(Asset entity, Map<BulkImportColumnType, String> fields) {
 | 
			
		||||
        ObjectNode additionalInfo = (ObjectNode) Optional.ofNullable(entity.getAdditionalInfo()).orElseGet(JacksonUtil::newObjectNode);
 | 
			
		||||
        ObjectNode additionalInfo = getOrCreateAdditionalInfoObj(entity);
 | 
			
		||||
        fields.forEach((columnType, value) -> {
 | 
			
		||||
            switch (columnType) {
 | 
			
		||||
                case NAME:
 | 
			
		||||
 | 
			
		||||
@ -76,7 +76,7 @@ public class DeviceBulkImportService extends AbstractBulkImportService<Device> {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void setEntityFields(Device entity, Map<BulkImportColumnType, String> fields) {
 | 
			
		||||
        ObjectNode additionalInfo = (ObjectNode) Optional.ofNullable(entity.getAdditionalInfo()).orElseGet(JacksonUtil::newObjectNode);
 | 
			
		||||
        ObjectNode additionalInfo = getOrCreateAdditionalInfoObj(entity);
 | 
			
		||||
        fields.forEach((columnType, value) -> {
 | 
			
		||||
            switch (columnType) {
 | 
			
		||||
                case NAME:
 | 
			
		||||
 | 
			
		||||
@ -20,18 +20,17 @@ import com.fasterxml.jackson.databind.node.TextNode;
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import lombok.SneakyThrows;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.thingsboard.common.util.JacksonUtil;
 | 
			
		||||
import org.thingsboard.server.common.data.EntityType;
 | 
			
		||||
import org.thingsboard.server.common.data.edge.Edge;
 | 
			
		||||
import org.thingsboard.server.common.data.id.TenantId;
 | 
			
		||||
import org.thingsboard.server.common.data.rule.RuleChain;
 | 
			
		||||
import org.thingsboard.server.common.data.sync.ie.importing.csv.BulkImportColumnType;
 | 
			
		||||
import org.thingsboard.server.dao.edge.EdgeService;
 | 
			
		||||
import org.thingsboard.server.dao.rule.RuleChainService;
 | 
			
		||||
import org.thingsboard.server.queue.util.TbCoreComponent;
 | 
			
		||||
import org.thingsboard.server.service.sync.ie.importing.csv.AbstractBulkImportService;
 | 
			
		||||
import org.thingsboard.server.common.data.sync.ie.importing.csv.BulkImportColumnType;
 | 
			
		||||
import org.thingsboard.server.service.entitiy.edge.TbEdgeService;
 | 
			
		||||
import org.thingsboard.server.service.security.model.SecurityUser;
 | 
			
		||||
import org.thingsboard.server.service.sync.ie.importing.csv.AbstractBulkImportService;
 | 
			
		||||
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
@ -46,7 +45,7 @@ public class EdgeBulkImportService extends AbstractBulkImportService<Edge> {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void setEntityFields(Edge entity, Map<BulkImportColumnType, String> fields) {
 | 
			
		||||
        ObjectNode additionalInfo = (ObjectNode) Optional.ofNullable(entity.getAdditionalInfo()).orElseGet(JacksonUtil::newObjectNode);
 | 
			
		||||
        ObjectNode additionalInfo = getOrCreateAdditionalInfoObj(entity);
 | 
			
		||||
        fields.forEach((columnType, value) -> {
 | 
			
		||||
            switch (columnType) {
 | 
			
		||||
                case NAME:
 | 
			
		||||
 | 
			
		||||
@ -15,6 +15,7 @@
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.service.sync.ie.importing.csv;
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.databind.node.ObjectNode;
 | 
			
		||||
import com.google.common.util.concurrent.FutureCallback;
 | 
			
		||||
import com.google.gson.JsonObject;
 | 
			
		||||
import com.google.gson.JsonPrimitive;
 | 
			
		||||
@ -25,8 +26,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.security.core.context.SecurityContext;
 | 
			
		||||
import org.springframework.security.core.context.SecurityContextHolder;
 | 
			
		||||
import org.thingsboard.common.util.DonAsynchron;
 | 
			
		||||
import org.thingsboard.common.util.JacksonUtil;
 | 
			
		||||
import org.thingsboard.common.util.ThingsBoardThreadFactory;
 | 
			
		||||
import org.thingsboard.server.common.data.EntityType;
 | 
			
		||||
import org.thingsboard.server.common.data.HasAdditionalInfo;
 | 
			
		||||
import org.thingsboard.server.common.data.HasTenantId;
 | 
			
		||||
import org.thingsboard.server.common.data.StringUtils;
 | 
			
		||||
import org.thingsboard.server.common.data.TenantProfile;
 | 
			
		||||
@ -165,6 +168,10 @@ public abstract class AbstractBulkImportService<E extends HasId<? extends Entity
 | 
			
		||||
 | 
			
		||||
    protected abstract EntityType getEntityType();
 | 
			
		||||
 | 
			
		||||
    protected ObjectNode getOrCreateAdditionalInfoObj(HasAdditionalInfo entity) {
 | 
			
		||||
        return entity.getAdditionalInfo() == null || entity.getAdditionalInfo().isNull() ?
 | 
			
		||||
                JacksonUtil.newObjectNode() : (ObjectNode) entity.getAdditionalInfo();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void saveKvs(SecurityUser user, E entity, Map<BulkImportRequest.ColumnMapping, ParsedValue> data) {
 | 
			
		||||
        Arrays.stream(BulkImportColumnType.values())
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user