Browse Source

Merge the PR #6713

pull/6730/head
Andrii Shvaika 4 years ago
parent
commit
c63805bcf1
  1. 33
      application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/DefaultExportableEntitiesService.java
  2. 2
      application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/ExportableEntitiesService.java
  3. 45
      application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/AssetExportService.java
  4. 5
      application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/BaseEntityExportService.java
  5. 49
      application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/DashboardExportService.java
  6. 14
      application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/DefaultEntityExportService.java
  7. 2
      application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/DeviceExportService.java
  8. 45
      application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/DeviceProfileExportService.java
  9. 45
      application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/EntityViewExportService.java
  10. 2
      common/data/src/main/java/org/thingsboard/server/common/data/Customer.java
  11. 2
      common/data/src/main/java/org/thingsboard/server/common/data/Dashboard.java
  12. 5
      dao/src/main/java/org/thingsboard/server/dao/ExportableEntityDao.java
  13. 3
      dao/src/main/java/org/thingsboard/server/dao/asset/AssetDao.java
  14. 3
      dao/src/main/java/org/thingsboard/server/dao/customer/CustomerDao.java
  15. 3
      dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardDao.java
  16. 3
      dao/src/main/java/org/thingsboard/server/dao/device/DeviceDao.java
  17. 3
      dao/src/main/java/org/thingsboard/server/dao/device/DeviceProfileDao.java
  18. 3
      dao/src/main/java/org/thingsboard/server/dao/entityview/EntityViewDao.java
  19. 3
      dao/src/main/java/org/thingsboard/server/dao/rule/RuleChainDao.java
  20. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/asset/AssetRepository.java
  21. 7
      dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java
  22. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/customer/CustomerRepository.java
  23. 7
      dao/src/main/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDao.java
  24. 5
      dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/DashboardRepository.java
  25. 8
      dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardDao.java
  26. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceProfileRepository.java
  27. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java
  28. 7
      dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceDao.java
  29. 8
      dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceProfileDao.java
  30. 3
      dao/src/main/java/org/thingsboard/server/dao/sql/entityview/EntityViewRepository.java
  31. 7
      dao/src/main/java/org/thingsboard/server/dao/sql/entityview/JpaEntityViewDao.java
  32. 8
      dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleChainDao.java
  33. 3
      dao/src/main/java/org/thingsboard/server/dao/sql/rule/RuleChainRepository.java
  34. 19
      dao/src/main/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDao.java
  35. 3
      dao/src/main/java/org/thingsboard/server/dao/sql/widget/WidgetsBundleRepository.java
  36. 2
      dao/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleDao.java

33
application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/DefaultExportableEntitiesService.java

