|
|
|
@ -17,7 +17,6 @@ package org.thingsboard.rule.engine.util; |
|
|
|
|
|
|
|
import com.google.common.util.concurrent.Futures; |
|
|
|
import com.google.common.util.concurrent.ListenableFuture; |
|
|
|
import com.google.common.util.concurrent.MoreExecutors; |
|
|
|
import org.thingsboard.rule.engine.api.TbContext; |
|
|
|
import org.thingsboard.rule.engine.api.TbNodeException; |
|
|
|
import org.thingsboard.server.common.data.alarm.Alarm; |
|
|
|
@ -26,18 +25,19 @@ import org.thingsboard.server.common.data.id.EntityId; |
|
|
|
|
|
|
|
public class EntitiesAlarmOriginatorIdAsyncLoader { |
|
|
|
|
|
|
|
public static ListenableFuture<EntityId> findEntityIdAsync(TbContext ctx, EntityId original) { |
|
|
|
switch (original.getEntityType()) { |
|
|
|
public static ListenableFuture<EntityId> findEntityIdAsync(TbContext ctx, EntityId originator) { |
|
|
|
switch (originator.getEntityType()) { |
|
|
|
case ALARM: |
|
|
|
return getAlarmOriginatorAsync(ctx.getAlarmService().findAlarmByIdAsync(ctx.getTenantId(), (AlarmId) original)); |
|
|
|
return getAlarmOriginatorAsync(ctx.getAlarmService().findAlarmByIdAsync(ctx.getTenantId(), (AlarmId) originator), ctx); |
|
|
|
default: |
|
|
|
return Futures.immediateFailedFuture(new TbNodeException("Unexpected original EntityType " + original.getEntityType())); |
|
|
|
return Futures.immediateFailedFuture(new TbNodeException("Unexpected originator EntityType " + originator.getEntityType())); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private static ListenableFuture<EntityId> getAlarmOriginatorAsync(ListenableFuture<Alarm> future) { |
|
|
|
private static ListenableFuture<EntityId> getAlarmOriginatorAsync(ListenableFuture<Alarm> future, TbContext ctx) { |
|
|
|
return Futures.transformAsync(future, in -> in != null ? |
|
|
|
Futures.immediateFuture(in.getOriginator()) |
|
|
|
: Futures.immediateFuture(null), MoreExecutors.directExecutor()); |
|
|
|
: Futures.immediateFuture(null), ctx.getDbCallbackExecutor()); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|