From 144da0367aa76b703e29f9cf038d83c7ea160235 Mon Sep 17 00:00:00 2001 From: Viacheslav Klimov Date: Fri, 29 Oct 2021 16:52:19 +0300 Subject: [PATCH] Refactor events clearing --- .../server/controller/EventController.java | 2 +- .../server/dao/event/EventService.java | 3 +- .../server/dao/event/BaseEventService.java | 47 +++++++++---------- 3 files changed, 25 insertions(+), 27 deletions(-) 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 8547126643..ea8dda9673 100644 --- a/application/src/main/java/org/thingsboard/server/controller/EventController.java +++ b/application/src/main/java/org/thingsboard/server/controller/EventController.java @@ -265,7 +265,7 @@ public class EventController extends BaseController { EntityId entityId = EntityIdFactory.getByTypeAndId(strEntityType, strEntityId); checkEntityId(entityId, Operation.DELETE); - eventService.removeEventsByTypeInPeriod(tenantId, entityId, eventType, startTime, endTime); + eventService.removeEvents(tenantId, entityId, eventType, startTime, endTime); } catch (Exception e) { throw handleException(e); } 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 973b5ad3cc..3591627c51 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 @@ -46,7 +46,8 @@ public interface EventService { void removeEvents(TenantId tenantId, EntityId entityId); + void removeEvents(TenantId tenantId, EntityId entityId, String eventType, Long startTime, Long endTime); + void cleanupEvents(long ttl, long debugTtl); - void removeEventsByTypeInPeriod(TenantId tenantId, EntityId entityId, String eventType, Long startTime, Long endTime); } 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 a8888a230c..5e0cba7f5e 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 @@ -32,7 +32,6 @@ import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.dao.exception.DataValidationException; import org.thingsboard.server.dao.service.DataValidator; -import java.sql.Time; import java.util.List; import java.util.Optional; import java.util.UUID; @@ -122,8 +121,28 @@ public class BaseEventService implements EventService { @Override public void removeEvents(TenantId tenantId, EntityId entityId) { - TimePageLink eventPageLink = new TimePageLink(1000); - removeEventsByTypeAndPageLink(tenantId, entityId, null, eventPageLink); + removeEvents(tenantId, entityId, null, null, null); + } + + @Override + public void removeEvents(TenantId tenantId, EntityId entityId, String eventType, Long startTime, Long endTime) { + TimePageLink eventsPageLink = new TimePageLink(1000, 0, null, null, startTime, endTime); + PageData eventsPageData; + do { + if (eventType == null) { + eventsPageData = findEvents(tenantId, entityId, eventsPageLink); + } else { + eventsPageData = findEvents(tenantId, entityId, eventType, eventsPageLink); + } + + eventDao.removeAllByIds(eventsPageData.getData().stream() + .map(IdBased::getUuidId) + .collect(Collectors.toList())); + + if (eventsPageData.hasNext()) { + eventsPageLink = eventsPageLink.nextPageLink(); + } + } while (eventsPageData.hasNext()); } @Override @@ -131,28 +150,6 @@ public class BaseEventService implements EventService { eventDao.cleanupEvents(ttl, debugTtl); } - @Override - public void removeEventsByTypeInPeriod(TenantId tenantId, EntityId entityId, String eventType, Long startTime, Long endTime) { - TimePageLink eventPageLink = - new TimePageLink(1000, 0, null, null, startTime, endTime); - removeEventsByTypeAndPageLink(tenantId, entityId, eventType, eventPageLink); - } - - private void removeEventsByTypeAndPageLink(TenantId tenantId, EntityId entityId, String eventType, TimePageLink eventPageLink) { - PageData eventPageData; - do { - if (eventType == null) - eventPageData = findEvents(tenantId, entityId, eventPageLink); - else - eventPageData = findEvents(tenantId, entityId, eventType, eventPageLink); - List eventsIds = eventPageData.getData().stream().map(IdBased::getUuidId).collect(Collectors.toList()); - eventDao.removeAllByIds(eventsIds); - if (eventPageData.hasNext()) { - eventPageLink = eventPageLink.nextPageLink(); - } - } while (eventPageData.hasNext()); - } - private DataValidator eventValidator = new DataValidator() { @Override