diff --git a/application/src/main/java/org/thingsboard/server/actors/shared/rulechain/SystemRuleChainManager.java b/application/src/main/java/org/thingsboard/server/actors/shared/rulechain/SystemRuleChainManager.java index 4a6ec45ea4..74fce99e6e 100644 --- a/application/src/main/java/org/thingsboard/server/actors/shared/rulechain/SystemRuleChainManager.java +++ b/application/src/main/java/org/thingsboard/server/actors/shared/rulechain/SystemRuleChainManager.java @@ -18,8 +18,8 @@ package org.thingsboard.server.actors.shared.rulechain; import org.thingsboard.server.actors.ActorSystemContext; import org.thingsboard.server.actors.service.DefaultActorService; import org.thingsboard.server.common.data.id.TenantId; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.PageDataIterable.FetchFunction; -import org.thingsboard.server.common.data.page.TextPageData; import org.thingsboard.server.common.data.rule.RuleChain; import org.thingsboard.server.dao.model.ModelConstants; @@ -33,7 +33,7 @@ public class SystemRuleChainManager extends RuleChainManager { @Override protected FetchFunction getFetchEntitiesFunction() { - return link -> new TextPageData<>(Collections.emptyList(), link); + return link -> new PageData<>(); } @Override diff --git a/application/src/main/java/org/thingsboard/server/controller/AlarmController.java b/application/src/main/java/org/thingsboard/server/controller/AlarmController.java index 5f9585209d..620e7dc104 100644 --- a/application/src/main/java/org/thingsboard/server/controller/AlarmController.java +++ b/application/src/main/java/org/thingsboard/server/controller/AlarmController.java @@ -39,7 +39,7 @@ import org.thingsboard.server.common.data.exception.ThingsboardErrorCode; import org.thingsboard.server.common.data.exception.ThingsboardException; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.EntityIdFactory; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.service.security.permission.Operation; import org.thingsboard.server.service.security.permission.Resource; @@ -143,16 +143,16 @@ public class AlarmController extends BaseController { @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')") @RequestMapping(value = "/alarm/{entityType}/{entityId}", method = RequestMethod.GET) @ResponseBody - public TimePageData getAlarms( + public PageData getAlarms( @PathVariable("entityType") String strEntityType, @PathVariable("entityId") String strEntityId, @RequestParam(required = false) String searchStatus, @RequestParam(required = false) String status, - @RequestParam int limit, + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) Long startTime, @RequestParam(required = false) Long endTime, @RequestParam(required = false, defaultValue = "false") boolean ascOrder, - @RequestParam(required = false) String offset, @RequestParam(required = false) Boolean fetchOriginator ) throws ThingsboardException { checkParameter("EntityId", strEntityId); @@ -166,7 +166,8 @@ public class AlarmController extends BaseController { } checkEntityId(entityId, Operation.READ); try { - TimePageLink pageLink = createPageLink(limit, startTime, endTime, ascOrder, offset); + TimePageLink pageLink = createTimePageLink(pageSize, page, "", + "id", ascOrder ? "asc" : "desc", startTime, endTime); return checkNotNull(alarmService.findAlarms(getCurrentUser().getTenantId(), new AlarmQuery(entityId, pageLink, alarmSearchStatus, alarmStatus, fetchOriginator)).get()); } catch (Exception e) { throw handleException(e); diff --git a/application/src/main/java/org/thingsboard/server/controller/AssetController.java b/application/src/main/java/org/thingsboard/server/controller/AssetController.java index cb4a989d60..060ce10cb7 100644 --- a/application/src/main/java/org/thingsboard/server/controller/AssetController.java +++ b/application/src/main/java/org/thingsboard/server/controller/AssetController.java @@ -37,8 +37,8 @@ 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.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.security.Authority; import org.thingsboard.server.dao.exception.IncorrectParameterException; import org.thingsboard.server.dao.model.ModelConstants; @@ -207,17 +207,18 @@ public class AssetController extends BaseController { } @PreAuthorize("hasAuthority('TENANT_ADMIN')") - @RequestMapping(value = "/tenant/assets", params = {"limit"}, method = RequestMethod.GET) + @RequestMapping(value = "/tenant/assets", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TextPageData getTenantAssets( - @RequestParam int limit, + public PageData getTenantAssets( + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) String type, @RequestParam(required = false) String textSearch, - @RequestParam(required = false) String idOffset, - @RequestParam(required = false) String textOffset) throws ThingsboardException { + @RequestParam(required = false) String sortProperty, + @RequestParam(required = false) String sortOrder) throws ThingsboardException { try { TenantId tenantId = getCurrentUser().getTenantId(); - TextPageLink pageLink = createPageLink(limit, textSearch, idOffset, textOffset); + PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder); if (type != null && type.trim().length()>0) { return checkNotNull(assetService.findAssetsByTenantIdAndType(tenantId, type, pageLink)); } else { @@ -242,21 +243,22 @@ public class AssetController extends BaseController { } @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')") - @RequestMapping(value = "/customer/{customerId}/assets", params = {"limit"}, method = RequestMethod.GET) + @RequestMapping(value = "/customer/{customerId}/assets", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TextPageData getCustomerAssets( + public PageData getCustomerAssets( @PathVariable("customerId") String strCustomerId, - @RequestParam int limit, + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) String type, @RequestParam(required = false) String textSearch, - @RequestParam(required = false) String idOffset, - @RequestParam(required = false) String textOffset) throws ThingsboardException { + @RequestParam(required = false) String sortProperty, + @RequestParam(required = false) String sortOrder) throws ThingsboardException { checkParameter("customerId", strCustomerId); try { TenantId tenantId = getCurrentUser().getTenantId(); CustomerId customerId = new CustomerId(toUUID(strCustomerId)); checkCustomerId(customerId, Operation.READ); - TextPageLink pageLink = createPageLink(limit, textSearch, idOffset, textOffset); + PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder); if (type != null && type.trim().length()>0) { return checkNotNull(assetService.findAssetsByTenantIdAndCustomerIdAndType(tenantId, customerId, type, pageLink)); } else { diff --git a/application/src/main/java/org/thingsboard/server/controller/AuditLogController.java b/application/src/main/java/org/thingsboard/server/controller/AuditLogController.java index 61fe7a384e..c3ef7f5f17 100644 --- a/application/src/main/java/org/thingsboard/server/controller/AuditLogController.java +++ b/application/src/main/java/org/thingsboard/server/controller/AuditLogController.java @@ -28,7 +28,7 @@ import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.EntityIdFactory; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.UserId; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import java.util.UUID; @@ -38,19 +38,20 @@ import java.util.UUID; public class AuditLogController extends BaseController { @PreAuthorize("hasAuthority('TENANT_ADMIN')") - @RequestMapping(value = "/audit/logs/customer/{customerId}", params = {"limit"}, method = RequestMethod.GET) + @RequestMapping(value = "/audit/logs/customer/{customerId}", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TimePageData getAuditLogsByCustomerId( + public PageData getAuditLogsByCustomerId( @PathVariable("customerId") String strCustomerId, - @RequestParam int limit, + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) Long startTime, @RequestParam(required = false) Long endTime, - @RequestParam(required = false, defaultValue = "false") boolean ascOrder, - @RequestParam(required = false) String offset) throws ThingsboardException { + @RequestParam(required = false, defaultValue = "false") boolean ascOrder) throws ThingsboardException { try { checkParameter("CustomerId", strCustomerId); TenantId tenantId = getCurrentUser().getTenantId(); - TimePageLink pageLink = createPageLink(limit, startTime, endTime, ascOrder, offset); + TimePageLink pageLink = createTimePageLink(pageSize, page, "", + "createdTime", ascOrder ? "asc" : "desc", startTime, endTime); return checkNotNull(auditLogService.findAuditLogsByTenantIdAndCustomerId(tenantId, new CustomerId(UUID.fromString(strCustomerId)), pageLink)); } catch (Exception e) { throw handleException(e); @@ -58,19 +59,20 @@ public class AuditLogController extends BaseController { } @PreAuthorize("hasAuthority('TENANT_ADMIN')") - @RequestMapping(value = "/audit/logs/user/{userId}", params = {"limit"}, method = RequestMethod.GET) + @RequestMapping(value = "/audit/logs/user/{userId}", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TimePageData getAuditLogsByUserId( + public PageData getAuditLogsByUserId( @PathVariable("userId") String strUserId, - @RequestParam int limit, + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) Long startTime, @RequestParam(required = false) Long endTime, - @RequestParam(required = false, defaultValue = "false") boolean ascOrder, - @RequestParam(required = false) String offset) throws ThingsboardException { + @RequestParam(required = false, defaultValue = "false") boolean ascOrder) throws ThingsboardException { try { checkParameter("UserId", strUserId); TenantId tenantId = getCurrentUser().getTenantId(); - TimePageLink pageLink = createPageLink(limit, startTime, endTime, ascOrder, offset); + TimePageLink pageLink = createTimePageLink(pageSize, page, "", + "createdTime", ascOrder ? "asc" : "desc", startTime, endTime); return checkNotNull(auditLogService.findAuditLogsByTenantIdAndUserId(tenantId, new UserId(UUID.fromString(strUserId)), pageLink)); } catch (Exception e) { throw handleException(e); @@ -78,21 +80,22 @@ public class AuditLogController extends BaseController { } @PreAuthorize("hasAuthority('TENANT_ADMIN')") - @RequestMapping(value = "/audit/logs/entity/{entityType}/{entityId}", params = {"limit"}, method = RequestMethod.GET) + @RequestMapping(value = "/audit/logs/entity/{entityType}/{entityId}", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TimePageData getAuditLogsByEntityId( + public PageData getAuditLogsByEntityId( @PathVariable("entityType") String strEntityType, @PathVariable("entityId") String strEntityId, - @RequestParam int limit, + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) Long startTime, @RequestParam(required = false) Long endTime, - @RequestParam(required = false, defaultValue = "false") boolean ascOrder, - @RequestParam(required = false) String offset) throws ThingsboardException { + @RequestParam(required = false, defaultValue = "false") boolean ascOrder) throws ThingsboardException { try { checkParameter("EntityId", strEntityId); checkParameter("EntityType", strEntityType); TenantId tenantId = getCurrentUser().getTenantId(); - TimePageLink pageLink = createPageLink(limit, startTime, endTime, ascOrder, offset); + TimePageLink pageLink = createTimePageLink(pageSize, page, "", + "createdTime", ascOrder ? "asc" : "desc", startTime, endTime); return checkNotNull(auditLogService.findAuditLogsByTenantIdAndEntityId(tenantId, EntityIdFactory.getByTypeAndId(strEntityType, strEntityId), pageLink)); } catch (Exception e) { throw handleException(e); @@ -100,17 +103,18 @@ public class AuditLogController extends BaseController { } @PreAuthorize("hasAuthority('TENANT_ADMIN')") - @RequestMapping(value = "/audit/logs", params = {"limit"}, method = RequestMethod.GET) + @RequestMapping(value = "/audit/logs", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TimePageData getAuditLogs( - @RequestParam int limit, + public PageData getAuditLogs( + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) Long startTime, @RequestParam(required = false) Long endTime, - @RequestParam(required = false, defaultValue = "false") boolean ascOrder, - @RequestParam(required = false) String offset) throws ThingsboardException { + @RequestParam(required = false, defaultValue = "false") boolean ascOrder) throws ThingsboardException { try { TenantId tenantId = getCurrentUser().getTenantId(); - TimePageLink pageLink = createPageLink(limit, startTime, endTime, ascOrder, offset); + TimePageLink pageLink = createTimePageLink(pageSize, page, "", + "createdTime", ascOrder ? "asc" : "desc", startTime, endTime); return checkNotNull(auditLogService.findAuditLogsByTenantId(tenantId, pageLink)); } catch (Exception e) { throw handleException(e); diff --git a/application/src/main/java/org/thingsboard/server/controller/BaseController.java b/application/src/main/java/org/thingsboard/server/controller/BaseController.java index 3fc809c424..ae447c1a6f 100644 --- a/application/src/main/java/org/thingsboard/server/controller/BaseController.java +++ b/application/src/main/java/org/thingsboard/server/controller/BaseController.java @@ -60,7 +60,8 @@ import org.thingsboard.server.common.data.id.WidgetTypeId; import org.thingsboard.server.common.data.id.WidgetsBundleId; import org.thingsboard.server.common.data.kv.AttributeKvEntry; import org.thingsboard.server.common.data.kv.DataType; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageLink; +import org.thingsboard.server.common.data.page.SortOrder; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.common.data.plugin.ComponentDescriptor; import org.thingsboard.server.common.data.plugin.ComponentType; @@ -256,21 +257,27 @@ public abstract class BaseController { return UUID.fromString(id); } - TimePageLink createPageLink(int limit, Long startTime, Long endTime, boolean ascOrder, String idOffset) { - UUID idOffsetUuid = null; - if (StringUtils.isNotEmpty(idOffset)) { - idOffsetUuid = toUUID(idOffset); + PageLink createPageLink(int pageSize, int page, String textSearch, String sortProperty, String sortOrder) throws ThingsboardException { + if (!StringUtils.isEmpty(sortProperty)) { + SortOrder.Direction direction = SortOrder.Direction.ASC; + if (!StringUtils.isEmpty(sortOrder)) { + try { + direction = SortOrder.Direction.valueOf(sortOrder.toUpperCase()); + } catch (IllegalArgumentException e) { + throw new ThingsboardException("Unsupported sort order '" + sortOrder + "'! Only 'ASC' or 'DESC' types are allowed.", ThingsboardErrorCode.BAD_REQUEST_PARAMS); + } + } + SortOrder sort = new SortOrder(sortProperty, direction); + return new PageLink(pageSize, page, textSearch, sort); + } else { + return new PageLink(pageSize, page, textSearch); } - return new TimePageLink(limit, startTime, endTime, ascOrder, idOffsetUuid); } - - TextPageLink createPageLink(int limit, String textSearch, String idOffset, String textOffset) { - UUID idOffsetUuid = null; - if (StringUtils.isNotEmpty(idOffset)) { - idOffsetUuid = toUUID(idOffset); - } - return new TextPageLink(limit, textSearch, idOffsetUuid, textOffset); + TimePageLink createTimePageLink(int pageSize, int page, String textSearch, + String sortProperty, String sortOrder, Long startTime, Long endTime) throws ThingsboardException { + PageLink pageLink = this.createPageLink(pageSize, page, textSearch, sortProperty, sortOrder); + return new TimePageLink(pageLink, startTime, endTime); } protected SecurityUser getCurrentUser() throws ThingsboardException { diff --git a/application/src/main/java/org/thingsboard/server/controller/CustomerController.java b/application/src/main/java/org/thingsboard/server/controller/CustomerController.java index 7b7cfeee87..6e453f3442 100644 --- a/application/src/main/java/org/thingsboard/server/controller/CustomerController.java +++ b/application/src/main/java/org/thingsboard/server/controller/CustomerController.java @@ -34,8 +34,8 @@ import org.thingsboard.server.common.data.audit.ActionType; import org.thingsboard.server.common.data.exception.ThingsboardException; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.service.security.permission.Operation; import org.thingsboard.server.service.security.permission.Resource; @@ -143,14 +143,15 @@ public class CustomerController extends BaseController { } @PreAuthorize("hasAuthority('TENANT_ADMIN')") - @RequestMapping(value = "/customers", params = {"limit"}, method = RequestMethod.GET) + @RequestMapping(value = "/customers", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TextPageData getCustomers(@RequestParam int limit, - @RequestParam(required = false) String textSearch, - @RequestParam(required = false) String idOffset, - @RequestParam(required = false) String textOffset) throws ThingsboardException { + public PageData getCustomers(@RequestParam int pageSize, + @RequestParam int page, + @RequestParam(required = false) String textSearch, + @RequestParam(required = false) String sortProperty, + @RequestParam(required = false) String sortOrder) throws ThingsboardException { try { - TextPageLink pageLink = createPageLink(limit, textSearch, idOffset, textOffset); + PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder); TenantId tenantId = getCurrentUser().getTenantId(); return checkNotNull(customerService.findCustomersByTenantId(tenantId, pageLink)); } catch (Exception e) { diff --git a/application/src/main/java/org/thingsboard/server/controller/DashboardController.java b/application/src/main/java/org/thingsboard/server/controller/DashboardController.java index e47e2d1a06..a7c427b35e 100644 --- a/application/src/main/java/org/thingsboard/server/controller/DashboardController.java +++ b/application/src/main/java/org/thingsboard/server/controller/DashboardController.java @@ -37,9 +37,8 @@ import org.thingsboard.server.common.data.exception.ThingsboardException; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.DashboardId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.service.security.permission.Operation; import org.thingsboard.server.service.security.permission.Resource; @@ -417,18 +416,19 @@ public class DashboardController extends BaseController { } @PreAuthorize("hasAuthority('SYS_ADMIN')") - @RequestMapping(value = "/tenant/{tenantId}/dashboards", params = { "limit" }, method = RequestMethod.GET) + @RequestMapping(value = "/tenant/{tenantId}/dashboards", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TextPageData getTenantDashboards( + public PageData getTenantDashboards( @PathVariable("tenantId") String strTenantId, - @RequestParam int limit, + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) String textSearch, - @RequestParam(required = false) String idOffset, - @RequestParam(required = false) String textOffset) throws ThingsboardException { + @RequestParam(required = false) String sortProperty, + @RequestParam(required = false) String sortOrder) throws ThingsboardException { try { TenantId tenantId = new TenantId(toUUID(strTenantId)); checkTenantId(tenantId, Operation.READ); - TextPageLink pageLink = createPageLink(limit, textSearch, idOffset, textOffset); + PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder); return checkNotNull(dashboardService.findDashboardsByTenantId(tenantId, pageLink)); } catch (Exception e) { throw handleException(e); @@ -436,16 +436,17 @@ public class DashboardController extends BaseController { } @PreAuthorize("hasAuthority('TENANT_ADMIN')") - @RequestMapping(value = "/tenant/dashboards", params = { "limit" }, method = RequestMethod.GET) + @RequestMapping(value = "/tenant/dashboards", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TextPageData getTenantDashboards( - @RequestParam int limit, + public PageData getTenantDashboards( + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) String textSearch, - @RequestParam(required = false) String idOffset, - @RequestParam(required = false) String textOffset) throws ThingsboardException { + @RequestParam(required = false) String sortProperty, + @RequestParam(required = false) String sortOrder) throws ThingsboardException { try { TenantId tenantId = getCurrentUser().getTenantId(); - TextPageLink pageLink = createPageLink(limit, textSearch, idOffset, textOffset); + PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder); return checkNotNull(dashboardService.findDashboardsByTenantId(tenantId, pageLink)); } catch (Exception e) { throw handleException(e); @@ -453,21 +454,22 @@ public class DashboardController extends BaseController { } @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')") - @RequestMapping(value = "/customer/{customerId}/dashboards", params = { "limit" }, method = RequestMethod.GET) + @RequestMapping(value = "/customer/{customerId}/dashboards", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TimePageData getCustomerDashboards( + public PageData getCustomerDashboards( @PathVariable("customerId") String strCustomerId, - @RequestParam int limit, + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) Long startTime, @RequestParam(required = false) Long endTime, - @RequestParam(required = false, defaultValue = "false") boolean ascOrder, - @RequestParam(required = false) String offset) throws ThingsboardException { + @RequestParam(required = false, defaultValue = "false") boolean ascOrder) throws ThingsboardException { checkParameter("customerId", strCustomerId); try { TenantId tenantId = getCurrentUser().getTenantId(); CustomerId customerId = new CustomerId(toUUID(strCustomerId)); checkCustomerId(customerId, Operation.READ); - TimePageLink pageLink = createPageLink(limit, startTime, endTime, ascOrder, offset); + TimePageLink pageLink = createTimePageLink(pageSize, page, "", + "createdTime", ascOrder ? "asc" : "desc", startTime, endTime); return checkNotNull(dashboardService.findDashboardsByTenantIdAndCustomerId(tenantId, customerId, pageLink).get()); } catch (Exception e) { throw handleException(e); diff --git a/application/src/main/java/org/thingsboard/server/controller/DeviceController.java b/application/src/main/java/org/thingsboard/server/controller/DeviceController.java index 39d67ecb9c..c4396dbc7e 100644 --- a/application/src/main/java/org/thingsboard/server/controller/DeviceController.java +++ b/application/src/main/java/org/thingsboard/server/controller/DeviceController.java @@ -41,8 +41,8 @@ import org.thingsboard.server.common.data.exception.ThingsboardException; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.DeviceId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.security.DeviceCredentials; import org.thingsboard.server.controller.claim.data.ClaimRequest; import org.thingsboard.server.dao.device.claim.ClaimResponse; @@ -265,17 +265,18 @@ public class DeviceController extends BaseController { } @PreAuthorize("hasAuthority('TENANT_ADMIN')") - @RequestMapping(value = "/tenant/devices", params = {"limit"}, method = RequestMethod.GET) + @RequestMapping(value = "/tenant/devices", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TextPageData getTenantDevices( - @RequestParam int limit, + public PageData getTenantDevices( + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) String type, @RequestParam(required = false) String textSearch, - @RequestParam(required = false) String idOffset, - @RequestParam(required = false) String textOffset) throws ThingsboardException { + @RequestParam(required = false) String sortProperty, + @RequestParam(required = false) String sortOrder) throws ThingsboardException { try { TenantId tenantId = getCurrentUser().getTenantId(); - TextPageLink pageLink = createPageLink(limit, textSearch, idOffset, textOffset); + PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder); if (type != null && type.trim().length() > 0) { return checkNotNull(deviceService.findDevicesByTenantIdAndType(tenantId, type, pageLink)); } else { @@ -300,21 +301,22 @@ public class DeviceController extends BaseController { } @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')") - @RequestMapping(value = "/customer/{customerId}/devices", params = {"limit"}, method = RequestMethod.GET) + @RequestMapping(value = "/customer/{customerId}/devices", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TextPageData getCustomerDevices( + public PageData getCustomerDevices( @PathVariable("customerId") String strCustomerId, - @RequestParam int limit, + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) String type, @RequestParam(required = false) String textSearch, - @RequestParam(required = false) String idOffset, - @RequestParam(required = false) String textOffset) throws ThingsboardException { + @RequestParam(required = false) String sortProperty, + @RequestParam(required = false) String sortOrder) throws ThingsboardException { checkParameter("customerId", strCustomerId); try { TenantId tenantId = getCurrentUser().getTenantId(); CustomerId customerId = new CustomerId(toUUID(strCustomerId)); checkCustomerId(customerId, Operation.READ); - TextPageLink pageLink = createPageLink(limit, textSearch, idOffset, textOffset); + PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder); if (type != null && type.trim().length() > 0) { return checkNotNull(deviceService.findDevicesByTenantIdAndCustomerIdAndType(tenantId, customerId, type, pageLink)); } else { diff --git a/application/src/main/java/org/thingsboard/server/controller/EntityViewController.java b/application/src/main/java/org/thingsboard/server/controller/EntityViewController.java index b0d9896e4b..e8438e0703 100644 --- a/application/src/main/java/org/thingsboard/server/controller/EntityViewController.java +++ b/application/src/main/java/org/thingsboard/server/controller/EntityViewController.java @@ -43,8 +43,8 @@ import org.thingsboard.server.common.data.id.EntityViewId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.UUIDBased; import org.thingsboard.server.common.data.kv.AttributeKvEntry; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.exception.IncorrectParameterException; import org.thingsboard.server.dao.model.ModelConstants; import org.thingsboard.server.service.security.model.SecurityUser; @@ -256,21 +256,22 @@ public class EntityViewController extends BaseController { } @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')") - @RequestMapping(value = "/customer/{customerId}/entityViews", params = {"limit"}, method = RequestMethod.GET) + @RequestMapping(value = "/customer/{customerId}/entityViews", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TextPageData getCustomerEntityViews( + public PageData getCustomerEntityViews( @PathVariable("customerId") String strCustomerId, - @RequestParam int limit, + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) String type, @RequestParam(required = false) String textSearch, - @RequestParam(required = false) String idOffset, - @RequestParam(required = false) String textOffset) throws ThingsboardException { + @RequestParam(required = false) String sortProperty, + @RequestParam(required = false) String sortOrder) throws ThingsboardException { checkParameter("customerId", strCustomerId); try { TenantId tenantId = getCurrentUser().getTenantId(); CustomerId customerId = new CustomerId(toUUID(strCustomerId)); checkCustomerId(customerId, Operation.READ); - TextPageLink pageLink = createPageLink(limit, textSearch, idOffset, textOffset); + PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder); if (type != null && type.trim().length() > 0) { return checkNotNull(entityViewService.findEntityViewsByTenantIdAndCustomerIdAndType(tenantId, customerId, pageLink, type)); } else { @@ -282,17 +283,18 @@ public class EntityViewController extends BaseController { } @PreAuthorize("hasAuthority('TENANT_ADMIN')") - @RequestMapping(value = "/tenant/entityViews", params = {"limit"}, method = RequestMethod.GET) + @RequestMapping(value = "/tenant/entityViews", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TextPageData getTenantEntityViews( - @RequestParam int limit, + public PageData getTenantEntityViews( + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) String type, @RequestParam(required = false) String textSearch, - @RequestParam(required = false) String idOffset, - @RequestParam(required = false) String textOffset) throws ThingsboardException { + @RequestParam(required = false) String sortProperty, + @RequestParam(required = false) String sortOrder) throws ThingsboardException { try { TenantId tenantId = getCurrentUser().getTenantId(); - TextPageLink pageLink = createPageLink(limit, textSearch, idOffset, textOffset); + PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder); if (type != null && type.trim().length() > 0) { return checkNotNull(entityViewService.findEntityViewByTenantIdAndType(tenantId, pageLink, type)); diff --git a/application/src/main/java/org/thingsboard/server/controller/EventController.java b/application/src/main/java/org/thingsboard/server/controller/EventController.java index 8d08179409..0754b97a5c 100644 --- a/application/src/main/java/org/thingsboard/server/controller/EventController.java +++ b/application/src/main/java/org/thingsboard/server/controller/EventController.java @@ -29,7 +29,7 @@ import org.thingsboard.server.common.data.exception.ThingsboardException; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.EntityIdFactory; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.dao.event.EventService; import org.thingsboard.server.dao.model.ModelConstants; @@ -46,16 +46,16 @@ public class EventController extends BaseController { @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')") @RequestMapping(value = "/events/{entityType}/{entityId}/{eventType}", method = RequestMethod.GET) @ResponseBody - public TimePageData getEvents( + public PageData getEvents( @PathVariable("entityType") String strEntityType, @PathVariable("entityId") String strEntityId, @PathVariable("eventType") String eventType, @RequestParam("tenantId") String strTenantId, - @RequestParam int limit, + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) Long startTime, @RequestParam(required = false) Long endTime, - @RequestParam(required = false, defaultValue = "false") boolean ascOrder, - @RequestParam(required = false) String offset + @RequestParam(required = false, defaultValue = "false") boolean ascOrder ) throws ThingsboardException { checkParameter("EntityId", strEntityId); checkParameter("EntityType", strEntityType); @@ -64,8 +64,8 @@ public class EventController extends BaseController { EntityId entityId = EntityIdFactory.getByTypeAndId(strEntityType, strEntityId); checkEntityId(entityId, Operation.READ); - - TimePageLink pageLink = createPageLink(limit, startTime, endTime, ascOrder, offset); + TimePageLink pageLink = createTimePageLink(pageSize, page, "", + "createdTime", ascOrder ? "asc" : "desc", startTime, endTime); return checkNotNull(eventService.findEvents(tenantId, entityId, eventType, pageLink)); } catch (Exception e) { throw handleException(e); @@ -75,15 +75,15 @@ public class EventController extends BaseController { @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')") @RequestMapping(value = "/events/{entityType}/{entityId}", method = RequestMethod.GET) @ResponseBody - public TimePageData getEvents( + public PageData getEvents( @PathVariable("entityType") String strEntityType, @PathVariable("entityId") String strEntityId, @RequestParam("tenantId") String strTenantId, - @RequestParam int limit, + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) Long startTime, @RequestParam(required = false) Long endTime, - @RequestParam(required = false, defaultValue = "false") boolean ascOrder, - @RequestParam(required = false) String offset + @RequestParam(required = false, defaultValue = "false") boolean ascOrder ) throws ThingsboardException { checkParameter("EntityId", strEntityId); checkParameter("EntityType", strEntityType); @@ -93,7 +93,9 @@ public class EventController extends BaseController { EntityId entityId = EntityIdFactory.getByTypeAndId(strEntityType, strEntityId); checkEntityId(entityId, Operation.READ); - TimePageLink pageLink = createPageLink(limit, startTime, endTime, ascOrder, offset); + TimePageLink pageLink = createTimePageLink(pageSize, page, "", + "createdTime", ascOrder ? "asc" : "desc", startTime, endTime); + return checkNotNull(eventService.findEvents(tenantId, entityId, pageLink)); } catch (Exception e) { throw handleException(e); diff --git a/application/src/main/java/org/thingsboard/server/controller/RuleChainController.java b/application/src/main/java/org/thingsboard/server/controller/RuleChainController.java index 14fffc7486..e38c4fd725 100644 --- a/application/src/main/java/org/thingsboard/server/controller/RuleChainController.java +++ b/application/src/main/java/org/thingsboard/server/controller/RuleChainController.java @@ -45,8 +45,8 @@ import org.thingsboard.server.common.data.exception.ThingsboardException; import org.thingsboard.server.common.data.id.RuleChainId; import org.thingsboard.server.common.data.id.RuleNodeId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.plugin.ComponentLifecycleEvent; import org.thingsboard.server.common.data.rule.RuleChain; import org.thingsboard.server.common.data.rule.RuleChainMetaData; @@ -220,16 +220,17 @@ public class RuleChainController extends BaseController { } @PreAuthorize("hasAuthority('TENANT_ADMIN')") - @RequestMapping(value = "/ruleChains", params = {"limit"}, method = RequestMethod.GET) + @RequestMapping(value = "/ruleChains", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TextPageData getRuleChains( - @RequestParam int limit, + public PageData getRuleChains( + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) String textSearch, - @RequestParam(required = false) String idOffset, - @RequestParam(required = false) String textOffset) throws ThingsboardException { + @RequestParam(required = false) String sortProperty, + @RequestParam(required = false) String sortOrder) throws ThingsboardException { try { TenantId tenantId = getCurrentUser().getTenantId(); - TextPageLink pageLink = createPageLink(limit, textSearch, idOffset, textOffset); + PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder); return checkNotNull(ruleChainService.findTenantRuleChains(tenantId, pageLink)); } catch (Exception e) { throw handleException(e); diff --git a/application/src/main/java/org/thingsboard/server/controller/TenantController.java b/application/src/main/java/org/thingsboard/server/controller/TenantController.java index e7e13e18bb..b77e158b50 100644 --- a/application/src/main/java/org/thingsboard/server/controller/TenantController.java +++ b/application/src/main/java/org/thingsboard/server/controller/TenantController.java @@ -30,8 +30,8 @@ import org.springframework.web.bind.annotation.RestController; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.exception.ThingsboardException; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.plugin.ComponentLifecycleEvent; import org.thingsboard.server.dao.tenant.TenantService; import org.thingsboard.server.service.install.InstallScripts; @@ -102,14 +102,15 @@ public class TenantController extends BaseController { } @PreAuthorize("hasAuthority('SYS_ADMIN')") - @RequestMapping(value = "/tenants", params = {"limit"}, method = RequestMethod.GET) + @RequestMapping(value = "/tenants", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TextPageData getTenants(@RequestParam int limit, - @RequestParam(required = false) String textSearch, - @RequestParam(required = false) String idOffset, - @RequestParam(required = false) String textOffset) throws ThingsboardException { + public PageData getTenants(@RequestParam int pageSize, + @RequestParam int page, + @RequestParam(required = false) String textSearch, + @RequestParam(required = false) String sortProperty, + @RequestParam(required = false) String sortOrder) throws ThingsboardException { try { - TextPageLink pageLink = createPageLink(limit, textSearch, idOffset, textOffset); + PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder); return checkNotNull(tenantService.findTenants(pageLink)); } catch (Exception e) { throw handleException(e); diff --git a/application/src/main/java/org/thingsboard/server/controller/UserController.java b/application/src/main/java/org/thingsboard/server/controller/UserController.java index b6a8d9da06..684ab195ad 100644 --- a/application/src/main/java/org/thingsboard/server/controller/UserController.java +++ b/application/src/main/java/org/thingsboard/server/controller/UserController.java @@ -40,8 +40,8 @@ import org.thingsboard.server.common.data.exception.ThingsboardException; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.UserId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.security.Authority; import org.thingsboard.server.common.data.security.UserCredentials; import org.thingsboard.server.service.security.auth.jwt.RefreshTokenRepository; @@ -247,18 +247,19 @@ public class UserController extends BaseController { } @PreAuthorize("hasAuthority('SYS_ADMIN')") - @RequestMapping(value = "/tenant/{tenantId}/users", params = { "limit" }, method = RequestMethod.GET) + @RequestMapping(value = "/tenant/{tenantId}/users", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TextPageData getTenantAdmins( + public PageData getTenantAdmins( @PathVariable("tenantId") String strTenantId, - @RequestParam int limit, + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) String textSearch, - @RequestParam(required = false) String idOffset, - @RequestParam(required = false) String textOffset) throws ThingsboardException { + @RequestParam(required = false) String sortProperty, + @RequestParam(required = false) String sortOrder) throws ThingsboardException { checkParameter("tenantId", strTenantId); try { TenantId tenantId = new TenantId(toUUID(strTenantId)); - TextPageLink pageLink = createPageLink(limit, textSearch, idOffset, textOffset); + PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder); return checkNotNull(userService.findTenantAdmins(tenantId, pageLink)); } catch (Exception e) { throw handleException(e); @@ -266,19 +267,20 @@ public class UserController extends BaseController { } @PreAuthorize("hasAuthority('TENANT_ADMIN')") - @RequestMapping(value = "/customer/{customerId}/users", params = { "limit" }, method = RequestMethod.GET) + @RequestMapping(value = "/customer/{customerId}/users", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TextPageData getCustomerUsers( + public PageData getCustomerUsers( @PathVariable("customerId") String strCustomerId, - @RequestParam int limit, + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) String textSearch, - @RequestParam(required = false) String idOffset, - @RequestParam(required = false) String textOffset) throws ThingsboardException { + @RequestParam(required = false) String sortProperty, + @RequestParam(required = false) String sortOrder) throws ThingsboardException { checkParameter("customerId", strCustomerId); try { CustomerId customerId = new CustomerId(toUUID(strCustomerId)); checkCustomerId(customerId, Operation.READ); - TextPageLink pageLink = createPageLink(limit, textSearch, idOffset, textOffset); + PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder); TenantId tenantId = getCurrentUser().getTenantId(); return checkNotNull(userService.findCustomerUsers(tenantId, customerId, pageLink)); } catch (Exception e) { diff --git a/application/src/main/java/org/thingsboard/server/controller/WidgetsBundleController.java b/application/src/main/java/org/thingsboard/server/controller/WidgetsBundleController.java index 3c8265e7a7..b991f2ce2d 100644 --- a/application/src/main/java/org/thingsboard/server/controller/WidgetsBundleController.java +++ b/application/src/main/java/org/thingsboard/server/controller/WidgetsBundleController.java @@ -28,8 +28,8 @@ import org.springframework.web.bind.annotation.RestController; import org.thingsboard.server.common.data.exception.ThingsboardException; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.WidgetsBundleId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.security.Authority; import org.thingsboard.server.common.data.widget.WidgetsBundle; import org.thingsboard.server.dao.model.ModelConstants; @@ -92,15 +92,16 @@ public class WidgetsBundleController extends BaseController { } @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')") - @RequestMapping(value = "/widgetsBundles", params = { "limit" }, method = RequestMethod.GET) + @RequestMapping(value = "/widgetsBundles", params = {"pageSize", "page"}, method = RequestMethod.GET) @ResponseBody - public TextPageData getWidgetsBundles( - @RequestParam int limit, + public PageData getWidgetsBundles( + @RequestParam int pageSize, + @RequestParam int page, @RequestParam(required = false) String textSearch, - @RequestParam(required = false) String idOffset, - @RequestParam(required = false) String textOffset) throws ThingsboardException { + @RequestParam(required = false) String sortProperty, + @RequestParam(required = false) String sortOrder) throws ThingsboardException { try { - TextPageLink pageLink = createPageLink(limit, textSearch, idOffset, textOffset); + PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder); if (getCurrentUser().getAuthority() == Authority.SYS_ADMIN) { return checkNotNull(widgetsBundleService.findSystemWidgetsBundlesByPageLink(getTenantId(), pageLink)); } else { diff --git a/application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java b/application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java index 9396ae7c3d..faf81d8286 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java @@ -22,8 +22,8 @@ import org.springframework.stereotype.Service; import org.thingsboard.server.common.data.SearchTextBased; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.id.UUIDBased; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.rule.RuleChain; import org.thingsboard.server.dao.rule.RuleChainService; import org.thingsboard.server.dao.tenant.TenantService; @@ -59,7 +59,7 @@ public class DefaultDataUpdateService implements DataUpdateService { new PaginatedUpdater() { @Override - protected TextPageData findEntities(String region, TextPageLink pageLink) { + protected PageData findEntities(String region, PageLink pageLink) { return tenantService.findTenants(pageLink); } diff --git a/application/src/main/java/org/thingsboard/server/service/install/update/PaginatedUpdater.java b/application/src/main/java/org/thingsboard/server/service/install/update/PaginatedUpdater.java index b57d340d1b..432b8226d0 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/update/PaginatedUpdater.java +++ b/application/src/main/java/org/thingsboard/server/service/install/update/PaginatedUpdater.java @@ -17,29 +17,29 @@ package org.thingsboard.server.service.install.update; import org.thingsboard.server.common.data.SearchTextBased; import org.thingsboard.server.common.data.id.UUIDBased; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; public abstract class PaginatedUpdater> { private static final int DEFAULT_LIMIT = 100; public void updateEntities(I id) { - TextPageLink pageLink = new TextPageLink(DEFAULT_LIMIT); + PageLink pageLink = new PageLink(DEFAULT_LIMIT); boolean hasNext = true; while (hasNext) { - TextPageData entities = findEntities(id, pageLink); + PageData entities = findEntities(id, pageLink); for (D entity : entities.getData()) { updateEntity(entity); } hasNext = entities.hasNext(); if (hasNext) { - pageLink = entities.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } } - protected abstract TextPageData findEntities(I id, TextPageLink pageLink); + protected abstract PageData findEntities(I id, PageLink pageLink); protected abstract void updateEntity(D entity); diff --git a/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java b/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java index 37d6473d53..a0c2bda6b8 100644 --- a/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java +++ b/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java @@ -38,7 +38,7 @@ import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.id.DeviceId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.kv.AttributeKvEntry; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.plugin.ComponentLifecycleState; import org.thingsboard.server.common.msg.TbMsg; import org.thingsboard.server.common.msg.TbMsgDataType; @@ -219,10 +219,10 @@ public class DefaultDeviceStateService implements DeviceStateService { } private void onClusterUpdateSync() { - List tenants = tenantService.findTenants(new TextPageLink(Integer.MAX_VALUE)).getData(); + List tenants = tenantService.findTenants(new PageLink(Integer.MAX_VALUE)).getData(); for (Tenant tenant : tenants) { List> fetchFutures = new ArrayList<>(); - List devices = deviceService.findDevicesByTenantId(tenant.getId(), new TextPageLink(Integer.MAX_VALUE)).getData(); + List devices = deviceService.findDevicesByTenantId(tenant.getId(), new PageLink(Integer.MAX_VALUE)).getData(); for (Device device : devices) { if (!routingService.resolveById(device.getId()).isPresent()) { if (!deviceStates.containsKey(device.getId())) { @@ -245,10 +245,10 @@ public class DefaultDeviceStateService implements DeviceStateService { } private void initStateFromDB() { - List tenants = tenantService.findTenants(new TextPageLink(Integer.MAX_VALUE)).getData(); + List tenants = tenantService.findTenants(new PageLink(Integer.MAX_VALUE)).getData(); for (Tenant tenant : tenants) { List> fetchFutures = new ArrayList<>(); - List devices = deviceService.findDevicesByTenantId(tenant.getId(), new TextPageLink(Integer.MAX_VALUE)).getData(); + List devices = deviceService.findDevicesByTenantId(tenant.getId(), new PageLink(Integer.MAX_VALUE)).getData(); for (Device device : devices) { if (!routingService.resolveById(device.getId()).isPresent()) { fetchFutures.add(fetchDeviceState(device)); diff --git a/application/src/test/java/org/thingsboard/server/controller/AbstractControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/AbstractControllerTest.java index 9850181a5f..d25655ccdf 100644 --- a/application/src/test/java/org/thingsboard/server/controller/AbstractControllerTest.java +++ b/application/src/test/java/org/thingsboard/server/controller/AbstractControllerTest.java @@ -65,7 +65,8 @@ import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.UUIDBased; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageLink; +import org.thingsboard.server.common.data.page.SortOrder; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.common.data.security.Authority; import org.thingsboard.server.config.ThingsboardSecurityConfiguration; @@ -314,22 +315,20 @@ public abstract class AbstractControllerTest { } protected T doGetTypedWithPageLink(String urlTemplate, TypeReference responseType, - TextPageLink pageLink, + PageLink pageLink, Object... urlVariables) throws Exception { List pageLinkVariables = new ArrayList<>(); - urlTemplate += "limit={limit}"; - pageLinkVariables.add(pageLink.getLimit()); + urlTemplate += "pageSize={pageSize}&page={page}"; + pageLinkVariables.add(pageLink.getPageSize()); + pageLinkVariables.add(pageLink.getPage()); if (StringUtils.isNotEmpty(pageLink.getTextSearch())) { urlTemplate += "&textSearch={textSearch}"; pageLinkVariables.add(pageLink.getTextSearch()); } - if (pageLink.getIdOffset() != null) { - urlTemplate += "&idOffset={idOffset}"; - pageLinkVariables.add(pageLink.getIdOffset().toString()); - } - if (StringUtils.isNotEmpty(pageLink.getTextOffset())) { - urlTemplate += "&textOffset={textOffset}"; - pageLinkVariables.add(pageLink.getTextOffset()); + if (pageLink.getSortOrder() != null) { + urlTemplate += "&sortProperty={sortProperty}&sortOrder={sortOrder}"; + pageLinkVariables.add(pageLink.getSortOrder().getProperty()); + pageLinkVariables.add(pageLink.getSortOrder().getDirection().name()); } Object[] vars = new Object[urlVariables.length + pageLinkVariables.size()]; @@ -343,8 +342,10 @@ public abstract class AbstractControllerTest { TimePageLink pageLink, Object... urlVariables) throws Exception { List pageLinkVariables = new ArrayList<>(); - urlTemplate += "limit={limit}"; - pageLinkVariables.add(pageLink.getLimit()); + urlTemplate += "pageSize={pageSize}&page={page}"; + pageLinkVariables.add(pageLink.getPageSize()); + pageLinkVariables.add(pageLink.getPage()); + if (pageLink.getStartTime() != null) { urlTemplate += "&startTime={startTime}"; pageLinkVariables.add(pageLink.getStartTime()); @@ -353,13 +354,9 @@ public abstract class AbstractControllerTest { urlTemplate += "&endTime={endTime}"; pageLinkVariables.add(pageLink.getEndTime()); } - if (pageLink.getIdOffset() != null) { - urlTemplate += "&offset={offset}"; - pageLinkVariables.add(pageLink.getIdOffset().toString()); - } - if (pageLink.isAscOrder()) { + if (pageLink.getSortOrder() != null) { urlTemplate += "&ascOrder={ascOrder}"; - pageLinkVariables.add(pageLink.isAscOrder()); + pageLinkVariables.add(pageLink.getSortOrder().getDirection() == SortOrder.Direction.ASC); } Object[] vars = new Object[urlVariables.length + pageLinkVariables.size()]; System.arraycopy(urlVariables, 0, vars, 0, urlVariables.length); diff --git a/application/src/test/java/org/thingsboard/server/controller/AbstractRuleEngineControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/AbstractRuleEngineControllerTest.java index 2a03c9e783..c9036c5995 100644 --- a/application/src/test/java/org/thingsboard/server/controller/AbstractRuleEngineControllerTest.java +++ b/application/src/test/java/org/thingsboard/server/controller/AbstractRuleEngineControllerTest.java @@ -23,7 +23,7 @@ import org.thingsboard.server.common.data.Event; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.RuleChainId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.common.data.rule.RuleChain; import org.thingsboard.server.common.data.rule.RuleChainMetaData; @@ -56,10 +56,10 @@ public class AbstractRuleEngineControllerTest extends AbstractControllerTest { return doGet("/api/ruleChain/metadata/" + ruleChainId.getId().toString(), RuleChainMetaData.class); } - protected TimePageData getDebugEvents(TenantId tenantId, EntityId entityId, int limit) throws Exception { + protected PageData getDebugEvents(TenantId tenantId, EntityId entityId, int limit) throws Exception { TimePageLink pageLink = new TimePageLink(limit); return doGetTypedWithTimePageLink("/api/events/{entityType}/{entityId}/{eventType}?tenantId={tenantId}&", - new TypeReference>() { + new TypeReference>() { }, pageLink, entityId.getEntityType(), entityId.getId(), DataConstants.DEBUG_RULE_NODE, tenantId.getId()); } diff --git a/application/src/test/java/org/thingsboard/server/controller/BaseAssetControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseAssetControllerTest.java index ff607df1d7..7467436c64 100644 --- a/application/src/test/java/org/thingsboard/server/controller/BaseAssetControllerTest.java +++ b/application/src/test/java/org/thingsboard/server/controller/BaseAssetControllerTest.java @@ -28,8 +28,8 @@ import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.asset.Asset; import org.thingsboard.server.common.data.id.CustomerId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.security.Authority; import org.thingsboard.server.dao.model.ModelConstants; @@ -258,14 +258,14 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { assets.add(doPost("/api/asset", asset, Asset.class)); } List loadedAssets = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(23); - TextPageData pageData = null; + PageLink pageLink = new PageLink(23); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/tenant/assets?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedAssets.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -301,14 +301,14 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { } List loadedAssetsTitle1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15, title1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15, 0, title1); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/tenant/assets?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedAssetsTitle1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -318,13 +318,13 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { Assert.assertEquals(assetsTitle1, loadedAssetsTitle1); List loadedAssetsTitle2 = new ArrayList<>(); - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); do { pageData = doGetTypedWithPageLink("/api/tenant/assets?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedAssetsTitle2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -338,9 +338,9 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, title1); + pageLink = new PageLink(4, 0, title1); pageData = doGetTypedWithPageLink("/api/tenant/assets?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -349,9 +349,9 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); pageData = doGetTypedWithPageLink("/api/tenant/assets?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); } @@ -384,14 +384,14 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { } List loadedAssetsType1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/tenant/assets?type={type}&", - new TypeReference>(){}, pageLink, type1); + new TypeReference>(){}, pageLink, type1); loadedAssetsType1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -401,13 +401,13 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { Assert.assertEquals(assetsType1, loadedAssetsType1); List loadedAssetsType2 = new ArrayList<>(); - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); do { pageData = doGetTypedWithPageLink("/api/tenant/assets?type={type}&", - new TypeReference>(){}, pageLink, type2); + new TypeReference>(){}, pageLink, type2); loadedAssetsType2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -421,9 +421,9 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); pageData = doGetTypedWithPageLink("/api/tenant/assets?type={type}&", - new TypeReference>(){}, pageLink, type1); + new TypeReference>(){}, pageLink, type1); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -432,9 +432,9 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); pageData = doGetTypedWithPageLink("/api/tenant/assets?type={type}&", - new TypeReference>(){}, pageLink, type2); + new TypeReference>(){}, pageLink, type2); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); } @@ -457,14 +457,14 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { } List loadedAssets = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(23); - TextPageData pageData = null; + PageLink pageLink = new PageLink(23); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedAssets.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -509,14 +509,14 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { } List loadedAssetsTitle1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15, title1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15, 0, title1); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedAssetsTitle1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -526,13 +526,13 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { Assert.assertEquals(assetsTitle1, loadedAssetsTitle1); List loadedAssetsTitle2 = new ArrayList<>(); - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); do { pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedAssetsTitle2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -546,9 +546,9 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, title1); + pageLink = new PageLink(4, 0, title1); pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -557,9 +557,9 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); } @@ -601,14 +601,14 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { } List loadedAssetsType1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?type={type}&", - new TypeReference>(){}, pageLink, type1); + new TypeReference>(){}, pageLink, type1); loadedAssetsType1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -618,13 +618,13 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { Assert.assertEquals(assetsType1, loadedAssetsType1); List loadedAssetsType2 = new ArrayList<>(); - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); do { pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?type={type}&", - new TypeReference>(){}, pageLink, type2); + new TypeReference>(){}, pageLink, type2); loadedAssetsType2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -638,9 +638,9 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?type={type}&", - new TypeReference>(){}, pageLink, type1); + new TypeReference>(){}, pageLink, type1); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -649,9 +649,9 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?type={type}&", - new TypeReference>(){}, pageLink, type2); + new TypeReference>(){}, pageLink, type2); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); } diff --git a/application/src/test/java/org/thingsboard/server/controller/BaseAuditLogControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseAuditLogControllerTest.java index 4bba508901..8503375228 100644 --- a/application/src/test/java/org/thingsboard/server/controller/BaseAuditLogControllerTest.java +++ b/application/src/test/java/org/thingsboard/server/controller/BaseAuditLogControllerTest.java @@ -24,7 +24,7 @@ import org.thingsboard.server.common.data.Device; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.audit.AuditLog; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.common.data.security.Authority; import org.thingsboard.server.dao.model.ModelConstants; @@ -77,14 +77,14 @@ public abstract class BaseAuditLogControllerTest extends AbstractControllerTest List loadedAuditLogs = new ArrayList<>(); TimePageLink pageLink = new TimePageLink(23); - TimePageData pageData; + PageData pageData; do { pageData = doGetTypedWithTimePageLink("/api/audit/logs?", - new TypeReference>() { + new TypeReference>() { }, pageLink); loadedAuditLogs.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -94,11 +94,11 @@ public abstract class BaseAuditLogControllerTest extends AbstractControllerTest pageLink = new TimePageLink(23); do { pageData = doGetTypedWithTimePageLink("/api/audit/logs/customer/" + ModelConstants.NULL_UUID + "?", - new TypeReference>() { + new TypeReference>() { }, pageLink); loadedAuditLogs.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -108,11 +108,11 @@ public abstract class BaseAuditLogControllerTest extends AbstractControllerTest pageLink = new TimePageLink(23); do { pageData = doGetTypedWithTimePageLink("/api/audit/logs/user/" + tenantAdmin.getId().getId().toString() + "?", - new TypeReference>() { + new TypeReference>() { }, pageLink); loadedAuditLogs.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -132,14 +132,14 @@ public abstract class BaseAuditLogControllerTest extends AbstractControllerTest List loadedAuditLogs = new ArrayList<>(); TimePageLink pageLink = new TimePageLink(23); - TimePageData pageData; + PageData pageData; do { pageData = doGetTypedWithTimePageLink("/api/audit/logs/entity/DEVICE/" + savedDevice.getId().getId() + "?", - new TypeReference>() { + new TypeReference>() { }, pageLink); loadedAuditLogs.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); diff --git a/application/src/test/java/org/thingsboard/server/controller/BaseCustomerControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseCustomerControllerTest.java index 07e71ad2b8..6114e98a27 100644 --- a/application/src/test/java/org/thingsboard/server/controller/BaseCustomerControllerTest.java +++ b/application/src/test/java/org/thingsboard/server/controller/BaseCustomerControllerTest.java @@ -27,8 +27,8 @@ import org.thingsboard.server.common.data.Customer; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.security.Authority; import org.junit.Assert; import org.junit.Test; @@ -241,13 +241,13 @@ public abstract class BaseCustomerControllerTest extends AbstractControllerTest } List loadedCustomers = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(23); - TextPageData pageData = null; + PageLink pageLink = new PageLink(23); + PageData pageData = null; do { - pageData = doGetTypedWithPageLink("/api/customers?", new TypeReference>(){}, pageLink); + pageData = doGetTypedWithPageLink("/api/customers?", new TypeReference>(){}, pageLink); loadedCustomers.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -307,13 +307,13 @@ public abstract class BaseCustomerControllerTest extends AbstractControllerTest } List loadedCustomersTitle1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15, title1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15, 0, title1); + PageData pageData = null; do { - pageData = doGetTypedWithPageLink("/api/customers?", new TypeReference>(){}, pageLink); + pageData = doGetTypedWithPageLink("/api/customers?", new TypeReference>(){}, pageLink); loadedCustomersTitle1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -323,12 +323,12 @@ public abstract class BaseCustomerControllerTest extends AbstractControllerTest Assert.assertEquals(customersTitle1, loadedCustomersTitle1); List loadedCustomersTitle2 = new ArrayList<>(); - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); do { - pageData = doGetTypedWithPageLink("/api/customers?", new TypeReference>(){}, pageLink); + pageData = doGetTypedWithPageLink("/api/customers?", new TypeReference>(){}, pageLink); loadedCustomersTitle2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -342,8 +342,8 @@ public abstract class BaseCustomerControllerTest extends AbstractControllerTest .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, title1); - pageData = doGetTypedWithPageLink("/api/customers?", new TypeReference>(){}, pageLink); + pageLink = new PageLink(4, 0, title1); + pageData = doGetTypedWithPageLink("/api/customers?", new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -352,8 +352,8 @@ public abstract class BaseCustomerControllerTest extends AbstractControllerTest .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, title2); - pageData = doGetTypedWithPageLink("/api/customers?", new TypeReference>(){}, pageLink); + pageLink = new PageLink(4, 0, title2); + pageData = doGetTypedWithPageLink("/api/customers?", new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); diff --git a/application/src/test/java/org/thingsboard/server/controller/BaseDashboardControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseDashboardControllerTest.java index 2c7ce3ee65..2997b3d7e5 100644 --- a/application/src/test/java/org/thingsboard/server/controller/BaseDashboardControllerTest.java +++ b/application/src/test/java/org/thingsboard/server/controller/BaseDashboardControllerTest.java @@ -28,9 +28,8 @@ import com.datastax.driver.core.utils.UUIDs; import org.apache.commons.lang3.RandomStringUtils; import org.thingsboard.server.common.data.*; import org.thingsboard.server.common.data.id.CustomerId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.common.data.security.Authority; import org.thingsboard.server.dao.model.ModelConstants; @@ -211,14 +210,14 @@ public abstract class BaseDashboardControllerTest extends AbstractControllerTest dashboards.add(new DashboardInfo(doPost("/api/dashboard", dashboard, Dashboard.class))); } List loadedDashboards = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(24); - TextPageData pageData = null; + PageLink pageLink = new PageLink(24); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/tenant/dashboards?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedDashboards.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -252,14 +251,14 @@ public abstract class BaseDashboardControllerTest extends AbstractControllerTest } List loadedDashboardsTitle1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15, title1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15, 0, title1); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/tenant/dashboards?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedDashboardsTitle1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -269,13 +268,13 @@ public abstract class BaseDashboardControllerTest extends AbstractControllerTest Assert.assertEquals(dashboardsTitle1, loadedDashboardsTitle1); List loadedDashboardsTitle2 = new ArrayList<>(); - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); do { pageData = doGetTypedWithPageLink("/api/tenant/dashboards?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedDashboardsTitle2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -289,9 +288,9 @@ public abstract class BaseDashboardControllerTest extends AbstractControllerTest .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, title1); + pageLink = new PageLink(4, 0, title1); pageData = doGetTypedWithPageLink("/api/tenant/dashboards?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -300,9 +299,9 @@ public abstract class BaseDashboardControllerTest extends AbstractControllerTest .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); pageData = doGetTypedWithPageLink("/api/tenant/dashboards?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); } @@ -325,13 +324,13 @@ public abstract class BaseDashboardControllerTest extends AbstractControllerTest List loadedDashboards = new ArrayList<>(); TimePageLink pageLink = new TimePageLink(21); - TimePageData pageData = null; + PageData pageData = null; do { pageData = doGetTypedWithTimePageLink("/api/customer/" + customerId.getId().toString() + "/dashboards?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedDashboards.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); diff --git a/application/src/test/java/org/thingsboard/server/controller/BaseDeviceControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseDeviceControllerTest.java index 20ebed1b9b..3ddc689279 100644 --- a/application/src/test/java/org/thingsboard/server/controller/BaseDeviceControllerTest.java +++ b/application/src/test/java/org/thingsboard/server/controller/BaseDeviceControllerTest.java @@ -29,8 +29,8 @@ import org.thingsboard.server.common.data.*; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.DeviceCredentialsId; import org.thingsboard.server.common.data.id.DeviceId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.security.Authority; import org.thingsboard.server.common.data.security.DeviceCredentials; import org.thingsboard.server.common.data.security.DeviceCredentialsType; @@ -366,14 +366,14 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { devices.add(doPost("/api/device", device, Device.class)); } List loadedDevices = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(23); - TextPageData pageData = null; + PageLink pageLink = new PageLink(23); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/tenant/devices?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedDevices.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -409,14 +409,14 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { } List loadedDevicesTitle1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15, title1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15, 0, title1); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/tenant/devices?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedDevicesTitle1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -426,13 +426,13 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { Assert.assertEquals(devicesTitle1, loadedDevicesTitle1); List loadedDevicesTitle2 = new ArrayList<>(); - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); do { pageData = doGetTypedWithPageLink("/api/tenant/devices?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedDevicesTitle2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -446,9 +446,9 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, title1); + pageLink = new PageLink(4, 0, title1); pageData = doGetTypedWithPageLink("/api/tenant/devices?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -457,9 +457,9 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); pageData = doGetTypedWithPageLink("/api/tenant/devices?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); } @@ -492,14 +492,14 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { } List loadedDevicesType1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/tenant/devices?type={type}&", - new TypeReference>(){}, pageLink, type1); + new TypeReference>(){}, pageLink, type1); loadedDevicesType1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -509,13 +509,13 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { Assert.assertEquals(devicesType1, loadedDevicesType1); List loadedDevicesType2 = new ArrayList<>(); - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); do { pageData = doGetTypedWithPageLink("/api/tenant/devices?type={type}&", - new TypeReference>(){}, pageLink, type2); + new TypeReference>(){}, pageLink, type2); loadedDevicesType2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -529,9 +529,9 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); pageData = doGetTypedWithPageLink("/api/tenant/devices?type={type}&", - new TypeReference>(){}, pageLink, type1); + new TypeReference>(){}, pageLink, type1); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -540,9 +540,9 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); pageData = doGetTypedWithPageLink("/api/tenant/devices?type={type}&", - new TypeReference>(){}, pageLink, type2); + new TypeReference>(){}, pageLink, type2); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); } @@ -565,14 +565,14 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { } List loadedDevices = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(23); - TextPageData pageData = null; + PageLink pageLink = new PageLink(23); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedDevices.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -617,14 +617,14 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { } List loadedDevicesTitle1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15, title1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15, 0, title1); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedDevicesTitle1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -634,13 +634,13 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { Assert.assertEquals(devicesTitle1, loadedDevicesTitle1); List loadedDevicesTitle2 = new ArrayList<>(); - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); do { pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedDevicesTitle2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -654,9 +654,9 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, title1); + pageLink = new PageLink(4, 0, title1); pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -665,9 +665,9 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); } @@ -709,14 +709,14 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { } List loadedDevicesType1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?type={type}&", - new TypeReference>(){}, pageLink, type1); + new TypeReference>(){}, pageLink, type1); loadedDevicesType1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -726,13 +726,13 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { Assert.assertEquals(devicesType1, loadedDevicesType1); List loadedDevicesType2 = new ArrayList<>(); - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); do { pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?type={type}&", - new TypeReference>(){}, pageLink, type2); + new TypeReference>(){}, pageLink, type2); loadedDevicesType2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -746,9 +746,9 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?type={type}&", - new TypeReference>(){}, pageLink, type1); + new TypeReference>(){}, pageLink, type1); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -757,9 +757,9 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?type={type}&", - new TypeReference>(){}, pageLink, type2); + new TypeReference>(){}, pageLink, type2); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); } diff --git a/application/src/test/java/org/thingsboard/server/controller/BaseEntityViewControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseEntityViewControllerTest.java index c1f4fb4ebd..04f315bfc9 100644 --- a/application/src/test/java/org/thingsboard/server/controller/BaseEntityViewControllerTest.java +++ b/application/src/test/java/org/thingsboard/server/controller/BaseEntityViewControllerTest.java @@ -33,8 +33,8 @@ import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.objects.AttributesEntityView; import org.thingsboard.server.common.data.objects.TelemetryEntityView; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.security.Authority; import org.thingsboard.server.common.data.security.DeviceCredentials; import org.thingsboard.server.dao.model.ModelConstants; @@ -223,7 +223,7 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes + getNewSavedEntityView("Test entity view " + i).getId().getId().toString(), EntityView.class)); } - List loadedViews = loadListOf(new TextPageLink(23), urlTemplate); + List loadedViews = loadListOf(new PageLink(23), urlTemplate); Collections.sort(views, idComparator); Collections.sort(loadedViews, idComparator); @@ -239,7 +239,7 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes String name1 = "Entity view name1"; List namesOfView1 = fillListOf(125, name1, "/api/customer/" + customerId.getId().toString() + "/entityView/"); - List loadedNamesOfView1 = loadListOf(new TextPageLink(15, name1), urlTemplate); + List loadedNamesOfView1 = loadListOf(new PageLink(15, 0, name1), urlTemplate); Collections.sort(namesOfView1, idComparator); Collections.sort(loadedNamesOfView1, idComparator); assertEquals(namesOfView1, loadedNamesOfView1); @@ -247,7 +247,7 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes String name2 = "Entity view name2"; List NamesOfView2 = fillListOf(143, name2, "/api/customer/" + customerId.getId().toString() + "/entityView/"); - List loadedNamesOfView2 = loadListOf(new TextPageLink(4, name2), urlTemplate); + List loadedNamesOfView2 = loadListOf(new PageLink(4, 0, name2), urlTemplate); Collections.sort(NamesOfView2, idComparator); Collections.sort(loadedNamesOfView2, idComparator); assertEquals(NamesOfView2, loadedNamesOfView2); @@ -255,18 +255,18 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes for (EntityView view : loadedNamesOfView1) { doDelete("/api/customer/entityView/" + view.getId().getId().toString()).andExpect(status().isOk()); } - TextPageData pageData = doGetTypedWithPageLink(urlTemplate, - new TypeReference>() { - }, new TextPageLink(4, name1)); + PageData pageData = doGetTypedWithPageLink(urlTemplate, + new TypeReference>() { + }, new PageLink(4, 0, name1)); Assert.assertFalse(pageData.hasNext()); assertEquals(0, pageData.getData().size()); for (EntityView view : loadedNamesOfView2) { doDelete("/api/customer/entityView/" + view.getId().getId().toString()).andExpect(status().isOk()); } - pageData = doGetTypedWithPageLink(urlTemplate, new TypeReference>() { + pageData = doGetTypedWithPageLink(urlTemplate, new TypeReference>() { }, - new TextPageLink(4, name2)); + new PageLink(4, 0, name2)); Assert.assertFalse(pageData.hasNext()); assertEquals(0, pageData.getData().size()); } @@ -278,7 +278,7 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes for (int i = 0; i < 178; i++) { views.add(getNewSavedEntityView("Test entity view" + i)); } - List loadedViews = loadListOf(new TextPageLink(23), "/api/tenant/entityViews?"); + List loadedViews = loadListOf(new PageLink(23), "/api/tenant/entityViews?"); Collections.sort(views, idComparator); Collections.sort(loadedViews, idComparator); @@ -290,14 +290,14 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes public void testGetTenantEntityViewsByName() throws Exception { String name1 = "Entity view name1"; List namesOfView1 = fillListOf(143, name1); - List loadedNamesOfView1 = loadListOf(new TextPageLink(15, name1), "/api/tenant/entityViews?"); + List loadedNamesOfView1 = loadListOf(new PageLink(15, 0, name1), "/api/tenant/entityViews?"); Collections.sort(namesOfView1, idComparator); Collections.sort(loadedNamesOfView1, idComparator); assertEquals(namesOfView1, loadedNamesOfView1); String name2 = "Entity view name2"; List NamesOfView2 = fillListOf(75, name2); - List loadedNamesOfView2 = loadListOf(new TextPageLink(4, name2), "/api/tenant/entityViews?"); + List loadedNamesOfView2 = loadListOf(new PageLink(4, 0, name2), "/api/tenant/entityViews?"); Collections.sort(NamesOfView2, idComparator); Collections.sort(loadedNamesOfView2, idComparator); assertEquals(NamesOfView2, loadedNamesOfView2); @@ -305,18 +305,18 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes for (EntityView view : loadedNamesOfView1) { doDelete("/api/entityView/" + view.getId().getId().toString()).andExpect(status().isOk()); } - TextPageData pageData = doGetTypedWithPageLink("/api/tenant/entityViews?", - new TypeReference>() { - }, new TextPageLink(4, name1)); + PageData pageData = doGetTypedWithPageLink("/api/tenant/entityViews?", + new TypeReference>() { + }, new PageLink(4, 0, name1)); Assert.assertFalse(pageData.hasNext()); assertEquals(0, pageData.getData().size()); for (EntityView view : loadedNamesOfView2) { doDelete("/api/entityView/" + view.getId().getId().toString()).andExpect(status().isOk()); } - pageData = doGetTypedWithPageLink("/api/tenant/entityViews?", new TypeReference>() { + pageData = doGetTypedWithPageLink("/api/tenant/entityViews?", new TypeReference>() { }, - new TextPageLink(4, name2)); + new PageLink(4, 0, name2)); Assert.assertFalse(pageData.hasNext()); assertEquals(0, pageData.getData().size()); } @@ -516,15 +516,15 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes return viewNames; } - private List loadListOf(TextPageLink pageLink, String urlTemplate) throws Exception { + private List loadListOf(PageLink pageLink, String urlTemplate) throws Exception { List loadedItems = new ArrayList<>(); - TextPageData pageData; + PageData pageData; do { - pageData = doGetTypedWithPageLink(urlTemplate, new TypeReference>() { + pageData = doGetTypedWithPageLink(urlTemplate, new TypeReference>() { }, pageLink); loadedItems.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); diff --git a/application/src/test/java/org/thingsboard/server/controller/BaseTenantControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseTenantControllerTest.java index d3a0026992..469cd7edfb 100644 --- a/application/src/test/java/org/thingsboard/server/controller/BaseTenantControllerTest.java +++ b/application/src/test/java/org/thingsboard/server/controller/BaseTenantControllerTest.java @@ -24,8 +24,8 @@ import java.util.List; import org.apache.commons.lang3.RandomStringUtils; import org.thingsboard.server.common.data.Tenant; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.junit.Assert; import org.junit.Test; @@ -102,8 +102,8 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest { public void testFindTenants() throws Exception { loginSysAdmin(); List tenants = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(17); - TextPageData pageData = doGetTypedWithPageLink("/api/tenants?", new TypeReference>(){}, pageLink); + PageLink pageLink = new PageLink(17); + PageData pageData = doGetTypedWithPageLink("/api/tenants?", new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(1, pageData.getData().size()); tenants.addAll(pageData.getData()); @@ -115,12 +115,12 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest { } List loadedTenants = new ArrayList<>(); - pageLink = new TextPageLink(17); + pageLink = new PageLink(17); do { - pageData = doGetTypedWithPageLink("/api/tenants?", new TypeReference>(){}, pageLink); + pageData = doGetTypedWithPageLink("/api/tenants?", new TypeReference>(){}, pageLink); loadedTenants.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -136,8 +136,8 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest { } } - pageLink = new TextPageLink(17); - pageData = doGetTypedWithPageLink("/api/tenants?", new TypeReference>(){}, pageLink); + pageLink = new PageLink(17); + pageData = doGetTypedWithPageLink("/api/tenants?", new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(1, pageData.getData().size()); } @@ -167,13 +167,13 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest { } List loadedTenantsTitle1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15, title1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15, 0, title1); + PageData pageData = null; do { - pageData = doGetTypedWithPageLink("/api/tenants?", new TypeReference>(){}, pageLink); + pageData = doGetTypedWithPageLink("/api/tenants?", new TypeReference>(){}, pageLink); loadedTenantsTitle1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -183,12 +183,12 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest { Assert.assertEquals(tenantsTitle1, loadedTenantsTitle1); List loadedTenantsTitle2 = new ArrayList<>(); - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); do { - pageData = doGetTypedWithPageLink("/api/tenants?", new TypeReference>(){}, pageLink); + pageData = doGetTypedWithPageLink("/api/tenants?", new TypeReference>(){}, pageLink); loadedTenantsTitle2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -202,8 +202,8 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, title1); - pageData = doGetTypedWithPageLink("/api/tenants?", new TypeReference>(){}, pageLink); + pageLink = new PageLink(4, 0, title1); + pageData = doGetTypedWithPageLink("/api/tenants?", new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -212,8 +212,8 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, title2); - pageData = doGetTypedWithPageLink("/api/tenants?", new TypeReference>(){}, pageLink); + pageLink = new PageLink(4, 0, title2); + pageData = doGetTypedWithPageLink("/api/tenants?", new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); } diff --git a/application/src/test/java/org/thingsboard/server/controller/BaseUserControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseUserControllerTest.java index 04e69021a9..7daf0f49c4 100644 --- a/application/src/test/java/org/thingsboard/server/controller/BaseUserControllerTest.java +++ b/application/src/test/java/org/thingsboard/server/controller/BaseUserControllerTest.java @@ -27,8 +27,8 @@ import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.security.Authority; import org.thingsboard.server.service.mail.TestMailService; @@ -326,14 +326,14 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { } List loadedTenantAdmins = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(33); - TextPageData pageData = null; + PageLink pageLink = new PageLink(33); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedTenantAdmins.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -345,9 +345,9 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { doDelete("/api/tenant/"+savedTenant.getId().getId().toString()) .andExpect(status().isOk()); - pageLink = new TextPageLink(33); + pageLink = new PageLink(33); pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertTrue(pageData.getData().isEmpty()); } @@ -393,14 +393,14 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { } List loadedTenantAdminsEmail1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(33, email1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(33, 0, email1); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedTenantAdminsEmail1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -410,13 +410,13 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { Assert.assertEquals(tenantAdminsEmail1, loadedTenantAdminsEmail1); List loadedTenantAdminsEmail2 = new ArrayList<>(); - pageLink = new TextPageLink(16, email2); + pageLink = new PageLink(16, 0, email2); do { pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedTenantAdminsEmail2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -430,9 +430,9 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, email1); + pageLink = new PageLink(4, 0, email1); pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -441,9 +441,9 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, email2); + pageLink = new PageLink(4, 0, email2); pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -486,14 +486,14 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { } List loadedCustomerUsers = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(33); - TextPageData pageData = null; + PageLink pageLink = new PageLink(33); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/users?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedCustomerUsers.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -565,14 +565,14 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { } List loadedCustomerUsersEmail1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(33, email1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(33, 0, email1); + PageData pageData = null; do { pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/users?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedCustomerUsersEmail1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -582,13 +582,13 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { Assert.assertEquals(customerUsersEmail1, loadedCustomerUsersEmail1); List loadedCustomerUsersEmail2 = new ArrayList<>(); - pageLink = new TextPageLink(16, email2); + pageLink = new PageLink(16, 0, email2); do { pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/users?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedCustomerUsersEmail2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -602,9 +602,9 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, email1); + pageLink = new PageLink(4, 0, email1); pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/users?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -613,9 +613,9 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { .andExpect(status().isOk()); } - pageLink = new TextPageLink(4, email2); + pageLink = new PageLink(4, 0, email2); pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/users?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); diff --git a/application/src/test/java/org/thingsboard/server/controller/BaseWidgetsBundleControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseWidgetsBundleControllerTest.java index 23428bb976..c6b92068b0 100644 --- a/application/src/test/java/org/thingsboard/server/controller/BaseWidgetsBundleControllerTest.java +++ b/application/src/test/java/org/thingsboard/server/controller/BaseWidgetsBundleControllerTest.java @@ -22,8 +22,8 @@ import org.junit.Before; import org.junit.Test; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.User; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.security.Authority; import org.thingsboard.server.common.data.widget.WidgetsBundle; @@ -150,14 +150,14 @@ public abstract class BaseWidgetsBundleControllerTest extends AbstractController widgetsBundles.addAll(sysWidgetsBundles); List loadedWidgetsBundles = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(14); - TextPageData pageData; + PageLink pageLink = new PageLink(14); + PageData pageData; do { pageData = doGetTypedWithPageLink("/api/widgetsBundles?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedWidgetsBundles.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -186,14 +186,14 @@ public abstract class BaseWidgetsBundleControllerTest extends AbstractController widgetsBundles.addAll(sysWidgetsBundles); List loadedWidgetsBundles = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(14); - TextPageData pageData; + PageLink pageLink = new PageLink(14); + PageData pageData; do { pageData = doGetTypedWithPageLink("/api/widgetsBundles?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedWidgetsBundles.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -207,14 +207,14 @@ public abstract class BaseWidgetsBundleControllerTest extends AbstractController .andExpect(status().isOk()); } - pageLink = new TextPageLink(17); + pageLink = new PageLink(17); loadedWidgetsBundles.clear(); do { pageData = doGetTypedWithPageLink("/api/widgetsBundles?", - new TypeReference>(){}, pageLink); + new TypeReference>(){}, pageLink); loadedWidgetsBundles.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); diff --git a/application/src/test/java/org/thingsboard/server/rules/flow/AbstractRuleEngineFlowIntegrationTest.java b/application/src/test/java/org/thingsboard/server/rules/flow/AbstractRuleEngineFlowIntegrationTest.java index 3fcd3898b4..d12fbe4db1 100644 --- a/application/src/test/java/org/thingsboard/server/rules/flow/AbstractRuleEngineFlowIntegrationTest.java +++ b/application/src/test/java/org/thingsboard/server/rules/flow/AbstractRuleEngineFlowIntegrationTest.java @@ -30,8 +30,7 @@ import org.thingsboard.server.actors.service.ActorService; import org.thingsboard.server.common.data.*; import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry; import org.thingsboard.server.common.data.kv.StringDataEntry; -import org.thingsboard.server.common.data.page.TextPageLink; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.rule.RuleChain; import org.thingsboard.server.common.data.rule.RuleChainMetaData; import org.thingsboard.server.common.data.rule.RuleNode; @@ -160,7 +159,7 @@ public abstract class AbstractRuleEngineFlowIntegrationTest extends AbstractRule Thread.sleep(3000); - TimePageData eventsPage = getDebugEvents(savedTenant.getId(), ruleChain.getFirstRuleNodeId(), 1000); + PageData eventsPage = getDebugEvents(savedTenant.getId(), ruleChain.getFirstRuleNodeId(), 1000); List events = eventsPage.getData().stream().filter(filterByCustomEvent()).collect(Collectors.toList()); Assert.assertEquals(2, events.size()); @@ -275,7 +274,7 @@ public abstract class AbstractRuleEngineFlowIntegrationTest extends AbstractRule Thread.sleep(3000); - TimePageData eventsPage = getDebugEvents(savedTenant.getId(), rootRuleChain.getFirstRuleNodeId(), 1000); + PageData eventsPage = getDebugEvents(savedTenant.getId(), rootRuleChain.getFirstRuleNodeId(), 1000); List events = eventsPage.getData().stream().filter(filterByCustomEvent()).collect(Collectors.toList()); Assert.assertEquals(2, events.size()); diff --git a/application/src/test/java/org/thingsboard/server/rules/lifecycle/AbstractRuleEngineLifecycleIntegrationTest.java b/application/src/test/java/org/thingsboard/server/rules/lifecycle/AbstractRuleEngineLifecycleIntegrationTest.java index 10bb3a03c0..08d6143864 100644 --- a/application/src/test/java/org/thingsboard/server/rules/lifecycle/AbstractRuleEngineLifecycleIntegrationTest.java +++ b/application/src/test/java/org/thingsboard/server/rules/lifecycle/AbstractRuleEngineLifecycleIntegrationTest.java @@ -32,7 +32,7 @@ import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry; import org.thingsboard.server.common.data.kv.StringDataEntry; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.rule.RuleChain; import org.thingsboard.server.common.data.rule.RuleChainMetaData; import org.thingsboard.server.common.data.rule.RuleNode; @@ -147,7 +147,7 @@ public abstract class AbstractRuleEngineLifecycleIntegrationTest extends Abstrac Thread.sleep(3000); - TimePageData eventsPage = getDebugEvents(savedTenant.getId(), ruleChain.getFirstRuleNodeId(), 1000); + PageData eventsPage = getDebugEvents(savedTenant.getId(), ruleChain.getFirstRuleNodeId(), 1000); List events = eventsPage.getData().stream().filter(filterByCustomEvent()).collect(Collectors.toList()); Assert.assertEquals(2, events.size()); diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/alarm/AlarmService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/alarm/AlarmService.java index 44227f095c..1ca839e3bd 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/alarm/AlarmService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/alarm/AlarmService.java @@ -26,7 +26,7 @@ import org.thingsboard.server.common.data.alarm.AlarmSeverity; import org.thingsboard.server.common.data.alarm.AlarmStatus; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; /** * Created by ashvayka on 11.05.17. @@ -45,7 +45,7 @@ public interface AlarmService { ListenableFuture findAlarmInfoByIdAsync(TenantId tenantId, AlarmId alarmId); - ListenableFuture> findAlarms(TenantId tenantId, AlarmQuery query); + ListenableFuture> findAlarms(TenantId tenantId, AlarmQuery query); AlarmSeverity findHighestAlarmSeverity(TenantId tenantId, EntityId entityId, AlarmSearchStatus alarmSearchStatus, AlarmStatus alarmStatus); diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/asset/AssetService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/asset/AssetService.java index 97933f7ab7..64803654fd 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/asset/AssetService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/asset/AssetService.java @@ -22,8 +22,8 @@ import org.thingsboard.server.common.data.asset.AssetSearchQuery; import org.thingsboard.server.common.data.id.AssetId; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import java.util.List; import java.util.Optional; @@ -44,17 +44,17 @@ public interface AssetService { void deleteAsset(TenantId tenantId, AssetId assetId); - TextPageData findAssetsByTenantId(TenantId tenantId, TextPageLink pageLink); + PageData findAssetsByTenantId(TenantId tenantId, PageLink pageLink); - TextPageData findAssetsByTenantIdAndType(TenantId tenantId, String type, TextPageLink pageLink); + PageData findAssetsByTenantIdAndType(TenantId tenantId, String type, PageLink pageLink); ListenableFuture> findAssetsByTenantIdAndIdsAsync(TenantId tenantId, List assetIds); void deleteAssetsByTenantId(TenantId tenantId); - TextPageData findAssetsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, TextPageLink pageLink); + PageData findAssetsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, PageLink pageLink); - TextPageData findAssetsByTenantIdAndCustomerIdAndType(TenantId tenantId, CustomerId customerId, String type, TextPageLink pageLink); + PageData findAssetsByTenantIdAndCustomerIdAndType(TenantId tenantId, CustomerId customerId, String type, PageLink pageLink); ListenableFuture> findAssetsByTenantIdCustomerIdAndIdsAsync(TenantId tenantId, CustomerId customerId, List assetIds); diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/audit/AuditLogService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/audit/AuditLogService.java index 90557dbabc..7946472506 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/audit/AuditLogService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/audit/AuditLogService.java @@ -25,20 +25,20 @@ import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.UUIDBased; import org.thingsboard.server.common.data.id.UserId; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import java.util.List; public interface AuditLogService { - TimePageData findAuditLogsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, TimePageLink pageLink); + PageData findAuditLogsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, TimePageLink pageLink); - TimePageData findAuditLogsByTenantIdAndUserId(TenantId tenantId, UserId userId, TimePageLink pageLink); + PageData findAuditLogsByTenantIdAndUserId(TenantId tenantId, UserId userId, TimePageLink pageLink); - TimePageData findAuditLogsByTenantIdAndEntityId(TenantId tenantId, EntityId entityId, TimePageLink pageLink); + PageData findAuditLogsByTenantIdAndEntityId(TenantId tenantId, EntityId entityId, TimePageLink pageLink); - TimePageData findAuditLogsByTenantId(TenantId tenantId, TimePageLink pageLink); + PageData findAuditLogsByTenantId(TenantId tenantId, TimePageLink pageLink); ListenableFuture> logEntityAction( TenantId tenantId, diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/component/ComponentDescriptorService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/component/ComponentDescriptorService.java index 1afe523a7b..a417f2d539 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/component/ComponentDescriptorService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/component/ComponentDescriptorService.java @@ -18,8 +18,8 @@ package org.thingsboard.server.dao.component; import com.fasterxml.jackson.databind.JsonNode; import org.thingsboard.server.common.data.id.ComponentDescriptorId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.plugin.ComponentDescriptor; import org.thingsboard.server.common.data.plugin.ComponentScope; import org.thingsboard.server.common.data.plugin.ComponentType; @@ -35,9 +35,9 @@ public interface ComponentDescriptorService { ComponentDescriptor findByClazz(TenantId tenantId, String clazz); - TextPageData findByTypeAndPageLink(TenantId tenantId, ComponentType type, TextPageLink pageLink); + PageData findByTypeAndPageLink(TenantId tenantId, ComponentType type, PageLink pageLink); - TextPageData findByScopeAndTypeAndPageLink(TenantId tenantId, ComponentScope scope, ComponentType type, TextPageLink pageLink); + PageData findByScopeAndTypeAndPageLink(TenantId tenantId, ComponentScope scope, ComponentType type, PageLink pageLink); boolean validate(TenantId tenantId, ComponentDescriptor component, JsonNode configuration); diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/customer/CustomerService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/customer/CustomerService.java index b5eee20b59..2e4d2262bf 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/customer/CustomerService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/customer/CustomerService.java @@ -19,8 +19,8 @@ import com.google.common.util.concurrent.ListenableFuture; 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.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import java.util.Optional; @@ -38,7 +38,7 @@ public interface CustomerService { Customer findOrCreatePublicCustomer(TenantId tenantId); - TextPageData findCustomersByTenantId(TenantId tenantId, TextPageLink pageLink); + PageData findCustomersByTenantId(TenantId tenantId, PageLink pageLink); void deleteCustomersByTenantId(TenantId tenantId); diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/dashboard/DashboardService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/dashboard/DashboardService.java index 2d9461cc66..bb49599aa4 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/dashboard/DashboardService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/dashboard/DashboardService.java @@ -21,9 +21,8 @@ import org.thingsboard.server.common.data.DashboardInfo; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.DashboardId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.page.TimePageLink; public interface DashboardService { @@ -44,11 +43,11 @@ public interface DashboardService { void deleteDashboard(TenantId tenantId, DashboardId dashboardId); - TextPageData findDashboardsByTenantId(TenantId tenantId, TextPageLink pageLink); + PageData findDashboardsByTenantId(TenantId tenantId, PageLink pageLink); void deleteDashboardsByTenantId(TenantId tenantId); - ListenableFuture> findDashboardsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, TimePageLink pageLink); + ListenableFuture> findDashboardsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, TimePageLink pageLink); void unassignCustomerDashboards(TenantId tenantId, CustomerId customerId); diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/device/DeviceService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/device/DeviceService.java index 793bb9829b..f7e34fbc5b 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/device/DeviceService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/device/DeviceService.java @@ -22,8 +22,8 @@ import org.thingsboard.server.common.data.device.DeviceSearchQuery; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.DeviceId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import java.util.List; @@ -43,17 +43,17 @@ public interface DeviceService { void deleteDevice(TenantId tenantId, DeviceId deviceId); - TextPageData findDevicesByTenantId(TenantId tenantId, TextPageLink pageLink); + PageData findDevicesByTenantId(TenantId tenantId, PageLink pageLink); - TextPageData findDevicesByTenantIdAndType(TenantId tenantId, String type, TextPageLink pageLink); + PageData findDevicesByTenantIdAndType(TenantId tenantId, String type, PageLink pageLink); ListenableFuture> findDevicesByTenantIdAndIdsAsync(TenantId tenantId, List deviceIds); void deleteDevicesByTenantId(TenantId tenantId); - TextPageData findDevicesByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, TextPageLink pageLink); + PageData findDevicesByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, PageLink pageLink); - TextPageData findDevicesByTenantIdAndCustomerIdAndType(TenantId tenantId, CustomerId customerId, String type, TextPageLink pageLink); + PageData findDevicesByTenantIdAndCustomerIdAndType(TenantId tenantId, CustomerId customerId, String type, PageLink pageLink); ListenableFuture> findDevicesByTenantIdCustomerIdAndIdsAsync(TenantId tenantId, CustomerId customerId, List deviceIds); diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/entityview/EntityViewService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/entityview/EntityViewService.java index 454a36446b..310f302725 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/entityview/EntityViewService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/entityview/EntityViewService.java @@ -24,8 +24,8 @@ import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.EntityViewId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import java.util.List; @@ -46,13 +46,13 @@ public interface EntityViewService { EntityView findEntityViewByTenantIdAndName(TenantId tenantId, String name); - TextPageData findEntityViewByTenantId(TenantId tenantId, TextPageLink pageLink); + PageData findEntityViewByTenantId(TenantId tenantId, PageLink pageLink); - TextPageData findEntityViewByTenantIdAndType(TenantId tenantId, TextPageLink pageLink, String type); + PageData findEntityViewByTenantIdAndType(TenantId tenantId, PageLink pageLink, String type); - TextPageData findEntityViewsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, TextPageLink pageLink); + PageData findEntityViewsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, PageLink pageLink); - TextPageData findEntityViewsByTenantIdAndCustomerIdAndType(TenantId tenantId, CustomerId customerId, TextPageLink pageLink, String type); + PageData findEntityViewsByTenantIdAndCustomerIdAndType(TenantId tenantId, CustomerId customerId, PageLink pageLink, String type); ListenableFuture> findEntityViewsByQuery(TenantId tenantId, EntityViewSearchQuery query); diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/event/EventService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/event/EventService.java index 5192789d49..ef41dfb7ce 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/event/EventService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/event/EventService.java @@ -19,7 +19,7 @@ import com.google.common.util.concurrent.ListenableFuture; import org.thingsboard.server.common.data.Event; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import java.util.List; @@ -35,9 +35,9 @@ public interface EventService { Optional findEvent(TenantId tenantId, EntityId entityId, String eventType, String eventUid); - TimePageData findEvents(TenantId tenantId, EntityId entityId, TimePageLink pageLink); + PageData findEvents(TenantId tenantId, EntityId entityId, TimePageLink pageLink); - TimePageData findEvents(TenantId tenantId, EntityId entityId, String eventType, TimePageLink pageLink); + PageData findEvents(TenantId tenantId, EntityId entityId, String eventType, TimePageLink pageLink); List findLatestEvents(TenantId tenantId, EntityId entityId, String eventType, int limit); diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/rule/RuleChainService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/rule/RuleChainService.java index 5a1949e699..cc6fad476b 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/rule/RuleChainService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/rule/RuleChainService.java @@ -19,8 +19,8 @@ import com.google.common.util.concurrent.ListenableFuture; import org.thingsboard.server.common.data.id.RuleChainId; import org.thingsboard.server.common.data.id.RuleNodeId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.relation.EntityRelation; import org.thingsboard.server.common.data.rule.RuleChain; import org.thingsboard.server.common.data.rule.RuleChainMetaData; @@ -57,7 +57,7 @@ public interface RuleChainService { List getRuleNodeRelations(TenantId tenantId, RuleNodeId ruleNodeId); - TextPageData findTenantRuleChains(TenantId tenantId, TextPageLink pageLink); + PageData findTenantRuleChains(TenantId tenantId, PageLink pageLink); void deleteRuleChainById(TenantId tenantId, RuleChainId ruleChainId); diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/tenant/TenantService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/tenant/TenantService.java index 74099b2a9c..ba85e68380 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/tenant/TenantService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/tenant/TenantService.java @@ -18,8 +18,8 @@ package org.thingsboard.server.dao.tenant; import com.google.common.util.concurrent.ListenableFuture; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; public interface TenantService { @@ -31,7 +31,7 @@ public interface TenantService { void deleteTenant(TenantId tenantId); - TextPageData findTenants(TextPageLink pageLink); + PageData findTenants(PageLink pageLink); void deleteTenants(); } diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/user/UserService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/user/UserService.java index 2121b6c483..4e1dfc77cd 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/user/UserService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/user/UserService.java @@ -21,8 +21,8 @@ import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.UserCredentialsId; import org.thingsboard.server.common.data.id.UserId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.security.UserCredentials; public interface UserService { @@ -53,11 +53,11 @@ public interface UserService { void deleteUser(TenantId tenantId, UserId userId); - TextPageData findTenantAdmins(TenantId tenantId, TextPageLink pageLink); + PageData findTenantAdmins(TenantId tenantId, PageLink pageLink); void deleteTenantAdmins(TenantId tenantId); - - TextPageData findCustomerUsers(TenantId tenantId, CustomerId customerId, TextPageLink pageLink); + + PageData findCustomerUsers(TenantId tenantId, CustomerId customerId, PageLink pageLink); void deleteCustomerUsers(TenantId tenantId, CustomerId customerId); diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleService.java index 9c8594d079..ea752cef26 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleService.java @@ -17,8 +17,8 @@ package org.thingsboard.server.dao.widget; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.WidgetsBundleId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.widget.WidgetsBundle; import java.util.List; @@ -33,13 +33,13 @@ public interface WidgetsBundleService { WidgetsBundle findWidgetsBundleByTenantIdAndAlias(TenantId tenantId, String alias); - TextPageData findSystemWidgetsBundlesByPageLink(TenantId tenantId, TextPageLink pageLink); + PageData findSystemWidgetsBundlesByPageLink(TenantId tenantId, PageLink pageLink); List findSystemWidgetsBundles(TenantId tenantId); - TextPageData findTenantWidgetsBundlesByTenantId(TenantId tenantId, TextPageLink pageLink); + PageData findTenantWidgetsBundlesByTenantId(TenantId tenantId, PageLink pageLink); - TextPageData findAllTenantWidgetsBundlesByTenantIdAndPageLink(TenantId tenantId, TextPageLink pageLink); + PageData findAllTenantWidgetsBundlesByTenantIdAndPageLink(TenantId tenantId, PageLink pageLink); List findAllTenantWidgetsBundlesByTenantId(TenantId tenantId); diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/page/TimePageData.java b/common/data/src/main/java/org/thingsboard/server/common/data/page/PageData.java similarity index 50% rename from common/data/src/main/java/org/thingsboard/server/common/data/page/TimePageData.java rename to common/data/src/main/java/org/thingsboard/server/common/data/page/PageData.java index f530f7a88e..0c647def6d 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/page/TimePageData.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/page/PageData.java @@ -18,39 +18,29 @@ package org.thingsboard.server.common.data.page; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import org.thingsboard.server.common.data.BaseData; -import org.thingsboard.server.common.data.SearchTextBased; -import org.thingsboard.server.common.data.id.UUIDBased; +import java.util.Collections; import java.util.List; -import java.util.UUID; -public class TimePageData> { +public class PageData { private final List data; - private final TimePageLink nextPageLink; + private final int totalPages; + private final long totalElements; private final boolean hasNext; - public TimePageData(List data, TimePageLink pageLink) { - super(); - this.data = data; - int limit = pageLink.getLimit(); - if (data != null && data.size() == limit) { - int index = data.size() - 1; - UUID idOffset = data.get(index).getId().getId(); - nextPageLink = new TimePageLink(limit, pageLink.getStartTime(), pageLink.getEndTime(), pageLink.isAscOrder(), idOffset); - hasNext = true; - } else { - nextPageLink = null; - hasNext = false; - } + public PageData() { + this(Collections.emptyList(), 0, 0, false); } @JsonCreator - public TimePageData(@JsonProperty("data") List data, - @JsonProperty("nextPageLink") TimePageLink nextPageLink, - @JsonProperty("hasNext") boolean hasNext) { + public PageData(@JsonProperty("data") List data, + @JsonProperty("totalPages") int totalPages, + @JsonProperty("totalElements") long totalElements, + @JsonProperty("hasNext") boolean hasNext) { this.data = data; - this.nextPageLink = nextPageLink; + this.totalPages = totalPages; + this.totalElements = totalElements; this.hasNext = hasNext; } @@ -58,13 +48,17 @@ public class TimePageData> { return data; } + public int getTotalPages() { + return totalPages; + } + + public long getTotalElements() { + return totalElements; + } + @JsonProperty("hasNext") public boolean hasNext() { return hasNext; } - public TimePageLink getNextPageLink() { - return nextPageLink; - } - } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/page/PageDataIterable.java b/common/data/src/main/java/org/thingsboard/server/common/data/page/PageDataIterable.java index 2971b9e927..99d5e01683 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/page/PageDataIterable.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/page/PageDataIterable.java @@ -19,11 +19,12 @@ import java.util.Iterator; import java.util.List; import java.util.NoSuchElementException; +import org.thingsboard.server.common.data.BaseData; import org.thingsboard.server.common.data.SearchTextBased; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.UUIDBased; -public class PageDataIterable> implements Iterable, Iterator { +public class PageDataIterable implements Iterable, Iterator { private final FetchFunction function; private final int fetchSize; @@ -31,7 +32,7 @@ public class PageDataIterable> im private List currentItems; private int currentIdx; private boolean hasNextPack; - private TextPageLink nextPackLink; + private PageLink nextPackLink; private boolean initialized; public PageDataIterable(FetchFunction function, int fetchSize) { @@ -48,7 +49,7 @@ public class PageDataIterable> im @Override public boolean hasNext() { if(!initialized){ - fetch(new TextPageLink(fetchSize)); + fetch(new PageLink(fetchSize)); initialized = true; } if(currentIdx == currentItems.size()){ @@ -59,12 +60,12 @@ public class PageDataIterable> im return currentIdx < currentItems.size(); } - private void fetch(TextPageLink link) { - TextPageData pageData = function.fetch(link); + private void fetch(PageLink link) { + PageData pageData = function.fetch(link); currentIdx = 0; currentItems = pageData.getData(); hasNextPack = pageData.hasNext(); - nextPackLink = pageData.getNextPageLink(); + nextPackLink = link.nextPageLink(); } @Override @@ -75,9 +76,9 @@ public class PageDataIterable> im return currentItems.get(currentIdx++); } - public static interface FetchFunction> { + public static interface FetchFunction { - TextPageData fetch(TextPageLink link); + PageData fetch(PageLink link); } } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/page/PageLink.java b/common/data/src/main/java/org/thingsboard/server/common/data/page/PageLink.java new file mode 100644 index 0000000000..242cb39933 --- /dev/null +++ b/common/data/src/main/java/org/thingsboard/server/common/data/page/PageLink.java @@ -0,0 +1,60 @@ +/** + * Copyright © 2016-2019 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.common.data.page; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +@Data +public class PageLink { + + private final String textSearch; + private final int pageSize; + private final int page; + private final SortOrder sortOrder; + + public PageLink(PageLink pageLink) { + this.pageSize = pageLink.getPageSize(); + this.page = pageLink.getPage(); + this.textSearch = pageLink.getTextSearch(); + this.sortOrder = pageLink.getSortOrder(); + } + + public PageLink(int pageSize) { + this(pageSize, 0); + } + + public PageLink(int pageSize, int page) { + this(pageSize, page, null, null); + } + + public PageLink(int pageSize, int page, String textSearch) { + this(pageSize, page, textSearch, null); + } + + public PageLink(int pageSize, int page, String textSearch, SortOrder sortOrder) { + this.pageSize = pageSize; + this.page = page; + this.textSearch = textSearch; + this.sortOrder = sortOrder; + } + + @JsonIgnore + public PageLink nextPageLink() { + return new PageLink(this.pageSize, this.page+1, this.textSearch, this.sortOrder); + } + +} diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/page/BasePageLink.java b/common/data/src/main/java/org/thingsboard/server/common/data/page/SortOrder.java similarity index 59% rename from common/data/src/main/java/org/thingsboard/server/common/data/page/BasePageLink.java rename to common/data/src/main/java/org/thingsboard/server/common/data/page/SortOrder.java index 21e3199bcc..405cfd0f52 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/page/BasePageLink.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/page/SortOrder.java @@ -15,23 +15,25 @@ */ package org.thingsboard.server.common.data.page; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import lombok.Setter; +import lombok.Data; -import java.io.Serializable; -import java.util.Arrays; -import java.util.UUID; +@Data +public class SortOrder { -@RequiredArgsConstructor -@AllArgsConstructor -public abstract class BasePageLink implements Serializable { + private final String property; + private final Direction direction; - private static final long serialVersionUID = -4189954843653250481L; + public SortOrder(String property) { + this(property, Direction.ASC); + } - @Getter protected final int limit; + public SortOrder(String property, Direction direction) { + this.property = property; + this.direction = direction; + } - @Getter @Setter protected UUID idOffset; + public static enum Direction { + ASC, DESC + } } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/page/TextPageData.java b/common/data/src/main/java/org/thingsboard/server/common/data/page/TextPageData.java deleted file mode 100644 index e5af470e0e..0000000000 --- a/common/data/src/main/java/org/thingsboard/server/common/data/page/TextPageData.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Copyright © 2016-2019 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.common.data.page; - -import java.util.List; -import java.util.UUID; - -import org.thingsboard.server.common.data.SearchTextBased; -import org.thingsboard.server.common.data.id.UUIDBased; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class TextPageData> { - - private final List data; - private final TextPageLink nextPageLink; - private final boolean hasNext; - - public TextPageData(List data, TextPageLink pageLink) { - super(); - this.data = data; - int limit = pageLink.getLimit(); - if (data != null && data.size() == limit) { - int index = data.size()-1; - UUID idOffset = data.get(index).getId().getId(); - String textOffset = data.get(index).getSearchText(); - nextPageLink = new TextPageLink(limit, pageLink.getTextSearch(), idOffset, textOffset); - hasNext = true; - } else { - nextPageLink = null; - hasNext = false; - } - } - - @JsonCreator - public TextPageData(@JsonProperty("data") List data, - @JsonProperty("nextPageLink") TextPageLink nextPageLink, - @JsonProperty("hasNext") boolean hasNext) { - this.data = data; - this.nextPageLink = nextPageLink; - this.hasNext = hasNext; - } - - public List getData() { - return data; - } - - @JsonProperty("hasNext") - public boolean hasNext() { - return hasNext; - } - - public TextPageLink getNextPageLink() { - return nextPageLink; - } - -} diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/page/TextPageLink.java b/common/data/src/main/java/org/thingsboard/server/common/data/page/TextPageLink.java deleted file mode 100644 index 1cb3ecdecd..0000000000 --- a/common/data/src/main/java/org/thingsboard/server/common/data/page/TextPageLink.java +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Copyright © 2016-2019 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.common.data.page; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Getter; -import lombok.ToString; - -import java.io.Serializable; -import java.util.Arrays; -import java.util.UUID; - -@ToString -public class TextPageLink extends BasePageLink implements Serializable { - - private static final long serialVersionUID = -4189954843653250480L; - - @Getter private final String textSearch; - @Getter private final String textSearchBound; - @Getter private final String textOffset; - - public TextPageLink(int limit) { - this(limit, null, null, null); - } - - public TextPageLink(int limit, String textSearch) { - this(limit, textSearch, null, null); - } - - public TextPageLink(int limit, String textSearch, UUID idOffset, String textOffset) { - super(limit, idOffset); - this.textSearch = textSearch != null ? textSearch.toLowerCase() : null; - this.textSearchBound = nextSequence(this.textSearch); - this.textOffset = textOffset != null ? textOffset.toLowerCase() : null; - } - - @JsonCreator - public TextPageLink(@JsonProperty("limit") int limit, - @JsonProperty("textSearch") String textSearch, - @JsonProperty("textSearchBound") String textSearchBound, - @JsonProperty("textOffset") String textOffset, - @JsonProperty("idOffset") UUID idOffset) { - super(limit, idOffset); - this.textSearch = textSearch; - this.textSearchBound = textSearchBound; - this.textOffset = textOffset; - this.idOffset = idOffset; - } - - private static String nextSequence(String input) { - if (input != null && input.length() > 0) { - char[] chars = input.toCharArray(); - int i = chars.length - 1; - while (i >= 0 && ++chars[i--] == Character.MIN_VALUE) ; - if (i == -1 && (chars.length == 0 || chars[0] == Character.MIN_VALUE)) { - char buf[] = Arrays.copyOf(input.toCharArray(), input.length() + 1); - buf[buf.length - 1] = Character.MIN_VALUE; - return new String(buf); - } - return new String(chars); - } else { - return null; - } - } - -} diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/page/TimePageLink.java b/common/data/src/main/java/org/thingsboard/server/common/data/page/TimePageLink.java index 2d9f6923a4..1d3081885c 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/page/TimePageLink.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/page/TimePageLink.java @@ -16,7 +16,9 @@ package org.thingsboard.server.common.data.page; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; import lombok.Getter; import lombok.ToString; @@ -24,40 +26,43 @@ import java.io.Serializable; import java.util.Arrays; import java.util.UUID; -@ToString -public class TimePageLink extends BasePageLink implements Serializable { +@Data +public class TimePageLink extends PageLink { - private static final long serialVersionUID = -4189954843653250480L; + private final Long startTime; + private final Long endTime; - @Getter private final Long startTime; - @Getter private final Long endTime; - @Getter private final boolean ascOrder; + public TimePageLink(PageLink pageLink, Long startTime, Long endTime) { + super(pageLink); + this.startTime = startTime; + this.endTime = endTime; + } - public TimePageLink(int limit) { - this(limit, null, null, false, null); + public TimePageLink(int pageSize) { + this(pageSize, 0); } - public TimePageLink(int limit, Long startTime) { - this(limit, startTime, null, false, null); + public TimePageLink(int pageSize, int page) { + this(pageSize, page, null); } - public TimePageLink(int limit, Long startTime, Long endTime) { - this(limit, startTime, endTime, false, null); + public TimePageLink(int pageSize, int page, String textSearch) { + this(pageSize, page, textSearch, null, null, null); } - public TimePageLink(int limit, Long startTime, Long endTime, boolean ascOrder) { - this(limit, startTime, endTime, ascOrder, null); + public TimePageLink(int pageSize, int page, String textSearch, SortOrder sortOrder) { + this(pageSize, page, textSearch, sortOrder, null, null); } - @JsonCreator - public TimePageLink(@JsonProperty("limit") int limit, - @JsonProperty("startTime") Long startTime, - @JsonProperty("endTime") Long endTime, - @JsonProperty("ascOrder") boolean ascOrder, - @JsonProperty("idOffset") UUID idOffset) { - super(limit, idOffset); + public TimePageLink(int pageSize, int page, String textSearch, SortOrder sortOrder, Long startTime, Long endTime) { + super(pageSize, page, textSearch, sortOrder); this.startTime = startTime; this.endTime = endTime; - this.ascOrder = ascOrder; + } + + @JsonIgnore + public TimePageLink nextPageLink() { + return new TimePageLink(this.getPageSize(), this.getPage()+1, this.getTextSearch(), this.getSortOrder(), + this.startTime, this.endTime); } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/DaoUtil.java b/dao/src/main/java/org/thingsboard/server/dao/DaoUtil.java index d1395f43db..667f0d2d56 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/DaoUtil.java +++ b/dao/src/main/java/org/thingsboard/server/dao/DaoUtil.java @@ -15,7 +15,16 @@ */ package org.thingsboard.server.dao; +import com.datastax.driver.core.utils.UUIDs; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.thingsboard.server.common.data.UUIDConverter; import org.thingsboard.server.common.data.id.UUIDBased; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; +import org.thingsboard.server.common.data.page.SortOrder; import org.thingsboard.server.dao.model.ToData; import java.util.*; @@ -25,6 +34,56 @@ public abstract class DaoUtil { private DaoUtil() { } + public static PageData toPageData(Page> page) { + List data = convertDataList(page.getContent()); + return new PageData(data, page.getTotalPages(), page.getTotalElements(), page.hasNext()); + } + + public static Pageable toPageable(PageLink pageLink) { + return toPageable(pageLink, Collections.emptyMap()); + } + + public static Pageable toPageable(PageLink pageLink, Map columnMap) { + return PageRequest.of(pageLink.getPage(), pageLink.getPageSize(), toSort(pageLink.getSortOrder(), columnMap)); + } + + public static String startTimeToId(Long startTime) { + if (startTime != null) { + UUID startOf = UUIDs.startOf(startTime); + return UUIDConverter.fromTimeUUID(startOf); + } else { + return null; + } + } + + public static String endTimeToId(Long endTime) { + if (endTime != null) { + UUID endOf = UUIDs.endOf(endTime); + return UUIDConverter.fromTimeUUID(endOf); + } else { + return null; + } + } + + public static Sort toSort(SortOrder sortOrder) { + return toSort(sortOrder, Collections.emptyMap()); + } + + public static Sort toSort(SortOrder sortOrder, Map columnMap) { + if (sortOrder == null) { + return Sort.unsorted(); + } else { + String property = sortOrder.getProperty(); + if (columnMap.containsKey(property)) { + property = columnMap.get(property); + } + if (property.equals("createdTime")) { + property = "id"; + } + return Sort.by(Sort.Direction.fromString(sortOrder.getDirection().name()), property); + } + } + public static List convertDataList(Collection> toDataList) { List list = Collections.emptyList(); if (toDataList != null && !toDataList.isEmpty()) { diff --git a/dao/src/main/java/org/thingsboard/server/dao/NoSqlDaoConfig.java b/dao/src/main/java/org/thingsboard/server/dao/NoSqlDaoConfig.java deleted file mode 100644 index 81a69ca603..0000000000 --- a/dao/src/main/java/org/thingsboard/server/dao/NoSqlDaoConfig.java +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Copyright © 2016-2019 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.dao; - -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; -import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; -import org.springframework.context.annotation.Configuration; -import org.thingsboard.server.dao.util.NoSqlDao; - -@Configuration -@EnableAutoConfiguration( - exclude = { - DataSourceAutoConfiguration.class, - DataSourceTransactionManagerAutoConfiguration.class, - HibernateJpaAutoConfiguration.class}) -@NoSqlDao -public class NoSqlDaoConfig { -} diff --git a/dao/src/main/java/org/thingsboard/server/dao/alarm/AlarmDao.java b/dao/src/main/java/org/thingsboard/server/dao/alarm/AlarmDao.java index f1de0f0904..c9b996cba7 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/alarm/AlarmDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/alarm/AlarmDao.java @@ -21,6 +21,7 @@ import org.thingsboard.server.common.data.alarm.AlarmInfo; import org.thingsboard.server.common.data.alarm.AlarmQuery; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.dao.Dao; import java.util.List; @@ -39,5 +40,5 @@ public interface AlarmDao extends Dao { Alarm save(TenantId tenantId, Alarm alarm); - ListenableFuture> findAlarms(TenantId tenantId, AlarmQuery query); + ListenableFuture> findAlarms(TenantId tenantId, AlarmQuery query); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/alarm/BaseAlarmService.java b/dao/src/main/java/org/thingsboard/server/dao/alarm/BaseAlarmService.java index 3d81dafb5c..83ef00c6af 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/alarm/BaseAlarmService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/alarm/BaseAlarmService.java @@ -35,7 +35,7 @@ import org.thingsboard.server.common.data.alarm.AlarmSeverity; import org.thingsboard.server.common.data.alarm.AlarmStatus; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.common.data.relation.EntityRelation; import org.thingsboard.server.common.data.relation.EntityRelationsQuery; @@ -260,12 +260,12 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ } @Override - public ListenableFuture> findAlarms(TenantId tenantId, AlarmQuery query) { - ListenableFuture> alarms = alarmDao.findAlarms(tenantId, query); + public ListenableFuture> findAlarms(TenantId tenantId, AlarmQuery query) { + ListenableFuture> alarms = alarmDao.findAlarms(tenantId, query); if (query.getFetchOriginator() != null && query.getFetchOriginator().booleanValue()) { alarms = Futures.transformAsync(alarms, input -> { - List> alarmFutures = new ArrayList<>(input.size()); - for (AlarmInfo alarmInfo : input) { + List> alarmFutures = new ArrayList<>(input.getData().size()); + for (AlarmInfo alarmInfo : input.getData()) { alarmFutures.add(Futures.transform( entityService.fetchEntityNameAsync(tenantId, alarmInfo.getOriginator()), originatorName -> { if (originatorName == null) { @@ -276,16 +276,12 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ } )); } - return Futures.successfulAsList(alarmFutures); + return Futures.transform(Futures.successfulAsList(alarmFutures), alarmInfos -> { + return new PageData(alarmInfos, input.getTotalPages(), input.getTotalElements(), input.hasNext()); + }); }); } - return Futures.transform(alarms, new Function, TimePageData>() { - @Nullable - @Override - public TimePageData apply(@Nullable List alarms) { - return new TimePageData<>(alarms, query.getPageLink()); - } - }); + return alarms; } @Override @@ -297,7 +293,7 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ AlarmQuery query; while (hasNext && AlarmSeverity.CRITICAL != highestSeverity) { query = new AlarmQuery(entityId, nextPageLink, alarmSearchStatus, alarmStatus, false); - List alarms; + PageData alarms; try { alarms = alarmDao.findAlarms(tenantId, query).get(); } catch (ExecutionException | InterruptedException e) { @@ -305,11 +301,10 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ entityId, alarmSearchStatus, alarmStatus); throw new RuntimeException(e); } - hasNext = alarms.size() == nextPageLink.getLimit(); - if (hasNext) { - nextPageLink = new TimePageData<>(alarms, nextPageLink).getNextPageLink(); + if (alarms.hasNext()) { + nextPageLink = nextPageLink.nextPageLink(); } - AlarmSeverity severity = detectHighestSeverity(alarms); + AlarmSeverity severity = detectHighestSeverity(alarms.getData()); if (severity == null) { continue; } diff --git a/dao/src/main/java/org/thingsboard/server/dao/asset/AssetDao.java b/dao/src/main/java/org/thingsboard/server/dao/asset/AssetDao.java index 1c67fd40eb..4caffc43d5 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/asset/AssetDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/asset/AssetDao.java @@ -19,7 +19,8 @@ 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.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.Dao; import java.util.List; @@ -47,7 +48,7 @@ public interface AssetDao extends Dao { * @param pageLink the page link * @return the list of asset objects */ - List findAssetsByTenantId(UUID tenantId, TextPageLink pageLink); + PageData findAssetsByTenantId(UUID tenantId, PageLink pageLink); /** * Find assets by tenantId, type and page link. @@ -57,7 +58,7 @@ public interface AssetDao extends Dao { * @param pageLink the page link * @return the list of asset objects */ - List findAssetsByTenantIdAndType(UUID tenantId, String type, TextPageLink pageLink); + PageData findAssetsByTenantIdAndType(UUID tenantId, String type, PageLink pageLink); /** * Find assets by tenantId and assets Ids. @@ -76,7 +77,7 @@ public interface AssetDao extends Dao { * @param pageLink the page link * @return the list of asset objects */ - List findAssetsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink); + PageData findAssetsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, PageLink pageLink); /** * Find assets by tenantId, customerId, type and page link. @@ -87,7 +88,7 @@ public interface AssetDao extends Dao { * @param pageLink the page link * @return the list of asset objects */ - List findAssetsByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, TextPageLink pageLink); + PageData findAssetsByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, PageLink pageLink); /** * Find assets by tenantId, customerId and assets Ids. diff --git a/dao/src/main/java/org/thingsboard/server/dao/asset/BaseAssetService.java b/dao/src/main/java/org/thingsboard/server/dao/asset/BaseAssetService.java index cf679a103f..c57bd8d937 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/asset/BaseAssetService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/asset/BaseAssetService.java @@ -38,8 +38,8 @@ import org.thingsboard.server.common.data.id.AssetId; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.relation.EntityRelation; import org.thingsboard.server.common.data.relation.EntitySearchDirection; import org.thingsboard.server.dao.customer.CustomerDao; @@ -157,22 +157,20 @@ public class BaseAssetService extends AbstractEntityService implements AssetServ } @Override - public TextPageData findAssetsByTenantId(TenantId tenantId, TextPageLink pageLink) { + public PageData findAssetsByTenantId(TenantId tenantId, PageLink pageLink) { log.trace("Executing findAssetsByTenantId, tenantId [{}], pageLink [{}]", tenantId, pageLink); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); - validatePageLink(pageLink, INCORRECT_PAGE_LINK + pageLink); - List assets = assetDao.findAssetsByTenantId(tenantId.getId(), pageLink); - return new TextPageData<>(assets, pageLink); + validatePageLink(pageLink); + return assetDao.findAssetsByTenantId(tenantId.getId(), pageLink); } @Override - public TextPageData findAssetsByTenantIdAndType(TenantId tenantId, String type, TextPageLink pageLink) { + public PageData findAssetsByTenantIdAndType(TenantId tenantId, String type, PageLink pageLink) { log.trace("Executing findAssetsByTenantIdAndType, tenantId [{}], type [{}], pageLink [{}]", tenantId, type, pageLink); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); validateString(type, "Incorrect type " + type); - validatePageLink(pageLink, INCORRECT_PAGE_LINK + pageLink); - List assets = assetDao.findAssetsByTenantIdAndType(tenantId.getId(), type, pageLink); - return new TextPageData<>(assets, pageLink); + validatePageLink(pageLink); + return assetDao.findAssetsByTenantIdAndType(tenantId.getId(), type, pageLink); } @Override @@ -191,24 +189,22 @@ public class BaseAssetService extends AbstractEntityService implements AssetServ } @Override - public TextPageData findAssetsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, TextPageLink pageLink) { + public PageData findAssetsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, PageLink pageLink) { log.trace("Executing findAssetsByTenantIdAndCustomerId, tenantId [{}], customerId [{}], pageLink [{}]", tenantId, customerId, pageLink); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); validateId(customerId, INCORRECT_CUSTOMER_ID + customerId); - validatePageLink(pageLink, INCORRECT_PAGE_LINK + pageLink); - List assets = assetDao.findAssetsByTenantIdAndCustomerId(tenantId.getId(), customerId.getId(), pageLink); - return new TextPageData<>(assets, pageLink); + validatePageLink(pageLink); + return assetDao.findAssetsByTenantIdAndCustomerId(tenantId.getId(), customerId.getId(), pageLink); } @Override - public TextPageData findAssetsByTenantIdAndCustomerIdAndType(TenantId tenantId, CustomerId customerId, String type, TextPageLink pageLink) { + public PageData findAssetsByTenantIdAndCustomerIdAndType(TenantId tenantId, CustomerId customerId, String type, PageLink pageLink) { log.trace("Executing findAssetsByTenantIdAndCustomerIdAndType, tenantId [{}], customerId [{}], type [{}], pageLink [{}]", tenantId, customerId, type, pageLink); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); validateId(customerId, INCORRECT_CUSTOMER_ID + customerId); validateString(type, "Incorrect type " + type); - validatePageLink(pageLink, INCORRECT_PAGE_LINK + pageLink); - List assets = assetDao.findAssetsByTenantIdAndCustomerIdAndType(tenantId.getId(), customerId.getId(), type, pageLink); - return new TextPageData<>(assets, pageLink); + validatePageLink(pageLink); + return assetDao.findAssetsByTenantIdAndCustomerIdAndType(tenantId.getId(), customerId.getId(), type, pageLink); } @Override @@ -317,7 +313,7 @@ public class BaseAssetService extends AbstractEntityService implements AssetServ new PaginatedRemover() { @Override - protected List findEntities(TenantId tenantId, TenantId id, TextPageLink pageLink) { + protected PageData findEntities(TenantId tenantId, TenantId id, PageLink pageLink) { return assetDao.findAssetsByTenantId(id.getId(), pageLink); } @@ -330,7 +326,7 @@ public class BaseAssetService extends AbstractEntityService implements AssetServ private PaginatedRemover customerAssetsUnasigner = new PaginatedRemover() { @Override - protected List findEntities(TenantId tenantId, CustomerId id, TextPageLink pageLink) { + protected PageData findEntities(TenantId tenantId, CustomerId id, PageLink pageLink) { return assetDao.findAssetsByTenantIdAndCustomerId(tenantId.getId(), id.getId(), pageLink); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/audit/AuditLogDao.java b/dao/src/main/java/org/thingsboard/server/dao/audit/AuditLogDao.java index 2d8db71ab7..c0536deac0 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/audit/AuditLogDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/audit/AuditLogDao.java @@ -20,6 +20,7 @@ import org.thingsboard.server.common.data.audit.AuditLog; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.UserId; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import java.util.List; @@ -29,19 +30,11 @@ public interface AuditLogDao { ListenableFuture saveByTenantId(AuditLog auditLog); - ListenableFuture saveByTenantIdAndEntityId(AuditLog auditLog); + PageData findAuditLogsByTenantIdAndEntityId(UUID tenantId, EntityId entityId, TimePageLink pageLink); - ListenableFuture saveByTenantIdAndCustomerId(AuditLog auditLog); + PageData findAuditLogsByTenantIdAndCustomerId(UUID tenantId, CustomerId customerId, TimePageLink pageLink); - ListenableFuture saveByTenantIdAndUserId(AuditLog auditLog); + PageData findAuditLogsByTenantIdAndUserId(UUID tenantId, UserId userId, TimePageLink pageLink); - ListenableFuture savePartitionsByTenantId(AuditLog auditLog); - - List findAuditLogsByTenantIdAndEntityId(UUID tenantId, EntityId entityId, TimePageLink pageLink); - - List findAuditLogsByTenantIdAndCustomerId(UUID tenantId, CustomerId customerId, TimePageLink pageLink); - - List findAuditLogsByTenantIdAndUserId(UUID tenantId, UserId userId, TimePageLink pageLink); - - List findAuditLogsByTenantId(UUID tenantId, TimePageLink pageLink); + PageData findAuditLogsByTenantId(UUID tenantId, TimePageLink pageLink); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/audit/AuditLogServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/audit/AuditLogServiceImpl.java index 3af67454d6..139bb0826b 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/audit/AuditLogServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/audit/AuditLogServiceImpl.java @@ -41,7 +41,7 @@ import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.UUIDBased; import org.thingsboard.server.common.data.id.UserId; import org.thingsboard.server.common.data.kv.AttributeKvEntry; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.common.data.relation.EntityRelation; import org.thingsboard.server.common.data.rule.RuleChainMetaData; @@ -81,38 +81,34 @@ public class AuditLogServiceImpl implements AuditLogService { private AuditLogSink auditLogSink; @Override - public TimePageData findAuditLogsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, TimePageLink pageLink) { + public PageData findAuditLogsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, TimePageLink pageLink) { log.trace("Executing findAuditLogsByTenantIdAndCustomerId [{}], [{}], [{}]", tenantId, customerId, pageLink); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); validateId(customerId, "Incorrect customerId " + customerId); - List auditLogs = auditLogDao.findAuditLogsByTenantIdAndCustomerId(tenantId.getId(), customerId, pageLink); - return new TimePageData<>(auditLogs, pageLink); + return auditLogDao.findAuditLogsByTenantIdAndCustomerId(tenantId.getId(), customerId, pageLink); } @Override - public TimePageData findAuditLogsByTenantIdAndUserId(TenantId tenantId, UserId userId, TimePageLink pageLink) { + public PageData findAuditLogsByTenantIdAndUserId(TenantId tenantId, UserId userId, TimePageLink pageLink) { log.trace("Executing findAuditLogsByTenantIdAndUserId [{}], [{}], [{}]", tenantId, userId, pageLink); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); validateId(userId, "Incorrect userId" + userId); - List auditLogs = auditLogDao.findAuditLogsByTenantIdAndUserId(tenantId.getId(), userId, pageLink); - return new TimePageData<>(auditLogs, pageLink); + return auditLogDao.findAuditLogsByTenantIdAndUserId(tenantId.getId(), userId, pageLink); } @Override - public TimePageData findAuditLogsByTenantIdAndEntityId(TenantId tenantId, EntityId entityId, TimePageLink pageLink) { + public PageData findAuditLogsByTenantIdAndEntityId(TenantId tenantId, EntityId entityId, TimePageLink pageLink) { log.trace("Executing findAuditLogsByTenantIdAndEntityId [{}], [{}], [{}]", tenantId, entityId, pageLink); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); validateEntityId(entityId, INCORRECT_TENANT_ID + entityId); - List auditLogs = auditLogDao.findAuditLogsByTenantIdAndEntityId(tenantId.getId(), entityId, pageLink); - return new TimePageData<>(auditLogs, pageLink); + return auditLogDao.findAuditLogsByTenantIdAndEntityId(tenantId.getId(), entityId, pageLink); } @Override - public TimePageData findAuditLogsByTenantId(TenantId tenantId, TimePageLink pageLink) { + public PageData findAuditLogsByTenantId(TenantId tenantId, TimePageLink pageLink) { log.trace("Executing findAuditLogs [{}]", pageLink); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); - List auditLogs = auditLogDao.findAuditLogsByTenantId(tenantId.getId(), pageLink); - return new TimePageData<>(auditLogs, pageLink); + return auditLogDao.findAuditLogsByTenantId(tenantId.getId(), pageLink); } @Override @@ -328,11 +324,7 @@ public class AuditLogServiceImpl implements AuditLogService { log.trace("Executing logAction [{}]", auditLogEntry); auditLogValidator.validate(auditLogEntry, AuditLog::getTenantId); List> futures = Lists.newArrayListWithExpectedSize(INSERTS_PER_ENTRY); - futures.add(auditLogDao.savePartitionsByTenantId(auditLogEntry)); futures.add(auditLogDao.saveByTenantId(auditLogEntry)); - futures.add(auditLogDao.saveByTenantIdAndEntityId(auditLogEntry)); - futures.add(auditLogDao.saveByTenantIdAndCustomerId(auditLogEntry)); - futures.add(auditLogDao.saveByTenantIdAndUserId(auditLogEntry)); auditLogSink.logAction(auditLogEntry); diff --git a/dao/src/main/java/org/thingsboard/server/dao/audit/DummyAuditLogServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/audit/DummyAuditLogServiceImpl.java index b8fabd5f23..35e9d8255c 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/audit/DummyAuditLogServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/audit/DummyAuditLogServiceImpl.java @@ -27,7 +27,7 @@ import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.UUIDBased; import org.thingsboard.server.common.data.id.UserId; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import java.util.List; @@ -37,23 +37,23 @@ import java.util.List; public class DummyAuditLogServiceImpl implements AuditLogService { @Override - public TimePageData findAuditLogsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, TimePageLink pageLink) { - return new TimePageData<>(null, pageLink); + public PageData findAuditLogsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, TimePageLink pageLink) { + return new PageData(); } @Override - public TimePageData findAuditLogsByTenantIdAndUserId(TenantId tenantId, UserId userId, TimePageLink pageLink) { - return new TimePageData<>(null, pageLink); + public PageData findAuditLogsByTenantIdAndUserId(TenantId tenantId, UserId userId, TimePageLink pageLink) { + return new PageData(); } @Override - public TimePageData findAuditLogsByTenantIdAndEntityId(TenantId tenantId, EntityId entityId, TimePageLink pageLink) { - return new TimePageData<>(null, pageLink); + public PageData findAuditLogsByTenantIdAndEntityId(TenantId tenantId, EntityId entityId, TimePageLink pageLink) { + return new PageData(); } @Override - public TimePageData findAuditLogsByTenantId(TenantId tenantId, TimePageLink pageLink) { - return new TimePageData<>(null, pageLink); + public PageData findAuditLogsByTenantId(TenantId tenantId, TimePageLink pageLink) { + return new PageData(); } @Override diff --git a/dao/src/main/java/org/thingsboard/server/dao/component/BaseComponentDescriptorService.java b/dao/src/main/java/org/thingsboard/server/dao/component/BaseComponentDescriptorService.java index b12e114d93..28ac2bd4a3 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/component/BaseComponentDescriptorService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/component/BaseComponentDescriptorService.java @@ -27,8 +27,8 @@ import org.springframework.stereotype.Service; import org.thingsboard.server.common.data.id.ComponentDescriptorId; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.plugin.ComponentDescriptor; import org.thingsboard.server.common.data.plugin.ComponentScope; import org.thingsboard.server.common.data.plugin.ComponentType; @@ -74,17 +74,15 @@ public class BaseComponentDescriptorService implements ComponentDescriptorServic } @Override - public TextPageData findByTypeAndPageLink(TenantId tenantId, ComponentType type, TextPageLink pageLink) { - Validator.validatePageLink(pageLink, "Incorrect PageLink object for search plugin components request."); - List components = componentDescriptorDao.findByTypeAndPageLink(tenantId, type, pageLink); - return new TextPageData<>(components, pageLink); + public PageData findByTypeAndPageLink(TenantId tenantId, ComponentType type, PageLink pageLink) { + Validator.validatePageLink(pageLink); + return componentDescriptorDao.findByTypeAndPageLink(tenantId, type, pageLink); } @Override - public TextPageData findByScopeAndTypeAndPageLink(TenantId tenantId, ComponentScope scope, ComponentType type, TextPageLink pageLink) { - Validator.validatePageLink(pageLink, "Incorrect PageLink object for search plugin components request."); - List components = componentDescriptorDao.findByScopeAndTypeAndPageLink(tenantId, scope, type, pageLink); - return new TextPageData<>(components, pageLink); + public PageData findByScopeAndTypeAndPageLink(TenantId tenantId, ComponentScope scope, ComponentType type, PageLink pageLink) { + Validator.validatePageLink(pageLink); + return componentDescriptorDao.findByScopeAndTypeAndPageLink(tenantId, scope, type, pageLink); } @Override diff --git a/dao/src/main/java/org/thingsboard/server/dao/component/ComponentDescriptorDao.java b/dao/src/main/java/org/thingsboard/server/dao/component/ComponentDescriptorDao.java index 95ce126a1e..b69535e162 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/component/ComponentDescriptorDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/component/ComponentDescriptorDao.java @@ -17,7 +17,8 @@ package org.thingsboard.server.dao.component; import org.thingsboard.server.common.data.id.ComponentDescriptorId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.plugin.ComponentDescriptor; import org.thingsboard.server.common.data.plugin.ComponentScope; import org.thingsboard.server.common.data.plugin.ComponentType; @@ -37,9 +38,9 @@ public interface ComponentDescriptorDao extends Dao { ComponentDescriptor findByClazz(TenantId tenantId, String clazz); - List findByTypeAndPageLink(TenantId tenantId, ComponentType type, TextPageLink pageLink); + PageData findByTypeAndPageLink(TenantId tenantId, ComponentType type, PageLink pageLink); - List findByScopeAndTypeAndPageLink(TenantId tenantId, ComponentScope scope, ComponentType type, TextPageLink pageLink); + PageData findByScopeAndTypeAndPageLink(TenantId tenantId, ComponentScope scope, ComponentType type, PageLink pageLink); void deleteById(TenantId tenantId, ComponentDescriptorId componentId); diff --git a/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerDao.java b/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerDao.java index bccd919c32..aaa2b9c8d2 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerDao.java @@ -17,7 +17,8 @@ package org.thingsboard.server.dao.customer; import org.thingsboard.server.common.data.Customer; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.Dao; import java.util.List; @@ -44,7 +45,7 @@ public interface CustomerDao extends Dao { * @param pageLink the page link * @return the list of customer objects */ - List findCustomersByTenantId(UUID tenantId, TextPageLink pageLink); + PageData findCustomersByTenantId(UUID tenantId, PageLink pageLink); /** * Find customers by tenantId and customer title. diff --git a/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerServiceImpl.java index 511e410447..0c847d2854 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/customer/CustomerServiceImpl.java @@ -26,8 +26,8 @@ import org.thingsboard.server.common.data.Customer; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.asset.AssetService; import org.thingsboard.server.dao.dashboard.DashboardService; import org.thingsboard.server.dao.device.DeviceService; @@ -144,12 +144,11 @@ public class CustomerServiceImpl extends AbstractEntityService implements Custom } @Override - public TextPageData findCustomersByTenantId(TenantId tenantId, TextPageLink pageLink) { + public PageData findCustomersByTenantId(TenantId tenantId, PageLink pageLink) { log.trace("Executing findCustomersByTenantId, tenantId [{}], pageLink [{}]", tenantId, pageLink); Validator.validateId(tenantId, "Incorrect tenantId " + tenantId); - Validator.validatePageLink(pageLink, "Incorrect page link " + pageLink); - List customers = customerDao.findCustomersByTenantId(tenantId.getId(), pageLink); - return new TextPageData<>(customers, pageLink); + Validator.validatePageLink(pageLink); + return customerDao.findCustomersByTenantId(tenantId.getId(), pageLink); } @Override @@ -208,7 +207,7 @@ public class CustomerServiceImpl extends AbstractEntityService implements Custom new PaginatedRemover() { @Override - protected List findEntities(TenantId tenantId, TenantId id, TextPageLink pageLink) { + protected PageData findEntities(TenantId tenantId, TenantId id, PageLink pageLink) { return customerDao.findCustomersByTenantId(id.getId(), pageLink); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardInfoDao.java b/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardInfoDao.java index a90ba4b464..002a07045c 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardInfoDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardInfoDao.java @@ -17,7 +17,8 @@ package org.thingsboard.server.dao.dashboard; import com.google.common.util.concurrent.ListenableFuture; import org.thingsboard.server.common.data.DashboardInfo; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.dao.Dao; @@ -36,7 +37,7 @@ public interface DashboardInfoDao extends Dao { * @param pageLink the page link * @return the list of dashboard objects */ - List findDashboardsByTenantId(UUID tenantId, TextPageLink pageLink); + PageData findDashboardsByTenantId(UUID tenantId, PageLink pageLink); /** * Find dashboards by tenantId, customerId and page link. @@ -46,6 +47,6 @@ public interface DashboardInfoDao extends Dao { * @param pageLink the page link * @return the list of dashboard objects */ - ListenableFuture> findDashboardsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TimePageLink pageLink); + ListenableFuture> findDashboardsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TimePageLink pageLink); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardServiceImpl.java index 83d4c55068..63ac5e93ca 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardServiceImpl.java @@ -29,9 +29,8 @@ import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.DashboardId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.common.data.relation.EntityRelation; import org.thingsboard.server.common.data.relation.RelationTypeGroup; @@ -174,12 +173,11 @@ public class DashboardServiceImpl extends AbstractEntityService implements Dashb } @Override - public TextPageData findDashboardsByTenantId(TenantId tenantId, TextPageLink pageLink) { + public PageData findDashboardsByTenantId(TenantId tenantId, PageLink pageLink) { log.trace("Executing findDashboardsByTenantId, tenantId [{}], pageLink [{}]", tenantId, pageLink); Validator.validateId(tenantId, INCORRECT_TENANT_ID + tenantId); - Validator.validatePageLink(pageLink, "Incorrect page link " + pageLink); - List dashboards = dashboardInfoDao.findDashboardsByTenantId(tenantId.getId(), pageLink); - return new TextPageData<>(dashboards, pageLink); + Validator.validatePageLink(pageLink); + return dashboardInfoDao.findDashboardsByTenantId(tenantId.getId(), pageLink); } @Override @@ -190,20 +188,12 @@ public class DashboardServiceImpl extends AbstractEntityService implements Dashb } @Override - public ListenableFuture> findDashboardsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, TimePageLink pageLink) { + public ListenableFuture> findDashboardsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, TimePageLink pageLink) { log.trace("Executing findDashboardsByTenantIdAndCustomerId, tenantId [{}], customerId [{}], pageLink [{}]", tenantId, customerId, pageLink); Validator.validateId(tenantId, INCORRECT_TENANT_ID + tenantId); Validator.validateId(customerId, "Incorrect customerId " + customerId); - Validator.validatePageLink(pageLink, "Incorrect page link " + pageLink); - ListenableFuture> dashboards = dashboardInfoDao.findDashboardsByTenantIdAndCustomerId(tenantId.getId(), customerId.getId(), pageLink); - - return Futures.transform(dashboards, new Function, TimePageData>() { - @Nullable - @Override - public TimePageData apply(@Nullable List dashboards) { - return new TimePageData<>(dashboards, pageLink); - } - }); + Validator.validatePageLink(pageLink); + return dashboardInfoDao.findDashboardsByTenantIdAndCustomerId(tenantId.getId(), customerId.getId(), pageLink); } @Override @@ -250,7 +240,7 @@ public class DashboardServiceImpl extends AbstractEntityService implements Dashb new PaginatedRemover() { @Override - protected List findEntities(TenantId tenantId, TenantId id, TextPageLink pageLink) { + protected PageData findEntities(TenantId tenantId, TenantId id, PageLink pageLink) { return dashboardInfoDao.findDashboardsByTenantId(id.getId(), pageLink); } @@ -269,7 +259,7 @@ public class DashboardServiceImpl extends AbstractEntityService implements Dashb } @Override - protected List findEntities(TenantId tenantId, Customer customer, TimePageLink pageLink) { + protected PageData findEntities(TenantId tenantId, Customer customer, TimePageLink pageLink) { try { return dashboardInfoDao.findDashboardsByTenantIdAndCustomerId(customer.getTenantId().getId(), customer.getId().getId(), pageLink).get(); } catch (InterruptedException | ExecutionException e) { @@ -294,7 +284,7 @@ public class DashboardServiceImpl extends AbstractEntityService implements Dashb } @Override - protected List findEntities(TenantId tenantId, Customer customer, TimePageLink pageLink) { + protected PageData findEntities(TenantId tenantId, Customer customer, TimePageLink pageLink) { try { return dashboardInfoDao.findDashboardsByTenantIdAndCustomerId(customer.getTenantId().getId(), customer.getId().getId(), pageLink).get(); } catch (InterruptedException | ExecutionException e) { diff --git a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceDao.java b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceDao.java index 83533f1e36..64ac69ac59 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceDao.java @@ -19,7 +19,8 @@ import com.google.common.util.concurrent.ListenableFuture; import org.thingsboard.server.common.data.Device; import org.thingsboard.server.common.data.EntitySubtype; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.Dao; import java.util.List; @@ -47,7 +48,7 @@ public interface DeviceDao extends Dao { * @param pageLink the page link * @return the list of device objects */ - List findDevicesByTenantId(UUID tenantId, TextPageLink pageLink); + PageData findDevicesByTenantId(UUID tenantId, PageLink pageLink); /** * Find devices by tenantId, type and page link. @@ -57,7 +58,7 @@ public interface DeviceDao extends Dao { * @param pageLink the page link * @return the list of device objects */ - List findDevicesByTenantIdAndType(UUID tenantId, String type, TextPageLink pageLink); + PageData findDevicesByTenantIdAndType(UUID tenantId, String type, PageLink pageLink); /** * Find devices by tenantId and devices Ids. @@ -76,7 +77,7 @@ public interface DeviceDao extends Dao { * @param pageLink the page link * @return the list of device objects */ - List findDevicesByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink); + PageData findDevicesByTenantIdAndCustomerId(UUID tenantId, UUID customerId, PageLink pageLink); /** * Find devices by tenantId, customerId, type and page link. @@ -87,7 +88,7 @@ public interface DeviceDao extends Dao { * @param pageLink the page link * @return the list of device objects */ - List findDevicesByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, TextPageLink pageLink); + PageData findDevicesByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, PageLink pageLink); /** diff --git a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceServiceImpl.java index 872e03a387..ec6d85e0d2 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceServiceImpl.java @@ -38,8 +38,8 @@ import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.DeviceId; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.relation.EntityRelation; import org.thingsboard.server.common.data.relation.EntitySearchDirection; import org.thingsboard.server.common.data.security.DeviceCredentials; @@ -180,22 +180,20 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe } @Override - public TextPageData findDevicesByTenantId(TenantId tenantId, TextPageLink pageLink) { + public PageData findDevicesByTenantId(TenantId tenantId, PageLink pageLink) { log.trace("Executing findDevicesByTenantId, tenantId [{}], pageLink [{}]", tenantId, pageLink); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); - validatePageLink(pageLink, INCORRECT_PAGE_LINK + pageLink); - List devices = deviceDao.findDevicesByTenantId(tenantId.getId(), pageLink); - return new TextPageData<>(devices, pageLink); + validatePageLink(pageLink); + return deviceDao.findDevicesByTenantId(tenantId.getId(), pageLink); } @Override - public TextPageData findDevicesByTenantIdAndType(TenantId tenantId, String type, TextPageLink pageLink) { + public PageData findDevicesByTenantIdAndType(TenantId tenantId, String type, PageLink pageLink) { log.trace("Executing findDevicesByTenantIdAndType, tenantId [{}], type [{}], pageLink [{}]", tenantId, type, pageLink); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); validateString(type, "Incorrect type " + type); - validatePageLink(pageLink, INCORRECT_PAGE_LINK + pageLink); - List devices = deviceDao.findDevicesByTenantIdAndType(tenantId.getId(), type, pageLink); - return new TextPageData<>(devices, pageLink); + validatePageLink(pageLink); + return deviceDao.findDevicesByTenantIdAndType(tenantId.getId(), type, pageLink); } @Override @@ -215,24 +213,22 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe } @Override - public TextPageData findDevicesByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, TextPageLink pageLink) { + public PageData findDevicesByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, PageLink pageLink) { log.trace("Executing findDevicesByTenantIdAndCustomerId, tenantId [{}], customerId [{}], pageLink [{}]", tenantId, customerId, pageLink); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); validateId(customerId, INCORRECT_CUSTOMER_ID + customerId); - validatePageLink(pageLink, INCORRECT_PAGE_LINK + pageLink); - List devices = deviceDao.findDevicesByTenantIdAndCustomerId(tenantId.getId(), customerId.getId(), pageLink); - return new TextPageData<>(devices, pageLink); + validatePageLink(pageLink); + return deviceDao.findDevicesByTenantIdAndCustomerId(tenantId.getId(), customerId.getId(), pageLink); } @Override - public TextPageData findDevicesByTenantIdAndCustomerIdAndType(TenantId tenantId, CustomerId customerId, String type, TextPageLink pageLink) { + public PageData findDevicesByTenantIdAndCustomerIdAndType(TenantId tenantId, CustomerId customerId, String type, PageLink pageLink) { log.trace("Executing findDevicesByTenantIdAndCustomerIdAndType, tenantId [{}], customerId [{}], type [{}], pageLink [{}]", tenantId, customerId, type, pageLink); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); validateId(customerId, INCORRECT_CUSTOMER_ID + customerId); validateString(type, "Incorrect type " + type); - validatePageLink(pageLink, INCORRECT_PAGE_LINK + pageLink); - List devices = deviceDao.findDevicesByTenantIdAndCustomerIdAndType(tenantId.getId(), customerId.getId(), type, pageLink); - return new TextPageData<>(devices, pageLink); + validatePageLink(pageLink); + return deviceDao.findDevicesByTenantIdAndCustomerIdAndType(tenantId.getId(), customerId.getId(), type, pageLink); } @Override @@ -348,7 +344,7 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe new PaginatedRemover() { @Override - protected List findEntities(TenantId tenantId, TenantId id, TextPageLink pageLink) { + protected PageData findEntities(TenantId tenantId, TenantId id, PageLink pageLink) { return deviceDao.findDevicesByTenantId(id.getId(), pageLink); } @@ -361,7 +357,7 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe private PaginatedRemover customerDeviceUnasigner = new PaginatedRemover() { @Override - protected List findEntities(TenantId tenantId, CustomerId id, TextPageLink pageLink) { + protected PageData findEntities(TenantId tenantId, CustomerId id, PageLink pageLink) { return deviceDao.findDevicesByTenantIdAndCustomerId(tenantId.getId(), id.getId(), pageLink); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/entityview/EntityViewDao.java b/dao/src/main/java/org/thingsboard/server/dao/entityview/EntityViewDao.java index b839cac825..ebc101861f 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/entityview/EntityViewDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/entityview/EntityViewDao.java @@ -20,7 +20,8 @@ import org.thingsboard.server.common.data.Device; import org.thingsboard.server.common.data.EntitySubtype; import org.thingsboard.server.common.data.EntityView; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.Dao; import java.util.List; @@ -47,7 +48,7 @@ public interface EntityViewDao extends Dao { * @param pageLink the page link * @return the list of entity view objects */ - List findEntityViewsByTenantId(UUID tenantId, TextPageLink pageLink); + PageData findEntityViewsByTenantId(UUID tenantId, PageLink pageLink); /** * Find entity views by tenantId, type and page link. @@ -57,7 +58,7 @@ public interface EntityViewDao extends Dao { * @param pageLink the page link * @return the list of entity view objects */ - List findEntityViewsByTenantIdAndType(UUID tenantId, String type, TextPageLink pageLink); + PageData findEntityViewsByTenantIdAndType(UUID tenantId, String type, PageLink pageLink); /** * Find entity views by tenantId and entity view name. @@ -76,9 +77,9 @@ public interface EntityViewDao extends Dao { * @param pageLink the page link * @return the list of entity view objects */ - List findEntityViewsByTenantIdAndCustomerId(UUID tenantId, + PageData findEntityViewsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, - TextPageLink pageLink); + PageLink pageLink); /** * Find entity views by tenantId, customerId, type and page link. @@ -89,10 +90,10 @@ public interface EntityViewDao extends Dao { * @param pageLink the page link * @return the list of entity view objects */ - List findEntityViewsByTenantIdAndCustomerIdAndType(UUID tenantId, + PageData findEntityViewsByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, - TextPageLink pageLink); + PageLink pageLink); ListenableFuture> findEntityViewsByTenantIdAndEntityIdAsync(UUID tenantId, UUID entityId); diff --git a/dao/src/main/java/org/thingsboard/server/dao/entityview/EntityViewServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/entityview/EntityViewServiceImpl.java index e3142e216e..b0f323b2a6 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/entityview/EntityViewServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/entityview/EntityViewServiceImpl.java @@ -38,8 +38,8 @@ import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.EntityViewId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.relation.EntityRelation; import org.thingsboard.server.common.data.relation.EntitySearchDirection; import org.thingsboard.server.dao.customer.CustomerDao; @@ -142,48 +142,44 @@ public class EntityViewServiceImpl extends AbstractEntityService implements Enti } @Override - public TextPageData findEntityViewByTenantId(TenantId tenantId, TextPageLink pageLink) { + public PageData findEntityViewByTenantId(TenantId tenantId, PageLink pageLink) { log.trace("Executing findEntityViewsByTenantId, tenantId [{}], pageLink [{}]", tenantId, pageLink); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); - validatePageLink(pageLink, INCORRECT_PAGE_LINK + pageLink); - List entityViews = entityViewDao.findEntityViewsByTenantId(tenantId.getId(), pageLink); - return new TextPageData<>(entityViews, pageLink); + validatePageLink(pageLink); + return entityViewDao.findEntityViewsByTenantId(tenantId.getId(), pageLink); } @Override - public TextPageData findEntityViewByTenantIdAndType(TenantId tenantId, TextPageLink pageLink, String type) { + public PageData findEntityViewByTenantIdAndType(TenantId tenantId, PageLink pageLink, String type) { log.trace("Executing findEntityViewByTenantIdAndType, tenantId [{}], pageLink [{}], type [{}]", tenantId, pageLink, type); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); - validatePageLink(pageLink, INCORRECT_PAGE_LINK + pageLink); + validatePageLink(pageLink); validateString(type, "Incorrect type " + type); - List entityViews = entityViewDao.findEntityViewsByTenantIdAndType(tenantId.getId(), type, pageLink); - return new TextPageData<>(entityViews, pageLink); + return entityViewDao.findEntityViewsByTenantIdAndType(tenantId.getId(), type, pageLink); } @Override - public TextPageData findEntityViewsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, - TextPageLink pageLink) { + public PageData findEntityViewsByTenantIdAndCustomerId(TenantId tenantId, CustomerId customerId, + PageLink pageLink) { log.trace("Executing findEntityViewByTenantIdAndCustomerId, tenantId [{}], customerId [{}]," + " pageLink [{}]", tenantId, customerId, pageLink); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); validateId(customerId, INCORRECT_CUSTOMER_ID + customerId); - validatePageLink(pageLink, INCORRECT_PAGE_LINK + pageLink); - List entityViews = entityViewDao.findEntityViewsByTenantIdAndCustomerId(tenantId.getId(), + validatePageLink(pageLink); + return entityViewDao.findEntityViewsByTenantIdAndCustomerId(tenantId.getId(), customerId.getId(), pageLink); - return new TextPageData<>(entityViews, pageLink); } @Override - public TextPageData findEntityViewsByTenantIdAndCustomerIdAndType(TenantId tenantId, CustomerId customerId, TextPageLink pageLink, String type) { + public PageData findEntityViewsByTenantIdAndCustomerIdAndType(TenantId tenantId, CustomerId customerId, PageLink pageLink, String type) { log.trace("Executing findEntityViewsByTenantIdAndCustomerIdAndType, tenantId [{}], customerId [{}]," + " pageLink [{}], type [{}]", tenantId, customerId, pageLink, type); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); validateId(customerId, INCORRECT_CUSTOMER_ID + customerId); - validatePageLink(pageLink, INCORRECT_PAGE_LINK + pageLink); + validatePageLink(pageLink); validateString(type, "Incorrect type " + type); - List entityViews = entityViewDao.findEntityViewsByTenantIdAndCustomerIdAndType(tenantId.getId(), + return entityViewDao.findEntityViewsByTenantIdAndCustomerIdAndType(tenantId.getId(), customerId.getId(), type, pageLink); - return new TextPageData<>(entityViews, pageLink); } @Override @@ -335,7 +331,7 @@ public class EntityViewServiceImpl extends AbstractEntityService implements Enti private PaginatedRemover tenantEntityViewRemover = new PaginatedRemover() { @Override - protected List findEntities(TenantId tenantId, TenantId id, TextPageLink pageLink) { + protected PageData findEntities(TenantId tenantId, TenantId id, PageLink pageLink) { return entityViewDao.findEntityViewsByTenantId(id.getId(), pageLink); } @@ -347,7 +343,7 @@ public class EntityViewServiceImpl extends AbstractEntityService implements Enti private PaginatedRemover customerEntityViewsUnAssigner = new PaginatedRemover() { @Override - protected List findEntities(TenantId tenantId, CustomerId id, TextPageLink pageLink) { + protected PageData findEntities(TenantId tenantId, CustomerId id, PageLink pageLink) { return entityViewDao.findEntityViewsByTenantIdAndCustomerId(tenantId.getId(), id.getId(), pageLink); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/event/BaseEventService.java b/dao/src/main/java/org/thingsboard/server/dao/event/BaseEventService.java index 7691484d68..e3975c98b1 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/event/BaseEventService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/event/BaseEventService.java @@ -23,7 +23,7 @@ import org.springframework.stereotype.Service; import org.thingsboard.server.common.data.Event; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.dao.exception.DataValidationException; import org.thingsboard.server.dao.service.DataValidator; @@ -78,15 +78,13 @@ public class BaseEventService implements EventService { } @Override - public TimePageData findEvents(TenantId tenantId, EntityId entityId, TimePageLink pageLink) { - List events = eventDao.findEvents(tenantId.getId(), entityId, pageLink); - return new TimePageData<>(events, pageLink); + public PageData findEvents(TenantId tenantId, EntityId entityId, TimePageLink pageLink) { + return eventDao.findEvents(tenantId.getId(), entityId, pageLink); } @Override - public TimePageData findEvents(TenantId tenantId, EntityId entityId, String eventType, TimePageLink pageLink) { - List events = eventDao.findEvents(tenantId.getId(), entityId, eventType, pageLink); - return new TimePageData<>(events, pageLink); + public PageData findEvents(TenantId tenantId, EntityId entityId, String eventType, TimePageLink pageLink) { + return eventDao.findEvents(tenantId.getId(), entityId, eventType, pageLink); } @Override diff --git a/dao/src/main/java/org/thingsboard/server/dao/event/EventDao.java b/dao/src/main/java/org/thingsboard/server/dao/event/EventDao.java index bf1c56e92e..e6fc135a5c 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/event/EventDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/event/EventDao.java @@ -19,6 +19,7 @@ import com.google.common.util.concurrent.ListenableFuture; import org.thingsboard.server.common.data.Event; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.dao.Dao; @@ -74,7 +75,7 @@ public interface EventDao extends Dao { * @param pageLink the pageLink * @return the event list */ - List findEvents(UUID tenantId, EntityId entityId, TimePageLink pageLink); + PageData findEvents(UUID tenantId, EntityId entityId, TimePageLink pageLink); /** * Find events by tenantId, entityId, eventType and pageLink. @@ -85,7 +86,7 @@ public interface EventDao extends Dao { * @param pageLink the pageLink * @return the event list */ - List findEvents(UUID tenantId, EntityId entityId, String eventType, TimePageLink pageLink); + PageData findEvents(UUID tenantId, EntityId entityId, String eventType, TimePageLink pageLink); /** * Find latest events by tenantId, entityId and eventType. diff --git a/dao/src/main/java/org/thingsboard/server/dao/nosql/CassandraAbstractModelDao.java b/dao/src/main/java/org/thingsboard/server/dao/nosql/CassandraAbstractModelDao.java deleted file mode 100644 index a5580a6327..0000000000 --- a/dao/src/main/java/org/thingsboard/server/dao/nosql/CassandraAbstractModelDao.java +++ /dev/null @@ -1,195 +0,0 @@ -/** - * Copyright © 2016-2019 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.dao.nosql; - -import com.datastax.driver.core.ResultSet; -import com.datastax.driver.core.ResultSetFuture; -import com.datastax.driver.core.Statement; -import com.datastax.driver.core.querybuilder.QueryBuilder; -import com.datastax.driver.core.querybuilder.Select; -import com.datastax.driver.core.utils.UUIDs; -import com.datastax.driver.mapping.Mapper; -import com.datastax.driver.mapping.Result; -import com.google.common.base.Function; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; -import lombok.extern.slf4j.Slf4j; -import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.dao.Dao; -import org.thingsboard.server.dao.DaoUtil; -import org.thingsboard.server.dao.model.BaseEntity; -import org.thingsboard.server.dao.model.ModelConstants; -import org.thingsboard.server.dao.model.wrapper.EntityResultSet; - -import javax.annotation.Nullable; -import java.util.Collections; -import java.util.List; -import java.util.UUID; - -import static com.datastax.driver.core.querybuilder.QueryBuilder.eq; -import static com.datastax.driver.core.querybuilder.QueryBuilder.select; - -@Slf4j -public abstract class CassandraAbstractModelDao, D> extends CassandraAbstractDao implements Dao { - - protected abstract Class getColumnFamilyClass(); - - protected abstract String getColumnFamilyName(); - - protected E updateSearchTextIfPresent(E entity) { - return entity; - } - - protected Mapper getMapper() { - return cluster.getMapper(getColumnFamilyClass()); - } - - protected List findListByStatement(TenantId tenantId, Statement statement) { - List list = Collections.emptyList(); - if (statement != null) { - statement.setConsistencyLevel(cluster.getDefaultReadConsistencyLevel()); - ResultSet resultSet = executeRead(tenantId, statement); - Result result = getMapper().map(resultSet); - if (result != null) { - list = result.all(); - } - } - return list; - } - - protected ListenableFuture> findListByStatementAsync(TenantId tenantId, Statement statement) { - if (statement != null) { - statement.setConsistencyLevel(cluster.getDefaultReadConsistencyLevel()); - ResultSetFuture resultSetFuture = executeAsyncRead(tenantId, statement); - return Futures.transform(resultSetFuture, new Function>() { - @Nullable - @Override - public List apply(@Nullable ResultSet resultSet) { - Result result = getMapper().map(resultSet); - if (result != null) { - List entities = result.all(); - return DaoUtil.convertDataList(entities); - } else { - return Collections.emptyList(); - } - } - }); - } - return Futures.immediateFuture(Collections.emptyList()); - } - - protected E findOneByStatement(TenantId tenantId, Statement statement) { - E object = null; - if (statement != null) { - statement.setConsistencyLevel(cluster.getDefaultReadConsistencyLevel()); - ResultSet resultSet = executeRead(tenantId, statement); - Result result = getMapper().map(resultSet); - if (result != null) { - object = result.one(); - } - } - return object; - } - - protected ListenableFuture findOneByStatementAsync(TenantId tenantId, Statement statement) { - if (statement != null) { - statement.setConsistencyLevel(cluster.getDefaultReadConsistencyLevel()); - ResultSetFuture resultSetFuture = executeAsyncRead(tenantId, statement); - return Futures.transform(resultSetFuture, new Function() { - @Nullable - @Override - public D apply(@Nullable ResultSet resultSet) { - Result result = getMapper().map(resultSet); - if (result != null) { - E entity = result.one(); - return DaoUtil.getData(entity); - } else { - return null; - } - } - }); - } - return Futures.immediateFuture(null); - } - - protected Statement getSaveQuery(E dto) { - return getMapper().saveQuery(dto); - } - - protected EntityResultSet saveWithResult(TenantId tenantId, E entity) { - log.debug("Save entity {}", entity); - if (entity.getId() == null) { - entity.setId(UUIDs.timeBased()); - } else if (isDeleteOnSave()) { - removeById(tenantId, entity.getId()); - } - Statement saveStatement = getSaveQuery(entity); - saveStatement.setConsistencyLevel(cluster.getDefaultWriteConsistencyLevel()); - ResultSet resultSet = executeWrite(tenantId, saveStatement); - return new EntityResultSet<>(resultSet, entity); - } - - protected boolean isDeleteOnSave() { - return true; - } - - @Override - public D save(TenantId tenantId, D domain) { - E entity; - try { - entity = getColumnFamilyClass().getConstructor(domain.getClass()).newInstance(domain); - } catch (Exception e) { - log.error("Can't create entity for domain object {}", domain, e); - throw new IllegalArgumentException("Can't create entity for domain object {" + domain + "}", e); - } - entity = updateSearchTextIfPresent(entity); - log.debug("Saving entity {}", entity); - entity = saveWithResult(tenantId, entity).getEntity(); - return DaoUtil.getData(entity); - } - - @Override - public D findById(TenantId tenantId, UUID key) { - log.debug("Get entity by key {}", key); - Select.Where query = select().from(getColumnFamilyName()).where(eq(ModelConstants.ID_PROPERTY, key)); - log.trace("Execute query {}", query); - E entity = findOneByStatement(tenantId, query); - return DaoUtil.getData(entity); - } - - @Override - public ListenableFuture findByIdAsync(TenantId tenantId, UUID key) { - log.debug("Get entity by key {}", key); - Select.Where query = select().from(getColumnFamilyName()).where(eq(ModelConstants.ID_PROPERTY, key)); - log.trace("Execute query {}", query); - return findOneByStatementAsync(tenantId, query); - } - - @Override - public boolean removeById(TenantId tenantId, UUID key) { - Statement delete = QueryBuilder.delete().all().from(getColumnFamilyName()).where(eq(ModelConstants.ID_PROPERTY, key)); - log.debug("Remove request: {}", delete.toString()); - return executeWrite(tenantId, delete).wasApplied(); - } - - @Override - public List find(TenantId tenantId) { - log.debug("Get all entities from column family {}", getColumnFamilyName()); - List entities = findListByStatement(tenantId, QueryBuilder.select().all().from(getColumnFamilyName()).setConsistencyLevel(cluster.getDefaultReadConsistencyLevel())); - return DaoUtil.convertDataList(entities); - } - -} diff --git a/dao/src/main/java/org/thingsboard/server/dao/nosql/CassandraAbstractSearchTextDao.java b/dao/src/main/java/org/thingsboard/server/dao/nosql/CassandraAbstractSearchTextDao.java deleted file mode 100644 index a48bbfffff..0000000000 --- a/dao/src/main/java/org/thingsboard/server/dao/nosql/CassandraAbstractSearchTextDao.java +++ /dev/null @@ -1,83 +0,0 @@ -/** - * Copyright © 2016-2019 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.dao.nosql; - -import com.datastax.driver.core.querybuilder.Clause; -import com.datastax.driver.core.querybuilder.QueryBuilder; -import com.datastax.driver.core.querybuilder.Select; -import com.datastax.driver.core.querybuilder.Select.Where; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; -import org.thingsboard.server.dao.model.ModelConstants; -import org.thingsboard.server.dao.model.SearchTextEntity; - -import java.util.List; - -import static com.datastax.driver.core.querybuilder.QueryBuilder.eq; -import static com.datastax.driver.core.querybuilder.QueryBuilder.select; - -@Slf4j -public abstract class CassandraAbstractSearchTextDao, D> extends CassandraAbstractModelDao { - - @Override - protected E updateSearchTextIfPresent(E entity) { - if (entity.getSearchTextSource() != null) { - entity.setSearchText(entity.getSearchTextSource().toLowerCase()); - } else { - log.trace("Entity [{}] has null SearchTextSource", entity); - } - return entity; - } - - protected List findPageWithTextSearch(TenantId tenantId, String searchView, List clauses, TextPageLink pageLink) { - Select select = select().from(searchView); - Where query = select.where(); - for (Clause clause : clauses) { - query.and(clause); - } - query.limit(pageLink.getLimit()); - if (!StringUtils.isEmpty(pageLink.getTextOffset())) { - query.and(eq(ModelConstants.SEARCH_TEXT_PROPERTY, pageLink.getTextOffset())); - query.and(QueryBuilder.lt(ModelConstants.ID_PROPERTY, pageLink.getIdOffset())); - List result = findListByStatement(tenantId, query); - if (result.size() < pageLink.getLimit()) { - select = select().from(searchView); - query = select.where(); - for (Clause clause : clauses) { - query.and(clause); - } - query.and(QueryBuilder.gt(ModelConstants.SEARCH_TEXT_PROPERTY, pageLink.getTextOffset())); - if (!StringUtils.isEmpty(pageLink.getTextSearch())) { - query.and(QueryBuilder.lt(ModelConstants.SEARCH_TEXT_PROPERTY, pageLink.getTextSearchBound())); - } - int limit = pageLink.getLimit() - result.size(); - query.limit(limit); - result.addAll(findListByStatement(tenantId, query)); - } - return result; - } else if (!StringUtils.isEmpty(pageLink.getTextSearch())) { - query.and(QueryBuilder.gte(ModelConstants.SEARCH_TEXT_PROPERTY, pageLink.getTextSearch())); - query.and(QueryBuilder.lt(ModelConstants.SEARCH_TEXT_PROPERTY, pageLink.getTextSearchBound())); - return findListByStatement(tenantId, query); - } else { - return findListByStatement(tenantId, query); - } - } - - -} diff --git a/dao/src/main/java/org/thingsboard/server/dao/nosql/CassandraAbstractSearchTimeDao.java b/dao/src/main/java/org/thingsboard/server/dao/nosql/CassandraAbstractSearchTimeDao.java deleted file mode 100644 index 5489588fea..0000000000 --- a/dao/src/main/java/org/thingsboard/server/dao/nosql/CassandraAbstractSearchTimeDao.java +++ /dev/null @@ -1,107 +0,0 @@ -/** - * Copyright © 2016-2019 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.dao.nosql; - -import com.datastax.driver.core.querybuilder.Clause; -import com.datastax.driver.core.querybuilder.Ordering; -import com.datastax.driver.core.querybuilder.QueryBuilder; -import com.datastax.driver.core.querybuilder.Select; -import com.datastax.driver.core.querybuilder.Select.Where; -import com.datastax.driver.core.utils.UUIDs; -import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TimePageLink; -import org.thingsboard.server.dao.model.BaseEntity; -import org.thingsboard.server.dao.model.ModelConstants; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.UUID; - -import static com.datastax.driver.core.querybuilder.QueryBuilder.select; - -public abstract class CassandraAbstractSearchTimeDao, D> extends CassandraAbstractModelDao { - - - protected List findPageWithTimeSearch(TenantId tenantId, String searchView, List clauses, TimePageLink pageLink) { - return findPageWithTimeSearch(tenantId, searchView, clauses, Collections.emptyList(), pageLink); - } - - protected List findPageWithTimeSearch(TenantId tenantId, String searchView, List clauses, Ordering ordering, TimePageLink pageLink) { - return findPageWithTimeSearch(tenantId, searchView, clauses, Collections.singletonList(ordering), pageLink); - } - - protected List findPageWithTimeSearch(TenantId tenantId, String searchView, List clauses, List topLevelOrderings, TimePageLink pageLink) { - return findPageWithTimeSearch(tenantId, searchView, clauses, topLevelOrderings, pageLink, ModelConstants.ID_PROPERTY); - } - - protected List findPageWithTimeSearch(TenantId tenantId, String searchView, List clauses, TimePageLink pageLink, String idColumn) { - return findPageWithTimeSearch(tenantId, searchView, clauses, Collections.emptyList(), pageLink, idColumn); - } - - protected List findPageWithTimeSearch(TenantId tenantId, String searchView, List clauses, List topLevelOrderings, TimePageLink pageLink, String idColumn) { - return findListByStatement(tenantId, buildQuery(searchView, clauses, topLevelOrderings, pageLink, idColumn)); - } - - public static Where buildQuery(String searchView, List clauses, TimePageLink pageLink, String idColumn) { - return buildQuery(searchView, clauses, Collections.emptyList(), pageLink, idColumn); - } - - public static Where buildQuery(String searchView, List clauses, Ordering order, TimePageLink pageLink, String idColumn) { - return buildQuery(searchView, clauses, Collections.singletonList(order), pageLink, idColumn); - } - - public static Where buildQuery(String searchView, List clauses, List topLevelOrderings, TimePageLink pageLink, String idColumn) { - Select select = select().from(searchView); - Where query = select.where(); - for (Clause clause : clauses) { - query.and(clause); - } - query.limit(pageLink.getLimit()); - if (pageLink.isAscOrder()) { - if (pageLink.getIdOffset() != null) { - query.and(QueryBuilder.gt(idColumn, pageLink.getIdOffset())); - } else if (pageLink.getStartTime() != null) { - final UUID startOf = UUIDs.startOf(pageLink.getStartTime()); - query.and(QueryBuilder.gte(idColumn, startOf)); - } - if (pageLink.getEndTime() != null) { - final UUID endOf = UUIDs.endOf(pageLink.getEndTime()); - query.and(QueryBuilder.lte(idColumn, endOf)); - } - } else { - if (pageLink.getIdOffset() != null) { - query.and(QueryBuilder.lt(idColumn, pageLink.getIdOffset())); - } else if (pageLink.getEndTime() != null) { - final UUID endOf = UUIDs.endOf(pageLink.getEndTime()); - query.and(QueryBuilder.lte(idColumn, endOf)); - } - if (pageLink.getStartTime() != null) { - final UUID startOf = UUIDs.startOf(pageLink.getStartTime()); - query.and(QueryBuilder.gte(idColumn, startOf)); - } - } - List orderings = new ArrayList<>(topLevelOrderings); - if (pageLink.isAscOrder()) { - orderings.add(QueryBuilder.asc(idColumn)); - } else { - orderings.add(QueryBuilder.desc(idColumn)); - } - query.orderBy(orderings.toArray(new Ordering[orderings.size()])); - return query; - } - -} diff --git a/dao/src/main/java/org/thingsboard/server/dao/relation/RelationDao.java b/dao/src/main/java/org/thingsboard/server/dao/relation/RelationDao.java index 5e31cf79c0..f07ffc9986 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/relation/RelationDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/relation/RelationDao.java @@ -19,6 +19,7 @@ import com.google.common.util.concurrent.ListenableFuture; import org.thingsboard.server.common.data.EntityType; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.common.data.relation.EntityRelation; import org.thingsboard.server.common.data.relation.RelationTypeGroup; @@ -58,6 +59,6 @@ public interface RelationDao { ListenableFuture deleteOutboundRelationsAsync(TenantId tenantId, EntityId entity); - ListenableFuture> findRelations(TenantId tenantId, EntityId from, String relationType, RelationTypeGroup typeGroup, EntityType toType, TimePageLink pageLink); + ListenableFuture> findRelations(TenantId tenantId, EntityId from, String relationType, RelationTypeGroup typeGroup, EntityType toType, TimePageLink pageLink); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/rule/BaseRuleChainService.java b/dao/src/main/java/org/thingsboard/server/dao/rule/BaseRuleChainService.java index 3852ec175e..2e3d8f8a8d 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/rule/BaseRuleChainService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/rule/BaseRuleChainService.java @@ -27,8 +27,8 @@ import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.RuleChainId; import org.thingsboard.server.common.data.id.RuleNodeId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.relation.EntityRelation; import org.thingsboard.server.common.data.relation.RelationTypeGroup; import org.thingsboard.server.common.data.rule.NodeConnectionInfo; @@ -329,11 +329,10 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC } @Override - public TextPageData findTenantRuleChains(TenantId tenantId, TextPageLink pageLink) { + public PageData findTenantRuleChains(TenantId tenantId, PageLink pageLink) { Validator.validateId(tenantId, "Incorrect tenant id for search rule chain request."); - Validator.validatePageLink(pageLink, "Incorrect PageLink object for search rule chain request."); - List ruleChains = ruleChainDao.findRuleChainsByTenantId(tenantId.getId(), pageLink); - return new TextPageData<>(ruleChains, pageLink); + Validator.validatePageLink(pageLink); + return ruleChainDao.findRuleChainsByTenantId(tenantId.getId(), pageLink); } @Override @@ -411,7 +410,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC new PaginatedRemover() { @Override - protected List findEntities(TenantId tenantId, TenantId id, TextPageLink pageLink) { + protected PageData findEntities(TenantId tenantId, TenantId id, PageLink pageLink) { return ruleChainDao.findRuleChainsByTenantId(id.getId(), pageLink); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/rule/RuleChainDao.java b/dao/src/main/java/org/thingsboard/server/dao/rule/RuleChainDao.java index 0b1bcd633d..b711950250 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/rule/RuleChainDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/rule/RuleChainDao.java @@ -15,7 +15,8 @@ */ package org.thingsboard.server.dao.rule; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.rule.RuleChain; import org.thingsboard.server.dao.Dao; @@ -34,6 +35,6 @@ public interface RuleChainDao extends Dao { * @param pageLink the page link * @return the list of rule chain objects */ - List findRuleChainsByTenantId(UUID tenantId, TextPageLink pageLink); + PageData findRuleChainsByTenantId(UUID tenantId, PageLink pageLink); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/service/PaginatedRemover.java b/dao/src/main/java/org/thingsboard/server/dao/service/PaginatedRemover.java index e87ee504c5..b806a48c88 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/service/PaginatedRemover.java +++ b/dao/src/main/java/org/thingsboard/server/dao/service/PaginatedRemover.java @@ -17,7 +17,8 @@ package org.thingsboard.server.dao.service; import org.thingsboard.server.common.data.id.IdBased; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import java.util.List; import java.util.UUID; @@ -27,23 +28,18 @@ public abstract class PaginatedRemover> { private static final int DEFAULT_LIMIT = 100; public void removeEntities(TenantId tenantId, I id) { - TextPageLink pageLink = new TextPageLink(DEFAULT_LIMIT); + PageLink pageLink = new PageLink(DEFAULT_LIMIT); boolean hasNext = true; while (hasNext) { - List entities = findEntities(tenantId, id, pageLink); - for (D entity : entities) { + PageData entities = findEntities(tenantId, id, pageLink); + for (D entity : entities.getData()) { removeEntity(tenantId, entity); } - hasNext = entities.size() == pageLink.getLimit(); - if (hasNext) { - int index = entities.size() - 1; - UUID idOffset = entities.get(index).getUuidId(); - pageLink.setIdOffset(idOffset); - } + hasNext = entities.hasNext(); } } - protected abstract List findEntities(TenantId tenantId,I id, TextPageLink pageLink); + protected abstract PageData findEntities(TenantId tenantId, I id, PageLink pageLink); protected abstract void removeEntity(TenantId tenantId, D entity); diff --git a/dao/src/main/java/org/thingsboard/server/dao/service/TimePaginatedRemover.java b/dao/src/main/java/org/thingsboard/server/dao/service/TimePaginatedRemover.java index 8d0a7f87e9..cd922f2653 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/service/TimePaginatedRemover.java +++ b/dao/src/main/java/org/thingsboard/server/dao/service/TimePaginatedRemover.java @@ -17,6 +17,7 @@ package org.thingsboard.server.dao.service; import org.thingsboard.server.common.data.id.IdBased; import org.thingsboard.server.common.data.id.TenantId; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import java.util.List; @@ -30,20 +31,15 @@ public abstract class TimePaginatedRemover> { TimePageLink pageLink = new TimePageLink(DEFAULT_LIMIT); boolean hasNext = true; while (hasNext) { - List entities = findEntities(tenantId, id, pageLink); - for (D entity : entities) { + PageData entities = findEntities(tenantId, id, pageLink); + for (D entity : entities.getData()) { removeEntity(tenantId, entity); } - hasNext = entities.size() == pageLink.getLimit(); - if (hasNext) { - int index = entities.size() - 1; - UUID idOffset = entities.get(index).getUuidId(); - pageLink.setIdOffset(idOffset); - } + hasNext = entities.hasNext(); } } - protected abstract List findEntities(TenantId tenantId, I id, TimePageLink pageLink); + protected abstract PageData findEntities(TenantId tenantId, I id, TimePageLink pageLink); protected abstract void removeEntity(TenantId tenantId, D entity); diff --git a/dao/src/main/java/org/thingsboard/server/dao/service/Validator.java b/dao/src/main/java/org/thingsboard/server/dao/service/Validator.java index ac3ec54eed..528edb8747 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/service/Validator.java +++ b/dao/src/main/java/org/thingsboard/server/dao/service/Validator.java @@ -17,7 +17,7 @@ package org.thingsboard.server.dao.service; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.UUIDBased; -import org.thingsboard.server.common.data.page.BasePageLink; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.exception.IncorrectParameterException; import java.util.List; @@ -116,9 +116,13 @@ public class Validator { * @param pageLink the page link * @param errorMessage the error message for exception */ - public static void validatePageLink(BasePageLink pageLink, String errorMessage) { - if (pageLink == null || pageLink.getLimit() < 1 || (pageLink.getIdOffset() != null && pageLink.getIdOffset().version() != 1)) { - throw new IncorrectParameterException(errorMessage); + public static void validatePageLink(PageLink pageLink) { + if (pageLink == null) { + throw new IncorrectParameterException("Page link must be specified."); + } else if (pageLink.getPageSize() < 1) { + throw new IncorrectParameterException("Incorrect page link page size '"+pageLink.getPageSize()+"'. Page size must be greater than zero."); + } else if (pageLink.getPage() < 0) { + throw new IncorrectParameterException("Incorrect page link page '"+pageLink.getPage()+"'. Page must be positive integer."); } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractSearchTimeDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractSearchTimeDao.java index 0066696de1..a73f73f615 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractSearchTimeDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractSearchTimeDao.java @@ -38,51 +38,19 @@ public abstract class JpaAbstractSearchTimeDao, D> exten return new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) { - List predicates; - if (pageLink.isAscOrder()) { - predicates = createAscPredicates(pageLink, idColumn, root, criteriaBuilder); - } else { - predicates = createDescPredicates(pageLink, idColumn, root, criteriaBuilder); + List predicates = new ArrayList<>(); + if (pageLink.getStartTime() != null) { + UUID startOf = UUIDs.startOf(pageLink.getStartTime()); + Predicate lowerBound = criteriaBuilder.greaterThanOrEqualTo(root.get(idColumn), UUIDConverter.fromTimeUUID(startOf)); + predicates.add(lowerBound); + } + if (pageLink.getEndTime() != null) { + UUID endOf = UUIDs.endOf(pageLink.getEndTime()); + Predicate upperBound = criteriaBuilder.lessThanOrEqualTo(root.get(idColumn), UUIDConverter.fromTimeUUID(endOf)); + predicates.add(upperBound); } return criteriaBuilder.and(predicates.toArray(new Predicate[0])); } }; } - - private static List createAscPredicates(TimePageLink pageLink, String idColumn, Root root, CriteriaBuilder criteriaBuilder) { - List predicates = new ArrayList<>(); - if (pageLink.getIdOffset() != null) { - Predicate lowerBound = criteriaBuilder.greaterThan(root.get(idColumn), UUIDConverter.fromTimeUUID(pageLink.getIdOffset())); - predicates.add(lowerBound); - } else if (pageLink.getStartTime() != null) { - UUID startOf = UUIDs.startOf(pageLink.getStartTime()); - Predicate lowerBound = criteriaBuilder.greaterThanOrEqualTo(root.get(idColumn), UUIDConverter.fromTimeUUID(startOf)); - predicates.add(lowerBound); - } - if (pageLink.getEndTime() != null) { - UUID endOf = UUIDs.endOf(pageLink.getEndTime()); - Predicate upperBound = criteriaBuilder.lessThanOrEqualTo(root.get(idColumn), UUIDConverter.fromTimeUUID(endOf)); - predicates.add(upperBound); - } - return predicates; - } - - private static List createDescPredicates(TimePageLink pageLink, String idColumn, Root root, CriteriaBuilder criteriaBuilder) { - List predicates = new ArrayList<>(); - if (pageLink.getIdOffset() != null) { - Predicate lowerBound = criteriaBuilder.lessThan(root.get(idColumn), UUIDConverter.fromTimeUUID(pageLink.getIdOffset())); - predicates.add(lowerBound); - } else if (pageLink.getEndTime() != null) { - UUID endOf = UUIDs.endOf(pageLink.getEndTime()); - Predicate lowerBound = criteriaBuilder.lessThanOrEqualTo(root.get(idColumn), UUIDConverter.fromTimeUUID(endOf)); - predicates.add(lowerBound); - } - if (pageLink.getStartTime() != null) { - UUID startOf = UUIDs.startOf(pageLink.getStartTime()); - Predicate upperBound = criteriaBuilder.greaterThanOrEqualTo(root.get(idColumn), UUIDConverter.fromTimeUUID(startOf)); - predicates.add(upperBound); - } - return predicates; - } - } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java index 4762c5c4ec..5f4259dd8f 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java @@ -30,6 +30,7 @@ import org.thingsboard.server.common.data.alarm.AlarmQuery; import org.thingsboard.server.common.data.alarm.AlarmSearchStatus; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.relation.EntityRelation; import org.thingsboard.server.common.data.relation.RelationTypeGroup; import org.thingsboard.server.dao.DaoUtil; @@ -92,7 +93,7 @@ public class JpaAlarmDao extends JpaAbstractDao implements A } @Override - public ListenableFuture> findAlarms(TenantId tenantId, AlarmQuery query) { + public ListenableFuture> findAlarms(TenantId tenantId, AlarmQuery query) { log.trace("Try to find alarms by entity [{}], status [{}] and pageLink [{}]", query.getAffectedEntityId(), query.getStatus(), query.getPageLink()); EntityId affectedEntity = query.getAffectedEntityId(); String searchStatusName; @@ -104,15 +105,17 @@ public class JpaAlarmDao extends JpaAbstractDao implements A searchStatusName = query.getStatus().name(); } String relationType = BaseAlarmService.ALARM_RELATION_PREFIX + searchStatusName; - ListenableFuture> relations = relationDao.findRelations(tenantId, affectedEntity, relationType, RelationTypeGroup.ALARM, EntityType.ALARM, query.getPageLink()); + ListenableFuture> relations = relationDao.findRelations(tenantId, affectedEntity, relationType, RelationTypeGroup.ALARM, EntityType.ALARM, query.getPageLink()); return Futures.transformAsync(relations, input -> { - List> alarmFutures = new ArrayList<>(input.size()); - for (EntityRelation relation : input) { + List> alarmFutures = new ArrayList<>(input.getData().size()); + for (EntityRelation relation : input.getData()) { alarmFutures.add(Futures.transform( findAlarmByIdAsync(tenantId, relation.getTo().getId()), AlarmInfo::new)); } - return Futures.successfulAsList(alarmFutures); + return Futures.transform(Futures.successfulAsList(alarmFutures), alarmInfos -> { + return new PageData(alarmInfos, input.getTotalPages(), input.getTotalElements(), input.hasNext()); + }); }); } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/asset/AssetRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/asset/AssetRepository.java index f5e98253b7..de21137286 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/asset/AssetRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/asset/AssetRepository.java @@ -15,9 +15,11 @@ */ package org.thingsboard.server.dao.sql.asset; +import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import org.thingsboard.server.dao.model.sql.AssetEntity; import org.thingsboard.server.dao.util.SqlDao; @@ -28,24 +30,20 @@ import java.util.List; * Created by Valerii Sosliuk on 5/21/2017. */ @SqlDao -public interface AssetRepository extends CrudRepository { +public interface AssetRepository extends PagingAndSortingRepository { @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + - "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + - "AND a.id > :idOffset ORDER BY a.id") - List findByTenantId(@Param("tenantId") String tenantId, + "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))") + Page findByTenantId(@Param("tenantId") String tenantId, @Param("textSearch") String textSearch, - @Param("idOffset") String idOffset, Pageable pageable); @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + "AND a.customerId = :customerId " + - "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + - "AND a.id > :idOffset ORDER BY a.id") - List findByTenantIdAndCustomerId(@Param("tenantId") String tenantId, + "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))") + Page findByTenantIdAndCustomerId(@Param("tenantId") String tenantId, @Param("customerId") String customerId, @Param("textSearch") String textSearch, - @Param("idOffset") String idOffset, Pageable pageable); List findByTenantIdAndIdIn(String tenantId, List assetIds); @@ -56,23 +54,19 @@ public interface AssetRepository extends CrudRepository { @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + "AND a.type = :type " + - "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + - "AND a.id > :idOffset ORDER BY a.id") - List findByTenantIdAndType(@Param("tenantId") String tenantId, + "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))") + Page findByTenantIdAndType(@Param("tenantId") String tenantId, @Param("type") String type, @Param("textSearch") String textSearch, - @Param("idOffset") String idOffset, Pageable pageable); @Query("SELECT a FROM AssetEntity a WHERE a.tenantId = :tenantId " + "AND a.customerId = :customerId AND a.type = :type " + - "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + - "AND a.id > :idOffset ORDER BY a.id") - List findByTenantIdAndCustomerIdAndType(@Param("tenantId") String tenantId, + "AND LOWER(a.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))") + Page findByTenantIdAndCustomerIdAndType(@Param("tenantId") String tenantId, @Param("customerId") String customerId, @Param("type") String type, @Param("textSearch") String textSearch, - @Param("idOffset") String idOffset, Pageable pageable); @Query("SELECT DISTINCT a.type FROM AssetEntity a WHERE a.tenantId = :tenantId") diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java index c600efcdf3..576df99566 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java @@ -24,7 +24,8 @@ 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.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.DaoUtil; import org.thingsboard.server.dao.asset.AssetDao; import org.thingsboard.server.dao.model.sql.AssetEntity; @@ -63,13 +64,12 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao im } @Override - public List findAssetsByTenantId(UUID tenantId, TextPageLink pageLink) { - return DaoUtil.convertDataList(assetRepository + public PageData findAssetsByTenantId(UUID tenantId, PageLink pageLink) { + return DaoUtil.toPageData(assetRepository .findByTenantId( fromTimeUUID(tenantId), Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } @Override @@ -79,14 +79,13 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao im } @Override - public List findAssetsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) { - return DaoUtil.convertDataList(assetRepository + public PageData findAssetsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, PageLink pageLink) { + return DaoUtil.toPageData(assetRepository .findByTenantIdAndCustomerId( fromTimeUUID(tenantId), fromTimeUUID(customerId), Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } @Override @@ -102,26 +101,24 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao im } @Override - public List findAssetsByTenantIdAndType(UUID tenantId, String type, TextPageLink pageLink) { - return DaoUtil.convertDataList(assetRepository + public PageData findAssetsByTenantIdAndType(UUID tenantId, String type, PageLink pageLink) { + return DaoUtil.toPageData(assetRepository .findByTenantIdAndType( fromTimeUUID(tenantId), type, Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } @Override - public List findAssetsByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, TextPageLink pageLink) { - return DaoUtil.convertDataList(assetRepository + public PageData findAssetsByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, PageLink pageLink) { + return DaoUtil.toPageData(assetRepository .findByTenantIdAndCustomerIdAndType( fromTimeUUID(tenantId), fromTimeUUID(customerId), type, Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } @Override diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/audit/JpaAuditLogDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/audit/JpaAuditLogDao.java index d6f5498acc..91b0a16dd7 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/audit/JpaAuditLogDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/audit/JpaAuditLogDao.java @@ -30,6 +30,7 @@ import org.thingsboard.server.common.data.audit.AuditLog; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.UserId; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.dao.DaoUtil; import org.thingsboard.server.dao.audit.AuditLogDao; @@ -81,51 +82,30 @@ public class JpaAuditLogDao extends JpaAbstractDao imp } @Override - public ListenableFuture saveByTenantIdAndEntityId(AuditLog auditLog) { - return insertService.submit(() -> null); - } - - @Override - public ListenableFuture saveByTenantIdAndCustomerId(AuditLog auditLog) { - return insertService.submit(() -> null); - } - - @Override - public ListenableFuture saveByTenantIdAndUserId(AuditLog auditLog) { - return insertService.submit(() -> null); - } - - @Override - public ListenableFuture savePartitionsByTenantId(AuditLog auditLog) { - return insertService.submit(() -> null); - } - - @Override - public List findAuditLogsByTenantIdAndEntityId(UUID tenantId, EntityId entityId, TimePageLink pageLink) { + public PageData findAuditLogsByTenantIdAndEntityId(UUID tenantId, EntityId entityId, TimePageLink pageLink) { return findAuditLogs(tenantId, entityId, null, null, pageLink); } @Override - public List findAuditLogsByTenantIdAndCustomerId(UUID tenantId, CustomerId customerId, TimePageLink pageLink) { + public PageData findAuditLogsByTenantIdAndCustomerId(UUID tenantId, CustomerId customerId, TimePageLink pageLink) { return findAuditLogs(tenantId, null, customerId, null, pageLink); } @Override - public List findAuditLogsByTenantIdAndUserId(UUID tenantId, UserId userId, TimePageLink pageLink) { + public PageData findAuditLogsByTenantIdAndUserId(UUID tenantId, UserId userId, TimePageLink pageLink) { return findAuditLogs(tenantId, null, null, userId, pageLink); } @Override - public List findAuditLogsByTenantId(UUID tenantId, TimePageLink pageLink) { + public PageData findAuditLogsByTenantId(UUID tenantId, TimePageLink pageLink) { return findAuditLogs(tenantId, null, null, null, pageLink); } - private List findAuditLogs(UUID tenantId, EntityId entityId, CustomerId customerId, UserId userId, TimePageLink pageLink) { + private PageData findAuditLogs(UUID tenantId, EntityId entityId, CustomerId customerId, UserId userId, TimePageLink pageLink) { Specification timeSearchSpec = JpaAbstractSearchTimeDao.getTimeSearchPageSpec(pageLink, "id"); Specification fieldsSpec = getEntityFieldsSpec(tenantId, entityId, customerId, userId); - Sort.Direction sortDirection = pageLink.isAscOrder() ? Sort.Direction.ASC : Sort.Direction.DESC; - Pageable pageable = new PageRequest(0, pageLink.getLimit(), sortDirection, ID_PROPERTY); - return DaoUtil.convertDataList(auditLogRepository.findAll(where(timeSearchSpec).and(fieldsSpec), pageable).getContent()); + Pageable pageable = DaoUtil.toPageable(pageLink); + return DaoUtil.toPageData(auditLogRepository.findAll(where(timeSearchSpec).and(fieldsSpec), pageable)); } private Specification getEntityFieldsSpec(UUID tenantId, EntityId entityId, CustomerId customerId, UserId userId) { diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/component/ComponentDescriptorRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/component/ComponentDescriptorRepository.java index 997c458606..23e51976c0 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/component/ComponentDescriptorRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/component/ComponentDescriptorRepository.java @@ -15,9 +15,11 @@ */ package org.thingsboard.server.dao.sql.component; +import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import org.thingsboard.server.common.data.plugin.ComponentScope; import org.thingsboard.server.common.data.plugin.ComponentType; @@ -30,25 +32,21 @@ import java.util.List; * Created by Valerii Sosliuk on 5/6/2017. */ @SqlDao -public interface ComponentDescriptorRepository extends CrudRepository { +public interface ComponentDescriptorRepository extends PagingAndSortingRepository { ComponentDescriptorEntity findByClazz(String clazz); @Query("SELECT cd FROM ComponentDescriptorEntity cd WHERE cd.type = :type " + - "AND LOWER(cd.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + - "AND cd.id > :idOffset ORDER BY cd.id") - List findByType(@Param("type") ComponentType type, + "AND LOWER(cd.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))") + Page findByType(@Param("type") ComponentType type, @Param("textSearch") String textSearch, - @Param("idOffset") String idOffset, Pageable pageable); @Query("SELECT cd FROM ComponentDescriptorEntity cd WHERE cd.type = :type " + - "AND cd.scope = :scope AND LOWER(cd.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + - "AND cd.id > :idOffset ORDER BY cd.id") - List findByScopeAndType(@Param("type") ComponentType type, + "AND cd.scope = :scope AND LOWER(cd.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))") + Page findByScopeAndType(@Param("type") ComponentType type, @Param("scope") ComponentScope scope, @Param("textSearch") String textSearch, - @Param("idOffset") String idOffset, Pageable pageable); void deleteByClazz(String clazz); diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/component/JpaBaseComponentDescriptorDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/component/JpaBaseComponentDescriptorDao.java index c66ea9c5cc..fa47712d14 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/component/JpaBaseComponentDescriptorDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/component/JpaBaseComponentDescriptorDao.java @@ -24,7 +24,8 @@ import org.springframework.transaction.annotation.Transactional; import org.thingsboard.server.common.data.UUIDConverter; import org.thingsboard.server.common.data.id.ComponentDescriptorId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.plugin.ComponentDescriptor; import org.thingsboard.server.common.data.plugin.ComponentScope; import org.thingsboard.server.common.data.plugin.ComponentType; @@ -83,24 +84,22 @@ public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao findByTypeAndPageLink(TenantId tenantId, ComponentType type, TextPageLink pageLink) { - return DaoUtil.convertDataList(componentDescriptorRepository + public PageData findByTypeAndPageLink(TenantId tenantId, ComponentType type, PageLink pageLink) { + return DaoUtil.toPageData(componentDescriptorRepository .findByType( type, Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } @Override - public List findByScopeAndTypeAndPageLink(TenantId tenantId, ComponentScope scope, ComponentType type, TextPageLink pageLink) { - return DaoUtil.convertDataList(componentDescriptorRepository + public PageData findByScopeAndTypeAndPageLink(TenantId tenantId, ComponentScope scope, ComponentType type, PageLink pageLink) { + return DaoUtil.toPageData(componentDescriptorRepository .findByScopeAndType( type, scope, Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } @Override diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/customer/CustomerRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/customer/CustomerRepository.java index c21611686e..92e82a1189 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/customer/CustomerRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/customer/CustomerRepository.java @@ -15,9 +15,11 @@ */ package org.thingsboard.server.dao.sql.customer; +import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import org.thingsboard.server.dao.model.sql.CustomerEntity; import org.thingsboard.server.dao.util.SqlDao; @@ -28,14 +30,12 @@ import java.util.List; * Created by Valerii Sosliuk on 5/6/2017. */ @SqlDao -public interface CustomerRepository extends CrudRepository { +public interface CustomerRepository extends PagingAndSortingRepository { @Query("SELECT c FROM CustomerEntity c WHERE c.tenantId = :tenantId " + - "AND LOWER(c.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + - "AND c.id > :idOffset ORDER BY c.id") - List findByTenantId(@Param("tenantId") String tenantId, + "AND LOWER(c.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))") + Page findByTenantId(@Param("tenantId") String tenantId, @Param("textSearch") String textSearch, - @Param("idOffset") String idOffset, Pageable pageable); CustomerEntity findByTenantIdAndTitle(String tenantId, String title); diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDao.java index 33b4e34479..aa3b491a01 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDao.java @@ -21,7 +21,8 @@ import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.Customer; import org.thingsboard.server.common.data.UUIDConverter; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.DaoUtil; import org.thingsboard.server.dao.customer.CustomerDao; import org.thingsboard.server.dao.model.sql.CustomerEntity; @@ -56,12 +57,11 @@ public class JpaCustomerDao extends JpaAbstractSearchTextDao findCustomersByTenantId(UUID tenantId, TextPageLink pageLink) { - return DaoUtil.convertDataList(customerRepository.findByTenantId( + public PageData findCustomersByTenantId(UUID tenantId, PageLink pageLink) { + return DaoUtil.toPageData(customerRepository.findByTenantId( UUIDConverter.fromTimeUUID(tenantId), Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } @Override diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/DashboardInfoRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/DashboardInfoRepository.java index a6f883e097..34b2937150 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/DashboardInfoRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/DashboardInfoRepository.java @@ -15,9 +15,11 @@ */ 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.Query; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import org.thingsboard.server.dao.model.sql.DashboardInfoEntity; import org.thingsboard.server.dao.util.SqlDao; @@ -28,14 +30,12 @@ import java.util.List; * Created by Valerii Sosliuk on 5/6/2017. */ @SqlDao -public interface DashboardInfoRepository extends CrudRepository { +public interface DashboardInfoRepository extends PagingAndSortingRepository { @Query("SELECT di FROM DashboardInfoEntity di WHERE di.tenantId = :tenantId " + - "AND LOWER(di.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " + - "AND di.id > :idOffset ORDER BY di.id") - List findByTenantId(@Param("tenantId") String tenantId, + "AND LOWER(di.searchText) LIKE LOWER(CONCAT(:searchText, '%'))") + Page findByTenantId(@Param("tenantId") String tenantId, @Param("searchText") String searchText, - @Param("idOffset") String idOffset, Pageable pageable); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardInfoDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardInfoDao.java index 8e3e0e0c1e..2b2dbf5820 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardInfoDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardInfoDao.java @@ -27,7 +27,8 @@ import org.thingsboard.server.common.data.EntityType; import org.thingsboard.server.common.data.UUIDConverter; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.common.data.relation.EntityRelation; import org.thingsboard.server.common.data.relation.RelationTypeGroup; @@ -70,27 +71,28 @@ public class JpaDashboardInfoDao extends JpaAbstractSearchTextDao findDashboardsByTenantId(UUID tenantId, TextPageLink pageLink) { - return DaoUtil.convertDataList(dashboardInfoRepository + public PageData findDashboardsByTenantId(UUID tenantId, PageLink pageLink) { + return DaoUtil.toPageData(dashboardInfoRepository .findByTenantId( UUIDConverter.fromTimeUUID(tenantId), Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } @Override - public ListenableFuture> findDashboardsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TimePageLink pageLink) { + public ListenableFuture> findDashboardsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TimePageLink pageLink) { log.debug("Try to find dashboards by tenantId [{}], customerId[{}] and pageLink [{}]", tenantId, customerId, pageLink); - ListenableFuture> relations = relationDao.findRelations(new TenantId(tenantId), new CustomerId(customerId), EntityRelation.CONTAINS_TYPE, RelationTypeGroup.DASHBOARD, EntityType.DASHBOARD, pageLink); + ListenableFuture> relations = relationDao.findRelations(new TenantId(tenantId), new CustomerId(customerId), EntityRelation.CONTAINS_TYPE, RelationTypeGroup.DASHBOARD, EntityType.DASHBOARD, pageLink); return Futures.transformAsync(relations, input -> { - List> dashboardFutures = new ArrayList<>(input.size()); - for (EntityRelation relation : input) { + List> dashboardFutures = new ArrayList<>(input.getData().size()); + for (EntityRelation relation : input.getData()) { dashboardFutures.add(findByIdAsync(new TenantId(tenantId), relation.getTo().getId())); } - return Futures.successfulAsList(dashboardFutures); + return Futures.transform(Futures.successfulAsList(dashboardFutures), dashboards -> { + return new PageData(dashboards, input.getTotalPages(), input.getTotalElements(), input.hasNext()); + }); }); } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java index 1c61b33f82..4021881b88 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java @@ -15,9 +15,11 @@ */ package org.thingsboard.server.dao.sql.device; +import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import org.thingsboard.server.dao.model.sql.DeviceEntity; import org.thingsboard.server.dao.util.SqlDao; @@ -28,47 +30,39 @@ import java.util.List; * Created by Valerii Sosliuk on 5/6/2017. */ @SqlDao -public interface DeviceRepository extends CrudRepository { +public interface DeviceRepository extends PagingAndSortingRepository { @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + "AND d.customerId = :customerId " + - "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " + - "AND d.id > :idOffset ORDER BY d.id") - List findByTenantIdAndCustomerId(@Param("tenantId") String tenantId, + "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:searchText, '%'))") + Page findByTenantIdAndCustomerId(@Param("tenantId") String tenantId, @Param("customerId") String customerId, @Param("searchText") String searchText, - @Param("idOffset") String idOffset, Pageable pageable); @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + - "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + - "AND d.id > :idOffset ORDER BY d.id") - List findByTenantId(@Param("tenantId") String tenantId, + "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))") + Page findByTenantId(@Param("tenantId") String tenantId, @Param("textSearch") String textSearch, - @Param("idOffset") String idOffset, Pageable pageable); @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + "AND d.type = :type " + - "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + - "AND d.id > :idOffset ORDER BY d.id") - List findByTenantIdAndType(@Param("tenantId") String tenantId, + "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))") + Page findByTenantIdAndType(@Param("tenantId") String tenantId, @Param("type") String type, @Param("textSearch") String textSearch, - @Param("idOffset") String idOffset, Pageable pageable); @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " + "AND d.customerId = :customerId " + "AND d.type = :type " + - "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + - "AND d.id > :idOffset ORDER BY d.id") - List findByTenantIdAndCustomerIdAndType(@Param("tenantId") String tenantId, + "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))") + Page findByTenantIdAndCustomerIdAndType(@Param("tenantId") String tenantId, @Param("customerId") String customerId, @Param("type") String type, @Param("textSearch") String textSearch, - @Param("idOffset") String idOffset, Pageable pageable); @Query("SELECT DISTINCT d.type FROM DeviceEntity d WHERE d.tenantId = :tenantId") diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceDao.java index be0b4b89df..cc195eb3d2 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceDao.java @@ -25,7 +25,8 @@ import org.thingsboard.server.common.data.EntitySubtype; import org.thingsboard.server.common.data.EntityType; import org.thingsboard.server.common.data.UUIDConverter; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.DaoUtil; import org.thingsboard.server.dao.device.DeviceDao; import org.thingsboard.server.dao.model.sql.DeviceEntity; @@ -64,13 +65,12 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao } @Override - public List findDevicesByTenantId(UUID tenantId, TextPageLink pageLink) { - return DaoUtil.convertDataList( + public PageData findDevicesByTenantId(UUID tenantId, PageLink pageLink) { + return DaoUtil.toPageData( deviceRepository.findByTenantId( fromTimeUUID(tenantId), Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } @Override @@ -79,14 +79,13 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao } @Override - public List findDevicesByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) { - return DaoUtil.convertDataList( + public PageData findDevicesByTenantIdAndCustomerId(UUID tenantId, UUID customerId, PageLink pageLink) { + return DaoUtil.toPageData( deviceRepository.findByTenantIdAndCustomerId( fromTimeUUID(tenantId), fromTimeUUID(customerId), Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } @Override @@ -102,26 +101,24 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao } @Override - public List findDevicesByTenantIdAndType(UUID tenantId, String type, TextPageLink pageLink) { - return DaoUtil.convertDataList( + public PageData findDevicesByTenantIdAndType(UUID tenantId, String type, PageLink pageLink) { + return DaoUtil.toPageData( deviceRepository.findByTenantIdAndType( fromTimeUUID(tenantId), type, Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } @Override - public List findDevicesByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, TextPageLink pageLink) { - return DaoUtil.convertDataList( + public PageData findDevicesByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, PageLink pageLink) { + return DaoUtil.toPageData( deviceRepository.findByTenantIdAndCustomerIdAndType( fromTimeUUID(tenantId), fromTimeUUID(customerId), type, Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } @Override diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/entityview/EntityViewRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/entityview/EntityViewRepository.java index f152e1f665..7d9d224f2b 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/entityview/EntityViewRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/entityview/EntityViewRepository.java @@ -15,9 +15,11 @@ */ package org.thingsboard.server.dao.sql.entityview; +import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import org.thingsboard.server.dao.model.sql.EntityViewEntity; import org.thingsboard.server.dao.util.SqlDao; @@ -28,46 +30,38 @@ import java.util.List; * Created by Victor Basanets on 8/31/2017. */ @SqlDao -public interface EntityViewRepository extends CrudRepository { +public interface EntityViewRepository extends PagingAndSortingRepository { @Query("SELECT e FROM EntityViewEntity e WHERE e.tenantId = :tenantId " + - "AND LOWER(e.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + - "AND e.id > :idOffset ORDER BY e.id") - List findByTenantId(@Param("tenantId") String tenantId, + "AND LOWER(e.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))") + Page findByTenantId(@Param("tenantId") String tenantId, @Param("textSearch") String textSearch, - @Param("idOffset") String idOffset, Pageable pageable); @Query("SELECT e FROM EntityViewEntity e WHERE e.tenantId = :tenantId " + "AND e.type = :type " + - "AND LOWER(e.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + - "AND e.id > :idOffset ORDER BY e.id") - List findByTenantIdAndType(@Param("tenantId") String tenantId, + "AND LOWER(e.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))") + Page findByTenantIdAndType(@Param("tenantId") String tenantId, @Param("type") String type, @Param("textSearch") String textSearch, - @Param("idOffset") String idOffset, Pageable pageable); @Query("SELECT e FROM EntityViewEntity e WHERE e.tenantId = :tenantId " + "AND e.customerId = :customerId " + - "AND LOWER(e.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " + - "AND e.id > :idOffset ORDER BY e.id") - List findByTenantIdAndCustomerId(@Param("tenantId") String tenantId, + "AND LOWER(e.searchText) LIKE LOWER(CONCAT(:searchText, '%'))") + Page findByTenantIdAndCustomerId(@Param("tenantId") String tenantId, @Param("customerId") String customerId, @Param("searchText") String searchText, - @Param("idOffset") String idOffset, Pageable pageable); @Query("SELECT e FROM EntityViewEntity e WHERE e.tenantId = :tenantId " + "AND e.customerId = :customerId " + "AND e.type = :type " + - "AND LOWER(e.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " + - "AND e.id > :idOffset ORDER BY e.id") - List findByTenantIdAndCustomerIdAndType(@Param("tenantId") String tenantId, + "AND LOWER(e.searchText) LIKE LOWER(CONCAT(:searchText, '%'))") + Page findByTenantIdAndCustomerIdAndType(@Param("tenantId") String tenantId, @Param("customerId") String customerId, @Param("type") String type, @Param("searchText") String searchText, - @Param("idOffset") String idOffset, Pageable pageable); EntityViewEntity findByTenantIdAndName(String tenantId, String name); diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/entityview/JpaEntityViewDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/entityview/JpaEntityViewDao.java index 981b239e62..a668cbda60 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/entityview/JpaEntityViewDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/entityview/JpaEntityViewDao.java @@ -25,7 +25,8 @@ import org.thingsboard.server.common.data.EntityType; import org.thingsboard.server.common.data.EntityView; import org.thingsboard.server.common.data.UUIDConverter; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.DaoUtil; import org.thingsboard.server.dao.entityview.EntityViewDao; import org.thingsboard.server.dao.model.sql.EntityViewEntity; @@ -64,24 +65,22 @@ public class JpaEntityViewDao extends JpaAbstractSearchTextDao findEntityViewsByTenantId(UUID tenantId, TextPageLink pageLink) { - return DaoUtil.convertDataList( + public PageData findEntityViewsByTenantId(UUID tenantId, PageLink pageLink) { + return DaoUtil.toPageData( entityViewRepository.findByTenantId( fromTimeUUID(tenantId), Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } @Override - public List findEntityViewsByTenantIdAndType(UUID tenantId, String type, TextPageLink pageLink) { - return DaoUtil.convertDataList( + public PageData findEntityViewsByTenantIdAndType(UUID tenantId, String type, PageLink pageLink) { + return DaoUtil.toPageData( entityViewRepository.findByTenantIdAndType( fromTimeUUID(tenantId), type, Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } @Override @@ -91,29 +90,27 @@ public class JpaEntityViewDao extends JpaAbstractSearchTextDao findEntityViewsByTenantIdAndCustomerId(UUID tenantId, - UUID customerId, - TextPageLink pageLink) { - return DaoUtil.convertDataList( + public PageData findEntityViewsByTenantIdAndCustomerId(UUID tenantId, + UUID customerId, + PageLink pageLink) { + return DaoUtil.toPageData( entityViewRepository.findByTenantIdAndCustomerId( fromTimeUUID(tenantId), fromTimeUUID(customerId), Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()) + DaoUtil.toPageable(pageLink) )); } @Override - public List findEntityViewsByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, TextPageLink pageLink) { - return DaoUtil.convertDataList( + public PageData findEntityViewsByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, PageLink pageLink) { + return DaoUtil.toPageData( entityViewRepository.findByTenantIdAndCustomerIdAndType( fromTimeUUID(tenantId), fromTimeUUID(customerId), type, Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()) + DaoUtil.toPageable(pageLink) )); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDao.java index c33cb6bf34..9c7e94243d 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDao.java @@ -31,6 +31,7 @@ import org.thingsboard.server.common.data.UUIDConverter; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.EventId; import org.thingsboard.server.common.data.id.TenantId; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.dao.DaoUtil; import org.thingsboard.server.dao.event.EventDao; @@ -107,17 +108,16 @@ public class JpaBaseEventDao extends JpaAbstractSearchTimeDao findEvents(UUID tenantId, EntityId entityId, TimePageLink pageLink) { + public PageData findEvents(UUID tenantId, EntityId entityId, TimePageLink pageLink) { return findEvents(tenantId, entityId, null, pageLink); } @Override - public List findEvents(UUID tenantId, EntityId entityId, String eventType, TimePageLink pageLink) { + public PageData findEvents(UUID tenantId, EntityId entityId, String eventType, TimePageLink pageLink) { Specification timeSearchSpec = JpaAbstractSearchTimeDao.getTimeSearchPageSpec(pageLink, "id"); Specification fieldsSpec = getEntityFieldsSpec(tenantId, entityId, eventType); - Sort.Direction sortDirection = pageLink.isAscOrder() ? Sort.Direction.ASC : Sort.Direction.DESC; - Pageable pageable = new PageRequest(0, pageLink.getLimit(), sortDirection, ID_PROPERTY); - return DaoUtil.convertDataList(eventRepository.findAll(where(timeSearchSpec).and(fieldsSpec), pageable).getContent()); + Pageable pageable = DaoUtil.toPageable(pageLink); + return DaoUtil.toPageData(eventRepository.findAll(where(timeSearchSpec).and(fieldsSpec), pageable)); } @Override diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/relation/JpaRelationDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/relation/JpaRelationDao.java index 9bce2d3dea..67f5621d83 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/relation/JpaRelationDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/relation/JpaRelationDao.java @@ -27,6 +27,8 @@ import org.thingsboard.server.common.data.EntityType; import org.thingsboard.server.common.data.UUIDConverter; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.SortOrder; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.common.data.relation.EntityRelation; import org.thingsboard.server.common.data.relation.RelationTypeGroup; @@ -185,13 +187,16 @@ public class JpaRelationDao extends JpaAbstractDaoListeningExecutorService imple } @Override - public ListenableFuture> findRelations(TenantId tenantId, EntityId from, String relationType, RelationTypeGroup typeGroup, EntityType childType, TimePageLink pageLink) { + public ListenableFuture> findRelations(TenantId tenantId, EntityId from, String relationType, RelationTypeGroup typeGroup, EntityType childType, TimePageLink pageLink) { Specification timeSearchSpec = JpaAbstractSearchTimeDao.getTimeSearchPageSpec(pageLink, "toId"); Specification fieldsSpec = getEntityFieldsSpec(from, relationType, typeGroup, childType); - Sort.Direction sortDirection = pageLink.isAscOrder() ? Sort.Direction.ASC : Sort.Direction.DESC; - Pageable pageable = new PageRequest(0, pageLink.getLimit(), sortDirection, "toId"); + Sort.Direction sortDirection = Sort.Direction.DESC; + if (pageLink.getSortOrder() != null) { + sortDirection = pageLink.getSortOrder().getDirection() == SortOrder.Direction.ASC ? Sort.Direction.ASC : Sort.Direction.DESC; + } + Pageable pageable = new PageRequest(pageLink.getPage(), pageLink.getPageSize(), sortDirection, "toId"); return service.submit(() -> - DaoUtil.convertDataList(relationRepository.findAll(where(timeSearchSpec).and(fieldsSpec), pageable).getContent())); + DaoUtil.toPageData(relationRepository.findAll(where(timeSearchSpec).and(fieldsSpec), pageable))); } private Specification getEntityFieldsSpec(EntityId from, String relationType, RelationTypeGroup typeGroup, EntityType childType) { diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleChainDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleChainDao.java index 3c26af35a0..dd1da8ef6e 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleChainDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleChainDao.java @@ -21,7 +21,8 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.UUIDConverter; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.rule.RuleChain; import org.thingsboard.server.dao.DaoUtil; import org.thingsboard.server.dao.model.sql.RuleChainEntity; @@ -54,13 +55,12 @@ public class JpaRuleChainDao extends JpaAbstractSearchTextDao findRuleChainsByTenantId(UUID tenantId, TextPageLink pageLink) { - return DaoUtil.convertDataList(ruleChainRepository + public PageData findRuleChainsByTenantId(UUID tenantId, PageLink pageLink) { + return DaoUtil.toPageData(ruleChainRepository .findByTenantId( UUIDConverter.fromTimeUUID(tenantId), Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/rule/RuleChainRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/rule/RuleChainRepository.java index b1e8200132..506b4c073f 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/rule/RuleChainRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/rule/RuleChainRepository.java @@ -15,9 +15,11 @@ */ package org.thingsboard.server.dao.sql.rule; +import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import org.thingsboard.server.dao.model.sql.RuleChainEntity; import org.thingsboard.server.dao.util.SqlDao; @@ -25,14 +27,12 @@ import org.thingsboard.server.dao.util.SqlDao; import java.util.List; @SqlDao -public interface RuleChainRepository extends CrudRepository { +public interface RuleChainRepository extends PagingAndSortingRepository { @Query("SELECT rc FROM RuleChainEntity rc WHERE rc.tenantId = :tenantId " + - "AND LOWER(rc.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " + - "AND rc.id > :idOffset ORDER BY rc.id") - List findByTenantId(@Param("tenantId") String tenantId, + "AND LOWER(rc.searchText) LIKE LOWER(CONCAT(:searchText, '%'))") + Page findByTenantId(@Param("tenantId") String tenantId, @Param("searchText") String searchText, - @Param("idOffset") String idOffset, Pageable pageable); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/tenant/JpaTenantDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/tenant/JpaTenantDao.java index 4b42e36fef..f77030c76a 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/tenant/JpaTenantDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/tenant/JpaTenantDao.java @@ -22,7 +22,8 @@ import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.UUIDConverter; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.DaoUtil; import org.thingsboard.server.dao.model.sql.TenantEntity; import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; @@ -55,12 +56,11 @@ public class JpaTenantDao extends JpaAbstractSearchTextDao } @Override - public List findTenantsByRegion(TenantId tenantId, String region, TextPageLink pageLink) { - return DaoUtil.convertDataList(tenantRepository + public PageData findTenantsByRegion(TenantId tenantId, String region, PageLink pageLink) { + return DaoUtil.toPageData(tenantRepository .findByRegionNextPage( region, Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/tenant/TenantRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/tenant/TenantRepository.java index 0aec76b112..cf6699cad2 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/tenant/TenantRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/tenant/TenantRepository.java @@ -15,9 +15,11 @@ */ package org.thingsboard.server.dao.sql.tenant; +import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import org.thingsboard.server.dao.model.sql.TenantEntity; import org.thingsboard.server.dao.util.SqlDao; @@ -28,13 +30,11 @@ import java.util.List; * Created by Valerii Sosliuk on 4/30/2017. */ @SqlDao -public interface TenantRepository extends CrudRepository { +public interface TenantRepository extends PagingAndSortingRepository { @Query("SELECT t FROM TenantEntity t WHERE t.region = :region " + - "AND LOWER(t.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + - "AND t.id > :idOffset ORDER BY t.id") - List findByRegionNextPage(@Param("region") String region, + "AND LOWER(t.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))") + Page findByRegionNextPage(@Param("region") String region, @Param("textSearch") String textSearch, - @Param("idOffset") String idOffset, Pageable pageable); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/user/JpaUserDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/user/JpaUserDao.java index 7468c47910..5cec2d4b80 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/user/JpaUserDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/user/JpaUserDao.java @@ -21,7 +21,8 @@ import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.security.Authority; import org.thingsboard.server.dao.DaoUtil; import org.thingsboard.server.dao.model.sql.UserEntity; @@ -62,29 +63,27 @@ public class JpaUserDao extends JpaAbstractSearchTextDao imple } @Override - public List findTenantAdmins(UUID tenantId, TextPageLink pageLink) { - return DaoUtil.convertDataList( + public PageData findTenantAdmins(UUID tenantId, PageLink pageLink) { + return DaoUtil.toPageData( userRepository .findUsersByAuthority( fromTimeUUID(tenantId), NULL_UUID_STR, - pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), Objects.toString(pageLink.getTextSearch(), ""), Authority.TENANT_ADMIN, - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } @Override - public List findCustomerUsers(UUID tenantId, UUID customerId, TextPageLink pageLink) { - return DaoUtil.convertDataList( + public PageData findCustomerUsers(UUID tenantId, UUID customerId, PageLink pageLink) { + return DaoUtil.toPageData( userRepository .findUsersByAuthority( fromTimeUUID(tenantId), fromTimeUUID(customerId), - pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()), Objects.toString(pageLink.getTextSearch(), ""), Authority.CUSTOMER_USER, - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/user/UserRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/user/UserRepository.java index de088ecbcb..f1b4692d3d 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/user/UserRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/user/UserRepository.java @@ -15,9 +15,11 @@ */ package org.thingsboard.server.dao.sql.user; +import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import org.thingsboard.server.common.data.security.Authority; import org.thingsboard.server.dao.model.sql.UserEntity; @@ -29,19 +31,17 @@ import java.util.List; * @author Valerii Sosliuk */ @SqlDao -public interface UserRepository extends CrudRepository { +public interface UserRepository extends PagingAndSortingRepository { UserEntity findByEmail(String email); @Query("SELECT u FROM UserEntity u WHERE u.tenantId = :tenantId " + "AND u.customerId = :customerId AND u.authority = :authority " + - "AND LOWER(u.searchText) LIKE LOWER(CONCAT(:searchText, '%'))" + - "AND u.id > :idOffset ORDER BY u.id") - List findUsersByAuthority(@Param("tenantId") String tenantId, + "AND LOWER(u.searchText) LIKE LOWER(CONCAT(:searchText, '%'))") + Page findUsersByAuthority(@Param("tenantId") String tenantId, @Param("customerId") String customerId, - @Param("idOffset") String idOffset, @Param("searchText") String searchText, @Param("authority") Authority authority, Pageable pageable); -} \ No newline at end of file +} diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDao.java index f03105f9b0..9bb1300a3d 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDao.java @@ -21,7 +21,8 @@ import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.UUIDConverter; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.widget.WidgetsBundle; import org.thingsboard.server.dao.DaoUtil; import org.thingsboard.server.dao.model.sql.WidgetsBundleEntity; @@ -61,36 +62,33 @@ public class JpaWidgetsBundleDao extends JpaAbstractSearchTextDao findSystemWidgetsBundles(TenantId tenantId, TextPageLink pageLink) { - return DaoUtil.convertDataList( + public PageData findSystemWidgetsBundles(TenantId tenantId, PageLink pageLink) { + return DaoUtil.toPageData( widgetsBundleRepository .findSystemWidgetsBundles( NULL_UUID_STR, Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } @Override - public List findTenantWidgetsBundlesByTenantId(UUID tenantId, TextPageLink pageLink) { - return DaoUtil.convertDataList( + public PageData findTenantWidgetsBundlesByTenantId(UUID tenantId, PageLink pageLink) { + return DaoUtil.toPageData( widgetsBundleRepository .findTenantWidgetsBundlesByTenantId( UUIDConverter.fromTimeUUID(tenantId), Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } @Override - public List findAllTenantWidgetsBundlesByTenantId(UUID tenantId, TextPageLink pageLink) { - return DaoUtil.convertDataList( + public PageData findAllTenantWidgetsBundlesByTenantId(UUID tenantId, PageLink pageLink) { + return DaoUtil.toPageData( widgetsBundleRepository .findAllTenantWidgetsBundlesByTenantId( UUIDConverter.fromTimeUUID(tenantId), NULL_UUID_STR, Objects.toString(pageLink.getTextSearch(), ""), - pageLink.getIdOffset() == null ? NULL_UUID_STR : UUIDConverter.fromTimeUUID(pageLink.getIdOffset()), - new PageRequest(0, pageLink.getLimit()))); + DaoUtil.toPageable(pageLink))); } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/widget/WidgetsBundleRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/widget/WidgetsBundleRepository.java index da923ec49b..e69bc6c2c9 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/widget/WidgetsBundleRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/widget/WidgetsBundleRepository.java @@ -15,9 +15,11 @@ */ package org.thingsboard.server.dao.sql.widget; +import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import org.thingsboard.server.dao.model.sql.WidgetsBundleEntity; import org.thingsboard.server.dao.util.SqlDao; @@ -28,32 +30,26 @@ import java.util.List; * Created by Valerii Sosliuk on 4/23/2017. */ @SqlDao -public interface WidgetsBundleRepository extends CrudRepository { +public interface WidgetsBundleRepository extends PagingAndSortingRepository { WidgetsBundleEntity findWidgetsBundleByTenantIdAndAlias(String tenantId, String alias); @Query("SELECT wb FROM WidgetsBundleEntity wb WHERE wb.tenantId = :systemTenantId " + - "AND LOWER(wb.searchText) LIKE LOWER(CONCAT(:searchText, '%')) " + - "AND wb.id > :idOffset ORDER BY wb.id") - List findSystemWidgetsBundles(@Param("systemTenantId") String systemTenantId, + "AND LOWER(wb.searchText) LIKE LOWER(CONCAT(:searchText, '%'))") + Page findSystemWidgetsBundles(@Param("systemTenantId") String systemTenantId, @Param("searchText") String searchText, - @Param("idOffset") String idOffset, Pageable pageable); @Query("SELECT wb FROM WidgetsBundleEntity wb WHERE wb.tenantId = :tenantId " + - "AND LOWER(wb.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + - "AND wb.id > :idOffset ORDER BY wb.id") - List findTenantWidgetsBundlesByTenantId(@Param("tenantId") String tenantId, + "AND LOWER(wb.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))") + Page findTenantWidgetsBundlesByTenantId(@Param("tenantId") String tenantId, @Param("textSearch") String textSearch, - @Param("idOffset") String idOffset, Pageable pageable); @Query("SELECT wb FROM WidgetsBundleEntity wb WHERE wb.tenantId IN (:tenantId, :nullTenantId) " + - "AND LOWER(wb.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " + - "AND wb.id > :idOffset ORDER BY wb.id") - List findAllTenantWidgetsBundlesByTenantId(@Param("tenantId") String tenantId, + "AND LOWER(wb.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))") + Page findAllTenantWidgetsBundlesByTenantId(@Param("tenantId") String tenantId, @Param("nullTenantId") String nullTenantId, @Param("textSearch") String textSearch, - @Param("idOffset") String idOffset, Pageable pageable); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantDao.java b/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantDao.java index cb0a6be5ce..d8cae38ad8 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantDao.java @@ -17,7 +17,8 @@ package org.thingsboard.server.dao.tenant; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.Dao; import java.util.List; @@ -39,6 +40,6 @@ public interface TenantDao extends Dao { * @param pageLink the page link * @return the list of tenant objects */ - List findTenantsByRegion(TenantId tenantId, String region, TextPageLink pageLink); + PageData findTenantsByRegion(TenantId tenantId, String region, PageLink pageLink); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java index e06e6b0b2c..5a8a59be44 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java @@ -23,8 +23,8 @@ import org.springframework.stereotype.Service; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.asset.AssetService; import org.thingsboard.server.dao.customer.CustomerService; import org.thingsboard.server.dao.dashboard.DashboardService; @@ -116,11 +116,10 @@ public class TenantServiceImpl extends AbstractEntityService implements TenantSe } @Override - public TextPageData findTenants(TextPageLink pageLink) { + public PageData findTenants(PageLink pageLink) { log.trace("Executing findTenants pageLink [{}]", pageLink); - Validator.validatePageLink(pageLink, "Incorrect page link " + pageLink); - List tenants = tenantDao.findTenantsByRegion(new TenantId(EntityId.NULL_UUID), DEFAULT_TENANT_REGION, pageLink); - return new TextPageData<>(tenants, pageLink); + Validator.validatePageLink(pageLink); + return tenantDao.findTenantsByRegion(new TenantId(EntityId.NULL_UUID), DEFAULT_TENANT_REGION, pageLink); } @Override @@ -146,7 +145,7 @@ public class TenantServiceImpl extends AbstractEntityService implements TenantSe new PaginatedRemover() { @Override - protected List findEntities(TenantId tenantId, String region, TextPageLink pageLink) { + protected PageData findEntities(TenantId tenantId, String region, PageLink pageLink) { return tenantDao.findTenantsByRegion(tenantId, region, pageLink); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/user/UserDao.java b/dao/src/main/java/org/thingsboard/server/dao/user/UserDao.java index a83a422824..fec181d81b 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/user/UserDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/user/UserDao.java @@ -17,7 +17,8 @@ package org.thingsboard.server.dao.user; import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.Dao; import java.util.List; @@ -48,7 +49,7 @@ public interface UserDao extends Dao { * @param pageLink the page link * @return the list of user entities */ - List findTenantAdmins(UUID tenantId, TextPageLink pageLink); + PageData findTenantAdmins(UUID tenantId, PageLink pageLink); /** * Find customer users by tenantId, customerId and page link. @@ -58,6 +59,6 @@ public interface UserDao extends Dao { * @param pageLink the page link * @return the list of user entities */ - List findCustomerUsers(UUID tenantId, UUID customerId, TextPageLink pageLink); + PageData findCustomerUsers(UUID tenantId, UUID customerId, PageLink pageLink); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java index 9908fd17f6..bed05bdd79 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java @@ -29,8 +29,8 @@ import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.UserCredentialsId; import org.thingsboard.server.common.data.id.UserId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.security.Authority; import org.thingsboard.server.common.data.security.UserCredentials; import org.thingsboard.server.dao.customer.CustomerDao; @@ -207,12 +207,11 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic } @Override - public TextPageData findTenantAdmins(TenantId tenantId, TextPageLink pageLink) { + public PageData findTenantAdmins(TenantId tenantId, PageLink pageLink) { log.trace("Executing findTenantAdmins, tenantId [{}], pageLink [{}]", tenantId, pageLink); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); - validatePageLink(pageLink, "Incorrect page link " + pageLink); - List users = userDao.findTenantAdmins(tenantId.getId(), pageLink); - return new TextPageData<>(users, pageLink); + validatePageLink(pageLink); + return userDao.findTenantAdmins(tenantId.getId(), pageLink); } @Override @@ -223,13 +222,12 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic } @Override - public TextPageData findCustomerUsers(TenantId tenantId, CustomerId customerId, TextPageLink pageLink) { + public PageData findCustomerUsers(TenantId tenantId, CustomerId customerId, PageLink pageLink) { log.trace("Executing findCustomerUsers, tenantId [{}], customerId [{}], pageLink [{}]", tenantId, customerId, pageLink); validateId(tenantId, INCORRECT_TENANT_ID + tenantId); validateId(customerId, "Incorrect customerId " + customerId); - validatePageLink(pageLink, "Incorrect page link " + pageLink); - List users = userDao.findCustomerUsers(tenantId.getId(), customerId.getId(), pageLink); - return new TextPageData<>(users, pageLink); + validatePageLink(pageLink); + return userDao.findCustomerUsers(tenantId.getId(), customerId.getId(), pageLink); } @Override @@ -345,7 +343,7 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic private PaginatedRemover tenantAdminsRemover = new PaginatedRemover() { @Override - protected List findEntities(TenantId tenantId, TenantId id, TextPageLink pageLink) { + protected PageData findEntities(TenantId tenantId, TenantId id, PageLink pageLink) { return userDao.findTenantAdmins(id.getId(), pageLink); } @@ -357,7 +355,7 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic private PaginatedRemover customerUsersRemover = new PaginatedRemover() { @Override - protected List findEntities(TenantId tenantId, CustomerId id, TextPageLink pageLink) { + protected PageData findEntities(TenantId tenantId, CustomerId id, PageLink pageLink) { return userDao.findCustomerUsers(tenantId.getId(), id.getId(), pageLink); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleDao.java b/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleDao.java index 2f0e9808b9..e729855620 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleDao.java @@ -16,7 +16,8 @@ package org.thingsboard.server.dao.widget; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.widget.WidgetsBundle; import org.thingsboard.server.dao.Dao; @@ -52,7 +53,7 @@ public interface WidgetsBundleDao extends Dao { * @param pageLink the page link * @return the list of widgets bundles objects */ - List findSystemWidgetsBundles(TenantId tenantId, TextPageLink pageLink); + PageData findSystemWidgetsBundles(TenantId tenantId, PageLink pageLink); /** * Find tenant widgets bundles by tenantId and page link. @@ -61,7 +62,7 @@ public interface WidgetsBundleDao extends Dao { * @param pageLink the page link * @return the list of widgets bundles objects */ - List findTenantWidgetsBundlesByTenantId(UUID tenantId, TextPageLink pageLink); + PageData findTenantWidgetsBundlesByTenantId(UUID tenantId, PageLink pageLink); /** * Find all tenant widgets bundles (including system) by tenantId and page link. @@ -70,7 +71,7 @@ public interface WidgetsBundleDao extends Dao { * @param pageLink the page link * @return the list of widgets bundles objects */ - List findAllTenantWidgetsBundlesByTenantId(UUID tenantId, TextPageLink pageLink); + PageData findAllTenantWidgetsBundlesByTenantId(UUID tenantId, PageLink pageLink); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleServiceImpl.java index 1a6ac92a31..28102cdbf7 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleServiceImpl.java @@ -22,8 +22,8 @@ import org.springframework.stereotype.Service; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.WidgetsBundleId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.widget.WidgetsBundle; import org.thingsboard.server.dao.exception.DataValidationException; import org.thingsboard.server.dao.exception.IncorrectParameterException; @@ -88,42 +88,42 @@ public class WidgetsBundleServiceImpl implements WidgetsBundleService { } @Override - public TextPageData findSystemWidgetsBundlesByPageLink(TenantId tenantId, TextPageLink pageLink) { + public PageData findSystemWidgetsBundlesByPageLink(TenantId tenantId, PageLink pageLink) { log.trace("Executing findSystemWidgetsBundles, pageLink [{}]", pageLink); - Validator.validatePageLink(pageLink, INCORRECT_PAGE_LINK + pageLink); - return new TextPageData<>(widgetsBundleDao.findSystemWidgetsBundles(tenantId, pageLink), pageLink); + Validator.validatePageLink(pageLink); + return widgetsBundleDao.findSystemWidgetsBundles(tenantId, pageLink); } @Override public List findSystemWidgetsBundles(TenantId tenantId) { log.trace("Executing findSystemWidgetsBundles"); List widgetsBundles = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(DEFAULT_WIDGETS_BUNDLE_LIMIT); - TextPageData pageData; + PageLink pageLink = new PageLink(DEFAULT_WIDGETS_BUNDLE_LIMIT); + PageData pageData; do { pageData = findSystemWidgetsBundlesByPageLink(tenantId, pageLink); widgetsBundles.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); return widgetsBundles; } @Override - public TextPageData findTenantWidgetsBundlesByTenantId(TenantId tenantId, TextPageLink pageLink) { + public PageData findTenantWidgetsBundlesByTenantId(TenantId tenantId, PageLink pageLink) { log.trace("Executing findTenantWidgetsBundlesByTenantId, tenantId [{}], pageLink [{}]", tenantId, pageLink); Validator.validateId(tenantId, INCORRECT_TENANT_ID + tenantId); - Validator.validatePageLink(pageLink, INCORRECT_PAGE_LINK + pageLink); - return new TextPageData<>(widgetsBundleDao.findTenantWidgetsBundlesByTenantId(tenantId.getId(), pageLink), pageLink); + Validator.validatePageLink(pageLink); + return widgetsBundleDao.findTenantWidgetsBundlesByTenantId(tenantId.getId(), pageLink); } @Override - public TextPageData findAllTenantWidgetsBundlesByTenantIdAndPageLink(TenantId tenantId, TextPageLink pageLink) { + public PageData findAllTenantWidgetsBundlesByTenantIdAndPageLink(TenantId tenantId, PageLink pageLink) { log.trace("Executing findAllTenantWidgetsBundlesByTenantIdAndPageLink, tenantId [{}], pageLink [{}]", tenantId, pageLink); Validator.validateId(tenantId, INCORRECT_TENANT_ID + tenantId); - Validator.validatePageLink(pageLink, INCORRECT_PAGE_LINK + pageLink); - return new TextPageData<>(widgetsBundleDao.findAllTenantWidgetsBundlesByTenantId(tenantId.getId(), pageLink), pageLink); + Validator.validatePageLink(pageLink); + return widgetsBundleDao.findAllTenantWidgetsBundlesByTenantId(tenantId.getId(), pageLink); } @Override @@ -131,13 +131,13 @@ public class WidgetsBundleServiceImpl implements WidgetsBundleService { log.trace("Executing findAllTenantWidgetsBundlesByTenantId, tenantId [{}]", tenantId); Validator.validateId(tenantId, INCORRECT_TENANT_ID + tenantId); List widgetsBundles = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(DEFAULT_WIDGETS_BUNDLE_LIMIT); - TextPageData pageData; + PageLink pageLink = new PageLink(DEFAULT_WIDGETS_BUNDLE_LIMIT); + PageData pageData; do { pageData = findAllTenantWidgetsBundlesByTenantIdAndPageLink(tenantId, pageLink); widgetsBundles.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); return widgetsBundles; @@ -204,7 +204,7 @@ public class WidgetsBundleServiceImpl implements WidgetsBundleService { new PaginatedRemover() { @Override - protected List findEntities(TenantId tenantId, TenantId id, TextPageLink pageLink) { + protected PageData findEntities(TenantId tenantId, TenantId id, PageLink pageLink) { return widgetsBundleDao.findTenantWidgetsBundlesByTenantId(id.getId(), pageLink); } diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/BaseAlarmServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/BaseAlarmServiceTest.java index 6e995611c1..2d263f67d1 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/BaseAlarmServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/BaseAlarmServiceTest.java @@ -28,7 +28,8 @@ import org.thingsboard.server.common.data.alarm.AlarmSeverity; import org.thingsboard.server.common.data.alarm.AlarmStatus; import org.thingsboard.server.common.data.id.AssetId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.SortOrder; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.common.data.relation.EntityRelation; import org.thingsboard.server.common.data.relation.RelationTypeGroup; @@ -112,10 +113,11 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest { Alarm created = alarmService.createOrUpdateAlarm(alarm); // Check child relation - TimePageData alarms = alarmService.findAlarms(tenantId, AlarmQuery.builder() + PageData alarms = alarmService.findAlarms(tenantId, AlarmQuery.builder() .affectedEntityId(childId) .status(AlarmStatus.ACTIVE_UNACK).pageLink( - new TimePageLink(1, 0L, System.currentTimeMillis(), false) + new TimePageLink(1, 0, "", + new SortOrder("createdTime", SortOrder.Direction.DESC), 0L, System.currentTimeMillis()) ).build()).get(); Assert.assertNotNull(alarms.getData()); Assert.assertEquals(1, alarms.getData().size()); @@ -125,7 +127,8 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest { alarms = alarmService.findAlarms(tenantId, AlarmQuery.builder() .affectedEntityId(parentId) .status(AlarmStatus.ACTIVE_UNACK).pageLink( - new TimePageLink(1, 0L, System.currentTimeMillis(), false) + new TimePageLink(1, 0, "", + new SortOrder("createdTime", SortOrder.Direction.DESC), 0L, System.currentTimeMillis()) ).build()).get(); Assert.assertNotNull(alarms.getData()); Assert.assertEquals(0, alarms.getData().size()); @@ -137,7 +140,8 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest { alarms = alarmService.findAlarms(tenantId, AlarmQuery.builder() .affectedEntityId(childId) .status(AlarmStatus.ACTIVE_UNACK).pageLink( - new TimePageLink(1, 0L, System.currentTimeMillis(), false) + new TimePageLink(1, 0, "", + new SortOrder("createdTime", SortOrder.Direction.DESC), 0L, System.currentTimeMillis()) ).build()).get(); Assert.assertNotNull(alarms.getData()); Assert.assertEquals(1, alarms.getData().size()); @@ -147,7 +151,8 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest { alarms = alarmService.findAlarms(tenantId, AlarmQuery.builder() .affectedEntityId(parentId) .status(AlarmStatus.ACTIVE_UNACK).pageLink( - new TimePageLink(1, 0L, System.currentTimeMillis(), false) + new TimePageLink(1, 0, "", + new SortOrder("createdTime", SortOrder.Direction.DESC), 0L, System.currentTimeMillis()) ).build()).get(); Assert.assertNotNull(alarms.getData()); Assert.assertEquals(1, alarms.getData().size()); @@ -159,7 +164,8 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest { alarms = alarmService.findAlarms(tenantId, AlarmQuery.builder() .affectedEntityId(childId) .status(AlarmStatus.ACTIVE_ACK).pageLink( - new TimePageLink(1, 0L, System.currentTimeMillis(), false) + new TimePageLink(1, 0, "", + new SortOrder("createdTime", SortOrder.Direction.DESC), 0L, System.currentTimeMillis()) ).build()).get(); Assert.assertNotNull(alarms.getData()); Assert.assertEquals(1, alarms.getData().size()); @@ -169,7 +175,8 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest { alarms = alarmService.findAlarms(tenantId, AlarmQuery.builder() .affectedEntityId(childId) .status(AlarmStatus.ACTIVE_UNACK).pageLink( - new TimePageLink(1, 0L, System.currentTimeMillis(), false) + new TimePageLink(1, 0, "", + new SortOrder("createdTime", SortOrder.Direction.DESC), 0L, System.currentTimeMillis()) ).build()).get(); Assert.assertNotNull(alarms.getData()); Assert.assertEquals(0, alarms.getData().size()); @@ -180,7 +187,8 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest { alarms = alarmService.findAlarms(tenantId, AlarmQuery.builder() .affectedEntityId(childId) .status(AlarmStatus.CLEARED_ACK).pageLink( - new TimePageLink(1, 0L, System.currentTimeMillis(), false) + new TimePageLink(1, 0, "", + new SortOrder("createdTime", SortOrder.Direction.DESC), 0L, System.currentTimeMillis()) ).build()).get(); Assert.assertNotNull(alarms.getData()); Assert.assertEquals(1, alarms.getData().size()); @@ -205,10 +213,11 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest { Alarm created = alarmService.createOrUpdateAlarm(alarm); - TimePageData alarms = alarmService.findAlarms(tenantId, AlarmQuery.builder() + PageData alarms = alarmService.findAlarms(tenantId, AlarmQuery.builder() .affectedEntityId(childId) .status(AlarmStatus.ACTIVE_UNACK).pageLink( - new TimePageLink(1, 0L, System.currentTimeMillis(), false) + new TimePageLink(1, 0, "", + new SortOrder("createdTime", SortOrder.Direction.DESC), 0L, System.currentTimeMillis()) ).build()).get(); Assert.assertNotNull(alarms.getData()); Assert.assertEquals(1, alarms.getData().size()); @@ -218,7 +227,8 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest { alarms = alarmService.findAlarms(tenantId, AlarmQuery.builder() .affectedEntityId(parentId) .status(AlarmStatus.ACTIVE_UNACK).pageLink( - new TimePageLink(1, 0L, System.currentTimeMillis(), false) + new TimePageLink(1, 0, "", + new SortOrder("createdTime", SortOrder.Direction.DESC), 0L, System.currentTimeMillis()) ).build()).get(); Assert.assertNotNull(alarms.getData()); Assert.assertEquals(1, alarms.getData().size()); @@ -243,7 +253,8 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest { alarms = alarmService.findAlarms(tenantId, AlarmQuery.builder() .affectedEntityId(childId) .status(AlarmStatus.ACTIVE_UNACK).pageLink( - new TimePageLink(1, 0L, System.currentTimeMillis(), false) + new TimePageLink(1, 0, "", + new SortOrder("createdTime", SortOrder.Direction.DESC), 0L, System.currentTimeMillis()) ).build()).get(); Assert.assertNotNull(alarms.getData()); Assert.assertEquals(0, alarms.getData().size()); @@ -252,7 +263,8 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest { alarms = alarmService.findAlarms(tenantId, AlarmQuery.builder() .affectedEntityId(parentId) .status(AlarmStatus.ACTIVE_UNACK).pageLink( - new TimePageLink(1, 0L, System.currentTimeMillis(), false) + new TimePageLink(1, 0, "", + new SortOrder("createdTime", SortOrder.Direction.DESC), 0L, System.currentTimeMillis()) ).build()).get(); Assert.assertNotNull(alarms.getData()); Assert.assertEquals(0, alarms.getData().size()); diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/BaseAssetServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/BaseAssetServiceTest.java index d34865452a..8fdeeb1e11 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/BaseAssetServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/BaseAssetServiceTest.java @@ -27,8 +27,8 @@ import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.asset.Asset; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.exception.DataValidationException; import java.util.ArrayList; @@ -224,13 +224,13 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { } List loadedAssets = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(23); - TextPageData pageData = null; + PageLink pageLink = new PageLink(23); + PageData pageData = null; do { pageData = assetService.findAssetsByTenantId(tenantId, pageLink); loadedAssets.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -241,7 +241,7 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { assetService.deleteAssetsByTenantId(tenantId); - pageLink = new TextPageLink(33); + pageLink = new PageLink(33); pageData = assetService.findAssetsByTenantId(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertTrue(pageData.getData().isEmpty()); @@ -277,13 +277,13 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { } List loadedAssetsTitle1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15, title1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15, 0, title1); + PageData pageData = null; do { pageData = assetService.findAssetsByTenantId(tenantId, pageLink); loadedAssetsTitle1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -293,12 +293,12 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { Assert.assertEquals(assetsTitle1, loadedAssetsTitle1); List loadedAssetsTitle2 = new ArrayList<>(); - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); do { pageData = assetService.findAssetsByTenantId(tenantId, pageLink); loadedAssetsTitle2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -311,7 +311,7 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { assetService.deleteAsset(tenantId, asset.getId()); } - pageLink = new TextPageLink(4, title1); + pageLink = new PageLink(4, 0, title1); pageData = assetService.findAssetsByTenantId(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -320,7 +320,7 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { assetService.deleteAsset(tenantId, asset.getId()); } - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); pageData = assetService.findAssetsByTenantId(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -356,13 +356,13 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { } List loadedAssetsType1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15); + PageData pageData = null; do { pageData = assetService.findAssetsByTenantIdAndType(tenantId, type1, pageLink); loadedAssetsType1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -372,12 +372,12 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { Assert.assertEquals(assetsType1, loadedAssetsType1); List loadedAssetsType2 = new ArrayList<>(); - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); do { pageData = assetService.findAssetsByTenantIdAndType(tenantId, type2, pageLink); loadedAssetsType2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -390,7 +390,7 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { assetService.deleteAsset(tenantId, asset.getId()); } - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); pageData = assetService.findAssetsByTenantIdAndType(tenantId, type1, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -399,7 +399,7 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { assetService.deleteAsset(tenantId, asset.getId()); } - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); pageData = assetService.findAssetsByTenantIdAndType(tenantId, type2, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -430,13 +430,13 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { } List loadedAssets = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(23); - TextPageData pageData = null; + PageLink pageLink = new PageLink(23); + PageData pageData = null; do { pageData = assetService.findAssetsByTenantIdAndCustomerId(tenantId, customerId, pageLink); loadedAssets.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -447,7 +447,7 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { assetService.unassignCustomerAssets(tenantId, customerId); - pageLink = new TextPageLink(33); + pageLink = new PageLink(33); pageData = assetService.findAssetsByTenantIdAndCustomerId(tenantId, customerId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertTrue(pageData.getData().isEmpty()); @@ -492,13 +492,13 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { } List loadedAssetsTitle1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15, title1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15, 0, title1); + PageData pageData = null; do { pageData = assetService.findAssetsByTenantIdAndCustomerId(tenantId, customerId, pageLink); loadedAssetsTitle1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -508,12 +508,12 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { Assert.assertEquals(assetsTitle1, loadedAssetsTitle1); List loadedAssetsTitle2 = new ArrayList<>(); - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); do { pageData = assetService.findAssetsByTenantIdAndCustomerId(tenantId, customerId, pageLink); loadedAssetsTitle2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -526,7 +526,7 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { assetService.deleteAsset(tenantId, asset.getId()); } - pageLink = new TextPageLink(4, title1); + pageLink = new PageLink(4, 0, title1); pageData = assetService.findAssetsByTenantIdAndCustomerId(tenantId, customerId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -535,7 +535,7 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { assetService.deleteAsset(tenantId, asset.getId()); } - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); pageData = assetService.findAssetsByTenantIdAndCustomerId(tenantId, customerId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -581,13 +581,13 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { } List loadedAssetsType1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15); + PageData pageData = null; do { pageData = assetService.findAssetsByTenantIdAndCustomerIdAndType(tenantId, customerId, type1, pageLink); loadedAssetsType1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -597,12 +597,12 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { Assert.assertEquals(assetsType1, loadedAssetsType1); List loadedAssetsType2 = new ArrayList<>(); - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); do { pageData = assetService.findAssetsByTenantIdAndCustomerIdAndType(tenantId, customerId, type2, pageLink); loadedAssetsType2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -615,7 +615,7 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { assetService.deleteAsset(tenantId, asset.getId()); } - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); pageData = assetService.findAssetsByTenantIdAndCustomerIdAndType(tenantId, customerId, type1, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -624,7 +624,7 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest { assetService.deleteAsset(tenantId, asset.getId()); } - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); pageData = assetService.findAssetsByTenantIdAndCustomerIdAndType(tenantId, customerId, type2, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/BaseCustomerServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/BaseCustomerServiceTest.java index 51d9150eb6..91d05782f6 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/BaseCustomerServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/BaseCustomerServiceTest.java @@ -24,8 +24,8 @@ import org.junit.Test; import org.thingsboard.server.common.data.Customer; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.exception.DataValidationException; import java.util.ArrayList; @@ -146,13 +146,13 @@ public abstract class BaseCustomerServiceTest extends AbstractServiceTest { } List loadedCustomers = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(23); - TextPageData pageData = null; + PageLink pageLink = new PageLink(23); + PageData pageData = null; do { pageData = customerService.findCustomersByTenantId(tenantId, pageLink); loadedCustomers.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -163,7 +163,7 @@ public abstract class BaseCustomerServiceTest extends AbstractServiceTest { customerService.deleteCustomersByTenantId(tenantId); - pageLink = new TextPageLink(33); + pageLink = new PageLink(33); pageData = customerService.findCustomersByTenantId(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertTrue(pageData.getData().isEmpty()); @@ -197,13 +197,13 @@ public abstract class BaseCustomerServiceTest extends AbstractServiceTest { } List loadedCustomersTitle1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15, title1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15, 0, title1); + PageData pageData = null; do { pageData = customerService.findCustomersByTenantId(tenantId, pageLink); loadedCustomersTitle1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -213,12 +213,12 @@ public abstract class BaseCustomerServiceTest extends AbstractServiceTest { Assert.assertEquals(customersTitle1, loadedCustomersTitle1); List loadedCustomersTitle2 = new ArrayList<>(); - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); do { pageData = customerService.findCustomersByTenantId(tenantId, pageLink); loadedCustomersTitle2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -231,7 +231,7 @@ public abstract class BaseCustomerServiceTest extends AbstractServiceTest { customerService.deleteCustomer(tenantId, customer.getId()); } - pageLink = new TextPageLink(4, title1); + pageLink = new PageLink(4, 0, title1); pageData = customerService.findCustomersByTenantId(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -240,7 +240,7 @@ public abstract class BaseCustomerServiceTest extends AbstractServiceTest { customerService.deleteCustomer(tenantId, customer.getId()); } - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); pageData = customerService.findCustomersByTenantId(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/BaseDashboardServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/BaseDashboardServiceTest.java index d8fecd04f0..ee4bfe02cb 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/BaseDashboardServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/BaseDashboardServiceTest.java @@ -27,9 +27,8 @@ import org.thingsboard.server.common.data.DashboardInfo; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.dao.exception.DataValidationException; @@ -179,13 +178,13 @@ public abstract class BaseDashboardServiceTest extends AbstractServiceTest { } List loadedDashboards = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(16); - TextPageData pageData = null; + PageLink pageLink = new PageLink(16); + PageData pageData = null; do { pageData = dashboardService.findDashboardsByTenantId(tenantId, pageLink); loadedDashboards.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -196,7 +195,7 @@ public abstract class BaseDashboardServiceTest extends AbstractServiceTest { dashboardService.deleteDashboardsByTenantId(tenantId); - pageLink = new TextPageLink(31); + pageLink = new PageLink(31); pageData = dashboardService.findDashboardsByTenantId(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertTrue(pageData.getData().isEmpty()); @@ -230,13 +229,13 @@ public abstract class BaseDashboardServiceTest extends AbstractServiceTest { } List loadedDashboardsTitle1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(19, title1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(19, 0, title1); + PageData pageData = null; do { pageData = dashboardService.findDashboardsByTenantId(tenantId, pageLink); loadedDashboardsTitle1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -246,12 +245,12 @@ public abstract class BaseDashboardServiceTest extends AbstractServiceTest { Assert.assertEquals(dashboardsTitle1, loadedDashboardsTitle1); List loadedDashboardsTitle2 = new ArrayList<>(); - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); do { pageData = dashboardService.findDashboardsByTenantId(tenantId, pageLink); loadedDashboardsTitle2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -264,7 +263,7 @@ public abstract class BaseDashboardServiceTest extends AbstractServiceTest { dashboardService.deleteDashboard(tenantId, dashboard.getId()); } - pageLink = new TextPageLink(4, title1); + pageLink = new PageLink(4, 0, title1); pageData = dashboardService.findDashboardsByTenantId(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -273,7 +272,7 @@ public abstract class BaseDashboardServiceTest extends AbstractServiceTest { dashboardService.deleteDashboard(tenantId, dashboard.getId()); } - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); pageData = dashboardService.findDashboardsByTenantId(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -304,12 +303,12 @@ public abstract class BaseDashboardServiceTest extends AbstractServiceTest { List loadedDashboards = new ArrayList<>(); TimePageLink pageLink = new TimePageLink(23); - TimePageData pageData = null; + PageData pageData = null; do { pageData = dashboardService.findDashboardsByTenantIdAndCustomerId(tenantId, customerId, pageLink).get(); loadedDashboards.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/BaseDeviceServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/BaseDeviceServiceTest.java index 7a2935ce3b..f4f910d01e 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/BaseDeviceServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/BaseDeviceServiceTest.java @@ -27,8 +27,8 @@ import org.thingsboard.server.common.data.EntitySubtype; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.security.DeviceCredentials; import org.thingsboard.server.common.data.security.DeviceCredentialsType; import org.thingsboard.server.dao.exception.DataValidationException; @@ -236,13 +236,13 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { } List loadedDevices = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(23); - TextPageData pageData = null; + PageLink pageLink = new PageLink(23); + PageData pageData = null; do { pageData = deviceService.findDevicesByTenantId(tenantId, pageLink); loadedDevices.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -253,7 +253,7 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { deviceService.deleteDevicesByTenantId(tenantId); - pageLink = new TextPageLink(33); + pageLink = new PageLink(33); pageData = deviceService.findDevicesByTenantId(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertTrue(pageData.getData().isEmpty()); @@ -289,13 +289,13 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { } List loadedDevicesTitle1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15, title1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15, 0, title1); + PageData pageData = null; do { pageData = deviceService.findDevicesByTenantId(tenantId, pageLink); loadedDevicesTitle1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -305,12 +305,12 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { Assert.assertEquals(devicesTitle1, loadedDevicesTitle1); List loadedDevicesTitle2 = new ArrayList<>(); - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); do { pageData = deviceService.findDevicesByTenantId(tenantId, pageLink); loadedDevicesTitle2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -323,7 +323,7 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { deviceService.deleteDevice(tenantId, device.getId()); } - pageLink = new TextPageLink(4, title1); + pageLink = new PageLink(4, 0, title1); pageData = deviceService.findDevicesByTenantId(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -332,7 +332,7 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { deviceService.deleteDevice(tenantId, device.getId()); } - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); pageData = deviceService.findDevicesByTenantId(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -368,13 +368,13 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { } List loadedDevicesType1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15); + PageData pageData = null; do { pageData = deviceService.findDevicesByTenantIdAndType(tenantId, type1, pageLink); loadedDevicesType1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -384,12 +384,12 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { Assert.assertEquals(devicesType1, loadedDevicesType1); List loadedDevicesType2 = new ArrayList<>(); - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); do { pageData = deviceService.findDevicesByTenantIdAndType(tenantId, type2, pageLink); loadedDevicesType2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -402,7 +402,7 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { deviceService.deleteDevice(tenantId, device.getId()); } - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); pageData = deviceService.findDevicesByTenantIdAndType(tenantId, type1, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -411,7 +411,7 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { deviceService.deleteDevice(tenantId, device.getId()); } - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); pageData = deviceService.findDevicesByTenantIdAndType(tenantId, type2, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -442,13 +442,13 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { } List loadedDevices = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(23); - TextPageData pageData = null; + PageLink pageLink = new PageLink(23); + PageData pageData = null; do { pageData = deviceService.findDevicesByTenantIdAndCustomerId(tenantId, customerId, pageLink); loadedDevices.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -459,7 +459,7 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { deviceService.unassignCustomerDevices(tenantId, customerId); - pageLink = new TextPageLink(33); + pageLink = new PageLink(33); pageData = deviceService.findDevicesByTenantIdAndCustomerId(tenantId, customerId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertTrue(pageData.getData().isEmpty()); @@ -504,13 +504,13 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { } List loadedDevicesTitle1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15, title1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15, 0, title1); + PageData pageData = null; do { pageData = deviceService.findDevicesByTenantIdAndCustomerId(tenantId, customerId, pageLink); loadedDevicesTitle1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -520,12 +520,12 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { Assert.assertEquals(devicesTitle1, loadedDevicesTitle1); List loadedDevicesTitle2 = new ArrayList<>(); - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); do { pageData = deviceService.findDevicesByTenantIdAndCustomerId(tenantId, customerId, pageLink); loadedDevicesTitle2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -538,7 +538,7 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { deviceService.deleteDevice(tenantId, device.getId()); } - pageLink = new TextPageLink(4, title1); + pageLink = new PageLink(4, 0, title1); pageData = deviceService.findDevicesByTenantIdAndCustomerId(tenantId, customerId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -547,7 +547,7 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { deviceService.deleteDevice(tenantId, device.getId()); } - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); pageData = deviceService.findDevicesByTenantIdAndCustomerId(tenantId, customerId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -593,13 +593,13 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { } List loadedDevicesType1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15); + PageData pageData = null; do { pageData = deviceService.findDevicesByTenantIdAndCustomerIdAndType(tenantId, customerId, type1, pageLink); loadedDevicesType1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -609,12 +609,12 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { Assert.assertEquals(devicesType1, loadedDevicesType1); List loadedDevicesType2 = new ArrayList<>(); - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); do { pageData = deviceService.findDevicesByTenantIdAndCustomerIdAndType(tenantId, customerId, type2, pageLink); loadedDevicesType2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -627,7 +627,7 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { deviceService.deleteDevice(tenantId, device.getId()); } - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); pageData = deviceService.findDevicesByTenantIdAndCustomerIdAndType(tenantId, customerId, type1, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -636,7 +636,7 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { deviceService.deleteDevice(tenantId, device.getId()); } - pageLink = new TextPageLink(4); + pageLink = new PageLink(4); pageData = deviceService.findDevicesByTenantIdAndCustomerIdAndType(tenantId, customerId, type2, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/BaseRuleChainServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/BaseRuleChainServiceTest.java index 79c2a12bcc..e955c129b6 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/BaseRuleChainServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/BaseRuleChainServiceTest.java @@ -24,8 +24,8 @@ import org.junit.Before; import org.junit.Test; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.relation.EntityRelation; import org.thingsboard.server.common.data.rule.RuleChain; import org.thingsboard.server.common.data.rule.RuleChainMetaData; @@ -140,13 +140,13 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest { } List loadedRuleChains = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(16); - TextPageData pageData = null; + PageLink pageLink = new PageLink(16); + PageData pageData = null; do { pageData = ruleChainService.findTenantRuleChains(tenantId, pageLink); loadedRuleChains.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -157,7 +157,7 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest { ruleChainService.deleteRuleChainsByTenantId(tenantId); - pageLink = new TextPageLink(31); + pageLink = new PageLink(31); pageData = ruleChainService.findTenantRuleChains(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertTrue(pageData.getData().isEmpty()); @@ -191,13 +191,13 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest { } List loadedRuleChainsName1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(19, name1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(19, 0, name1); + PageData pageData = null; do { pageData = ruleChainService.findTenantRuleChains(tenantId, pageLink); loadedRuleChainsName1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -207,12 +207,12 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest { Assert.assertEquals(ruleChainsName1, loadedRuleChainsName1); List loadedRuleChainsName2 = new ArrayList<>(); - pageLink = new TextPageLink(4, name2); + pageLink = new PageLink(4, 0, name2); do { pageData = ruleChainService.findTenantRuleChains(tenantId, pageLink); loadedRuleChainsName2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -225,7 +225,7 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest { ruleChainService.deleteRuleChainById(tenantId, ruleChain.getId()); } - pageLink = new TextPageLink(4, name1); + pageLink = new PageLink(4, 0, name1); pageData = ruleChainService.findTenantRuleChains(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -234,7 +234,7 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest { ruleChainService.deleteRuleChainById(tenantId, ruleChain.getId()); } - pageLink = new TextPageLink(4, name2); + pageLink = new PageLink(4, 0, name2); pageData = ruleChainService.findTenantRuleChains(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/BaseTenantServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/BaseTenantServiceTest.java index 314629bfcf..d18444422a 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/BaseTenantServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/BaseTenantServiceTest.java @@ -19,8 +19,8 @@ import org.apache.commons.lang3.RandomStringUtils; import org.junit.Assert; import org.junit.Test; import org.thingsboard.server.common.data.Tenant; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.exception.DataValidationException; import java.util.ArrayList; @@ -88,8 +88,8 @@ public abstract class BaseTenantServiceTest extends AbstractServiceTest { public void testFindTenants() { List tenants = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(17); - TextPageData pageData = tenantService.findTenants(pageLink); + PageLink pageLink = new PageLink(17); + PageData pageData = tenantService.findTenants(pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertTrue(pageData.getData().isEmpty()); tenants.addAll(pageData.getData()); @@ -101,12 +101,12 @@ public abstract class BaseTenantServiceTest extends AbstractServiceTest { } List loadedTenants = new ArrayList<>(); - pageLink = new TextPageLink(17); + pageLink = new PageLink(17); do { pageData = tenantService.findTenants(pageLink); loadedTenants.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -121,7 +121,7 @@ public abstract class BaseTenantServiceTest extends AbstractServiceTest { } } - pageLink = new TextPageLink(17); + pageLink = new PageLink(17); pageData = tenantService.findTenants(pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertTrue(pageData.getData().isEmpty()); @@ -152,13 +152,13 @@ public abstract class BaseTenantServiceTest extends AbstractServiceTest { } List loadedTenantsTitle1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(15, title1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(15, 0, title1); + PageData pageData = null; do { pageData = tenantService.findTenants(pageLink); loadedTenantsTitle1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -168,12 +168,12 @@ public abstract class BaseTenantServiceTest extends AbstractServiceTest { Assert.assertEquals(tenantsTitle1, loadedTenantsTitle1); List loadedTenantsTitle2 = new ArrayList<>(); - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); do { pageData = tenantService.findTenants(pageLink); loadedTenantsTitle2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -186,7 +186,7 @@ public abstract class BaseTenantServiceTest extends AbstractServiceTest { tenantService.deleteTenant(tenant.getId()); } - pageLink = new TextPageLink(4, title1); + pageLink = new PageLink(4, 0, title1); pageData = tenantService.findTenants(pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -195,7 +195,7 @@ public abstract class BaseTenantServiceTest extends AbstractServiceTest { tenantService.deleteTenant(tenant.getId()); } - pageLink = new TextPageLink(4, title2); + pageLink = new PageLink(4, 0, title2); pageData = tenantService.findTenants(pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/BaseUserServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/BaseUserServiceTest.java index e1b77fa3c5..39ce336d37 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/BaseUserServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/BaseUserServiceTest.java @@ -25,8 +25,8 @@ import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.security.Authority; import org.thingsboard.server.common.data.security.UserCredentials; import org.thingsboard.server.dao.exception.DataValidationException; @@ -188,7 +188,7 @@ public abstract class BaseUserServiceTest extends AbstractServiceTest { @Test public void testFindTenantAdmins() { User tenantAdminUser = userService.findUserByEmail(tenantId, "tenant@thingsboard.org"); - TextPageData pageData = userService.findTenantAdmins(tenantAdminUser.getTenantId(), new TextPageLink(10)); + PageData pageData = userService.findTenantAdmins(tenantAdminUser.getTenantId(), new PageLink(10)); Assert.assertFalse(pageData.hasNext()); List users = pageData.getData(); Assert.assertEquals(1, users.size()); @@ -210,12 +210,12 @@ public abstract class BaseUserServiceTest extends AbstractServiceTest { } List loadedTenantAdmins = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(33); + PageLink pageLink = new PageLink(33); do { pageData = userService.findTenantAdmins(tenantId, pageLink); loadedTenantAdmins.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -226,7 +226,7 @@ public abstract class BaseUserServiceTest extends AbstractServiceTest { tenantService.deleteTenant(tenantId); - pageLink = new TextPageLink(33); + pageLink = new PageLink(33); pageData = userService.findTenantAdmins(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertTrue(pageData.getData().isEmpty()); @@ -270,13 +270,13 @@ public abstract class BaseUserServiceTest extends AbstractServiceTest { } List loadedTenantAdminsEmail1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(33, email1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(33, 0, email1); + PageData pageData = null; do { pageData = userService.findTenantAdmins(tenantId, pageLink); loadedTenantAdminsEmail1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -286,12 +286,12 @@ public abstract class BaseUserServiceTest extends AbstractServiceTest { Assert.assertEquals(tenantAdminsEmail1, loadedTenantAdminsEmail1); List loadedTenantAdminsEmail2 = new ArrayList<>(); - pageLink = new TextPageLink(16, email2); + pageLink = new PageLink(16, 0, email2); do { pageData = userService.findTenantAdmins(tenantId, pageLink); loadedTenantAdminsEmail2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -304,7 +304,7 @@ public abstract class BaseUserServiceTest extends AbstractServiceTest { userService.deleteUser(tenantId, user.getId()); } - pageLink = new TextPageLink(4, email1); + pageLink = new PageLink(4, 0, email1); pageData = userService.findTenantAdmins(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -313,7 +313,7 @@ public abstract class BaseUserServiceTest extends AbstractServiceTest { userService.deleteUser(tenantId, user.getId()); } - pageLink = new TextPageLink(4, email2); + pageLink = new PageLink(4, 0, email2); pageData = userService.findTenantAdmins(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -324,8 +324,8 @@ public abstract class BaseUserServiceTest extends AbstractServiceTest { @Test public void testFindCustomerUsers() { User customerUser = userService.findUserByEmail(tenantId, "customer@thingsboard.org"); - TextPageData pageData = userService.findCustomerUsers(customerUser.getTenantId(), - customerUser.getCustomerId(), new TextPageLink(10)); + PageData pageData = userService.findCustomerUsers(customerUser.getTenantId(), + customerUser.getCustomerId(), new PageLink(10)); Assert.assertFalse(pageData.hasNext()); List users = pageData.getData(); Assert.assertEquals(1, users.size()); @@ -355,12 +355,12 @@ public abstract class BaseUserServiceTest extends AbstractServiceTest { } List loadedCustomerUsers = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(33); + PageLink pageLink = new PageLink(33); do { pageData = userService.findCustomerUsers(tenantId, customerId, pageLink); loadedCustomerUsers.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -423,13 +423,13 @@ public abstract class BaseUserServiceTest extends AbstractServiceTest { } List loadedCustomerUsersEmail1 = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(33, email1); - TextPageData pageData = null; + PageLink pageLink = new PageLink(33, 0, email1); + PageData pageData = null; do { pageData = userService.findCustomerUsers(tenantId, customerId, pageLink); loadedCustomerUsersEmail1.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -439,12 +439,12 @@ public abstract class BaseUserServiceTest extends AbstractServiceTest { Assert.assertEquals(customerUsersEmail1, loadedCustomerUsersEmail1); List loadedCustomerUsersEmail2 = new ArrayList<>(); - pageLink = new TextPageLink(16, email2); + pageLink = new PageLink(16, 0, email2); do { pageData = userService.findCustomerUsers(tenantId, customerId, pageLink); loadedCustomerUsersEmail2.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -457,7 +457,7 @@ public abstract class BaseUserServiceTest extends AbstractServiceTest { userService.deleteUser(tenantId, user.getId()); } - pageLink = new TextPageLink(4, email1); + pageLink = new PageLink(4, 0, email1); pageData = userService.findCustomerUsers(tenantId, customerId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); @@ -466,7 +466,7 @@ public abstract class BaseUserServiceTest extends AbstractServiceTest { userService.deleteUser(tenantId, user.getId()); } - pageLink = new TextPageLink(4, email2); + pageLink = new PageLink(4, 0, email2); pageData = userService.findCustomerUsers(tenantId, customerId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertEquals(0, pageData.getData().size()); diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/BaseWidgetsBundleServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/BaseWidgetsBundleServiceTest.java index 2a4858f20c..c63c9b8c05 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/BaseWidgetsBundleServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/BaseWidgetsBundleServiceTest.java @@ -22,8 +22,8 @@ import org.junit.Before; import org.junit.Test; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.widget.WidgetsBundle; import org.thingsboard.server.dao.exception.DataValidationException; import org.thingsboard.server.dao.model.ModelConstants; @@ -175,13 +175,13 @@ public abstract class BaseWidgetsBundleServiceTest extends AbstractServiceTest { widgetsBundles.addAll(systemWidgetsBundles); List loadedWidgetsBundles = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(19); - TextPageData pageData = null; + PageLink pageLink = new PageLink(19); + PageData pageData = null; do { pageData = widgetsBundleService.findSystemWidgetsBundlesByPageLink(tenantId, pageLink); loadedWidgetsBundles.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -255,13 +255,13 @@ public abstract class BaseWidgetsBundleServiceTest extends AbstractServiceTest { } List loadedWidgetsBundles = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(11); - TextPageData pageData = null; + PageLink pageLink = new PageLink(11); + PageData pageData = null; do { pageData = widgetsBundleService.findTenantWidgetsBundlesByTenantId(tenantId, pageLink); loadedWidgetsBundles.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -272,7 +272,7 @@ public abstract class BaseWidgetsBundleServiceTest extends AbstractServiceTest { widgetsBundleService.deleteWidgetsBundlesByTenantId(tenantId); - pageLink = new TextPageLink(15); + pageLink = new PageLink(15); pageData = widgetsBundleService.findTenantWidgetsBundlesByTenantId(tenantId, pageLink); Assert.assertFalse(pageData.hasNext()); Assert.assertTrue(pageData.getData().isEmpty()); @@ -309,13 +309,13 @@ public abstract class BaseWidgetsBundleServiceTest extends AbstractServiceTest { widgetsBundles.addAll(systemWidgetsBundles); List loadedWidgetsBundles = new ArrayList<>(); - TextPageLink pageLink = new TextPageLink(17); - TextPageData pageData = null; + PageLink pageLink = new PageLink(17); + PageData pageData = null; do { pageData = widgetsBundleService.findAllTenantWidgetsBundlesByTenantIdAndPageLink(tenantId, pageLink); loadedWidgetsBundles.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -327,12 +327,12 @@ public abstract class BaseWidgetsBundleServiceTest extends AbstractServiceTest { widgetsBundleService.deleteWidgetsBundlesByTenantId(tenantId); loadedWidgetsBundles.clear(); - pageLink = new TextPageLink(14); + pageLink = new PageLink(14); do { pageData = widgetsBundleService.findAllTenantWidgetsBundlesByTenantIdAndPageLink(tenantId, pageLink); loadedWidgetsBundles.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); @@ -349,12 +349,12 @@ public abstract class BaseWidgetsBundleServiceTest extends AbstractServiceTest { } loadedWidgetsBundles.clear(); - pageLink = new TextPageLink(18); + pageLink = new PageLink(18); do { pageData = widgetsBundleService.findAllTenantWidgetsBundlesByTenantIdAndPageLink(tenantId, pageLink); loadedWidgetsBundles.addAll(pageData.getData()); if (pageData.hasNext()) { - pageLink = pageData.getNextPageLink(); + pageLink = pageLink.nextPageLink(); } } while (pageData.hasNext()); diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/event/BaseEventServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/event/BaseEventServiceTest.java index edb616dba8..9b34ee5fb7 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/event/BaseEventServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/event/BaseEventServiceTest.java @@ -25,7 +25,8 @@ import org.thingsboard.server.common.data.id.DeviceId; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.EventId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TimePageData; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.SortOrder; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.dao.service.AbstractServiceTest; @@ -74,23 +75,23 @@ public abstract class BaseEventServiceTest extends AbstractServiceTest { Event savedEvent3 = saveEventWithProvidedTime(eventTime+2, customerId, tenantId); saveEventWithProvidedTime(timeAfterEndTime, customerId, tenantId); - TimePageData events = eventService.findEvents(tenantId, customerId, DataConstants.STATS, - new TimePageLink(2, startTime, endTime, true)); + TimePageLink timePageLink = new TimePageLink(2, 0, "", new SortOrder("createdTime"), startTime, endTime); + + PageData events = eventService.findEvents(tenantId, customerId, DataConstants.STATS, + timePageLink); Assert.assertNotNull(events.getData()); Assert.assertTrue(events.getData().size() == 2); Assert.assertTrue(events.getData().get(0).getUuidId().equals(savedEvent.getUuidId())); Assert.assertTrue(events.getData().get(1).getUuidId().equals(savedEvent2.getUuidId())); Assert.assertTrue(events.hasNext()); - Assert.assertNotNull(events.getNextPageLink()); - events = eventService.findEvents(tenantId, customerId, DataConstants.STATS, events.getNextPageLink()); + events = eventService.findEvents(tenantId, customerId, DataConstants.STATS, timePageLink.nextPageLink()); Assert.assertNotNull(events.getData()); Assert.assertTrue(events.getData().size() == 1); Assert.assertTrue(events.getData().get(0).getUuidId().equals(savedEvent3.getUuidId())); Assert.assertFalse(events.hasNext()); - Assert.assertNull(events.getNextPageLink()); } @Test @@ -109,23 +110,23 @@ public abstract class BaseEventServiceTest extends AbstractServiceTest { Event savedEvent3 = saveEventWithProvidedTime(eventTime+2, customerId, tenantId); saveEventWithProvidedTime(timeAfterEndTime, customerId, tenantId); - TimePageData events = eventService.findEvents(tenantId, customerId, DataConstants.STATS, - new TimePageLink(2, startTime, endTime, false)); + TimePageLink timePageLink = new TimePageLink(2, 0, "", new SortOrder("createdTime", SortOrder.Direction.DESC), startTime, endTime); + + PageData events = eventService.findEvents(tenantId, customerId, DataConstants.STATS, + timePageLink); Assert.assertNotNull(events.getData()); Assert.assertTrue(events.getData().size() == 2); Assert.assertTrue(events.getData().get(0).getUuidId().equals(savedEvent3.getUuidId())); Assert.assertTrue(events.getData().get(1).getUuidId().equals(savedEvent2.getUuidId())); Assert.assertTrue(events.hasNext()); - Assert.assertNotNull(events.getNextPageLink()); - events = eventService.findEvents(tenantId, customerId, DataConstants.STATS, events.getNextPageLink()); + events = eventService.findEvents(tenantId, customerId, DataConstants.STATS, timePageLink.nextPageLink()); Assert.assertNotNull(events.getData()); Assert.assertTrue(events.getData().size() == 1); Assert.assertTrue(events.getData().get(0).getUuidId().equals(savedEvent.getUuidId())); Assert.assertFalse(events.hasNext()); - Assert.assertNull(events.getNextPageLink()); } private Event saveEventWithProvidedTime(long time, EntityId entityId, TenantId tenantId) throws IOException { diff --git a/dao/src/test/java/org/thingsboard/server/dao/sql/asset/JpaAssetDaoTest.java b/dao/src/test/java/org/thingsboard/server/dao/sql/asset/JpaAssetDaoTest.java index 84390e7eef..efeaff52c8 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/sql/asset/JpaAssetDaoTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/sql/asset/JpaAssetDaoTest.java @@ -24,7 +24,8 @@ import org.thingsboard.server.common.data.asset.Asset; import org.thingsboard.server.common.data.id.AssetId; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.AbstractJpaDaoTest; import org.thingsboard.server.dao.asset.AssetDao; @@ -61,17 +62,17 @@ public class JpaAssetDaoTest extends AbstractJpaDaoTest { } assertEquals(60, assetDao.find(new TenantId(tenantId1)).size()); - TextPageLink pageLink1 = new TextPageLink(20, "ASSET_"); - List assets1 = assetDao.findAssetsByTenantId(tenantId1, pageLink1); - assertEquals(20, assets1.size()); + PageLink pageLink = new PageLink(20, 0, "ASSET_"); + PageData assets1 = assetDao.findAssetsByTenantId(tenantId1, pageLink); + assertEquals(20, assets1.getData().size()); - TextPageLink pageLink2 = new TextPageLink(20, "ASSET_", assets1.get(19).getId().getId(), null); - List assets2 = assetDao.findAssetsByTenantId(tenantId1, pageLink2); - assertEquals(10, assets2.size()); + pageLink = pageLink.nextPageLink(); + PageData assets2 = assetDao.findAssetsByTenantId(tenantId1, pageLink); + assertEquals(10, assets2.getData().size()); - TextPageLink pageLink3 = new TextPageLink(20, "ASSET_", assets2.get(9).getId().getId(), null); - List assets3 = assetDao.findAssetsByTenantId(tenantId1, pageLink3); - assertEquals(0, assets3.size()); + pageLink = pageLink.nextPageLink(); + PageData assets3 = assetDao.findAssetsByTenantId(tenantId1, pageLink); + assertEquals(0, assets3.getData().size()); } @Test @@ -87,17 +88,17 @@ public class JpaAssetDaoTest extends AbstractJpaDaoTest { saveAsset(assetId, tenantId, customerId, "ASSET_" + i, "TYPE_1"); } - TextPageLink pageLink1 = new TextPageLink(20, "ASSET_"); - List assets1 = assetDao.findAssetsByTenantIdAndCustomerId(tenantId1, customerId1, pageLink1); - assertEquals(20, assets1.size()); + PageLink pageLink = new PageLink(20, 0, "ASSET_"); + PageData assets1 = assetDao.findAssetsByTenantIdAndCustomerId(tenantId1, customerId1, pageLink); + assertEquals(20, assets1.getData().size()); - TextPageLink pageLink2 = new TextPageLink(20, "ASSET_", assets1.get(19).getId().getId(), null); - List assets2 = assetDao.findAssetsByTenantIdAndCustomerId(tenantId1, customerId1, pageLink2); - assertEquals(10, assets2.size()); + pageLink = pageLink.nextPageLink(); + PageData assets2 = assetDao.findAssetsByTenantIdAndCustomerId(tenantId1, customerId1, pageLink); + assertEquals(10, assets2.getData().size()); - TextPageLink pageLink3 = new TextPageLink(20, "ASSET_", assets2.get(9).getId().getId(), null); - List assets3 = assetDao.findAssetsByTenantIdAndCustomerId(tenantId1, customerId1, pageLink3); - assertEquals(0, assets3.size()); + pageLink = pageLink.nextPageLink(); + PageData assets3 = assetDao.findAssetsByTenantIdAndCustomerId(tenantId1, customerId1, pageLink); + assertEquals(0, assets3.getData().size()); } @Test diff --git a/dao/src/test/java/org/thingsboard/server/dao/sql/component/JpaBaseComponentDescriptorDaoTest.java b/dao/src/test/java/org/thingsboard/server/dao/sql/component/JpaBaseComponentDescriptorDaoTest.java index 36f2288304..e47d39c28b 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/sql/component/JpaBaseComponentDescriptorDaoTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/sql/component/JpaBaseComponentDescriptorDaoTest.java @@ -19,7 +19,8 @@ import com.datastax.driver.core.utils.UUIDs; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.thingsboard.server.common.data.id.ComponentDescriptorId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.plugin.ComponentDescriptor; import org.thingsboard.server.common.data.plugin.ComponentScope; import org.thingsboard.server.common.data.plugin.ComponentType; @@ -46,13 +47,13 @@ public class JpaBaseComponentDescriptorDaoTest extends AbstractJpaDaoTest { createComponentDescriptor(ComponentType.ACTION, ComponentScope.TENANT, i + 20); } - TextPageLink pageLink1 = new TextPageLink(15, "COMPONENT_"); - List components1 = componentDescriptorDao.findByTypeAndPageLink(AbstractServiceTest.SYSTEM_TENANT_ID, ComponentType.FILTER, pageLink1); - assertEquals(15, components1.size()); + PageLink pageLink = new PageLink(15, 0, "COMPONENT_"); + PageData components1 = componentDescriptorDao.findByTypeAndPageLink(AbstractServiceTest.SYSTEM_TENANT_ID, ComponentType.FILTER, pageLink); + assertEquals(15, components1.getData().size()); - TextPageLink pageLink2 = new TextPageLink(15, "COMPONENT_", components1.get(14).getId().getId(), null); - List components2 = componentDescriptorDao.findByTypeAndPageLink(AbstractServiceTest.SYSTEM_TENANT_ID,ComponentType.FILTER, pageLink2); - assertEquals(5, components2.size()); + pageLink = pageLink.nextPageLink(); + PageData components2 = componentDescriptorDao.findByTypeAndPageLink(AbstractServiceTest.SYSTEM_TENANT_ID,ComponentType.FILTER, pageLink); + assertEquals(5, components2.getData().size()); } @Test @@ -63,15 +64,15 @@ public class JpaBaseComponentDescriptorDaoTest extends AbstractJpaDaoTest { createComponentDescriptor(ComponentType.FILTER, ComponentScope.SYSTEM, i + 40); } - TextPageLink pageLink1 = new TextPageLink(15, "COMPONENT_"); - List components1 = componentDescriptorDao.findByScopeAndTypeAndPageLink(AbstractServiceTest.SYSTEM_TENANT_ID, - ComponentScope.SYSTEM, ComponentType.FILTER, pageLink1); - assertEquals(15, components1.size()); + PageLink pageLink = new PageLink(15, 0, "COMPONENT_"); + PageData components1 = componentDescriptorDao.findByScopeAndTypeAndPageLink(AbstractServiceTest.SYSTEM_TENANT_ID, + ComponentScope.SYSTEM, ComponentType.FILTER, pageLink); + assertEquals(15, components1.getData().size()); - TextPageLink pageLink2 = new TextPageLink(15, "COMPONENT_", components1.get(14).getId().getId(), null); - List components2 = componentDescriptorDao.findByScopeAndTypeAndPageLink(AbstractServiceTest.SYSTEM_TENANT_ID, - ComponentScope.SYSTEM, ComponentType.FILTER, pageLink2); - assertEquals(5, components2.size()); + pageLink = pageLink.nextPageLink(); + PageData components2 = componentDescriptorDao.findByScopeAndTypeAndPageLink(AbstractServiceTest.SYSTEM_TENANT_ID, + ComponentScope.SYSTEM, ComponentType.FILTER, pageLink); + assertEquals(5, components2.getData().size()); } private void createComponentDescriptor(ComponentType type, ComponentScope scope, int index) { diff --git a/dao/src/test/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDaoTest.java b/dao/src/test/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDaoTest.java index dc8af1bc9a..3451a5c3be 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDaoTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDaoTest.java @@ -21,7 +21,8 @@ import org.springframework.beans.factory.annotation.Autowired; 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.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.AbstractJpaDaoTest; import org.thingsboard.server.dao.customer.CustomerDao; @@ -50,13 +51,13 @@ public class JpaCustomerDaoTest extends AbstractJpaDaoTest { createCustomer(tenantId2, i * 2); } - TextPageLink pageLink1 = new TextPageLink(15, "CUSTOMER"); - List customers1 = customerDao.findCustomersByTenantId(tenantId1, pageLink1); - assertEquals(15, customers1.size()); + PageLink pageLink = new PageLink(15, 0, "CUSTOMER"); + PageData customers1 = customerDao.findCustomersByTenantId(tenantId1, pageLink); + assertEquals(15, customers1.getData().size()); - TextPageLink pageLink2 = new TextPageLink(15, "CUSTOMER", customers1.get(14).getId().getId(), null); - List customers2 = customerDao.findCustomersByTenantId(tenantId1, pageLink2); - assertEquals(5, customers2.size()); + pageLink = pageLink.nextPageLink(); + PageData customers2 = customerDao.findCustomersByTenantId(tenantId1, pageLink); + assertEquals(5, customers2.getData().size()); } @Test diff --git a/dao/src/test/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardInfoDaoTest.java b/dao/src/test/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardInfoDaoTest.java index 2837888202..8b28eb1af7 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardInfoDaoTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardInfoDaoTest.java @@ -22,7 +22,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.thingsboard.server.common.data.DashboardInfo; import org.thingsboard.server.common.data.id.DashboardId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.AbstractJpaDaoTest; import org.thingsboard.server.dao.dashboard.DashboardInfoDao; import org.thingsboard.server.dao.service.AbstractServiceTest; @@ -48,13 +49,12 @@ public class JpaDashboardInfoDaoTest extends AbstractJpaDaoTest { createDashboard(tenantId2, i * 2); } - TextPageLink pageLink1 = new TextPageLink(15, "DASHBOARD"); - List dashboardInfos1 = dashboardInfoDao.findDashboardsByTenantId(tenantId1, pageLink1); - Assert.assertEquals(15, dashboardInfos1.size()); + PageLink pageLink = new PageLink(15, 0, "DASHBOARD"); + PageData dashboardInfos1 = dashboardInfoDao.findDashboardsByTenantId(tenantId1, pageLink); + Assert.assertEquals(15, dashboardInfos1.getData().size()); - TextPageLink pageLink2 = new TextPageLink(15, "DASHBOARD", dashboardInfos1.get(14).getId().getId(), null); - List dashboardInfos2 = dashboardInfoDao.findDashboardsByTenantId(tenantId1, pageLink2); - Assert.assertEquals(5, dashboardInfos2.size()); + PageData dashboardInfos2 = dashboardInfoDao.findDashboardsByTenantId(tenantId1, pageLink.nextPageLink()); + Assert.assertEquals(5, dashboardInfos2.getData().size()); } private void createDashboard(UUID tenantId, int index) { diff --git a/dao/src/test/java/org/thingsboard/server/dao/sql/device/JpaDeviceDaoTest.java b/dao/src/test/java/org/thingsboard/server/dao/sql/device/JpaDeviceDaoTest.java index f74415cefd..c94bc43af4 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/sql/device/JpaDeviceDaoTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/sql/device/JpaDeviceDaoTest.java @@ -25,7 +25,8 @@ import org.thingsboard.server.common.data.Device; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.DeviceId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.AbstractJpaDaoTest; import org.thingsboard.server.dao.device.DeviceDao; @@ -54,13 +55,14 @@ public class JpaDeviceDaoTest extends AbstractJpaDaoTest { UUID customerId2 = UUIDs.timeBased(); createDevices(tenantId1, tenantId2, customerId1, customerId2, 40); - TextPageLink pageLink1 = new TextPageLink(15, "SEARCH_TEXT"); - List devices1 = deviceDao.findDevicesByTenantId(tenantId1, pageLink1); - assertEquals(15, devices1.size()); + PageLink pageLink = new PageLink(15, 0, "SEARCH_TEXT"); + PageData devices1 = deviceDao.findDevicesByTenantId(tenantId1, pageLink); + assertEquals(15, devices1.getData().size()); - TextPageLink pageLink2 = new TextPageLink(15, "SEARCH_TEXT", devices1.get(14).getId().getId(), null); - List devices2 = deviceDao.findDevicesByTenantId(tenantId1, pageLink2); - assertEquals(5, devices2.size()); + pageLink = pageLink.nextPageLink(); + + PageData devices2 = deviceDao.findDevicesByTenantId(tenantId1, pageLink); + assertEquals(5, devices2.getData().size()); } @Test diff --git a/dao/src/test/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDaoTest.java b/dao/src/test/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDaoTest.java index 443bfa1f1c..595d7f628c 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDaoTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDaoTest.java @@ -27,6 +27,7 @@ import org.thingsboard.server.common.data.id.DeviceId; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.EventId; import org.thingsboard.server.common.data.id.TenantId; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.dao.AbstractJpaDaoTest; import org.thingsboard.server.dao.event.EventDao; @@ -88,26 +89,29 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest { long startTime = System.currentTimeMillis(); long endTime = createEventsTwoEntities(tenantId, entityId1, entityId2, startTime, 20); - TimePageLink pageLink1 = new TimePageLink(30, null, null, true); - List events1 = eventDao.findEvents(tenantId, new DeviceId(entityId1), pageLink1); - assertEquals(10, events1.size()); + TimePageLink pageLink1 = new TimePageLink(30); + PageData events1 = eventDao.findEvents(tenantId, new DeviceId(entityId1), pageLink1); + assertEquals(10, events1.getData().size()); - TimePageLink pageLink2 = new TimePageLink(30, startTime, null, true); - List events2 = eventDao.findEvents(tenantId, new DeviceId(entityId1), pageLink2); - assertEquals(10, events2.size()); + TimePageLink pageLink2 = new TimePageLink(30, 0, "", null, startTime, null); + PageData events2 = eventDao.findEvents(tenantId, new DeviceId(entityId1), pageLink2); + assertEquals(10, events2.getData().size()); - TimePageLink pageLink3 = new TimePageLink(30, startTime, endTime, true); - List events3 = eventDao.findEvents(tenantId, new DeviceId(entityId1), pageLink3); - assertEquals(10, events3.size()); + TimePageLink pageLink3 = new TimePageLink(30, 0, "", null, startTime, endTime); + PageData events3 = eventDao.findEvents(tenantId, new DeviceId(entityId1), pageLink3); + assertEquals(10, events3.getData().size()); - TimePageLink pageLink4 = new TimePageLink(5, startTime, endTime, true); - List events4 = eventDao.findEvents(tenantId, new DeviceId(entityId1), pageLink4); - assertEquals(5, events4.size()); + TimePageLink pageLink4 = new TimePageLink(5, 0, "", null, startTime, endTime); + PageData events4 = eventDao.findEvents(tenantId, new DeviceId(entityId1), pageLink4); + assertEquals(5, events4.getData().size()); - UUID idOffset = events4.get(4).getId().getId(); - TimePageLink pageLink5 = new TimePageLink(10, startTime, endTime, true, idOffset); - List events5 = eventDao.findEvents(tenantId, new DeviceId(entityId1), pageLink5); - assertEquals(5, events5.size()); + pageLink4 = pageLink4.nextPageLink(); + PageData events5 = eventDao.findEvents(tenantId, new DeviceId(entityId1), pageLink4); + assertEquals(5, events5.getData().size()); + + pageLink4 = pageLink4.nextPageLink(); + PageData events6 = eventDao.findEvents(tenantId, new DeviceId(entityId1), pageLink4); + assertEquals(0, events6.getData().size()); } @@ -119,26 +123,25 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest { long startTime = System.currentTimeMillis(); long endTime = createEventsTwoEntitiesTwoTypes(tenantId, entityId1, entityId2, startTime, 20); - TimePageLink pageLink1 = new TimePageLink(30, null, null, true); - List events1 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink1); - assertEquals(5, events1.size()); + TimePageLink pageLink1 = new TimePageLink(30); + PageData events1 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink1); + assertEquals(5, events1.getData().size()); - TimePageLink pageLink2 = new TimePageLink(30, startTime, null, true); - List events2 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink2); - assertEquals(5, events2.size()); + TimePageLink pageLink2 = new TimePageLink(30, 0, "", null, startTime, null); + PageData events2 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink2); + assertEquals(5, events2.getData().size()); - TimePageLink pageLink3 = new TimePageLink(30, startTime, endTime, true); - List events3 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink3); - assertEquals(5, events3.size()); + TimePageLink pageLink3 = new TimePageLink(30, 0, "", null, startTime, endTime); + PageData events3 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink3); + assertEquals(5, events3.getData().size()); - TimePageLink pageLink4 = new TimePageLink(4, startTime, endTime, true); - List events4 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink4); - assertEquals(4, events4.size()); + TimePageLink pageLink4 = new TimePageLink(4, 0, "", null, startTime, endTime); + PageData events4 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink4); + assertEquals(4, events4.getData().size()); - UUID idOffset = events3.get(2).getId().getId(); - TimePageLink pageLink5 = new TimePageLink(10, startTime, endTime, true, idOffset); - List events5 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink5); - assertEquals(2, events5.size()); + pageLink4 = pageLink4.nextPageLink(); + PageData events5 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink4); + assertEquals(2, events5.getData().size()); } private long createEventsTwoEntitiesTwoTypes(UUID tenantId, UUID entityId1, UUID entityId2, long startTime, int count) { diff --git a/dao/src/test/java/org/thingsboard/server/dao/sql/tenant/JpaTenantDaoTest.java b/dao/src/test/java/org/thingsboard/server/dao/sql/tenant/JpaTenantDaoTest.java index 30c98af8e7..3cadf5cd95 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/sql/tenant/JpaTenantDaoTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/sql/tenant/JpaTenantDaoTest.java @@ -21,7 +21,8 @@ import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.AbstractJpaDaoTest; import org.thingsboard.server.dao.service.AbstractServiceTest; import org.thingsboard.server.dao.tenant.TenantDao; @@ -43,14 +44,20 @@ public class JpaTenantDaoTest extends AbstractJpaDaoTest { public void testFindTenantsByRegion() { createTenants(); assertEquals(60, tenantDao.find(AbstractServiceTest.SYSTEM_TENANT_ID).size()); - List tenants1 = tenantDao.findTenantsByRegion(AbstractServiceTest.SYSTEM_TENANT_ID, "REGION_1", new TextPageLink(20,"title")); - assertEquals(20, tenants1.size()); - List tenants2 = tenantDao.findTenantsByRegion(AbstractServiceTest.SYSTEM_TENANT_ID,"REGION_1", - new TextPageLink(20,"title", tenants1.get(19).getId().getId(), null)); - assertEquals(10, tenants2.size()); - List tenants3 = tenantDao.findTenantsByRegion(AbstractServiceTest.SYSTEM_TENANT_ID,"REGION_1", - new TextPageLink(20,"title", tenants2.get(9).getId().getId(), null)); - assertEquals(0, tenants3.size()); + + PageLink pageLink = new PageLink(20, 0, "title"); + PageData tenants1 = tenantDao.findTenantsByRegion(AbstractServiceTest.SYSTEM_TENANT_ID, "REGION_1", pageLink); + assertEquals(20, tenants1.getData().size()); + + pageLink = pageLink.nextPageLink(); + PageData tenants2 = tenantDao.findTenantsByRegion(AbstractServiceTest.SYSTEM_TENANT_ID,"REGION_1", + pageLink); + assertEquals(10, tenants2.getData().size()); + + pageLink = pageLink.nextPageLink(); + PageData tenants3 = tenantDao.findTenantsByRegion(AbstractServiceTest.SYSTEM_TENANT_ID,"REGION_1", + pageLink); + assertEquals(0, tenants3.getData().size()); } private void createTenants() { diff --git a/dao/src/test/java/org/thingsboard/server/dao/sql/user/JpaUserDaoTest.java b/dao/src/test/java/org/thingsboard/server/dao/sql/user/JpaUserDaoTest.java index 8275b76508..7eed49f7ff 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/sql/user/JpaUserDaoTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/sql/user/JpaUserDaoTest.java @@ -25,7 +25,8 @@ import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.UserId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.security.Authority; import org.thingsboard.server.dao.AbstractJpaDaoTest; import org.thingsboard.server.dao.service.AbstractServiceTest; @@ -73,14 +74,17 @@ public class JpaUserDaoTest extends AbstractJpaDaoTest { UUID tenantId = UUIDs.timeBased(); UUID customerId = UUIDs.timeBased(); create30Adminsand60Users(tenantId, customerId); - List tenantAdmins1 = userDao.findTenantAdmins(tenantId, new TextPageLink(20)); - assertEquals(20, tenantAdmins1.size()); - List tenantAdmins2 = userDao.findTenantAdmins(tenantId, - new TextPageLink(20, null, tenantAdmins1.get(19).getId().getId(), null)); - assertEquals(10, tenantAdmins2.size()); - List tenantAdmins3 = userDao.findTenantAdmins(tenantId, - new TextPageLink(20, null, tenantAdmins2.get(9).getId().getId(), null)); - assertEquals(0, tenantAdmins3.size()); + PageLink pageLink = new PageLink(20); + PageData tenantAdmins1 = userDao.findTenantAdmins(tenantId, pageLink); + assertEquals(20, tenantAdmins1.getData().size()); + pageLink = pageLink.nextPageLink(); + PageData tenantAdmins2 = userDao.findTenantAdmins(tenantId, + pageLink); + assertEquals(10, tenantAdmins2.getData().size()); + pageLink = pageLink.nextPageLink(); + PageData tenantAdmins3 = userDao.findTenantAdmins(tenantId, + pageLink); + assertEquals(0, tenantAdmins3.getData().size()); } @Test @@ -89,14 +93,17 @@ public class JpaUserDaoTest extends AbstractJpaDaoTest { UUID tenantId = UUIDs.timeBased(); UUID customerId = UUIDs.timeBased(); create30Adminsand60Users(tenantId, customerId); - List customerUsers1 = userDao.findCustomerUsers(tenantId, customerId, new TextPageLink(40)); - assertEquals(40, customerUsers1.size()); - List customerUsers2 = userDao.findCustomerUsers(tenantId, customerId, - new TextPageLink(20, null, customerUsers1.get(39).getId().getId(), null)); - assertEquals(20, customerUsers2.size()); - List customerUsers3 = userDao.findCustomerUsers(tenantId, customerId, - new TextPageLink(20, null, customerUsers2.get(19).getId().getId(), null)); - assertEquals(0, customerUsers3.size()); + PageLink pageLink = new PageLink(40); + PageData customerUsers1 = userDao.findCustomerUsers(tenantId, customerId, pageLink); + assertEquals(40, customerUsers1.getData().size()); + pageLink = pageLink.nextPageLink(); + PageData customerUsers2 = userDao.findCustomerUsers(tenantId, customerId, + pageLink); + assertEquals(20, customerUsers2.getData().size()); + pageLink = pageLink.nextPageLink(); + PageData customerUsers3 = userDao.findCustomerUsers(tenantId, customerId, + pageLink); + assertEquals(0, customerUsers3.getData().size()); } @Test diff --git a/dao/src/test/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDaoTest.java b/dao/src/test/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDaoTest.java index 9f8292f706..db0f1b5997 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDaoTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDaoTest.java @@ -23,7 +23,8 @@ import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.WidgetsBundleId; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.widget.WidgetsBundle; import org.thingsboard.server.dao.AbstractJpaDaoTest; import org.thingsboard.server.dao.service.AbstractServiceTest; @@ -65,13 +66,13 @@ public class JpaWidgetsBundleDaoTest extends AbstractJpaDaoTest { createSystemWidgetBundles(30, "WB_"); assertEquals(30, widgetsBundleDao.find(AbstractServiceTest.SYSTEM_TENANT_ID).size()); // Get first page - TextPageLink textPageLink1 = new TextPageLink(10, "WB"); - List widgetsBundles1 = widgetsBundleDao.findSystemWidgetsBundles(AbstractServiceTest.SYSTEM_TENANT_ID, textPageLink1); - assertEquals(10, widgetsBundles1.size()); + PageLink pageLink = new PageLink(10, 0, "WB"); + PageData widgetsBundles1 = widgetsBundleDao.findSystemWidgetsBundles(AbstractServiceTest.SYSTEM_TENANT_ID, pageLink); + assertEquals(10, widgetsBundles1.getData().size()); // Get next page - TextPageLink textPageLink2 = new TextPageLink(10, "WB", widgetsBundles1.get(9).getId().getId(), null); - List widgetsBundles2 = widgetsBundleDao.findSystemWidgetsBundles(AbstractServiceTest.SYSTEM_TENANT_ID, textPageLink2); - assertEquals(10, widgetsBundles2.size()); + pageLink = pageLink.nextPageLink(); + PageData widgetsBundles2 = widgetsBundleDao.findSystemWidgetsBundles(AbstractServiceTest.SYSTEM_TENANT_ID, pageLink); + assertEquals(10, widgetsBundles2.getData().size()); } @Test @@ -87,18 +88,17 @@ public class JpaWidgetsBundleDaoTest extends AbstractJpaDaoTest { } assertEquals(180, widgetsBundleDao.find(AbstractServiceTest.SYSTEM_TENANT_ID).size()); - TextPageLink textPageLink1 = new TextPageLink(40, "WB"); - List widgetsBundles1 = widgetsBundleDao.findTenantWidgetsBundlesByTenantId(tenantId1, textPageLink1); - assertEquals(30, widgetsBundles1.size()); + PageLink pageLink1 = new PageLink(40, 0, "WB"); + PageData widgetsBundles1 = widgetsBundleDao.findTenantWidgetsBundlesByTenantId(tenantId1, pageLink1); + assertEquals(30, widgetsBundles1.getData().size()); - TextPageLink textPageLink2 = new TextPageLink(40, "WB"); - List widgetsBundles2 = widgetsBundleDao.findTenantWidgetsBundlesByTenantId(tenantId2, textPageLink2); - assertEquals(40, widgetsBundles2.size()); + PageLink pageLink2 = new PageLink(40, 0, "WB"); + PageData widgetsBundles2 = widgetsBundleDao.findTenantWidgetsBundlesByTenantId(tenantId2, pageLink2); + assertEquals(40, widgetsBundles2.getData().size()); - TextPageLink textPageLink3 = new TextPageLink(40, "WB", - widgetsBundles2.get(39).getId().getId(), null); - List widgetsBundles3 = widgetsBundleDao.findTenantWidgetsBundlesByTenantId(tenantId2, textPageLink3); - assertEquals(10, widgetsBundles3.size()); + pageLink2 = pageLink2.nextPageLink(); + PageData widgetsBundles3 = widgetsBundleDao.findTenantWidgetsBundlesByTenantId(tenantId2, pageLink2); + assertEquals(10, widgetsBundles3.getData().size()); } @Test @@ -113,25 +113,21 @@ public class JpaWidgetsBundleDaoTest extends AbstractJpaDaoTest { createSystemWidgetBundles(2, "WB_SYS_"); } - TextPageLink textPageLink1 = new TextPageLink(30, "WB"); - List widgetsBundles1 = widgetsBundleDao.findAllTenantWidgetsBundlesByTenantId(tenantId1, textPageLink1); - assertEquals(30, widgetsBundles1.size()); + PageLink pageLink = new PageLink(30, 0, "WB"); + PageData widgetsBundles1 = widgetsBundleDao.findAllTenantWidgetsBundlesByTenantId(tenantId1, pageLink); + assertEquals(30, widgetsBundles1.getData().size()); - TextPageLink textPageLink2 = new TextPageLink(30, "WB", - widgetsBundles1.get(29).getId().getId(), null); - List widgetsBundles2 = widgetsBundleDao.findAllTenantWidgetsBundlesByTenantId(tenantId1, textPageLink2); + pageLink = pageLink.nextPageLink(); + PageData widgetsBundles2 = widgetsBundleDao.findAllTenantWidgetsBundlesByTenantId(tenantId1, pageLink); + assertEquals(30, widgetsBundles2.getData().size()); - assertEquals(30, widgetsBundles2.size()); + pageLink = pageLink.nextPageLink(); + PageData widgetsBundles3 = widgetsBundleDao.findAllTenantWidgetsBundlesByTenantId(tenantId1, pageLink); + assertEquals(10, widgetsBundles3.getData().size()); - TextPageLink textPageLink3 = new TextPageLink(30, "WB", - widgetsBundles2.get(29).getId().getId(), null); - List widgetsBundles3 = widgetsBundleDao.findAllTenantWidgetsBundlesByTenantId(tenantId1, textPageLink3); - assertEquals(10, widgetsBundles3.size()); - - TextPageLink textPageLink4 = new TextPageLink(30, "WB", - widgetsBundles3.get(9).getId().getId(), null); - List widgetsBundles4 = widgetsBundleDao.findAllTenantWidgetsBundlesByTenantId(tenantId1, textPageLink4); - assertEquals(0, widgetsBundles4.size()); + pageLink = pageLink.nextPageLink(); + PageData widgetsBundles4 = widgetsBundleDao.findAllTenantWidgetsBundlesByTenantId(tenantId1, pageLink); + assertEquals(0, widgetsBundles4.getData().size()); } @Test @@ -142,9 +138,9 @@ public class JpaWidgetsBundleDaoTest extends AbstractJpaDaoTest { createWidgetBundles(5, tenantId, "ABC_"); createSystemWidgetBundles(5, "SYS_"); - TextPageLink textPageLink = new TextPageLink(30, "TEXT_NOT_FOUND"); - List widgetsBundles4 = widgetsBundleDao.findAllTenantWidgetsBundlesByTenantId(tenantId, textPageLink); - assertEquals(0, widgetsBundles4.size()); + PageLink textPageLink = new PageLink(30, 0, "TEXT_NOT_FOUND"); + PageData widgetsBundles4 = widgetsBundleDao.findAllTenantWidgetsBundlesByTenantId(tenantId, textPageLink); + assertEquals(0, widgetsBundles4.getData().size()); } private void createWidgetBundles(int count, UUID tenantId, String prefix) { diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/connectivity/MqttClientTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/connectivity/MqttClientTest.java index 997bc1a789..8dd09114db 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/connectivity/MqttClientTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/connectivity/MqttClientTest.java @@ -39,7 +39,7 @@ import org.thingsboard.mqtt.MqttClientConfig; import org.thingsboard.mqtt.MqttHandler; import org.thingsboard.server.common.data.Device; import org.thingsboard.server.common.data.id.RuleChainId; -import org.thingsboard.server.common.data.page.TextPageData; +import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.rule.NodeConnectionInfo; import org.thingsboard.server.common.data.rule.RuleChain; import org.thingsboard.server.common.data.rule.RuleChainMetaData; @@ -372,11 +372,11 @@ public class MqttClientTest extends AbstractContainerTest { } private RuleChainId getDefaultRuleChainId() { - ResponseEntity> ruleChains = restClient.getRestTemplate().exchange( - HTTPS_URL + "/api/ruleChains?limit=40&textSearch=", + ResponseEntity> ruleChains = restClient.getRestTemplate().exchange( + HTTPS_URL + "/api/ruleChains?pageSize=40&page=0&textSearch=", HttpMethod.GET, null, - new ParameterizedTypeReference>() { + new ParameterizedTypeReference>() { }); Optional defaultRuleChain = ruleChains.getBody().getData() diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbAbstractRelationActionNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbAbstractRelationActionNode.java index 5bd9be9b67..b2fb76fa25 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbAbstractRelationActionNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbAbstractRelationActionNode.java @@ -38,8 +38,8 @@ import org.thingsboard.server.common.data.EntityView; import org.thingsboard.server.common.data.asset.Asset; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.EntityIdFactory; -import org.thingsboard.server.common.data.page.TextPageData; -import org.thingsboard.server.common.data.page.TextPageLink; +import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.relation.EntityRelation; import org.thingsboard.server.common.data.relation.EntitySearchDirection; import org.thingsboard.server.common.data.relation.RelationTypeGroup; @@ -231,7 +231,7 @@ public abstract class TbAbstractRelationActionNode dashboardInfoTextPageData = dashboardService.findDashboardsByTenantId(ctx.getTenantId(), new TextPageLink(200, entitykey.getEntityName())); + PageData dashboardInfoTextPageData = dashboardService.findDashboardsByTenantId(ctx.getTenantId(), new PageLink(200, 0, entitykey.getEntityName())); for (DashboardInfo dashboardInfo : dashboardInfoTextPageData.getData()) { if (dashboardInfo.getTitle().equals(entitykey.getEntityName())) { targetEntity.setEntityId(dashboardInfo.getId());