Minor improvements

This commit is contained in:
Viacheslav Klimov 2022-04-25 14:28:54 +03:00
parent 955aec0b41
commit 7e2910ed95
5 changed files with 55 additions and 19 deletions

View File

@ -29,8 +29,10 @@ import org.thingsboard.server.service.security.model.SecurityUser;
import org.thingsboard.server.service.sync.EntitiesExportImportService;
import org.thingsboard.server.service.sync.exporting.ExportableEntitiesService;
import org.thingsboard.server.service.sync.exporting.data.EntityExportData;
import org.thingsboard.server.service.sync.exporting.data.request.EntityExportSettings;
import org.thingsboard.server.service.sync.exporting.data.request.ExportRequest;
import org.thingsboard.server.service.sync.importing.data.EntityImportResult;
import org.thingsboard.server.service.sync.importing.data.EntityImportSettings;
import org.thingsboard.server.service.sync.importing.data.request.ImportRequest;
import java.util.ArrayList;
@ -79,10 +81,16 @@ public class EntitiesExportImportController extends BaseController {
private List<EntityExportData<?>> exportEntitiesByRequest(SecurityUser user, ExportRequest exportRequest) throws ThingsboardException {
List<EntityId> entities = exportableEntitiesService.findEntitiesForRequest(user.getTenantId(), exportRequest);
EntityExportSettings exportSettings = exportRequest.getExportSettings();
if (exportSettings == null) {
exportSettings = EntityExportSettings.builder()
.exportRelations(false)
.build();
}
List<EntityExportData<?>> exportDataList = new ArrayList<>();
for (EntityId entityId : entities) {
EntityExportData<?> exportData = exportImportService.exportEntity(user, entityId, exportRequest.getExportSettings());
EntityExportData<?> exportData = exportImportService.exportEntity(user, entityId, exportSettings);
exportDataList.add(exportData);
}
return exportDataList;
@ -93,7 +101,15 @@ public class EntitiesExportImportController extends BaseController {
public List<EntityImportResult<?>> importEntities(@RequestBody ImportRequest importRequest) throws ThingsboardException {
SecurityUser user = getCurrentUser();
try {
List<EntityImportResult<?>> importResults = exportImportService.importEntities(user, importRequest.getExportDataList(), importRequest.getImportSettings());
EntityImportSettings importSettings = importRequest.getImportSettings();
if (importSettings == null) {
importSettings = EntityImportSettings.builder()
.findExistingByName(false)
.updateRelations(false)
.build();
}
List<EntityImportResult<?>> importResults = exportImportService.importEntities(user, importRequest.getExportDataList(), importSettings);
importResults.stream()
.map(EntityImportResult::getSendEventsCallback)

View File

@ -17,6 +17,7 @@ package org.thingsboard.server.service.sync.exporting;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
@ -56,7 +57,6 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import static org.thingsboard.server.dao.sql.query.EntityKeyMapping.CREATED_TIME;
@ -78,12 +78,17 @@ public class DefaultExportableEntitiesService implements ExportableEntitiesServi
EntityType entityType = externalId.getEntityType();
Dao<E> dao = getDao(entityType);
E entity = null;
if (dao instanceof ExportableEntityDao) {
ExportableEntityDao<E> exportableEntityDao = (ExportableEntityDao<E>) dao;
return exportableEntityDao.findByTenantIdAndExternalId(tenantId.getId(), externalId.getId());
} else {
entity = exportableEntityDao.findByTenantIdAndExternalId(tenantId.getId(), externalId.getId());
}
if (entity == null || !belongsToTenant(entity, tenantId)) {
return null;
}
return entity;
}
@Override
@ -92,24 +97,36 @@ public class DefaultExportableEntitiesService implements ExportableEntitiesServi
Dao<E> dao = getDao(entityType);
E entity = dao.findById(tenantId, id.getId());
if (((HasTenantId) entity).getTenantId().equals(tenantId)) {
return entity;
if (entity == null || !belongsToTenant(entity, tenantId)) {
return null;
}
return null;
return entity;
}
@Override
public <E extends ExportableEntity<I>, I extends EntityId> E findEntityByTenantIdAndName(TenantId tenantId, EntityType entityType, String name) {
Dao<E> dao = getDao(entityType);
E entity = null;
if (dao instanceof ExportableEntityDao) {
ExportableEntityDao<E> exportableEntityDao = (ExportableEntityDao<E>) dao;
try {
return exportableEntityDao.findByTenantIdAndName(tenantId.getId(), name);
entity = exportableEntityDao.findByTenantIdAndName(tenantId.getId(), name);
} catch (UnsupportedOperationException ignored) {
}
}
return null;
if (entity == null || !belongsToTenant(entity, tenantId)) {
return null;
}
return entity;
}
private boolean belongsToTenant(HasId<? extends EntityId> entity, TenantId tenantId) {
return tenantId.equals(((HasTenantId) entity).getTenantId());
}
@ -127,21 +144,21 @@ public class DefaultExportableEntitiesService implements ExportableEntitiesServi
EntityTypeFilter entityTypeFilter = new EntityTypeFilter();
entityTypeFilter.setEntityType(exportRequest.getEntityType());
CustomerId customerId = Optional.ofNullable(exportRequest.getCustomerId()).orElse(new CustomerId(EntityId.NULL_UUID));
CustomerId customerId = new CustomerId(ObjectUtils.defaultIfNull(exportRequest.getCustomerId(), EntityId.NULL_UUID));
return findEntitiesByFilter(tenantId, customerId, entityTypeFilter, exportRequest.getPage(), exportRequest.getPageSize());
}
case CUSTOM_ENTITY_FILTER: {
CustomEntityFilterExportRequest exportRequest = (CustomEntityFilterExportRequest) request;
EntityFilter filter = exportRequest.getFilter();
CustomerId customerId = Optional.ofNullable(exportRequest.getCustomerId()).orElse(new CustomerId(EntityId.NULL_UUID));
CustomerId customerId = new CustomerId(ObjectUtils.defaultIfNull(exportRequest.getCustomerId(), EntityId.NULL_UUID));
return findEntitiesByFilter(tenantId, customerId, filter, exportRequest.getPage(), exportRequest.getPageSize());
}
case CUSTOM_ENTITY_QUERY: {
CustomEntityQueryExportRequest exportRequest = (CustomEntityQueryExportRequest) request;
EntityDataQuery query = exportRequest.getQuery();
CustomerId customerId = Optional.ofNullable(exportRequest.getCustomerId()).orElse(new CustomerId(EntityId.NULL_UUID));
CustomerId customerId = new CustomerId(ObjectUtils.defaultIfNull(exportRequest.getCustomerId(), EntityId.NULL_UUID));
return findEntitiesByQuery(tenantId, customerId, query);
}
default: {

View File

@ -17,9 +17,10 @@ package org.thingsboard.server.service.sync.exporting.data.request;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.query.EntityFilter;
import java.util.UUID;
@EqualsAndHashCode(callSuper = true)
@Data
public class CustomEntityFilterExportRequest extends ExportRequest {
@ -27,7 +28,7 @@ public class CustomEntityFilterExportRequest extends ExportRequest {
private EntityFilter filter;
private int page;
private int pageSize;
private CustomerId customerId;
private UUID customerId;
@Override
public ExportRequestType getType() {

View File

@ -17,15 +17,16 @@ package org.thingsboard.server.service.sync.exporting.data.request;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.query.EntityDataQuery;
import java.util.UUID;
@EqualsAndHashCode(callSuper = true)
@Data
public class CustomEntityQueryExportRequest extends ExportRequest {
private EntityDataQuery query;
private CustomerId customerId;
private UUID customerId;
@Override
public ExportRequestType getType() {

View File

@ -18,7 +18,8 @@ package org.thingsboard.server.service.sync.exporting.data.request;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.id.CustomerId;
import java.util.UUID;
@EqualsAndHashCode(callSuper = true)
@Data
@ -27,7 +28,7 @@ public class EntityTypeExportRequest extends ExportRequest {
private EntityType entityType;
private int page;
private int pageSize;
private CustomerId customerId;
private UUID customerId;
@Override
public ExportRequestType getType() {