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.EntitiesExportImportService;
|
||||||
import org.thingsboard.server.service.sync.exporting.ExportableEntitiesService;
|
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.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.exporting.data.request.ExportRequest;
|
||||||
import org.thingsboard.server.service.sync.importing.data.EntityImportResult;
|
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 org.thingsboard.server.service.sync.importing.data.request.ImportRequest;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -79,10 +81,16 @@ public class EntitiesExportImportController extends BaseController {
|
|||||||
|
|
||||||
private List<EntityExportData<?>> exportEntitiesByRequest(SecurityUser user, ExportRequest exportRequest) throws ThingsboardException {
|
private List<EntityExportData<?>> exportEntitiesByRequest(SecurityUser user, ExportRequest exportRequest) throws ThingsboardException {
|
||||||
List<EntityId> entities = exportableEntitiesService.findEntitiesForRequest(user.getTenantId(), exportRequest);
|
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<>();
|
List<EntityExportData<?>> exportDataList = new ArrayList<>();
|
||||||
for (EntityId entityId : entities) {
|
for (EntityId entityId : entities) {
|
||||||
EntityExportData<?> exportData = exportImportService.exportEntity(user, entityId, exportRequest.getExportSettings());
|
EntityExportData<?> exportData = exportImportService.exportEntity(user, entityId, exportSettings);
|
||||||
exportDataList.add(exportData);
|
exportDataList.add(exportData);
|
||||||
}
|
}
|
||||||
return exportDataList;
|
return exportDataList;
|
||||||
@ -93,7 +101,15 @@ public class EntitiesExportImportController extends BaseController {
|
|||||||
public List<EntityImportResult<?>> importEntities(@RequestBody ImportRequest importRequest) throws ThingsboardException {
|
public List<EntityImportResult<?>> importEntities(@RequestBody ImportRequest importRequest) throws ThingsboardException {
|
||||||
SecurityUser user = getCurrentUser();
|
SecurityUser user = getCurrentUser();
|
||||||
try {
|
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()
|
importResults.stream()
|
||||||
.map(EntityImportResult::getSendEventsCallback)
|
.map(EntityImportResult::getSendEventsCallback)
|
||||||
|
|||||||
@ -17,6 +17,7 @@ package org.thingsboard.server.service.sync.exporting;
|
|||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.dao.DataAccessException;
|
import org.springframework.dao.DataAccessException;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -56,7 +57,6 @@ import java.util.Collections;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static org.thingsboard.server.dao.sql.query.EntityKeyMapping.CREATED_TIME;
|
import static org.thingsboard.server.dao.sql.query.EntityKeyMapping.CREATED_TIME;
|
||||||
@ -78,12 +78,17 @@ public class DefaultExportableEntitiesService implements ExportableEntitiesServi
|
|||||||
EntityType entityType = externalId.getEntityType();
|
EntityType entityType = externalId.getEntityType();
|
||||||
Dao<E> dao = getDao(entityType);
|
Dao<E> dao = getDao(entityType);
|
||||||
|
|
||||||
|
E entity = null;
|
||||||
|
|
||||||
if (dao instanceof ExportableEntityDao) {
|
if (dao instanceof ExportableEntityDao) {
|
||||||
ExportableEntityDao<E> exportableEntityDao = (ExportableEntityDao<E>) dao;
|
ExportableEntityDao<E> exportableEntityDao = (ExportableEntityDao<E>) dao;
|
||||||
return exportableEntityDao.findByTenantIdAndExternalId(tenantId.getId(), externalId.getId());
|
entity = exportableEntityDao.findByTenantIdAndExternalId(tenantId.getId(), externalId.getId());
|
||||||
} else {
|
}
|
||||||
|
if (entity == null || !belongsToTenant(entity, tenantId)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return entity;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -92,24 +97,36 @@ public class DefaultExportableEntitiesService implements ExportableEntitiesServi
|
|||||||
Dao<E> dao = getDao(entityType);
|
Dao<E> dao = getDao(entityType);
|
||||||
|
|
||||||
E entity = dao.findById(tenantId, id.getId());
|
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
|
@Override
|
||||||
public <E extends ExportableEntity<I>, I extends EntityId> E findEntityByTenantIdAndName(TenantId tenantId, EntityType entityType, String name) {
|
public <E extends ExportableEntity<I>, I extends EntityId> E findEntityByTenantIdAndName(TenantId tenantId, EntityType entityType, String name) {
|
||||||
Dao<E> dao = getDao(entityType);
|
Dao<E> dao = getDao(entityType);
|
||||||
|
|
||||||
|
E entity = null;
|
||||||
|
|
||||||
if (dao instanceof ExportableEntityDao) {
|
if (dao instanceof ExportableEntityDao) {
|
||||||
ExportableEntityDao<E> exportableEntityDao = (ExportableEntityDao<E>) dao;
|
ExportableEntityDao<E> exportableEntityDao = (ExportableEntityDao<E>) dao;
|
||||||
try {
|
try {
|
||||||
return exportableEntityDao.findByTenantIdAndName(tenantId.getId(), name);
|
entity = exportableEntityDao.findByTenantIdAndName(tenantId.getId(), name);
|
||||||
} catch (UnsupportedOperationException ignored) {
|
} 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 entityTypeFilter = new EntityTypeFilter();
|
||||||
entityTypeFilter.setEntityType(exportRequest.getEntityType());
|
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());
|
return findEntitiesByFilter(tenantId, customerId, entityTypeFilter, exportRequest.getPage(), exportRequest.getPageSize());
|
||||||
}
|
}
|
||||||
case CUSTOM_ENTITY_FILTER: {
|
case CUSTOM_ENTITY_FILTER: {
|
||||||
CustomEntityFilterExportRequest exportRequest = (CustomEntityFilterExportRequest) request;
|
CustomEntityFilterExportRequest exportRequest = (CustomEntityFilterExportRequest) request;
|
||||||
EntityFilter filter = exportRequest.getFilter();
|
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());
|
return findEntitiesByFilter(tenantId, customerId, filter, exportRequest.getPage(), exportRequest.getPageSize());
|
||||||
}
|
}
|
||||||
case CUSTOM_ENTITY_QUERY: {
|
case CUSTOM_ENTITY_QUERY: {
|
||||||
CustomEntityQueryExportRequest exportRequest = (CustomEntityQueryExportRequest) request;
|
CustomEntityQueryExportRequest exportRequest = (CustomEntityQueryExportRequest) request;
|
||||||
EntityDataQuery query = exportRequest.getQuery();
|
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);
|
return findEntitiesByQuery(tenantId, customerId, query);
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
|
|||||||
@ -17,9 +17,10 @@ package org.thingsboard.server.service.sync.exporting.data.request;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import org.thingsboard.server.common.data.id.CustomerId;
|
|
||||||
import org.thingsboard.server.common.data.query.EntityFilter;
|
import org.thingsboard.server.common.data.query.EntityFilter;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Data
|
@Data
|
||||||
public class CustomEntityFilterExportRequest extends ExportRequest {
|
public class CustomEntityFilterExportRequest extends ExportRequest {
|
||||||
@ -27,7 +28,7 @@ public class CustomEntityFilterExportRequest extends ExportRequest {
|
|||||||
private EntityFilter filter;
|
private EntityFilter filter;
|
||||||
private int page;
|
private int page;
|
||||||
private int pageSize;
|
private int pageSize;
|
||||||
private CustomerId customerId;
|
private UUID customerId;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ExportRequestType getType() {
|
public ExportRequestType getType() {
|
||||||
|
|||||||
@ -17,15 +17,16 @@ package org.thingsboard.server.service.sync.exporting.data.request;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import org.thingsboard.server.common.data.id.CustomerId;
|
|
||||||
import org.thingsboard.server.common.data.query.EntityDataQuery;
|
import org.thingsboard.server.common.data.query.EntityDataQuery;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Data
|
@Data
|
||||||
public class CustomEntityQueryExportRequest extends ExportRequest {
|
public class CustomEntityQueryExportRequest extends ExportRequest {
|
||||||
|
|
||||||
private EntityDataQuery query;
|
private EntityDataQuery query;
|
||||||
private CustomerId customerId;
|
private UUID customerId;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ExportRequestType getType() {
|
public ExportRequestType getType() {
|
||||||
|
|||||||
@ -18,7 +18,8 @@ package org.thingsboard.server.service.sync.exporting.data.request;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import org.thingsboard.server.common.data.EntityType;
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
import org.thingsboard.server.common.data.id.CustomerId;
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Data
|
@Data
|
||||||
@ -27,7 +28,7 @@ public class EntityTypeExportRequest extends ExportRequest {
|
|||||||
private EntityType entityType;
|
private EntityType entityType;
|
||||||
private int page;
|
private int page;
|
||||||
private int pageSize;
|
private int pageSize;
|
||||||
private CustomerId customerId;
|
private UUID customerId;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ExportRequestType getType() {
|
public ExportRequestType getType() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user