@ -75,7 +75,7 @@ public class DefaultExportableEntitiesService implements ExportableEntitiesServi
E entity = null;
if (dao instanceof ExportableEntityDao) {
ExportableEntityDao<E> exportableEntityDao = (ExportableEntityDao<E>) dao;
ExportableEntityDao<I, E> exportableEntityDao = (ExportableEntityDao<I, E>) dao;
entity = exportableEntityDao.findByTenantIdAndExternalId(tenantId.getId(), externalId.getId());
}
if (entity == null || !belongsToTenant(entity, tenantId)) {
@ -113,7 +113,7 @@ public class DefaultExportableEntitiesService implements ExportableEntitiesServi
E entity = null;
if (dao instanceof ExportableEntityDao) {
ExportableEntityDao<E> exportableEntityDao = (ExportableEntityDao<E>) dao;
ExportableEntityDao<I, E> exportableEntityDao = (ExportableEntityDao<I, E>) dao;
try {
entity = exportableEntityDao.findByTenantIdAndName(tenantId.getId(), name);
} catch (UnsupportedOperationException ignored) {
@ -128,12 +128,22 @@ public class DefaultExportableEntitiesService implements ExportableEntitiesServi
@Override
public <E extends ExportableEntity<I>, I extends EntityId> PageData<E> findEntitiesByTenantId(TenantId tenantId, EntityType entityType, PageLink pageLink) {
Dao<E> dao = getDao(entityType);
if (dao instanceof ExportableEntityDao) {
ExportableEntityDao<E> exportableEntityDao = (ExportableEntityDao<E>) dao;
return exportableEntityDao.findByTenantId(tenantId.getId(), pageLink);
ExportableEntityDao<I, E> dao = getExportableEntityDao(entityType);
if (dao != null) {
return dao.findByTenantId(tenantId.getId(), pageLink);
} else {
return new PageData<>();
}
}
@Override
public <I extends EntityId> I getExternalIdByInternal(I internalId) {
ExportableEntityDao<I, ?> dao = getExportableEntityDao(internalId.getEntityType());
if (dao != null) {
return dao.getExternalIdByInternal(internalId);
} else {
return null;
}
return new PageData<>();
}
private boolean belongsToTenant(HasId<? extends EntityId> entity, TenantId tenantId) {
@ -151,6 +161,15 @@ public class DefaultExportableEntitiesService implements ExportableEntitiesServi
entityRemover.accept(tenantId, id);
}
private <I extends EntityId, E extends ExportableEntity<I>> ExportableEntityDao<I, E> getExportableEntityDao(EntityType entityType) {
Dao<E> dao = getDao(entityType);
if (dao instanceof ExportableEntityDao) {
return (ExportableEntityDao<I, E>) dao;
} else {
return null;
}
}
@SuppressWarnings("unchecked")
private <E> Dao<E> getDao(EntityType entityType) {
return (Dao<E>) daos.get(entityType);

2
application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/ExportableEntitiesService.java

@ -38,6 +38,8 @@ public interface ExportableEntitiesService {
<E extends ExportableEntity<I>, I extends EntityId> PageData<E> findEntitiesByTenantId(TenantId tenantId, EntityType entityType, PageLink pageLink);
<I extends EntityId> I getExternalIdByInternal(I internalId);
<I extends EntityId> void removeById(TenantId tenantId, I id);
}

45
application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/AssetExportService.java

@ -0,0 +1,45 @@
/**
* Copyright © 2016-2022 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.service.sync.ie.exporting.impl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.asset.Asset;
import org.thingsboard.server.common.data.id.AssetId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.sync.ie.EntityExportData;
import org.thingsboard.server.common.data.sync.ie.EntityExportSettings;
import org.thingsboard.server.queue.util.TbCoreComponent;
import org.thingsboard.server.service.sync.vc.data.EntitiesExportCtx;
import java.util.Set;
@Service
@TbCoreComponent
public class AssetExportService extends BaseEntityExportService<AssetId, Asset, EntityExportData<Asset>> {
@Override
protected void setRelatedEntities(EntitiesExportCtx<?> ctx, Asset asset, EntityExportData<Asset> exportData) {
asset.setCustomerId(getExternalIdOrElseInternal(asset.getCustomerId()));
}
@Override
public Set<EntityType> getSupportedEntityTypes() {
return Set.of(EntityType.ASSET);
}
}

5
application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/BaseEntityExportService.java

@ -25,6 +25,7 @@ import org.thingsboard.server.common.data.sync.ie.EntityExportSettings;
import org.thingsboard.server.common.data.sync.ie.EntityExportData;
import org.thingsboard.server.service.sync.vc.data.EntitiesExportCtx;
import java.util.Optional;
import java.util.Set;
public abstract class BaseEntityExportService<I extends EntityId, E extends ExportableEntity<I>, D extends EntityExportData<E>> extends DefaultEntityExportService<I, E, D> {
@ -37,7 +38,9 @@ public abstract class BaseEntityExportService<I extends EntityId, E extends Expo
protected void setRelatedEntities(EntitiesExportCtx<?> ctx, E mainEntity, D exportData) {}
protected abstract D newExportData();
protected D newExportData() {
return (D) new EntityExportData<E>();
};
public abstract Set<EntityType> getSupportedEntityTypes();

49
application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/DashboardExportService.java

@ -0,0 +1,49 @@
/**
* Copyright © 2016-2022 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.service.sync.ie.exporting.impl;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;
import org.thingsboard.server.common.data.Dashboard;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.id.DashboardId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.sync.ie.EntityExportData;
import org.thingsboard.server.common.data.sync.ie.EntityExportSettings;
import org.thingsboard.server.queue.util.TbCoreComponent;
import org.thingsboard.server.service.sync.vc.data.EntitiesExportCtx;
import java.util.Set;
@Service
@TbCoreComponent
public class DashboardExportService extends BaseEntityExportService<DashboardId, Dashboard, EntityExportData<Dashboard>> {
@Override
protected void setRelatedEntities(EntitiesExportCtx<?> ctx, Dashboard dashboard, EntityExportData<Dashboard> exportData) {
if (CollectionUtils.isNotEmpty(dashboard.getAssignedCustomers())) {
dashboard.getAssignedCustomers().forEach(customerInfo -> {
customerInfo.setCustomerId(getExternalIdOrElseInternal(customerInfo.getCustomerId()));
});
}
}
@Override
public Set<EntityType> getSupportedEntityTypes() {
return Set.of(EntityType.DASHBOARD);
}
}

14
application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/DefaultEntityExportService.java

@ -44,6 +44,7 @@ import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors;
@ -53,7 +54,7 @@ import java.util.stream.Collectors;
public class DefaultEntityExportService<I extends EntityId, E extends ExportableEntity<I>, D extends EntityExportData<E>> implements EntityExportService<I, E, D> {
@Autowired @Lazy
private ExportableEntitiesService exportableEntitiesService;
protected ExportableEntitiesService exportableEntitiesService;
@Autowired
private RelationService relationService;
@Autowired
@ -68,6 +69,7 @@ public class DefaultEntityExportService<I extends EntityId, E extends Exportable
throw new IllegalArgumentException(entityId.getEntityType() + " [" + entityId.getId() + "] not found");
}
entity.setId(entity.getExternalId() != null ? entity.getExternalId() : entity.getId());
exportData.setEntity(entity);
exportData.setEntityType(entityId.getEntityType());
setAdditionalExportData(ctx, entity, exportData);
@ -79,6 +81,10 @@ public class DefaultEntityExportService<I extends EntityId, E extends Exportable
var exportSettings = ctx.getSettings();
if (exportSettings.isExportRelations()) {
List<EntityRelation> relations = exportRelations(ctx, entity);
relations.forEach(relation -> {
relation.setFrom(getExternalIdOrElseInternal(relation.getFrom()));
relation.setTo(getExternalIdOrElseInternal(relation.getTo()));
});
exportData.setRelations(relations);
}
if (exportSettings.isExportAttributes()) {
@ -128,6 +134,12 @@ public class DefaultEntityExportService<I extends EntityId, E extends Exportable
return attributes;
}
protected <ID extends EntityId> ID getExternalIdOrElseInternal(ID internalId) {
if (internalId == null || internalId.isNullUid()) return internalId;
return Optional.ofNullable(exportableEntitiesService.getExternalIdByInternal(internalId))
.orElse(internalId);
}
protected D newExportData() {
return (D) new EntityExportData<E>();
}

2
application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/DeviceExportService.java

@ -38,6 +38,8 @@ public class DeviceExportService extends BaseEntityExportService<DeviceId, Devic
@Override
protected void setRelatedEntities(EntitiesExportCtx<?> ctx, Device device, DeviceExportData exportData) {
device.setCustomerId(getExternalIdOrElseInternal(device.getCustomerId()));
device.setDeviceProfileId(getExternalIdOrElseInternal(device.getDeviceProfileId()));
if (ctx.getSettings().isExportCredentials()) {
exportData.setCredentials(deviceCredentialsService.findDeviceCredentialsByDeviceId(ctx.getTenantId(), device.getId()));
}

45
application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/DeviceProfileExportService.java

@ -0,0 +1,45 @@
/**
* Copyright © 2016-2022 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.service.sync.ie.exporting.impl;
import org.springframework.stereotype.Service;
import org.thingsboard.server.common.data.DeviceProfile;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.id.DeviceProfileId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.sync.ie.EntityExportData;
import org.thingsboard.server.common.data.sync.ie.EntityExportSettings;
import org.thingsboard.server.queue.util.TbCoreComponent;
import org.thingsboard.server.service.sync.vc.data.EntitiesExportCtx;
import java.util.Set;
@Service
@TbCoreComponent
public class DeviceProfileExportService extends BaseEntityExportService<DeviceProfileId, DeviceProfile, EntityExportData<DeviceProfile>> {
@Override
protected void setRelatedEntities(EntitiesExportCtx<?> ctx, DeviceProfile deviceProfile, EntityExportData<DeviceProfile> exportData) {
deviceProfile.setDefaultDashboardId(getExternalIdOrElseInternal(deviceProfile.getDefaultDashboardId()));
deviceProfile.setDefaultRuleChainId(getExternalIdOrElseInternal(deviceProfile.getDefaultRuleChainId()));
}
@Override
public Set<EntityType> getSupportedEntityTypes() {
return Set.of(EntityType.DEVICE_PROFILE);
}
}

45
application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/EntityViewExportService.java

@ -0,0 +1,45 @@
/**
* Copyright © 2016-2022 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.service.sync.ie.exporting.impl;
import org.springframework.stereotype.Service;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.EntityView;
import org.thingsboard.server.common.data.id.EntityViewId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.sync.ie.EntityExportData;
import org.thingsboard.server.common.data.sync.ie.EntityExportSettings;
import org.thingsboard.server.queue.util.TbCoreComponent;
import org.thingsboard.server.service.sync.vc.data.EntitiesExportCtx;
import java.util.Set;
@Service
@TbCoreComponent
public class EntityViewExportService extends BaseEntityExportService<EntityViewId, EntityView, EntityExportData<EntityView>> {
@Override
protected void setRelatedEntities(EntitiesExportCtx<?> ctx, EntityView entityView, EntityExportData<EntityView> exportData) {
entityView.setEntityId(getExternalIdOrElseInternal(entityView.getEntityId()));
entityView.setCustomerId(getExternalIdOrElseInternal(entityView.getCustomerId()));
}
@Override
public Set<EntityType> getSupportedEntityTypes() {
return Set.of(EntityType.ENTITY_VIEW);
}
}

2
common/data/src/main/java/org/thingsboard/server/common/data/Customer.java

@ -28,7 +28,7 @@ import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.validation.Length;
import org.thingsboard.server.common.data.validation.NoXss;
@EqualsAndHashCode(callSuper = false)
@EqualsAndHashCode(callSuper = true)
public class Customer extends ContactBased<CustomerId> implements HasTenantId, ExportableEntity<CustomerId> {
private static final long serialVersionUID = -1599722990298929275L;

2
common/data/src/main/java/org/thingsboard/server/common/data/Dashboard.java

@ -22,7 +22,7 @@ import lombok.Getter;
import lombok.Setter;
import org.thingsboard.server.common.data.id.DashboardId;
@EqualsAndHashCode(callSuper = false)
@EqualsAndHashCode(callSuper = true)
public class Dashboard extends DashboardInfo implements ExportableEntity<DashboardId> {
private static final long serialVersionUID = 872682138346187503L;

5
dao/src/main/java/org/thingsboard/server/dao/ExportableEntityDao.java

@ -16,12 +16,13 @@
package org.thingsboard.server.dao;
import org.thingsboard.server.common.data.ExportableEntity;
import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import java.util.UUID;
public interface ExportableEntityDao<T extends ExportableEntity<?>> extends Dao<T> {
public interface ExportableEntityDao<I extends EntityId, T extends ExportableEntity<?>> extends Dao<T> {
T findByTenantIdAndExternalId(UUID tenantId, UUID externalId);
@ -29,4 +30,6 @@ public interface ExportableEntityDao<T extends ExportableEntity<?>> extends Dao<
PageData<T> findByTenantId(UUID tenantId, PageLink pageLink);
I getExternalIdByInternal(I internalId);
}

3
dao/src/main/java/org/thingsboard/server/dao/asset/AssetDao.java

@ -19,6 +19,7 @@ import com.google.common.util.concurrent.ListenableFuture;
import org.thingsboard.server.common.data.EntitySubtype;
import org.thingsboard.server.common.data.asset.Asset;
import org.thingsboard.server.common.data.asset.AssetInfo;
import org.thingsboard.server.common.data.id.AssetId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
@ -34,7 +35,7 @@ import java.util.UUID;
* The Interface AssetDao.
*
*/
public interface AssetDao extends Dao<Asset>, TenantEntityDao, ExportableEntityDao<Asset> {
public interface AssetDao extends Dao<Asset>, TenantEntityDao, ExportableEntityDao<AssetId, Asset> {
/**
* Find asset info by id.

3
dao/src/main/java/org/thingsboard/server/dao/customer/CustomerDao.java

@ -16,6 +16,7 @@
package org.thingsboard.server.dao.customer;
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
@ -29,7 +30,7 @@ import java.util.UUID;
/**
* The Interface CustomerDao.
*/
public interface CustomerDao extends Dao<Customer>, TenantEntityDao, ExportableEntityDao<Customer> {
public interface CustomerDao extends Dao<Customer>, TenantEntityDao, ExportableEntityDao<CustomerId, Customer> {
/**
* Save or update customer object

3
dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardDao.java

@ -16,6 +16,7 @@
package org.thingsboard.server.dao.dashboard;
import org.thingsboard.server.common.data.Dashboard;
import org.thingsboard.server.common.data.id.DashboardId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.Dao;
import org.thingsboard.server.dao.ExportableEntityDao;
@ -27,7 +28,7 @@ import java.util.UUID;
/**
* The Interface DashboardDao.
*/
public interface DashboardDao extends Dao<Dashboard>, TenantEntityDao, ExportableEntityDao<Dashboard> {
public interface DashboardDao extends Dao<Dashboard>, TenantEntityDao, ExportableEntityDao<DashboardId, Dashboard> {
/**
* Save or update dashboard object

3
dao/src/main/java/org/thingsboard/server/dao/device/DeviceDao.java

@ -20,6 +20,7 @@ import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.DeviceInfo;
import org.thingsboard.server.common.data.DeviceTransportType;
import org.thingsboard.server.common.data.EntitySubtype;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.ota.OtaPackageType;
import org.thingsboard.server.common.data.page.PageData;
@ -36,7 +37,7 @@ import java.util.UUID;
* The Interface DeviceDao.
*
*/
public interface DeviceDao extends Dao<Device>, TenantEntityDao, ExportableEntityDao<Device> {
public interface DeviceDao extends Dao<Device>, TenantEntityDao, ExportableEntityDao<DeviceId, Device> {
/**
* Find device info by id.

3
dao/src/main/java/org/thingsboard/server/dao/device/DeviceProfileDao.java

@ -17,6 +17,7 @@ package org.thingsboard.server.dao.device;
import org.thingsboard.server.common.data.DeviceProfile;
import org.thingsboard.server.common.data.DeviceProfileInfo;
import org.thingsboard.server.common.data.id.DeviceProfileId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
@ -25,7 +26,7 @@ import org.thingsboard.server.dao.ExportableEntityDao;
import java.util.UUID;
public interface DeviceProfileDao extends Dao<DeviceProfile>, ExportableEntityDao<DeviceProfile> {
public interface DeviceProfileDao extends Dao<DeviceProfile>, ExportableEntityDao<DeviceProfileId, DeviceProfile> {
DeviceProfileInfo findDeviceProfileInfoById(TenantId tenantId, UUID deviceProfileId);

3
dao/src/main/java/org/thingsboard/server/dao/entityview/EntityViewDao.java

@ -19,6 +19,7 @@ import com.google.common.util.concurrent.ListenableFuture;
import org.thingsboard.server.common.data.EntitySubtype;
import org.thingsboard.server.common.data.EntityView;
import org.thingsboard.server.common.data.EntityViewInfo;
import org.thingsboard.server.common.data.id.EntityViewId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
@ -32,7 +33,7 @@ import java.util.UUID;
/**
* Created by Victor Basanets on 8/28/2017.
*/
public interface EntityViewDao extends Dao<EntityView>, ExportableEntityDao<EntityView> {
public interface EntityViewDao extends Dao<EntityView>, ExportableEntityDao<EntityViewId, EntityView> {
/**
* Find entity view info by id.

3
dao/src/main/java/org/thingsboard/server/dao/rule/RuleChainDao.java

@ -15,6 +15,7 @@
*/
package org.thingsboard.server.dao.rule;
import org.thingsboard.server.common.data.id.RuleChainId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
@ -30,7 +31,7 @@ import java.util.UUID;
/**
* Created by igor on 3/12/18.
*/
public interface RuleChainDao extends Dao<RuleChain>, TenantEntityDao, ExportableEntityDao<RuleChain> {
public interface RuleChainDao extends Dao<RuleChain>, TenantEntityDao, ExportableEntityDao<RuleChainId, RuleChain> {
/**
* Find rule chains by tenantId and page link.

4
dao/src/main/java/org/thingsboard/server/dao/sql/asset/AssetRepository.java

@ -144,4 +144,8 @@ public interface AssetRepository extends JpaRepository<AssetEntity, UUID>, Expor
Pageable pageable);
Long countByTenantIdAndTypeIsNot(UUID tenantId, String type);
@Query("SELECT externalId FROM AssetEntity WHERE id = :id")
UUID getExternalIdById(@Param("id") UUID id);
}

7
dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java

@ -24,6 +24,7 @@ import org.thingsboard.server.common.data.EntitySubtype;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.asset.Asset;
import org.thingsboard.server.common.data.asset.AssetInfo;
import org.thingsboard.server.common.data.id.AssetId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
@ -224,6 +225,12 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im
return findAssetsByTenantId(tenantId, pageLink);
}
@Override
public AssetId getExternalIdByInternal(AssetId internalId) {
return Optional.ofNullable(assetRepository.getExternalIdById(internalId.getId()))
.map(AssetId::new).orElse(null);
}
@Override
public EntityType getEntityType() {
return EntityType.ASSET;

4
dao/src/main/java/org/thingsboard/server/dao/sql/customer/CustomerRepository.java

@ -39,4 +39,8 @@ public interface CustomerRepository extends JpaRepository<CustomerEntity, UUID>,
CustomerEntity findByTenantIdAndTitle(UUID tenantId, String title);
Long countByTenantId(UUID tenantId);
@Query("SELECT externalId FROM CustomerEntity WHERE id = :id")
UUID getExternalIdById(@Param("id") UUID id);
}

7
dao/src/main/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDao.java

@ -20,6 +20,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
@ -85,6 +86,12 @@ public class JpaCustomerDao extends JpaAbstractSearchTextDao<CustomerEntity, Cus
return findCustomersByTenantId(tenantId, pageLink);
}
@Override
public CustomerId getExternalIdByInternal(CustomerId internalId) {
return Optional.ofNullable(customerRepository.getExternalIdById(internalId.getId()))
.map(CustomerId::new).orElse(null);
}
@Override
public EntityType getEntityType() {
return EntityType.CUSTOMER;

5
dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/DashboardRepository.java

@ -18,6 +18,8 @@ package org.thingsboard.server.dao.sql.dashboard;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.thingsboard.server.dao.ExportableEntityRepository;
import org.thingsboard.server.dao.model.sql.DashboardEntity;
@ -35,4 +37,7 @@ public interface DashboardRepository extends JpaRepository<DashboardEntity, UUID
Page<DashboardEntity> findByTenantId(UUID tenantId, Pageable pageable);
@Query("SELECT externalId FROM DashboardEntity WHERE id = :id")
UUID getExternalIdById(@Param("id") UUID id);
}

8
dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardDao.java

@ -20,6 +20,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.Dashboard;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.id.DashboardId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
@ -29,6 +30,7 @@ import org.thingsboard.server.dao.model.sql.DashboardEntity;
import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
/**
@ -65,6 +67,12 @@ public class JpaDashboardDao extends JpaAbstractSearchTextDao<DashboardEntity, D
return DaoUtil.toPageData(dashboardRepository.findByTenantId(tenantId, DaoUtil.toPageable(pageLink)));
}
@Override
public DashboardId getExternalIdByInternal(DashboardId internalId) {
return Optional.ofNullable(dashboardRepository.getExternalIdById(internalId.getId()))
.map(DashboardId::new).orElse(null);
}
@Override
public List<Dashboard> findByTenantIdAndTitle(UUID tenantId, String title) {
return DaoUtil.convertDataList(dashboardRepository.findByTenantIdAndTitle(tenantId, title));

4
dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceProfileRepository.java

@ -67,4 +67,8 @@ public interface DeviceProfileRepository extends JpaRepository<DeviceProfileEnti
DeviceProfileEntity findByTenantIdAndName(UUID id, String profileName);
DeviceProfileEntity findByProvisionDeviceKey(@Param("provisionDeviceKey") String provisionDeviceKey);
@Query("SELECT externalId FROM DeviceProfileEntity WHERE id = :id")
UUID getExternalIdById(@Param("id") UUID id);
}

4
dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java

@ -245,4 +245,8 @@ public interface DeviceRepository extends JpaRepository<DeviceEntity, UUID>, Exp
"INNER JOIN DeviceProfileEntity p ON d.deviceProfileId = p.id " +
"WHERE p.transportType = :transportType")
Page<UUID> findIdsByDeviceProfileTransportType(@Param("transportType") DeviceTransportType transportType, Pageable pageable);
@Query("SELECT externalId FROM DeviceEntity WHERE id = :id")
UUID getExternalIdById(@Param("id") UUID id);
}

7
dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceDao.java

@ -29,6 +29,7 @@ import org.thingsboard.server.common.data.DeviceInfo;
import org.thingsboard.server.common.data.DeviceTransportType;
import org.thingsboard.server.common.data.EntitySubtype;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.ota.OtaPackageType;
import org.thingsboard.server.common.data.ota.OtaPackageUtil;
@ -318,6 +319,12 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device>
return findDevicesByTenantId(tenantId, pageLink);
}
@Override
public DeviceId getExternalIdByInternal(DeviceId internalId) {
return Optional.ofNullable(deviceRepository.getExternalIdById(internalId.getId()))
.map(DeviceId::new).orElse(null);
}
@Override
public EntityType getEntityType() {
return EntityType.DEVICE;

8
dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceProfileDao.java

@ -24,6 +24,7 @@ import org.thingsboard.server.common.data.DeviceProfile;
import org.thingsboard.server.common.data.DeviceProfileInfo;
import org.thingsboard.server.common.data.DeviceTransportType;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.id.DeviceProfileId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
@ -33,6 +34,7 @@ import org.thingsboard.server.dao.model.sql.DeviceProfileEntity;
import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
@Component
@ -126,6 +128,12 @@ public class JpaDeviceProfileDao extends JpaAbstractSearchTextDao<DeviceProfileE
return findDeviceProfiles(TenantId.fromUUID(tenantId), pageLink);
}
@Override
public DeviceProfileId getExternalIdByInternal(DeviceProfileId internalId) {
return Optional.ofNullable(deviceProfileRepository.getExternalIdById(internalId.getId()))
.map(DeviceProfileId::new).orElse(null);
}
@Override
public EntityType getEntityType() {
return EntityType.DEVICE_PROFILE;

3
dao/src/main/java/org/thingsboard/server/dao/sql/entityview/EntityViewRepository.java

@ -140,4 +140,7 @@ public interface EntityViewRepository extends JpaRepository<EntityViewEntity, UU
@Param("type") String type,
@Param("searchText") String searchText,
Pageable pageable);
@Query("SELECT externalId FROM EntityViewEntity WHERE id = :id")
UUID getExternalIdById(@Param("id") UUID id);
}

7
dao/src/main/java/org/thingsboard/server/dao/sql/entityview/JpaEntityViewDao.java

@ -24,6 +24,7 @@ import org.thingsboard.server.common.data.EntitySubtype;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.EntityView;
import org.thingsboard.server.common.data.EntityViewInfo;
import org.thingsboard.server.common.data.id.EntityViewId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
@ -211,6 +212,12 @@ public class JpaEntityViewDao extends JpaAbstractSearchTextDao<EntityViewEntity,
return findEntityViewsByTenantId(tenantId, pageLink);
}
@Override
public EntityViewId getExternalIdByInternal(EntityViewId internalId) {
return Optional.ofNullable(entityViewRepository.getExternalIdById(internalId.getId()))
.map(EntityViewId::new).orElse(null);
}
@Override
public EntityView findByTenantIdAndName(UUID tenantId, String name) {
return findEntityViewByTenantIdAndName(tenantId, name).orElse(null);

8
dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleChainDao.java

@ -20,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.id.RuleChainId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
@ -32,6 +33,7 @@ import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
import java.util.Collection;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
@Slf4j
@ -119,6 +121,12 @@ public class JpaRuleChainDao extends JpaAbstractSearchTextDao<RuleChainEntity, R
return findRuleChainsByTenantId(tenantId, pageLink);
}
@Override
public RuleChainId getExternalIdByInternal(RuleChainId internalId) {
return Optional.ofNullable(ruleChainRepository.getExternalIdById(internalId.getId()))
.map(RuleChainId::new).orElse(null);
}
@Override
public EntityType getEntityType() {
return EntityType.RULE_CHAIN;

3
dao/src/main/java/org/thingsboard/server/dao/sql/rule/RuleChainRepository.java

@ -67,4 +67,7 @@ public interface RuleChainRepository extends JpaRepository<RuleChainEntity, UUID
List<RuleChainEntity> findByTenantIdAndTypeAndName(UUID tenantId, RuleChainType type, String name);
@Query("SELECT externalId FROM RuleChainEntity WHERE id = :id")
UUID getExternalIdById(@Param("id") UUID id);
}

19
dao/src/main/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDao.java

@ -19,7 +19,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.id.DashboardId;
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.widget.WidgetsBundle;
@ -29,6 +31,7 @@ import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
import org.thingsboard.server.dao.widget.WidgetsBundleDao;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
@ -88,11 +91,6 @@ public class JpaWidgetsBundleDao extends JpaAbstractSearchTextDao<WidgetsBundleE
DaoUtil.toPageable(pageLink)));
}
@Override
public EntityType getEntityType() {
return EntityType.WIDGETS_BUNDLE;
}
@Override
public WidgetsBundle findByTenantIdAndExternalId(UUID tenantId, UUID externalId) {
return DaoUtil.getData(widgetsBundleRepository.findByTenantIdAndExternalId(tenantId, externalId));
@ -108,4 +106,15 @@ public class JpaWidgetsBundleDao extends JpaAbstractSearchTextDao<WidgetsBundleE
return findTenantWidgetsBundlesByTenantId(tenantId, pageLink);
}
@Override
public WidgetsBundleId getExternalIdByInternal(WidgetsBundleId internalId) {
return Optional.ofNullable(widgetsBundleRepository.getExternalIdById(internalId.getId()))
.map(WidgetsBundleId::new).orElse(null);
}
@Override
public EntityType getEntityType() {
return EntityType.WIDGETS_BUNDLE;
}
}

3
dao/src/main/java/org/thingsboard/server/dao/sql/widget/WidgetsBundleRepository.java

@ -53,4 +53,7 @@ public interface WidgetsBundleRepository extends JpaRepository<WidgetsBundleEnti
WidgetsBundleEntity findFirstByTenantIdAndTitle(UUID tenantId, String title);
@Query("SELECT externalId FROM WidgetsBundleEntity WHERE id = :id")
UUID getExternalIdById(@Param("id") UUID id);
}

2
dao/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleDao.java

@ -28,7 +28,7 @@ import java.util.UUID;
/**
* The Interface WidgetsBundleDao.
*/
public interface WidgetsBundleDao extends Dao<WidgetsBundle>, ExportableEntityDao<WidgetsBundle> {
public interface WidgetsBundleDao extends Dao<WidgetsBundle>, ExportableEntityDao<WidgetsBundleId, WidgetsBundle> {
/**
* Save or update widgets bundle object

Loading…
Cancel
Save