Minor improvements
This commit is contained in:
parent
955aec0b41
commit
7e2910ed95
@ -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)
|
||||
|
||||
@ -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: {
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user