Search in sources :

Example 21 with EdgeId

use of org.thingsboard.server.common.data.id.EdgeId in project thingsboard by thingsboard.

the class EdgeServiceImpl method findEdgesByQuery.

@Override
public ListenableFuture<List<Edge>> findEdgesByQuery(TenantId tenantId, EdgeSearchQuery query) {
    log.trace("[{}] Executing findEdgesByQuery [{}]", tenantId, query);
    ListenableFuture<List<EntityRelation>> relations = relationService.findByQuery(tenantId, query.toEntitySearchQuery());
    ListenableFuture<List<Edge>> edges = Futures.transformAsync(relations, r -> {
        EntitySearchDirection direction = query.toEntitySearchQuery().getParameters().getDirection();
        List<ListenableFuture<Edge>> futures = new ArrayList<>();
        for (EntityRelation relation : r) {
            EntityId entityId = direction == EntitySearchDirection.FROM ? relation.getTo() : relation.getFrom();
            if (entityId.getEntityType() == EntityType.EDGE) {
                futures.add(findEdgeByIdAsync(tenantId, new EdgeId(entityId.getId())));
            }
        }
        return Futures.successfulAsList(futures);
    }, MoreExecutors.directExecutor());
    edges = Futures.transform(edges, new Function<List<Edge>, List<Edge>>() {

        @Nullable
        @Override
        public List<Edge> apply(@Nullable List<Edge> edgeList) {
            return edgeList == null ? Collections.emptyList() : edgeList.stream().filter(edge -> query.getEdgeTypes().contains(edge.getType())).collect(Collectors.toList());
        }
    }, MoreExecutors.directExecutor());
    return edges;
}
Also used : EntitySearchDirection(org.thingsboard.server.common.data.relation.EntitySearchDirection) ArrayList(java.util.ArrayList) EntityId(org.thingsboard.server.common.data.id.EntityId) EntityRelation(org.thingsboard.server.common.data.relation.EntityRelation) Function(com.google.common.base.Function) EdgeId(org.thingsboard.server.common.data.id.EdgeId) ListenableFuture(com.google.common.util.concurrent.ListenableFuture) List(java.util.List) ArrayList(java.util.ArrayList) Edge(org.thingsboard.server.common.data.edge.Edge) Nullable(javax.annotation.Nullable)

Example 22 with EdgeId

use of org.thingsboard.server.common.data.id.EdgeId in project thingsboard by thingsboard.

the class AbstractEdgeEntity method toEdge.

protected Edge toEdge() {
    Edge edge = new Edge(new EdgeId(getUuid()));
    edge.setCreatedTime(createdTime);
    if (tenantId != null) {
        edge.setTenantId(TenantId.fromUUID(tenantId));
    }
    if (customerId != null) {
        edge.setCustomerId(new CustomerId(customerId));
    }
    if (rootRuleChainId != null) {
        edge.setRootRuleChainId(new RuleChainId(rootRuleChainId));
    }
    edge.setType(type);
    edge.setName(name);
    edge.setLabel(label);
    edge.setRoutingKey(routingKey);
    edge.setSecret(secret);
    edge.setAdditionalInfo(additionalInfo);
    return edge;
}
Also used : EdgeId(org.thingsboard.server.common.data.id.EdgeId) RuleChainId(org.thingsboard.server.common.data.id.RuleChainId) CustomerId(org.thingsboard.server.common.data.id.CustomerId) Edge(org.thingsboard.server.common.data.edge.Edge)

Example 23 with EdgeId

use of org.thingsboard.server.common.data.id.EdgeId in project thingsboard by thingsboard.

the class BaseEdgeEventServiceTest method findEdgeEventsWithTsUpdateAndWithout.

