Browse Source

filtering EdgeEvents with TIMESERIES_UPDATE

pull/2436/head
Bohdan Smetaniuk 6 years ago
parent
commit
c4d7f52cf3
  1. 2
      application/src/main/java/org/thingsboard/server/controller/EdgeEventController.java
  2. 3
      common/dao-api/src/main/java/org/thingsboard/server/dao/edge/EdgeEventService.java
  3. 9
      dao/src/main/java/org/thingsboard/server/dao/edge/BaseEdgeEventService.java
  4. 2
      dao/src/main/java/org/thingsboard/server/dao/edge/CassandraEdgeEventDao.java
  5. 2
      dao/src/main/java/org/thingsboard/server/dao/edge/EdgeEventDao.java
  6. 11
      dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java

2
application/src/main/java/org/thingsboard/server/controller/EdgeEventController.java

@ -61,7 +61,7 @@ public class EdgeEventController extends BaseController {
EdgeId edgeId = new EdgeId(toUUID(strEdgeId));
checkEdgeId(edgeId, Operation.READ);
TimePageLink pageLink = createPageLink(limit, startTime, endTime, ascOrder, offset);
return checkNotNull(edgeEventService.findEdgeEvents(tenantId, edgeId, pageLink));
return checkNotNull(edgeEventService.findEdgeEvents(tenantId, edgeId, pageLink, false));
} catch (Exception e) {
throw handleException(e);
}

3
common/dao-api/src/main/java/org/thingsboard/server/dao/edge/EdgeEventService.java

@ -16,9 +16,7 @@
package org.thingsboard.server.dao.edge;
import com.google.common.util.concurrent.ListenableFuture;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.edge.EdgeEvent;
import org.thingsboard.server.common.data.edge.EdgeEventType;
import org.thingsboard.server.common.data.id.EdgeId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.TimePageData;
@ -30,4 +28,5 @@ public interface EdgeEventService {
TimePageData<EdgeEvent> findEdgeEvents(TenantId tenantId, EdgeId edgeId, TimePageLink pageLink);
TimePageData<EdgeEvent> findEdgeEvents(TenantId tenantId, EdgeId edgeId, TimePageLink pageLink, boolean withTsUpdate);
}

9
dao/src/main/java/org/thingsboard/server/dao/edge/BaseEdgeEventService.java

@ -35,7 +35,7 @@ import java.util.List;
public class BaseEdgeEventService implements EdgeEventService {
@Autowired
public EdgeEventDao edgeEventDao;
private EdgeEventDao edgeEventDao;
@Override
public ListenableFuture<EdgeEvent> saveAsync(EdgeEvent edgeEvent) {
@ -45,7 +45,12 @@ public class BaseEdgeEventService implements EdgeEventService {
@Override
public TimePageData<EdgeEvent> findEdgeEvents(TenantId tenantId, EdgeId edgeId, TimePageLink pageLink) {
List<EdgeEvent> events = edgeEventDao.findEdgeEvents(tenantId.getId(), edgeId, pageLink);
return findEdgeEvents(tenantId, edgeId, pageLink, true);
}
@Override
public TimePageData<EdgeEvent> findEdgeEvents(TenantId tenantId, EdgeId edgeId, TimePageLink pageLink, boolean withTsUpdate) {
List<EdgeEvent> events = edgeEventDao.findEdgeEvents(tenantId.getId(), edgeId, pageLink, withTsUpdate);
return new TimePageData<>(events, pageLink);
}

2
dao/src/main/java/org/thingsboard/server/dao/edge/CassandraEdgeEventDao.java

@ -53,7 +53,7 @@ public class CassandraEdgeEventDao extends CassandraAbstractSearchTimeDao<EdgeEv
}
@Override
public List<EdgeEvent> findEdgeEvents(UUID tenantId, EdgeId edgeId, TimePageLink pageLink) {
public List<EdgeEvent> findEdgeEvents(UUID tenantId, EdgeId edgeId, TimePageLink pageLink, boolean withTsUpdate) {
return null;
}
}

2
dao/src/main/java/org/thingsboard/server/dao/edge/EdgeEventDao.java

@ -46,6 +46,6 @@ public interface EdgeEventDao extends Dao<EdgeEvent> {
* @param pageLink the pageLink
* @return the event list
*/
List<EdgeEvent> findEdgeEvents(UUID tenantId, EdgeId edgeId, TimePageLink pageLink);
List<EdgeEvent> findEdgeEvents(UUID tenantId, EdgeId edgeId, TimePageLink pageLink, boolean withTsUpdate);
}

11
dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java

@ -26,6 +26,7 @@ import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.UUIDConverter;
import org.thingsboard.server.common.data.audit.ActionType;
import org.thingsboard.server.common.data.edge.EdgeEvent;
import org.thingsboard.server.common.data.id.EdgeEventId;
import org.thingsboard.server.common.data.id.EdgeId;
@ -75,9 +76,9 @@ public class JpaBaseEdgeEventDao extends JpaAbstractSearchTimeDao<EdgeEventEntit
}
@Override
public List<EdgeEvent> findEdgeEvents(UUID tenantId, EdgeId edgeId, TimePageLink pageLink) {
public List<EdgeEvent> findEdgeEvents(UUID tenantId, EdgeId edgeId, TimePageLink pageLink, boolean withTsUpdate) {
Specification<EdgeEventEntity> timeSearchSpec = JpaAbstractSearchTimeDao.getTimeSearchPageSpec(pageLink, "id");
Specification<EdgeEventEntity> fieldsSpec = getEntityFieldsSpec(tenantId, edgeId);
Specification<EdgeEventEntity> fieldsSpec = getEntityFieldsSpec(tenantId, edgeId, withTsUpdate);
Sort.Direction sortDirection = pageLink.isAscOrder() ? Sort.Direction.ASC : Sort.Direction.DESC;
Pageable pageable = PageRequest.of(0, pageLink.getLimit(), sortDirection, ID_PROPERTY);
return DaoUtil.convertDataList(edgeEventRepository.findAll(Specification.where(timeSearchSpec).and(fieldsSpec), pageable).getContent());
@ -95,7 +96,7 @@ public class JpaBaseEdgeEventDao extends JpaAbstractSearchTimeDao<EdgeEventEntit
return Optional.of(DaoUtil.getData(edgeEventRepository.save(entity)));
}
private Specification<EdgeEventEntity> getEntityFieldsSpec(UUID tenantId, EdgeId edgeId) {
private Specification<EdgeEventEntity> getEntityFieldsSpec(UUID tenantId, EdgeId edgeId, boolean withTsUpdate) {
return (root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<>();
if (tenantId != null) {
@ -106,6 +107,10 @@ public class JpaBaseEdgeEventDao extends JpaAbstractSearchTimeDao<EdgeEventEntit
Predicate entityIdPredicate = criteriaBuilder.equal(root.get("edgeId"), UUIDConverter.fromTimeUUID(edgeId.getId()));
predicates.add(entityIdPredicate);
}
if (!withTsUpdate) {
Predicate edgeEventActionPredicate = criteriaBuilder.notEqual(root.get("edgeEventAction"), ActionType.TIMESERIES_UPDATED.name());
predicates.add(edgeEventActionPredicate);
}
return criteriaBuilder.and(predicates.toArray(new Predicate[]{}));
};
}

Loading…
Cancel
Save