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.RequiredArgsConstructor;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.thingsboard.common.util.JacksonUtil;
|
|
||||||
import org.thingsboard.server.common.data.EntityType;
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
import org.thingsboard.server.common.data.StringUtils;
|
import org.thingsboard.server.common.data.StringUtils;
|
||||||
import org.thingsboard.server.common.data.asset.Asset;
|
import org.thingsboard.server.common.data.asset.Asset;
|
||||||
import org.thingsboard.server.common.data.asset.AssetProfile;
|
import org.thingsboard.server.common.data.asset.AssetProfile;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
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.AssetProfileService;
|
||||||
import org.thingsboard.server.dao.asset.AssetService;
|
import org.thingsboard.server.dao.asset.AssetService;
|
||||||
import org.thingsboard.server.queue.util.TbCoreComponent;
|
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.entitiy.asset.TbAssetService;
|
||||||
import org.thingsboard.server.service.security.model.SecurityUser;
|
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.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@ -47,7 +46,7 @@ public class AssetBulkImportService extends AbstractBulkImportService<Asset> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setEntityFields(Asset entity, Map<BulkImportColumnType, String> fields) {
|
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) -> {
|
fields.forEach((columnType, value) -> {
|
||||||
switch (columnType) {
|
switch (columnType) {
|
||||||
case NAME:
|
case NAME:
|
||||||
|
|||||||
@ -76,7 +76,7 @@ public class DeviceBulkImportService extends AbstractBulkImportService<Device> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setEntityFields(Device entity, Map<BulkImportColumnType, String> fields) {
|
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) -> {
|
fields.forEach((columnType, value) -> {
|
||||||
switch (columnType) {
|
switch (columnType) {
|
||||||
case NAME:
|
case NAME:
|
||||||
|
|||||||
@ -20,18 +20,17 @@ import com.fasterxml.jackson.databind.node.TextNode;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.thingsboard.common.util.JacksonUtil;
|
|
||||||
import org.thingsboard.server.common.data.EntityType;
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
import org.thingsboard.server.common.data.edge.Edge;
|
import org.thingsboard.server.common.data.edge.Edge;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
import org.thingsboard.server.common.data.rule.RuleChain;
|
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.edge.EdgeService;
|
||||||
import org.thingsboard.server.dao.rule.RuleChainService;
|
import org.thingsboard.server.dao.rule.RuleChainService;
|
||||||
import org.thingsboard.server.queue.util.TbCoreComponent;
|
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.entitiy.edge.TbEdgeService;
|
||||||
import org.thingsboard.server.service.security.model.SecurityUser;
|
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.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@ -46,7 +45,7 @@ public class EdgeBulkImportService extends AbstractBulkImportService<Edge> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setEntityFields(Edge entity, Map<BulkImportColumnType, String> fields) {
|
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) -> {
|
fields.forEach((columnType, value) -> {
|
||||||
switch (columnType) {
|
switch (columnType) {
|
||||||
case NAME:
|
case NAME:
|
||||||
|
|||||||
@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.service.sync.ie.importing.csv;
|
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.common.util.concurrent.FutureCallback;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.google.gson.JsonPrimitive;
|
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.SecurityContext;
|
||||||
import org.springframework.security.core.context.SecurityContextHolder;
|
import org.springframework.security.core.context.SecurityContextHolder;
|
||||||
import org.thingsboard.common.util.DonAsynchron;
|
import org.thingsboard.common.util.DonAsynchron;
|
||||||
|
import org.thingsboard.common.util.JacksonUtil;
|
||||||
import org.thingsboard.common.util.ThingsBoardThreadFactory;
|
import org.thingsboard.common.util.ThingsBoardThreadFactory;
|
||||||
import org.thingsboard.server.common.data.EntityType;
|
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.HasTenantId;
|
||||||
import org.thingsboard.server.common.data.StringUtils;
|
import org.thingsboard.server.common.data.StringUtils;
|
||||||
import org.thingsboard.server.common.data.TenantProfile;
|
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 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) {
|
private void saveKvs(SecurityUser user, E entity, Map<BulkImportRequest.ColumnMapping, ParsedValue> data) {
|
||||||
Arrays.stream(BulkImportColumnType.values())
|
Arrays.stream(BulkImportColumnType.values())
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user