@Test
public void findEdgeEventsWithTsUpdateAndWithout() throws Exception {
    EdgeId edgeId = new EdgeId(Uuids.timeBased());
    DeviceId deviceId = new DeviceId(Uuids.timeBased());
    TenantId tenantId = TenantId.fromUUID(Uuids.timeBased());
    TimePageLink pageLink = new TimePageLink(1, 0, null, new SortOrder("createdTime", SortOrder.Direction.ASC));
    EdgeEvent edgeEventWithTsUpdate = generateEdgeEvent(tenantId, edgeId, deviceId, EdgeEventActionType.TIMESERIES_UPDATED);
    edgeEventService.save(edgeEventWithTsUpdate);
    PageData<EdgeEvent> allEdgeEvents = edgeEventService.findEdgeEvents(tenantId, edgeId, pageLink, true);
    PageData<EdgeEvent> edgeEventsWithoutTsUpdate = edgeEventService.findEdgeEvents(tenantId, edgeId, pageLink, false);
    Assert.assertNotNull(allEdgeEvents.getData());
    Assert.assertNotNull(edgeEventsWithoutTsUpdate.getData());
    Assert.assertEquals(1, allEdgeEvents.getData().size());
    Assert.assertEquals(allEdgeEvents.getData().get(0).getUuidId(), edgeEventWithTsUpdate.getUuidId());
    Assert.assertTrue(edgeEventsWithoutTsUpdate.getData().isEmpty());
}
Also used : TenantId(org.thingsboard.server.common.data.id.TenantId) DeviceId(org.thingsboard.server.common.data.id.DeviceId) EdgeId(org.thingsboard.server.common.data.id.EdgeId) SortOrder(org.thingsboard.server.common.data.page.SortOrder) TimePageLink(org.thingsboard.server.common.data.page.TimePageLink) EdgeEvent(org.thingsboard.server.common.data.edge.EdgeEvent) Test(org.junit.Test)

Example 24 with EdgeId

use of org.thingsboard.server.common.data.id.EdgeId in project thingsboard by thingsboard.

the class BaseEdgeEventServiceTest method findEdgeEventsByTimeDescOrder.

@Test
public void findEdgeEventsByTimeDescOrder() throws Exception {
    long timeBeforeStartTime = LocalDateTime.of(2020, Month.NOVEMBER, 1, 11, 30).toEpochSecond(ZoneOffset.UTC);
    long startTime = LocalDateTime.of(2020, Month.NOVEMBER, 1, 12, 0).toEpochSecond(ZoneOffset.UTC);
    long eventTime = LocalDateTime.of(2020, Month.NOVEMBER, 1, 12, 30).toEpochSecond(ZoneOffset.UTC);
    long endTime = LocalDateTime.of(2020, Month.NOVEMBER, 1, 13, 0).toEpochSecond(ZoneOffset.UTC);
    long timeAfterEndTime = LocalDateTime.of(2020, Month.NOVEMBER, 1, 13, 30).toEpochSecond(ZoneOffset.UTC);
    EdgeId edgeId = new EdgeId(Uuids.timeBased());
    DeviceId deviceId = new DeviceId(Uuids.timeBased());
    TenantId tenantId = TenantId.fromUUID(Uuids.timeBased());
    saveEdgeEventWithProvidedTime(timeBeforeStartTime, edgeId, deviceId, tenantId);
    EdgeEvent savedEdgeEvent = saveEdgeEventWithProvidedTime(eventTime, edgeId, deviceId, tenantId);
    EdgeEvent savedEdgeEvent2 = saveEdgeEventWithProvidedTime(eventTime + 1, edgeId, deviceId, tenantId);
    EdgeEvent savedEdgeEvent3 = saveEdgeEventWithProvidedTime(eventTime + 2, edgeId, deviceId, tenantId);
    saveEdgeEventWithProvidedTime(timeAfterEndTime, edgeId, deviceId, tenantId);
    TimePageLink pageLink = new TimePageLink(2, 0, "", new SortOrder("createdTime", SortOrder.Direction.DESC), startTime, endTime);
    PageData<EdgeEvent> edgeEvents = edgeEventService.findEdgeEvents(tenantId, edgeId, pageLink, true);
    Assert.assertNotNull(edgeEvents.getData());
    Assert.assertTrue(edgeEvents.getData().size() == 2);
    Assert.assertTrue(edgeEvents.getData().get(0).getUuidId().equals(savedEdgeEvent3.getUuidId()));
    Assert.assertTrue(edgeEvents.getData().get(1).getUuidId().equals(savedEdgeEvent2.getUuidId()));
    Assert.assertTrue(edgeEvents.hasNext());
    Assert.assertNotNull(pageLink.nextPageLink());
    edgeEvents = edgeEventService.findEdgeEvents(tenantId, edgeId, pageLink.nextPageLink(), true);
    Assert.assertNotNull(edgeEvents.getData());
    Assert.assertTrue(edgeEvents.getData().size() == 1);
    Assert.assertTrue(edgeEvents.getData().get(0).getUuidId().equals(savedEdgeEvent.getUuidId()));
    Assert.assertFalse(edgeEvents.hasNext());
}
Also used : TenantId(org.thingsboard.server.common.data.id.TenantId) DeviceId(org.thingsboard.server.common.data.id.DeviceId) EdgeId(org.thingsboard.server.common.data.id.EdgeId) SortOrder(org.thingsboard.server.common.data.page.SortOrder) EdgeEvent(org.thingsboard.server.common.data.edge.EdgeEvent) TimePageLink(org.thingsboard.server.common.data.page.TimePageLink) Test(org.junit.Test)

