Commit 427e7ac0944b0247b21f8f2cfb3214fe463907af

Authored by Volodymyr Babak
1 parent c68cbff3

Added swagger API for edge event controller. Added search text usage for edge ev…

…ent type. Code cleanup
@@ -174,7 +174,7 @@ public abstract class BaseController { @@ -174,7 +174,7 @@ public abstract class BaseController {
174 protected final String SORT_ORDER_ALLOWABLE_VALUES = "ASC, DESC"; 174 protected final String SORT_ORDER_ALLOWABLE_VALUES = "ASC, DESC";
175 protected final String DEVICE_INFO_DESCRIPTION = "Device Info is an extension of the default Device object that contains information about the assigned customer name and device profile name. "; 175 protected final String DEVICE_INFO_DESCRIPTION = "Device Info is an extension of the default Device object that contains information about the assigned customer name and device profile name. ";
176 176
177 - 177 + protected final String EDGE_EVENT_TEXT_SEARCH_DESCRIPTION = "The case insensitive 'startsWith' filter based on the edge event type name.";
178 178
179 public static final String INCORRECT_TENANT_ID = "Incorrect tenantId "; 179 public static final String INCORRECT_TENANT_ID = "Incorrect tenantId ";
180 protected static final String DEFAULT_DASHBOARD = "defaultDashboardId"; 180 protected static final String DEFAULT_DASHBOARD = "defaultDashboardId";
@@ -15,6 +15,8 @@ @@ -15,6 +15,8 @@
15 */ 15 */
16 package org.thingsboard.server.controller; 16 package org.thingsboard.server.controller;
17 17
  18 +import io.swagger.annotations.ApiOperation;
  19 +import io.swagger.annotations.ApiParam;
18 import lombok.extern.slf4j.Slf4j; 20 import lombok.extern.slf4j.Slf4j;
19 import org.springframework.beans.factory.annotation.Autowired; 21 import org.springframework.beans.factory.annotation.Autowired;
20 import org.springframework.security.access.prepost.PreAuthorize; 22 import org.springframework.security.access.prepost.PreAuthorize;
@@ -45,17 +47,28 @@ public class EdgeEventController extends BaseController { @@ -45,17 +47,28 @@ public class EdgeEventController extends BaseController {
45 47
46 public static final String EDGE_ID = "edgeId"; 48 public static final String EDGE_ID = "edgeId";
47 49
  50 + @ApiOperation(value = "Get Edge Events (getEdgeEvents)",
  51 + notes = "Returns a page of edge events for the requested edge. " +
  52 + PAGE_DATA_PARAMETERS)
48 @PreAuthorize("hasAuthority('TENANT_ADMIN')") 53 @PreAuthorize("hasAuthority('TENANT_ADMIN')")
49 @RequestMapping(value = "/edge/{edgeId}/events", method = RequestMethod.GET) 54 @RequestMapping(value = "/edge/{edgeId}/events", method = RequestMethod.GET)
50 @ResponseBody 55 @ResponseBody
51 public PageData<EdgeEvent> getEdgeEvents( 56 public PageData<EdgeEvent> getEdgeEvents(
  57 + @ApiParam(value = EDGE_ID_PARAM_DESCRIPTION)
52 @PathVariable(EDGE_ID) String strEdgeId, 58 @PathVariable(EDGE_ID) String strEdgeId,
  59 + @ApiParam(value = PAGE_SIZE_DESCRIPTION)
53 @RequestParam int pageSize, 60 @RequestParam int pageSize,
  61 + @ApiParam(value = PAGE_NUMBER_DESCRIPTION)
54 @RequestParam int page, 62 @RequestParam int page,
  63 + @ApiParam(value = EDGE_EVENT_TEXT_SEARCH_DESCRIPTION)
55 @RequestParam(required = false) String textSearch, 64 @RequestParam(required = false) String textSearch,
  65 + @ApiParam(value = SORT_PROPERTY_DESCRIPTION, allowableValues = SORT_PROPERTY_ALLOWABLE_VALUES)
56 @RequestParam(required = false) String sortProperty, 66 @RequestParam(required = false) String sortProperty,
  67 + @ApiParam(value = SORT_ORDER_DESCRIPTION, allowableValues = SORT_ORDER_ALLOWABLE_VALUES)
57 @RequestParam(required = false) String sortOrder, 68 @RequestParam(required = false) String sortOrder,
  69 + @ApiParam(value = "Timestamp. Edge events with creation time before it won't be queried")
58 @RequestParam(required = false) Long startTime, 70 @RequestParam(required = false) Long startTime,
  71 + @ApiParam(value = "Timestamp. Edge events with creation time after it won't be queried")
59 @RequestParam(required = false) Long endTime) throws ThingsboardException { 72 @RequestParam(required = false) Long endTime) throws ThingsboardException {
60 checkParameter(EDGE_ID, strEdgeId); 73 checkParameter(EDGE_ID, strEdgeId);
61 try { 74 try {
@@ -15,7 +15,6 @@ @@ -15,7 +15,6 @@
15 */ 15 */
16 package org.thingsboard.server.dao.model.sql; 16 package org.thingsboard.server.dao.model.sql;
17 17
18 -import com.datastax.oss.driver.api.core.uuid.Uuids;  
19 import com.fasterxml.jackson.databind.JsonNode; 18 import com.fasterxml.jackson.databind.JsonNode;
20 import lombok.Data; 19 import lombok.Data;
21 import lombok.EqualsAndHashCode; 20 import lombok.EqualsAndHashCode;
@@ -40,15 +39,14 @@ import javax.persistence.Table; @@ -40,15 +39,14 @@ import javax.persistence.Table;
40 import java.util.UUID; 39 import java.util.UUID;
41 40
42 import static org.thingsboard.server.dao.model.ModelConstants.EDGE_EVENT_ACTION_PROPERTY; 41 import static org.thingsboard.server.dao.model.ModelConstants.EDGE_EVENT_ACTION_PROPERTY;
  42 +import static org.thingsboard.server.dao.model.ModelConstants.EDGE_EVENT_BODY_PROPERTY;
43 import static org.thingsboard.server.dao.model.ModelConstants.EDGE_EVENT_COLUMN_FAMILY_NAME; 43 import static org.thingsboard.server.dao.model.ModelConstants.EDGE_EVENT_COLUMN_FAMILY_NAME;
44 import static org.thingsboard.server.dao.model.ModelConstants.EDGE_EVENT_EDGE_ID_PROPERTY; 44 import static org.thingsboard.server.dao.model.ModelConstants.EDGE_EVENT_EDGE_ID_PROPERTY;
45 -import static org.thingsboard.server.dao.model.ModelConstants.EDGE_EVENT_BODY_PROPERTY;  
46 import static org.thingsboard.server.dao.model.ModelConstants.EDGE_EVENT_ENTITY_ID_PROPERTY; 45 import static org.thingsboard.server.dao.model.ModelConstants.EDGE_EVENT_ENTITY_ID_PROPERTY;
47 import static org.thingsboard.server.dao.model.ModelConstants.EDGE_EVENT_TENANT_ID_PROPERTY; 46 import static org.thingsboard.server.dao.model.ModelConstants.EDGE_EVENT_TENANT_ID_PROPERTY;
48 import static org.thingsboard.server.dao.model.ModelConstants.EDGE_EVENT_TYPE_PROPERTY; 47 import static org.thingsboard.server.dao.model.ModelConstants.EDGE_EVENT_TYPE_PROPERTY;
49 import static org.thingsboard.server.dao.model.ModelConstants.EDGE_EVENT_UID_PROPERTY; 48 import static org.thingsboard.server.dao.model.ModelConstants.EDGE_EVENT_UID_PROPERTY;
50 import static org.thingsboard.server.dao.model.ModelConstants.EPOCH_DIFF; 49 import static org.thingsboard.server.dao.model.ModelConstants.EPOCH_DIFF;
51 -import static org.thingsboard.server.dao.model.ModelConstants.EVENT_UID_PROPERTY;  
52 import static org.thingsboard.server.dao.model.ModelConstants.TS_COLUMN; 50 import static org.thingsboard.server.dao.model.ModelConstants.TS_COLUMN;
53 51
54 @Data 52 @Data
@@ -31,10 +31,12 @@ public interface EdgeEventRepository extends PagingAndSortingRepository<EdgeEven @@ -31,10 +31,12 @@ public interface EdgeEventRepository extends PagingAndSortingRepository<EdgeEven
31 "e.tenantId = :tenantId " + 31 "e.tenantId = :tenantId " +
32 "AND e.edgeId = :edgeId " + 32 "AND e.edgeId = :edgeId " +
33 "AND (:startTime IS NULL OR e.createdTime >= :startTime) " + 33 "AND (:startTime IS NULL OR e.createdTime >= :startTime) " +
34 - "AND (:endTime IS NULL OR e.createdTime <= :endTime) " 34 + "AND (:endTime IS NULL OR e.createdTime <= :endTime) " +
  35 + "AND LOWER(e.edgeEventType) LIKE LOWER(CONCAT(:textSearch, '%'))"
35 ) 36 )
36 Page<EdgeEventEntity> findEdgeEventsByTenantIdAndEdgeId(@Param("tenantId") UUID tenantId, 37 Page<EdgeEventEntity> findEdgeEventsByTenantIdAndEdgeId(@Param("tenantId") UUID tenantId,
37 @Param("edgeId") UUID edgeId, 38 @Param("edgeId") UUID edgeId,
  39 + @Param("textSearch") String textSearch,
38 @Param("startTime") Long startTime, 40 @Param("startTime") Long startTime,
39 @Param("endTime") Long endTime, 41 @Param("endTime") Long endTime,
40 Pageable pageable); 42 Pageable pageable);
@@ -44,10 +46,12 @@ public interface EdgeEventRepository extends PagingAndSortingRepository<EdgeEven @@ -44,10 +46,12 @@ public interface EdgeEventRepository extends PagingAndSortingRepository<EdgeEven
44 "AND e.edgeId = :edgeId " + 46 "AND e.edgeId = :edgeId " +
45 "AND (:startTime IS NULL OR e.createdTime >= :startTime) " + 47 "AND (:startTime IS NULL OR e.createdTime >= :startTime) " +
46 "AND (:endTime IS NULL OR e.createdTime <= :endTime) " + 48 "AND (:endTime IS NULL OR e.createdTime <= :endTime) " +
47 - "AND e.edgeEventAction <> 'TIMESERIES_UPDATED'" 49 + "AND e.edgeEventAction <> 'TIMESERIES_UPDATED' " +
  50 + "AND LOWER(e.edgeEventType) LIKE LOWER(CONCAT(:textSearch, '%'))"
48 ) 51 )
49 Page<EdgeEventEntity> findEdgeEventsByTenantIdAndEdgeIdWithoutTimeseriesUpdated(@Param("tenantId") UUID tenantId, 52 Page<EdgeEventEntity> findEdgeEventsByTenantIdAndEdgeIdWithoutTimeseriesUpdated(@Param("tenantId") UUID tenantId,
50 @Param("edgeId") UUID edgeId, 53 @Param("edgeId") UUID edgeId,
  54 + @Param("textSearch") String textSearch,
51 @Param("startTime") Long startTime, 55 @Param("startTime") Long startTime,
52 @Param("endTime") Long endTime, 56 @Param("endTime") Long endTime,
53 Pageable pageable); 57 Pageable pageable);
@@ -39,6 +39,7 @@ import java.sql.Connection; @@ -39,6 +39,7 @@ import java.sql.Connection;
39 import java.sql.PreparedStatement; 39 import java.sql.PreparedStatement;
40 import java.sql.ResultSet; 40 import java.sql.ResultSet;
41 import java.sql.SQLException; 41 import java.sql.SQLException;
  42 +import java.util.Objects;
42 import java.util.Optional; 43 import java.util.Optional;
43 import java.util.UUID; 44 import java.util.UUID;
44 import java.util.concurrent.ConcurrentHashMap; 45 import java.util.concurrent.ConcurrentHashMap;
@@ -107,6 +108,7 @@ public class JpaBaseEdgeEventDao extends JpaAbstractSearchTextDao<EdgeEventEntit @@ -107,6 +108,7 @@ public class JpaBaseEdgeEventDao extends JpaAbstractSearchTextDao<EdgeEventEntit
107 .findEdgeEventsByTenantIdAndEdgeId( 108 .findEdgeEventsByTenantIdAndEdgeId(
108 tenantId, 109 tenantId,
109 edgeId.getId(), 110 edgeId.getId(),
  111 + Objects.toString(pageLink.getTextSearch(), ""),
110 pageLink.getStartTime(), 112 pageLink.getStartTime(),
111 pageLink.getEndTime(), 113 pageLink.getEndTime(),
112 DaoUtil.toPageable(pageLink))); 114 DaoUtil.toPageable(pageLink)));
@@ -116,6 +118,7 @@ public class JpaBaseEdgeEventDao extends JpaAbstractSearchTextDao<EdgeEventEntit @@ -116,6 +118,7 @@ public class JpaBaseEdgeEventDao extends JpaAbstractSearchTextDao<EdgeEventEntit
116 .findEdgeEventsByTenantIdAndEdgeIdWithoutTimeseriesUpdated( 118 .findEdgeEventsByTenantIdAndEdgeIdWithoutTimeseriesUpdated(
117 tenantId, 119 tenantId,
118 edgeId.getId(), 120 edgeId.getId(),
  121 + Objects.toString(pageLink.getTextSearch(), ""),
119 pageLink.getStartTime(), 122 pageLink.getStartTime(),
120 pageLink.getEndTime(), 123 pageLink.getEndTime(),
121 DaoUtil.toPageable(pageLink))); 124 DaoUtil.toPageable(pageLink)));