Browse Source

Edge - push public customer to edge

pull/7929/head
Volodymyr Babak 4 years ago
parent
commit
fa6d395ffa
  1. 8
      application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeSyncCursor.java
  2. 5
      application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/CustomerEdgeEventFetcher.java
  3. 2
      common/dao-api/src/main/java/org/thingsboard/server/dao/customer/CustomerService.java
  4. 9
      dao/src/main/java/org/thingsboard/server/dao/customer/CustomerServiceImpl.java

8
application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeSyncCursor.java

@ -41,9 +41,9 @@ import java.util.NoSuchElementException;
public class EdgeSyncCursor {
List<EdgeEventFetcher> fetchers = new LinkedList<>();
private final List<EdgeEventFetcher> fetchers = new LinkedList<>();
int currentIdx = 0;
private int currentIdx = 0;
public EdgeSyncCursor(EdgeContextComponent ctx, Edge edge, boolean fullSync) {
if (fullSync) {
@ -53,8 +53,10 @@ public class EdgeSyncCursor {
fetchers.add(new DeviceProfilesEdgeEventFetcher(ctx.getDeviceProfileService()));
fetchers.add(new AssetProfilesEdgeEventFetcher(ctx.getAssetProfileService()));
fetchers.add(new TenantAdminUsersEdgeEventFetcher(ctx.getUserService()));
ctx.getCustomerService().findPublicCustomer(edge.getTenantId())
.ifPresent(publicCustomer -> fetchers.add(new CustomerEdgeEventFetcher(publicCustomer.getId())));
if (edge.getCustomerId() != null && !EntityId.NULL_UUID.equals(edge.getCustomerId().getId())) {
fetchers.add(new CustomerEdgeEventFetcher());
fetchers.add(new CustomerEdgeEventFetcher(edge.getCustomerId()));
fetchers.add(new CustomerUsersEdgeEventFetcher(ctx.getUserService(), edge.getCustomerId()));
}
}

5
application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/CustomerEdgeEventFetcher.java

@ -22,6 +22,7 @@ import org.thingsboard.server.common.data.edge.Edge;
import org.thingsboard.server.common.data.edge.EdgeEvent;
import org.thingsboard.server.common.data.edge.EdgeEventActionType;
import org.thingsboard.server.common.data.edge.EdgeEventType;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
@ -33,6 +34,8 @@ import java.util.List;
@AllArgsConstructor
public class CustomerEdgeEventFetcher implements EdgeEventFetcher {
private final CustomerId customerId;
@Override
public PageLink getPageLink(int pageSize) {
return null;
@ -42,7 +45,7 @@ public class CustomerEdgeEventFetcher implements EdgeEventFetcher {
public PageData<EdgeEvent> fetchEdgeEvents(TenantId tenantId, Edge edge, PageLink pageLink) {
List<EdgeEvent> result = new ArrayList<>();
result.add(EdgeUtils.constructEdgeEvent(edge.getTenantId(), edge.getId(),
EdgeEventType.CUSTOMER, EdgeEventActionType.ADDED, edge.getCustomerId(), null));
EdgeEventType.CUSTOMER, EdgeEventActionType.ADDED, customerId, null));
// @voba - returns PageData object to be in sync with other fetchers
return new PageData<>(result, 1, result.size(), false);
}

2
common/dao-api/src/main/java/org/thingsboard/server/dao/customer/CustomerService.java

@ -37,6 +37,8 @@ public interface CustomerService extends EntityDaoService {
void deleteCustomer(TenantId tenantId, CustomerId customerId);
Optional<Customer> findPublicCustomer(TenantId tenantId);
Customer findOrCreatePublicCustomer(TenantId tenantId);
PageData<Customer> findCustomersByTenantId(TenantId tenantId, PageLink pageLink);

9
dao/src/main/java/org/thingsboard/server/dao/customer/CustomerServiceImpl.java

@ -133,11 +133,18 @@ public class CustomerServiceImpl extends AbstractEntityService implements Custom
customerDao.removeById(tenantId, customerId.getId());
}
@Override
public Optional<Customer> findPublicCustomer(TenantId tenantId) {
log.trace("Executing findPublicCustomer, tenantId [{}]", tenantId);
Validator.validateId(tenantId, INCORRECT_CUSTOMER_ID + tenantId);
return customerDao.findCustomersByTenantIdAndTitle(tenantId.getId(), PUBLIC_CUSTOMER_TITLE);
}
@Override
public Customer findOrCreatePublicCustomer(TenantId tenantId) {
log.trace("Executing findOrCreatePublicCustomer, tenantId [{}]", tenantId);
Validator.validateId(tenantId, INCORRECT_CUSTOMER_ID + tenantId);
Optional<Customer> publicCustomerOpt = customerDao.findCustomersByTenantIdAndTitle(tenantId.getId(), PUBLIC_CUSTOMER_TITLE);
Optional<Customer> publicCustomerOpt = findPublicCustomer(tenantId);
if (publicCustomerOpt.isPresent()) {
return publicCustomerOpt.get();
} else {

Loading…
Cancel
Save