Example 25 with EdgeId

use of org.thingsboard.server.common.data.id.EdgeId in project thingsboard by thingsboard.

the class AlarmController method deleteAlarm.

@ApiOperation(value = "Delete Alarm (deleteAlarm)", notes = "Deletes the Alarm. Referencing non-existing Alarm Id will cause an error." + TENANT_OR_CUSTOMER_AUTHORITY_PARAGRAPH, produces = MediaType.APPLICATION_JSON_VALUE)
@PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')")
@RequestMapping(value = "/alarm/{alarmId}", method = RequestMethod.DELETE)
@ResponseBody
public Boolean deleteAlarm(@ApiParam(value = ALARM_ID_PARAM_DESCRIPTION) @PathVariable(ALARM_ID) String strAlarmId) throws ThingsboardException {
    checkParameter(ALARM_ID, strAlarmId);
    try {
        AlarmId alarmId = new AlarmId(toUUID(strAlarmId));
        Alarm alarm = checkAlarmId(alarmId, Operation.WRITE);
        List<EdgeId> relatedEdgeIds = findRelatedEdgeIds(getTenantId(), alarm.getOriginator());
        logEntityAction(alarm.getOriginator(), alarm, getCurrentUser().getCustomerId(), ActionType.ALARM_DELETE, null);
        sendAlarmDeleteNotificationMsg(getTenantId(), alarmId, relatedEdgeIds, alarm);
        return alarmService.deleteAlarm(getTenantId(), alarmId);
    } catch (Exception e) {
        throw handleException(e);
    }
}
Also used : AlarmId(org.thingsboard.server.common.data.id.AlarmId) Alarm(org.thingsboard.server.common.data.alarm.Alarm) EdgeId(org.thingsboard.server.common.data.id.EdgeId) ThingsboardException(org.thingsboard.server.common.data.exception.ThingsboardException) ApiOperation(io.swagger.annotations.ApiOperation) PreAuthorize(org.springframework.security.access.prepost.PreAuthorize) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) ResponseBody(org.springframework.web.bind.annotation.ResponseBody)

Aggregations

EdgeId (org.thingsboard.server.common.data.id.EdgeId)57 ThingsboardException (org.thingsboard.server.common.data.exception.ThingsboardException)33 ApiOperation (io.swagger.annotations.ApiOperation)32 PreAuthorize (org.springframework.security.access.prepost.PreAuthorize)32 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)32 Edge (org.thingsboard.server.common.data.edge.Edge)29 ResponseBody (org.springframework.web.bind.annotation.ResponseBody)23 IncorrectParameterException (org.thingsboard.server.dao.exception.IncorrectParameterException)22 CustomerId (org.thingsboard.server.common.data.id.CustomerId)14 PageLink (org.thingsboard.server.common.data.page.PageLink)14 IOException (java.io.IOException)13 TenantId (org.thingsboard.server.common.data.id.TenantId)13 ResponseStatus (org.springframework.web.bind.annotation.ResponseStatus)12 DeviceId (org.thingsboard.server.common.data.id.DeviceId)10 ArrayList (java.util.ArrayList)9 Customer (org.thingsboard.server.common.data.Customer)9 EdgeEventActionType (org.thingsboard.server.common.data.edge.EdgeEventActionType)9 List (java.util.List)8 UUID (java.util.UUID)7 Device (org.thingsboard.server.common.data.Device)7