|
|
|
@ -18,28 +18,32 @@ package org.thingsboard.server.service.sync.ie.exporting; |
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.dao.DataAccessException; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.thingsboard.server.common.data.EntityType; |
|
|
|
import org.thingsboard.server.common.data.ExportableEntity; |
|
|
|
import org.thingsboard.server.common.data.HasTenantId; |
|
|
|
import org.thingsboard.server.common.data.exception.ThingsboardException; |
|
|
|
import org.thingsboard.server.common.data.id.AssetId; |
|
|
|
import org.thingsboard.server.common.data.id.CustomerId; |
|
|
|
import org.thingsboard.server.common.data.id.DashboardId; |
|
|
|
import org.thingsboard.server.common.data.id.DeviceId; |
|
|
|
import org.thingsboard.server.common.data.id.DeviceProfileId; |
|
|
|
import org.thingsboard.server.common.data.id.EntityId; |
|
|
|
import org.thingsboard.server.common.data.id.HasId; |
|
|
|
import org.thingsboard.server.common.data.id.RuleChainId; |
|
|
|
import org.thingsboard.server.common.data.id.TenantId; |
|
|
|
import org.thingsboard.server.common.data.id.WidgetsBundleId; |
|
|
|
import org.thingsboard.server.common.data.page.PageData; |
|
|
|
import org.thingsboard.server.common.data.page.PageLink; |
|
|
|
import org.thingsboard.server.common.data.query.EntityData; |
|
|
|
import org.thingsboard.server.common.data.query.EntityDataPageLink; |
|
|
|
import org.thingsboard.server.common.data.query.EntityDataQuery; |
|
|
|
import org.thingsboard.server.common.data.query.EntityDataSortOrder; |
|
|
|
import org.thingsboard.server.common.data.query.EntityFilter; |
|
|
|
import org.thingsboard.server.common.data.query.EntityKey; |
|
|
|
import org.thingsboard.server.common.data.query.EntityKeyType; |
|
|
|
import org.thingsboard.server.dao.Dao; |
|
|
|
import org.thingsboard.server.dao.ExportableEntityDao; |
|
|
|
import org.thingsboard.server.dao.entity.EntityService; |
|
|
|
import org.thingsboard.server.dao.asset.AssetService; |
|
|
|
import org.thingsboard.server.dao.customer.CustomerService; |
|
|
|
import org.thingsboard.server.dao.dashboard.DashboardService; |
|
|
|
import org.thingsboard.server.dao.device.DeviceProfileService; |
|
|
|
import org.thingsboard.server.dao.device.DeviceService; |
|
|
|
import org.thingsboard.server.dao.rule.RuleChainService; |
|
|
|
import org.thingsboard.server.dao.widget.WidgetsBundleService; |
|
|
|
import org.thingsboard.server.queue.util.TbCoreComponent; |
|
|
|
import org.thingsboard.server.service.security.model.SecurityUser; |
|
|
|
import org.thingsboard.server.service.security.permission.AccessControlService; |
|
|
|
@ -47,13 +51,9 @@ import org.thingsboard.server.service.security.permission.Operation; |
|
|
|
import org.thingsboard.server.service.security.permission.Resource; |
|
|
|
|
|
|
|
import java.util.Collection; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
import static org.thingsboard.server.dao.sql.query.EntityKeyMapping.CREATED_TIME; |
|
|
|
import java.util.function.BiConsumer; |
|
|
|
|
|
|
|
@Service |
|
|
|
@TbCoreComponent |
|
|
|
@ -62,6 +62,7 @@ import static org.thingsboard.server.dao.sql.query.EntityKeyMapping.CREATED_TIME |
|
|
|
public class DefaultExportableEntitiesService implements ExportableEntitiesService { |
|
|
|
|
|
|
|
private final Map<EntityType, Dao<?>> daos = new HashMap<>(); |
|
|
|
private final Map<EntityType, BiConsumer<TenantId, EntityId>> removers = new HashMap<>(); |
|
|
|
|
|
|
|
private final AccessControlService accessControlService; |
|
|
|
|
|
|
|
@ -141,14 +142,13 @@ public class DefaultExportableEntitiesService implements ExportableEntitiesServi |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public <I extends EntityId> void deleteByTenantIdAndId(TenantId tenantId, I id) { |
|
|
|
public <I extends EntityId> void removeById(TenantId tenantId, I id) { |
|
|
|
EntityType entityType = id.getEntityType(); |
|
|
|
Dao<Object> dao = getDao(entityType); |
|
|
|
if (dao == null) { |
|
|
|
BiConsumer<TenantId, EntityId> entityRemover = removers.get(entityType); |
|
|
|
if (entityRemover == null) { |
|
|
|
throw new IllegalArgumentException("Unsupported entity type " + entityType); |
|
|
|
} |
|
|
|
|
|
|
|
dao.removeById(tenantId, id.getId()); |
|
|
|
entityRemover.accept(tenantId, id); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -182,4 +182,31 @@ public class DefaultExportableEntitiesService implements ExportableEntitiesServi |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private void setRemovers(CustomerService customerService, AssetService assetService, RuleChainService ruleChainService, |
|
|
|
DashboardService dashboardService, DeviceProfileService deviceProfileService, |
|
|
|
DeviceService deviceService, WidgetsBundleService widgetsBundleService) { |
|
|
|
removers.put(EntityType.CUSTOMER, (tenantId, entityId) -> { |
|
|
|
customerService.deleteCustomer(tenantId, (CustomerId) entityId); |
|
|
|
}); |
|
|
|
removers.put(EntityType.ASSET, (tenantId, entityId) -> { |
|
|
|
assetService.deleteAsset(tenantId, (AssetId) entityId); |
|
|
|
}); |
|
|
|
removers.put(EntityType.RULE_CHAIN, (tenantId, entityId) -> { |
|
|
|
ruleChainService.deleteRuleChainById(tenantId, (RuleChainId) entityId); |
|
|
|
}); |
|
|
|
removers.put(EntityType.DASHBOARD, (tenantId, entityId) -> { |
|
|
|
dashboardService.deleteDashboard(tenantId, (DashboardId) entityId); |
|
|
|
}); |
|
|
|
removers.put(EntityType.DEVICE_PROFILE, (tenantId, entityId) -> { |
|
|
|
deviceProfileService.deleteDeviceProfile(tenantId, (DeviceProfileId) entityId); |
|
|
|
}); |
|
|
|
removers.put(EntityType.DEVICE, (tenantId, entityId) -> { |
|
|
|
deviceService.deleteDevice(tenantId, (DeviceId) entityId); |
|
|
|
}); |
|
|
|
removers.put(EntityType.WIDGETS_BUNDLE, (tenantId, entityId) -> { |
|
|
|
widgetsBundleService.deleteWidgetsBundle(tenantId, (WidgetsBundleId) entityId); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|