Commit 79eb1183d92ac7d03a09876dcbc6bc75240d1026
Committed by
Andrew Shvayka
1 parent
a89be64d
Request SNMP devices' ids with pagination
Showing
8 changed files
with
42 additions
and
25 deletions
@@ -23,7 +23,6 @@ import com.google.common.util.concurrent.ListenableFuture; | @@ -23,7 +23,6 @@ import com.google.common.util.concurrent.ListenableFuture; | ||
23 | import com.google.common.util.concurrent.MoreExecutors; | 23 | import com.google.common.util.concurrent.MoreExecutors; |
24 | import com.google.protobuf.ByteString; | 24 | import com.google.protobuf.ByteString; |
25 | import lombok.extern.slf4j.Slf4j; | 25 | import lombok.extern.slf4j.Slf4j; |
26 | -import org.springframework.cache.CacheManager; | ||
27 | import org.springframework.stereotype.Service; | 26 | import org.springframework.stereotype.Service; |
28 | import org.springframework.util.StringUtils; | 27 | import org.springframework.util.StringUtils; |
29 | import org.thingsboard.common.util.JacksonUtil; | 28 | import org.thingsboard.common.util.JacksonUtil; |
@@ -46,6 +45,8 @@ import org.thingsboard.server.common.data.id.DeviceId; | @@ -46,6 +45,8 @@ import org.thingsboard.server.common.data.id.DeviceId; | ||
46 | import org.thingsboard.server.common.data.id.DeviceProfileId; | 45 | import org.thingsboard.server.common.data.id.DeviceProfileId; |
47 | import org.thingsboard.server.common.data.id.FirmwareId; | 46 | import org.thingsboard.server.common.data.id.FirmwareId; |
48 | import org.thingsboard.server.common.data.id.TenantId; | 47 | import org.thingsboard.server.common.data.id.TenantId; |
48 | +import org.thingsboard.server.common.data.page.PageData; | ||
49 | +import org.thingsboard.server.common.data.page.PageLink; | ||
49 | import org.thingsboard.server.common.data.relation.EntityRelation; | 50 | import org.thingsboard.server.common.data.relation.EntityRelation; |
50 | import org.thingsboard.server.common.data.security.DeviceCredentials; | 51 | import org.thingsboard.server.common.data.security.DeviceCredentials; |
51 | import org.thingsboard.server.common.data.security.DeviceCredentialsType; | 52 | import org.thingsboard.server.common.data.security.DeviceCredentialsType; |
@@ -62,7 +63,6 @@ import org.thingsboard.server.dao.device.provision.ProvisionRequest; | @@ -62,7 +63,6 @@ import org.thingsboard.server.dao.device.provision.ProvisionRequest; | ||
62 | import org.thingsboard.server.dao.device.provision.ProvisionResponse; | 63 | import org.thingsboard.server.dao.device.provision.ProvisionResponse; |
63 | import org.thingsboard.server.dao.firmware.FirmwareService; | 64 | import org.thingsboard.server.dao.firmware.FirmwareService; |
64 | import org.thingsboard.server.dao.relation.RelationService; | 65 | import org.thingsboard.server.dao.relation.RelationService; |
65 | -import org.thingsboard.server.dao.resource.ResourceService; | ||
66 | import org.thingsboard.server.dao.tenant.TbTenantProfileCache; | 66 | import org.thingsboard.server.dao.tenant.TbTenantProfileCache; |
67 | import org.thingsboard.server.gen.transport.TransportProtos; | 67 | import org.thingsboard.server.gen.transport.TransportProtos; |
68 | import org.thingsboard.server.gen.transport.TransportProtos.DeviceInfoProto; | 68 | import org.thingsboard.server.gen.transport.TransportProtos.DeviceInfoProto; |
@@ -72,9 +72,9 @@ import org.thingsboard.server.gen.transport.TransportProtos.GetEntityProfileRequ | @@ -72,9 +72,9 @@ import org.thingsboard.server.gen.transport.TransportProtos.GetEntityProfileRequ | ||
72 | import org.thingsboard.server.gen.transport.TransportProtos.GetEntityProfileResponseMsg; | 72 | import org.thingsboard.server.gen.transport.TransportProtos.GetEntityProfileResponseMsg; |
73 | import org.thingsboard.server.gen.transport.TransportProtos.GetOrCreateDeviceFromGatewayRequestMsg; | 73 | import org.thingsboard.server.gen.transport.TransportProtos.GetOrCreateDeviceFromGatewayRequestMsg; |
74 | import org.thingsboard.server.gen.transport.TransportProtos.GetOrCreateDeviceFromGatewayResponseMsg; | 74 | import org.thingsboard.server.gen.transport.TransportProtos.GetOrCreateDeviceFromGatewayResponseMsg; |
75 | +import org.thingsboard.server.gen.transport.TransportProtos.GetResourceRequestMsg; | ||
75 | import org.thingsboard.server.gen.transport.TransportProtos.GetSnmpDevicesRequestMsg; | 76 | import org.thingsboard.server.gen.transport.TransportProtos.GetSnmpDevicesRequestMsg; |
76 | import org.thingsboard.server.gen.transport.TransportProtos.GetSnmpDevicesResponseMsg; | 77 | import org.thingsboard.server.gen.transport.TransportProtos.GetSnmpDevicesResponseMsg; |
77 | -import org.thingsboard.server.gen.transport.TransportProtos.GetResourceRequestMsg; | ||
78 | import org.thingsboard.server.gen.transport.TransportProtos.ProvisionDeviceRequestMsg; | 78 | import org.thingsboard.server.gen.transport.TransportProtos.ProvisionDeviceRequestMsg; |
79 | import org.thingsboard.server.gen.transport.TransportProtos.TransportApiRequestMsg; | 79 | import org.thingsboard.server.gen.transport.TransportProtos.TransportApiRequestMsg; |
80 | import org.thingsboard.server.gen.transport.TransportProtos.TransportApiResponseMsg; | 80 | import org.thingsboard.server.gen.transport.TransportProtos.TransportApiResponseMsg; |
@@ -91,7 +91,6 @@ import org.thingsboard.server.service.queue.TbClusterService; | @@ -91,7 +91,6 @@ import org.thingsboard.server.service.queue.TbClusterService; | ||
91 | import org.thingsboard.server.service.resource.TbResourceService; | 91 | import org.thingsboard.server.service.resource.TbResourceService; |
92 | import org.thingsboard.server.service.state.DeviceStateService; | 92 | import org.thingsboard.server.service.state.DeviceStateService; |
93 | 93 | ||
94 | -import java.util.List; | ||
95 | import java.util.Optional; | 94 | import java.util.Optional; |
96 | import java.util.UUID; | 95 | import java.util.UUID; |
97 | import java.util.concurrent.ConcurrentHashMap; | 96 | import java.util.concurrent.ConcurrentHashMap; |
@@ -433,13 +432,15 @@ public class DefaultTransportApiService implements TransportApiService { | @@ -433,13 +432,15 @@ public class DefaultTransportApiService implements TransportApiService { | ||
433 | return Futures.immediateFuture(TransportApiResponseMsg.newBuilder().setResourceResponseMsg(builder).build()); | 432 | return Futures.immediateFuture(TransportApiResponseMsg.newBuilder().setResourceResponseMsg(builder).build()); |
434 | } | 433 | } |
435 | 434 | ||
436 | - // TODO: request snmp devices with pagination | ||
437 | private ListenableFuture<TransportApiResponseMsg> handle(GetSnmpDevicesRequestMsg requestMsg) { | 435 | private ListenableFuture<TransportApiResponseMsg> handle(GetSnmpDevicesRequestMsg requestMsg) { |
438 | - List<UUID> result = deviceService.findDevicesIdsByDeviceProfileTransportType(DeviceTransportType.SNMP); | 436 | + PageLink pageLink = new PageLink(requestMsg.getPageSize(), requestMsg.getPage()); |
437 | + PageData<UUID> result = deviceService.findDevicesIdsByDeviceProfileTransportType(DeviceTransportType.SNMP, pageLink); | ||
438 | + | ||
439 | GetSnmpDevicesResponseMsg responseMsg = GetSnmpDevicesResponseMsg.newBuilder() | 439 | GetSnmpDevicesResponseMsg responseMsg = GetSnmpDevicesResponseMsg.newBuilder() |
440 | - .addAllIds(result.stream() | 440 | + .addAllIds(result.getData().stream() |
441 | .map(UUID::toString) | 441 | .map(UUID::toString) |
442 | .collect(Collectors.toList())) | 442 | .collect(Collectors.toList())) |
443 | + .setHasNextPage(result.hasNext()) | ||
443 | .build(); | 444 | .build(); |
444 | 445 | ||
445 | return Futures.immediateFuture(TransportApiResponseMsg.newBuilder() | 446 | return Futures.immediateFuture(TransportApiResponseMsg.newBuilder() |
@@ -95,7 +95,7 @@ public interface DeviceService { | @@ -95,7 +95,7 @@ public interface DeviceService { | ||
95 | 95 | ||
96 | Device saveDevice(ProvisionRequest provisionRequest, DeviceProfile profile); | 96 | Device saveDevice(ProvisionRequest provisionRequest, DeviceProfile profile); |
97 | 97 | ||
98 | - List<UUID> findDevicesIdsByDeviceProfileTransportType(DeviceTransportType transportType); | 98 | + PageData<UUID> findDevicesIdsByDeviceProfileTransportType(DeviceTransportType transportType, PageLink pageLink); |
99 | 99 | ||
100 | Device assignDeviceToEdge(TenantId tenantId, DeviceId deviceId, EdgeId edgeId); | 100 | Device assignDeviceToEdge(TenantId tenantId, DeviceId deviceId, EdgeId edgeId); |
101 | 101 |
@@ -268,11 +268,13 @@ message GetDeviceCredentialsResponseMsg { | @@ -268,11 +268,13 @@ message GetDeviceCredentialsResponseMsg { | ||
268 | } | 268 | } |
269 | 269 | ||
270 | message GetSnmpDevicesRequestMsg { | 270 | message GetSnmpDevicesRequestMsg { |
271 | - | 271 | + int32 page = 1; |
272 | + int32 pageSize = 2; | ||
272 | } | 273 | } |
273 | 274 | ||
274 | message GetSnmpDevicesResponseMsg { | 275 | message GetSnmpDevicesResponseMsg { |
275 | repeated string ids = 1; | 276 | repeated string ids = 1; |
277 | + bool hasNextPage = 2; | ||
276 | } | 278 | } |
277 | 279 | ||
278 | message EntityUpdateMsg { | 280 | message EntityUpdateMsg { |
@@ -28,6 +28,7 @@ import org.thingsboard.server.common.transport.util.DataDecodingEncodingService; | @@ -28,6 +28,7 @@ import org.thingsboard.server.common.transport.util.DataDecodingEncodingService; | ||
28 | import org.thingsboard.server.gen.transport.TransportProtos; | 28 | import org.thingsboard.server.gen.transport.TransportProtos; |
29 | import org.thingsboard.server.queue.util.TbSnmpTransportComponent; | 29 | import org.thingsboard.server.queue.util.TbSnmpTransportComponent; |
30 | 30 | ||
31 | +import java.util.ArrayList; | ||
31 | import java.util.List; | 32 | import java.util.List; |
32 | import java.util.UUID; | 33 | import java.util.UUID; |
33 | import java.util.stream.Collectors; | 34 | import java.util.stream.Collectors; |
@@ -81,12 +82,29 @@ public class ProtoTransportEntityService { | @@ -81,12 +82,29 @@ public class ProtoTransportEntityService { | ||
81 | } | 82 | } |
82 | 83 | ||
83 | public List<UUID> getAllSnmpDevicesIds() { | 84 | public List<UUID> getAllSnmpDevicesIds() { |
84 | - TransportProtos.GetSnmpDevicesResponseMsg devicesIdsResponse = transportService.getSnmpDevicesIds( | ||
85 | - TransportProtos.GetSnmpDevicesRequestMsg.getDefaultInstance() | ||
86 | - ); | 85 | + List<UUID> result = new ArrayList<>(); |
86 | + | ||
87 | + int page = 0; | ||
88 | + int pageSize = 512; | ||
89 | + boolean hasNextPage = true; | ||
90 | + | ||
91 | + while (hasNextPage) { | ||
92 | + TransportProtos.GetSnmpDevicesResponseMsg responseMsg = requestSnmpDevicesIds(page, pageSize); | ||
93 | + result.addAll(responseMsg.getIdsList().stream() | ||
94 | + .map(UUID::fromString) | ||
95 | + .collect(Collectors.toList())); | ||
96 | + hasNextPage = responseMsg.getHasNextPage(); | ||
97 | + page++; | ||
98 | + } | ||
99 | + | ||
100 | + return result; | ||
101 | + } | ||
87 | 102 | ||
88 | - return devicesIdsResponse.getIdsList().stream() | ||
89 | - .map(UUID::fromString) | ||
90 | - .collect(Collectors.toList()); | 103 | + private TransportProtos.GetSnmpDevicesResponseMsg requestSnmpDevicesIds(int page, int pageSize) { |
104 | + TransportProtos.GetSnmpDevicesRequestMsg requestMsg = TransportProtos.GetSnmpDevicesRequestMsg.newBuilder() | ||
105 | + .setPage(page) | ||
106 | + .setPageSize(pageSize) | ||
107 | + .build(); | ||
108 | + return transportService.getSnmpDevicesIds(requestMsg); | ||
91 | } | 109 | } |
92 | } | 110 | } |
@@ -23,7 +23,6 @@ import org.thingsboard.server.common.data.EntitySubtype; | @@ -23,7 +23,6 @@ import org.thingsboard.server.common.data.EntitySubtype; | ||
23 | import org.thingsboard.server.common.data.id.TenantId; | 23 | import org.thingsboard.server.common.data.id.TenantId; |
24 | import org.thingsboard.server.common.data.page.PageData; | 24 | import org.thingsboard.server.common.data.page.PageData; |
25 | import org.thingsboard.server.common.data.page.PageLink; | 25 | import org.thingsboard.server.common.data.page.PageLink; |
26 | -import org.thingsboard.server.common.data.page.TimePageLink; | ||
27 | import org.thingsboard.server.dao.Dao; | 26 | import org.thingsboard.server.dao.Dao; |
28 | import org.thingsboard.server.dao.TenantEntityDao; | 27 | import org.thingsboard.server.dao.TenantEntityDao; |
29 | 28 | ||
@@ -220,7 +219,7 @@ public interface DeviceDao extends Dao<Device>, TenantEntityDao { | @@ -220,7 +219,7 @@ public interface DeviceDao extends Dao<Device>, TenantEntityDao { | ||
220 | */ | 219 | */ |
221 | PageData<Device> findDevicesByTenantIdAndProfileId(UUID tenantId, UUID profileId, PageLink pageLink); | 220 | PageData<Device> findDevicesByTenantIdAndProfileId(UUID tenantId, UUID profileId, PageLink pageLink); |
222 | 221 | ||
223 | - List<UUID> findDevicesIdsByDeviceProfileTransportType(DeviceTransportType transportType); | 222 | + PageData<UUID> findDevicesIdsByDeviceProfileTransportType(DeviceTransportType transportType, PageLink pageLink); |
224 | 223 | ||
225 | /** | 224 | /** |
226 | * Find devices by tenantId, edgeId and page link. | 225 | * Find devices by tenantId, edgeId and page link. |
@@ -42,7 +42,6 @@ import org.thingsboard.server.common.data.EntityType; | @@ -42,7 +42,6 @@ import org.thingsboard.server.common.data.EntityType; | ||
42 | import org.thingsboard.server.common.data.EntityView; | 42 | import org.thingsboard.server.common.data.EntityView; |
43 | import org.thingsboard.server.common.data.Firmware; | 43 | import org.thingsboard.server.common.data.Firmware; |
44 | import org.thingsboard.server.common.data.Tenant; | 44 | import org.thingsboard.server.common.data.Tenant; |
45 | -import org.thingsboard.server.common.data.asset.Asset; | ||
46 | import org.thingsboard.server.common.data.device.DeviceSearchQuery; | 45 | import org.thingsboard.server.common.data.device.DeviceSearchQuery; |
47 | import org.thingsboard.server.common.data.device.credentials.BasicMqttCredentials; | 46 | import org.thingsboard.server.common.data.device.credentials.BasicMqttCredentials; |
48 | import org.thingsboard.server.common.data.device.data.CoapDeviceTransportConfiguration; | 47 | import org.thingsboard.server.common.data.device.data.CoapDeviceTransportConfiguration; |
@@ -62,7 +61,6 @@ import org.thingsboard.server.common.data.id.EntityId; | @@ -62,7 +61,6 @@ import org.thingsboard.server.common.data.id.EntityId; | ||
62 | import org.thingsboard.server.common.data.id.TenantId; | 61 | import org.thingsboard.server.common.data.id.TenantId; |
63 | import org.thingsboard.server.common.data.page.PageData; | 62 | import org.thingsboard.server.common.data.page.PageData; |
64 | import org.thingsboard.server.common.data.page.PageLink; | 63 | import org.thingsboard.server.common.data.page.PageLink; |
65 | -import org.thingsboard.server.common.data.page.TimePageLink; | ||
66 | import org.thingsboard.server.common.data.relation.EntityRelation; | 64 | import org.thingsboard.server.common.data.relation.EntityRelation; |
67 | import org.thingsboard.server.common.data.relation.EntitySearchDirection; | 65 | import org.thingsboard.server.common.data.relation.EntitySearchDirection; |
68 | import org.thingsboard.server.common.data.relation.RelationTypeGroup; | 66 | import org.thingsboard.server.common.data.relation.RelationTypeGroup; |
@@ -580,8 +578,8 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe | @@ -580,8 +578,8 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe | ||
580 | } | 578 | } |
581 | 579 | ||
582 | @Override | 580 | @Override |
583 | - public List<UUID> findDevicesIdsByDeviceProfileTransportType(DeviceTransportType transportType) { | ||
584 | - return deviceDao.findDevicesIdsByDeviceProfileTransportType(transportType); | 581 | + public PageData<UUID> findDevicesIdsByDeviceProfileTransportType(DeviceTransportType transportType, PageLink pageLink) { |
582 | + return deviceDao.findDevicesIdsByDeviceProfileTransportType(transportType, pageLink); | ||
585 | } | 583 | } |
586 | 584 | ||
587 | @Override | 585 | @Override |
@@ -215,5 +215,5 @@ public interface DeviceRepository extends PagingAndSortingRepository<DeviceEntit | @@ -215,5 +215,5 @@ public interface DeviceRepository extends PagingAndSortingRepository<DeviceEntit | ||
215 | @Query("SELECT d.id FROM DeviceEntity d " + | 215 | @Query("SELECT d.id FROM DeviceEntity d " + |
216 | "INNER JOIN DeviceProfileEntity p ON d.deviceProfileId = p.id " + | 216 | "INNER JOIN DeviceProfileEntity p ON d.deviceProfileId = p.id " + |
217 | "WHERE p.transportType = :transportType") | 217 | "WHERE p.transportType = :transportType") |
218 | - List<UUID> findIdsByDeviceProfileTransportType(@Param("transportType") DeviceTransportType transportType); | 218 | + Page<UUID> findIdsByDeviceProfileTransportType(@Param("transportType") DeviceTransportType transportType, Pageable pageable); |
219 | } | 219 | } |
@@ -29,7 +29,6 @@ import org.thingsboard.server.common.data.EntityType; | @@ -29,7 +29,6 @@ import org.thingsboard.server.common.data.EntityType; | ||
29 | import org.thingsboard.server.common.data.id.TenantId; | 29 | import org.thingsboard.server.common.data.id.TenantId; |
30 | import org.thingsboard.server.common.data.page.PageData; | 30 | import org.thingsboard.server.common.data.page.PageData; |
31 | import org.thingsboard.server.common.data.page.PageLink; | 31 | import org.thingsboard.server.common.data.page.PageLink; |
32 | -import org.thingsboard.server.common.data.page.TimePageLink; | ||
33 | import org.thingsboard.server.dao.DaoUtil; | 32 | import org.thingsboard.server.dao.DaoUtil; |
34 | import org.thingsboard.server.dao.device.DeviceDao; | 33 | import org.thingsboard.server.dao.device.DeviceDao; |
35 | import org.thingsboard.server.dao.model.sql.DeviceEntity; | 34 | import org.thingsboard.server.dao.model.sql.DeviceEntity; |
@@ -119,8 +118,8 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> | @@ -119,8 +118,8 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> | ||
119 | } | 118 | } |
120 | 119 | ||
121 | @Override | 120 | @Override |
122 | - public List<UUID> findDevicesIdsByDeviceProfileTransportType(DeviceTransportType transportType) { | ||
123 | - return deviceRepository.findIdsByDeviceProfileTransportType(transportType); | 121 | + public PageData<UUID> findDevicesIdsByDeviceProfileTransportType(DeviceTransportType transportType, PageLink pageLink) { |
122 | + return DaoUtil.pageToPageData(deviceRepository.findIdsByDeviceProfileTransportType(transportType, DaoUtil.toPageable(pageLink))); | ||
124 | } | 123 | } |
125 | 124 | ||
126 | @Override | 125 | @Override |