|
|
@ -1696,11 +1696,27 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|
|
|
log.error(msg);
|
|
|
|
log.error(msg);
|
|
|
|
throw new NotFoundException(msg);
|
|
|
|
throw new NotFoundException(msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (Objects.equals(subscriptionInfo.getSubscriptionType(), SubscriptionMetadata.SubscriptionTypes.GROUP)) {
|
|
|
|
List<SubscriptionEntity> subscriptionEntities = subscriptionDAO.
|
|
|
|
List<SubscriptionEntity> subscriptionEntities = subscriptionDAO.
|
|
|
|
getGroupsSubscriptionDetailsByAppReleaseID(applicationReleaseDTO.getId(), isUnsubscribe, tenantId, offset, limit);
|
|
|
|
getGroupsSubscriptionDetailsByAppReleaseID(applicationReleaseDTO.getId(), isUnsubscribe, tenantId, offset, limit);
|
|
|
|
int subscriptionCount = isUnsubscribe ? subscriptionDAO.getGroupUnsubscriptionCount(applicationReleaseDTO.getId(), tenantId) :
|
|
|
|
int subscriptionCount = isUnsubscribe ? subscriptionDAO.getGroupUnsubscriptionCount(applicationReleaseDTO.getId(), tenantId) :
|
|
|
|
subscriptionDAO.getGroupSubscriptionCount(applicationReleaseDTO.getId(), tenantId);
|
|
|
|
subscriptionDAO.getGroupSubscriptionCount(applicationReleaseDTO.getId(), tenantId);
|
|
|
|
return new SubscriptionResponse(subscriptionInfo.getApplicationUUID(), subscriptionCount, subscriptionEntities);
|
|
|
|
return new SubscriptionResponse(subscriptionInfo.getApplicationUUID(), subscriptionCount, subscriptionEntities);
|
|
|
|
|
|
|
|
} if (Objects.equals(subscriptionInfo.getSubscriptionType(), SubscriptionMetadata.SubscriptionTypes.ROLE)){
|
|
|
|
|
|
|
|
List<SubscriptionEntity> subscriptionEntities = subscriptionDAO.
|
|
|
|
|
|
|
|
getRoleSubscriptionsByAppReleaseID(applicationReleaseDTO.getId(), isUnsubscribe, tenantId, offset, limit);
|
|
|
|
|
|
|
|
int subscriptionCount = isUnsubscribe ? subscriptionDAO.getRoleUnsubscriptionCount(applicationReleaseDTO.getId(), tenantId) :
|
|
|
|
|
|
|
|
subscriptionDAO.getRoleSubscriptionCount(applicationReleaseDTO.getId(), tenantId);
|
|
|
|
|
|
|
|
return new SubscriptionResponse(subscriptionInfo.getApplicationUUID(), subscriptionCount, subscriptionEntities);
|
|
|
|
|
|
|
|
} if (Objects.equals(subscriptionInfo.getSubscriptionType(), SubscriptionMetadata.SubscriptionTypes.USER)){
|
|
|
|
|
|
|
|
List<SubscriptionEntity> subscriptionEntities = subscriptionDAO.
|
|
|
|
|
|
|
|
getUserSubscriptionsByAppReleaseID(applicationReleaseDTO.getId(), isUnsubscribe, tenantId, offset, limit);
|
|
|
|
|
|
|
|
int subscriptionCount = isUnsubscribe ? subscriptionDAO.getUserUnsubscriptionCount(applicationReleaseDTO.getId(), tenantId) :
|
|
|
|
|
|
|
|
subscriptionDAO.getUserSubscriptionCount(applicationReleaseDTO.getId(), tenantId);
|
|
|
|
|
|
|
|
return new SubscriptionResponse(subscriptionInfo.getApplicationUUID(), subscriptionCount, subscriptionEntities);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
return new SubscriptionResponse(subscriptionInfo.getApplicationUUID(), Collections.emptyList());
|
|
|
|
|
|
|
|
}
|
|
|
|
} catch (DBConnectionException | ApplicationManagementDAOException e) {
|
|
|
|
} catch (DBConnectionException | ApplicationManagementDAOException e) {
|
|
|
|
String msg = "Error encountered while connecting to the database";
|
|
|
|
String msg = "Error encountered while connecting to the database";
|
|
|
|
log.error(msg, e);
|
|
|
|
log.error(msg, e);
|
|
|
@ -1710,6 +1726,12 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* Retrieves subscription statistics described by the {@link SubscriptionInfo} entity.
|
|
|
|
|
|
|
|
* @param subscriptionInfo The {@link SubscriptionInfo} containing details about the subscription type and identifier.
|
|
|
|
|
|
|
|
* @return {@link SubscriptionStatistics} The subscription statistics for the specified subscription type and identifier.
|
|
|
|
|
|
|
|
* @throws ApplicationManagementException Throws when an error is encountered while getting subscription statistics.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
public SubscriptionStatistics getSubscriptionStatistics(SubscriptionInfo subscriptionInfo)
|
|
|
|
public SubscriptionStatistics getSubscriptionStatistics(SubscriptionInfo subscriptionInfo)
|
|
|
|
throws ApplicationManagementException {
|
|
|
|
throws ApplicationManagementException {
|
|
|
@ -1728,6 +1750,7 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|
|
|
log.error(msg);
|
|
|
|
log.error(msg);
|
|
|
|
throw new NotFoundException(msg);
|
|
|
|
throw new NotFoundException(msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (Objects.equals(subscriptionInfo.getSubscriptionType(), SubscriptionMetadata.SubscriptionTypes.GROUP)) {
|
|
|
|
List<Device> devices = HelperUtil.getGroupManagementProviderService().
|
|
|
|
List<Device> devices = HelperUtil.getGroupManagementProviderService().
|
|
|
|
getAllDevicesOfGroup(subscriptionInfo.getIdentifier(), false);
|
|
|
|
getAllDevicesOfGroup(subscriptionInfo.getIdentifier(), false);
|
|
|
|
List<Integer> deviceIdsOwnByGroup = devices.stream().map(Device::getId).collect(Collectors.toList());
|
|
|
|
List<Integer> deviceIdsOwnByGroup = devices.stream().map(Device::getId).collect(Collectors.toList());
|
|
|
@ -1735,6 +1758,21 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|
|
|
getSubscriptionStatistic(deviceIdsOwnByGroup, isUnsubscribe, tenantId, applicationReleaseDTO.getId());
|
|
|
|
getSubscriptionStatistic(deviceIdsOwnByGroup, isUnsubscribe, tenantId, applicationReleaseDTO.getId());
|
|
|
|
int allDeviceCount = HelperUtil.getGroupManagementProviderService().getDeviceCount(subscriptionInfo.getIdentifier());
|
|
|
|
int allDeviceCount = HelperUtil.getGroupManagementProviderService().getDeviceCount(subscriptionInfo.getIdentifier());
|
|
|
|
return SubscriptionManagementHelperUtil.getSubscriptionStatistics(subscriptionStatisticDTO, allDeviceCount);
|
|
|
|
return SubscriptionManagementHelperUtil.getSubscriptionStatistics(subscriptionStatisticDTO, allDeviceCount);
|
|
|
|
|
|
|
|
} if (Objects.equals(subscriptionInfo.getSubscriptionType(), SubscriptionMetadata.SubscriptionTypes.ROLE)){
|
|
|
|
|
|
|
|
List<Integer> deviceIdsOwnByRole = getDeviceIdsOwnByRole(subscriptionInfo.getIdentifier(), tenantId);
|
|
|
|
|
|
|
|
SubscriptionStatisticDTO subscriptionStatisticDTO = subscriptionDAO.
|
|
|
|
|
|
|
|
getSubscriptionStatistic(deviceIdsOwnByRole, isUnsubscribe, tenantId, applicationReleaseDTO.getId());
|
|
|
|
|
|
|
|
int allDeviceCount = deviceIdsOwnByRole.size();
|
|
|
|
|
|
|
|
return SubscriptionManagementHelperUtil.getSubscriptionStatistics(subscriptionStatisticDTO, allDeviceCount);
|
|
|
|
|
|
|
|
} if (Objects.equals(subscriptionInfo.getSubscriptionType(), SubscriptionMetadata.SubscriptionTypes.USER)){
|
|
|
|
|
|
|
|
List<Integer> deviceIdsOwnByUser = getDeviceIdsOwnByUser(subscriptionInfo.getIdentifier());
|
|
|
|
|
|
|
|
SubscriptionStatisticDTO subscriptionStatisticDTO = subscriptionDAO.
|
|
|
|
|
|
|
|
getSubscriptionStatistic(deviceIdsOwnByUser, isUnsubscribe, tenantId, applicationReleaseDTO.getId());
|
|
|
|
|
|
|
|
int allDeviceCount = deviceIdsOwnByUser.size();
|
|
|
|
|
|
|
|
return SubscriptionManagementHelperUtil.getSubscriptionStatistics(subscriptionStatisticDTO, allDeviceCount);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
}
|
|
|
|
} catch (ApplicationManagementDAOException e) {
|
|
|
|
} catch (ApplicationManagementDAOException e) {
|
|
|
|
String msg = "Error encountered while getting subscription statistics for group: " + subscriptionInfo.getIdentifier();
|
|
|
|
String msg = "Error encountered while getting subscription statistics for group: " + subscriptionInfo.getIdentifier();
|
|
|
|
log.error(msg, e);
|
|
|
|
log.error(msg, e);
|
|
|
@ -1743,6 +1781,14 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|
|
|
String msg = "Error encountered while getting device subscription for group: " + subscriptionInfo.getIdentifier();
|
|
|
|
String msg = "Error encountered while getting device subscription for group: " + subscriptionInfo.getIdentifier();
|
|
|
|
log.error(msg, e);
|
|
|
|
log.error(msg, e);
|
|
|
|
throw new ApplicationManagementException(msg, e);
|
|
|
|
throw new ApplicationManagementException(msg, e);
|
|
|
|
|
|
|
|
} catch (UserStoreException e) {
|
|
|
|
|
|
|
|
String msg = "Error encountered while getting subscription statistics for role: " + subscriptionInfo.getIdentifier();
|
|
|
|
|
|
|
|
log.error(msg, e);
|
|
|
|
|
|
|
|
throw new ApplicationManagementException(msg, e);
|
|
|
|
|
|
|
|
} catch (DeviceManagementException e) {
|
|
|
|
|
|
|
|
String msg = "Error encountered while getting subscription statistics for user: " + subscriptionInfo.getIdentifier();
|
|
|
|
|
|
|
|
log.error(msg, e);
|
|
|
|
|
|
|
|
throw new ApplicationManagementException(msg, e);
|
|
|
|
} finally {
|
|
|
|
} finally {
|
|
|
|
ConnectionManagerUtil.closeDBConnection();
|
|
|
|
ConnectionManagerUtil.closeDBConnection();
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1767,175 +1813,10 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|
|
|
return getStatusBaseSubscriptionsRoleUser(subscriptionInfo, limit, offset);
|
|
|
|
return getStatusBaseSubscriptionsRoleUser(subscriptionInfo, limit, offset);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//
|
|
|
|
|
|
|
|
// final boolean isUnsubscribe = Objects.equals(SubscriptionMetadata.SUBSCRIPTION_STATUS_UNSUBSCRIBED, subscriptionInfo.getSubscriptionStatus());
|
|
|
|
|
|
|
|
// List<DeviceSubscriptionDTO> deviceSubscriptionDTOS;
|
|
|
|
|
|
|
|
// int deviceCount = 0;
|
|
|
|
|
|
|
|
// int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// try {
|
|
|
|
|
|
|
|
// ConnectionManagerUtil.openDBConnection();
|
|
|
|
|
|
|
|
// ApplicationReleaseDTO applicationReleaseDTO = getApplicationRelease(subscriptionInfo.getApplicationUUID(), tenantId);
|
|
|
|
|
|
|
|
// ApplicationDTO applicationDTO = getApplication(subscriptionInfo.getApplicationUUID(), tenantId);
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// String deviceSubscriptionStatus = SubscriptionManagementHelperUtil.getDeviceSubscriptionStatus(subscriptionInfo);
|
|
|
|
|
|
|
|
// DeviceSubscriptionFilterCriteria deviceSubscriptionFilterCriteria = subscriptionInfo.getDeviceSubscriptionFilterCriteria();
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// if (Objects.equals(subscriptionInfo.getSubscriptionType(), SubscriptionMetadata.SubscriptionTypes.GROUP)){
|
|
|
|
|
|
|
|
// deviceSubscriptionDTOS = handleGroupSubscription(subscriptionInfo, limit, offset, isUnsubscribe, applicationReleaseDTO, applicationDTO, deviceSubscriptionStatus, deviceSubscriptionFilterCriteria);
|
|
|
|
|
|
|
|
// } if (Objects.equals(subscriptionInfo.getSubscriptionType(), SubscriptionMetadata.SubscriptionTypes.DEVICE)) {
|
|
|
|
|
|
|
|
// deviceSubscriptionDTOS = handleDeviceSubscription(subscriptionInfo, isUnsubscribe, applicationReleaseDTO, deviceSubscriptionStatus, deviceSubscriptionFilterCriteria);
|
|
|
|
|
|
|
|
// } else {
|
|
|
|
|
|
|
|
// getStatusBaseSubscriptionsRoleUser(subscriptionInfo, limit, offset);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// List<DeviceSubscription> deviceSubscriptions = SubscriptionManagementHelperUtil.getDeviceSubscriptionData(deviceSubscriptionDTOS,
|
|
|
|
|
|
|
|
// subscriptionInfo.getDeviceSubscriptionFilterCriteria(), isUnsubscribe, applicationDTO.getDeviceTypeId(), limit, offset);
|
|
|
|
|
|
|
|
// return new SubscriptionResponse(subscriptionInfo.getApplicationUUID(), deviceCount, deviceSubscriptions);
|
|
|
|
|
|
|
|
// } catch (Exception e) {
|
|
|
|
|
|
|
|
// handleException(e, subscriptionInfo.getIdentifier());
|
|
|
|
|
|
|
|
// return null; // This line will not be reached due to exception handling, but is required for compilation.
|
|
|
|
|
|
|
|
// } finally {
|
|
|
|
|
|
|
|
// ConnectionManagerUtil.closeDBConnection();
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// private ApplicationReleaseDTO getApplicationRelease(String applicationUUID, int tenantId) throws ApplicationManagementException {
|
|
|
|
|
|
|
|
// ApplicationReleaseDTO applicationReleaseDTO = null;
|
|
|
|
|
|
|
|
// try {
|
|
|
|
|
|
|
|
// applicationReleaseDTO = applicationReleaseDAO.getReleaseByUUID(applicationUUID, tenantId);
|
|
|
|
|
|
|
|
// } catch (ApplicationManagementDAOException e) {
|
|
|
|
|
|
|
|
// throw new RuntimeException(e);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// if (applicationReleaseDTO == null) {
|
|
|
|
|
|
|
|
// String msg = "Couldn't find an application release for application release UUID: " + applicationUUID;
|
|
|
|
|
|
|
|
// log.error(msg);
|
|
|
|
|
|
|
|
// throw new NotFoundException(msg);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// return applicationReleaseDTO;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// private ApplicationDTO getApplication(String applicationUUID, int tenantId) throws ApplicationManagementException {
|
|
|
|
|
|
|
|
// ApplicationDTO applicationDTO = null;
|
|
|
|
|
|
|
|
// try {
|
|
|
|
|
|
|
|
// applicationDTO = this.applicationDAO.getAppWithRelatedRelease(applicationUUID, tenantId);
|
|
|
|
|
|
|
|
// } catch (ApplicationManagementDAOException e) {
|
|
|
|
|
|
|
|
// throw new RuntimeException(e);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// if (applicationDTO == null) {
|
|
|
|
|
|
|
|
// String msg = "Application not found for the release UUID: " + applicationUUID;
|
|
|
|
|
|
|
|
// log.error(msg);
|
|
|
|
|
|
|
|
// throw new NotFoundException(msg);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// return applicationDTO;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// private List<DeviceSubscriptionDTO> handleDeviceSubscription(SubscriptionInfo subscriptionInfo, boolean isUnsubscribe, ApplicationReleaseDTO applicationReleaseDTO,
|
|
|
|
|
|
|
|
// String deviceSubscriptionStatus, DeviceSubscriptionFilterCriteria deviceSubscriptionFilterCriteria) throws DeviceManagementException {
|
|
|
|
|
|
|
|
// DeviceManagementProviderService deviceManagementProviderService = HelperUtil.getDeviceManagementProviderService();
|
|
|
|
|
|
|
|
// List<DeviceSubscriptionDTO> deviceSubscriptionDTOS;
|
|
|
|
|
|
|
|
// List<String> dbSubscriptionStatus = SubscriptionManagementHelperUtil.getDBSubscriptionStatus(subscriptionInfo.getDeviceSubscriptionStatus());
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// if (Objects.equals(SubscriptionMetadata.DeviceSubscriptionStatus.NEW, deviceSubscriptionStatus)) {
|
|
|
|
|
|
|
|
// try {
|
|
|
|
|
|
|
|
// deviceSubscriptionDTOS = subscriptionDAO.getAllSubscriptionsDetails(applicationReleaseDTO.getId(),
|
|
|
|
|
|
|
|
// isUnsubscribe, PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(), null, null,
|
|
|
|
|
|
|
|
// deviceSubscriptionFilterCriteria.getTriggeredBy(), -1, -1);
|
|
|
|
|
|
|
|
// } catch (ApplicationManagementDAOException e) {
|
|
|
|
|
|
|
|
// throw new RuntimeException(e);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// List<Integer> deviceIdsOfSubscription = deviceSubscriptionDTOS.stream()
|
|
|
|
|
|
|
|
// .map(DeviceSubscriptionDTO::getDeviceId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// List<Integer> newDeviceIds = deviceManagementProviderService.getDevicesNotInGivenIdList(deviceIdsOfSubscription);
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// deviceSubscriptionDTOS = newDeviceIds.stream().map(DeviceSubscriptionDTO::new).collect(Collectors.toList());
|
|
|
|
|
|
|
|
// } else {
|
|
|
|
|
|
|
|
// try {
|
|
|
|
|
|
|
|
// deviceSubscriptionDTOS = subscriptionDAO.getAllSubscriptionsDetails(applicationReleaseDTO.getId(),
|
|
|
|
|
|
|
|
// isUnsubscribe, PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(), dbSubscriptionStatus, null,
|
|
|
|
|
|
|
|
// deviceSubscriptionFilterCriteria.getTriggeredBy(), -1, -1);
|
|
|
|
|
|
|
|
// } catch (ApplicationManagementDAOException e) {
|
|
|
|
|
|
|
|
// throw new RuntimeException(e);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// return deviceSubscriptionDTOS;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// private List<DeviceSubscriptionDTO> handleGroupSubscription(SubscriptionInfo subscriptionInfo, int limit, int offset, boolean isUnsubscribe,
|
|
|
|
|
|
|
|
// ApplicationReleaseDTO applicationReleaseDTO, ApplicationDTO applicationDTO, String deviceSubscriptionStatus, DeviceSubscriptionFilterCriteria deviceSubscriptionFilterCriteria)
|
|
|
|
|
|
|
|
// throws GroupManagementException, DeviceManagementException {
|
|
|
|
|
|
|
|
// GroupManagementProviderService groupManagementProviderService = HelperUtil.getGroupManagementProviderService();
|
|
|
|
|
|
|
|
// DeviceManagementProviderService deviceManagementProviderService = HelperUtil.getDeviceManagementProviderService();
|
|
|
|
|
|
|
|
// List<DeviceSubscriptionDTO> deviceSubscriptionDTOS;
|
|
|
|
|
|
|
|
// List<String> dbSubscriptionStatus = SubscriptionManagementHelperUtil.getDBSubscriptionStatus(subscriptionInfo.getDeviceSubscriptionStatus());
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// if (Objects.equals(SubscriptionMetadata.DeviceSubscriptionStatus.NEW, deviceSubscriptionStatus)) {
|
|
|
|
|
|
|
|
// List<Integer> allDeviceIdsOwnByGroup = groupManagementProviderService.getGroupDetailsWithDevices(subscriptionInfo.getIdentifier(),
|
|
|
|
|
|
|
|
// applicationDTO.getDeviceTypeId(), deviceSubscriptionFilterCriteria.getOwner(), deviceSubscriptionFilterCriteria.getName(),
|
|
|
|
|
|
|
|
// deviceSubscriptionFilterCriteria.getDeviceStatus(), -1, -1).getDeviceIds();
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// try {
|
|
|
|
|
|
|
|
// deviceSubscriptionDTOS = subscriptionDAO.getSubscriptionDetailsByDeviceIds(applicationReleaseDTO.getId(),
|
|
|
|
|
|
|
|
// isUnsubscribe, PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(), allDeviceIdsOwnByGroup, null,
|
|
|
|
|
|
|
|
// null, deviceSubscriptionFilterCriteria.getTriggeredBy(), -1, -1);
|
|
|
|
|
|
|
|
// } catch (ApplicationManagementDAOException e) {
|
|
|
|
|
|
|
|
// throw new RuntimeException(e);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// List<Integer> deviceIdsOfSubscription = deviceSubscriptionDTOS.stream()
|
|
|
|
|
|
|
|
// .map(DeviceSubscriptionDTO::getDeviceId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// for (Integer deviceId : deviceIdsOfSubscription) {
|
|
|
|
|
|
|
|
// allDeviceIdsOwnByGroup.remove(deviceId);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// List<Integer> newDeviceIds = deviceManagementProviderService.getDevicesInGivenIdList(allDeviceIdsOwnByGroup);
|
|
|
|
|
|
|
|
// deviceSubscriptionDTOS = newDeviceIds.stream().map(DeviceSubscriptionDTO::new).collect(Collectors.toList());
|
|
|
|
|
|
|
|
// } else {
|
|
|
|
|
|
|
|
// GroupDetailsDTO groupDetailsDTO = groupManagementProviderService.getGroupDetailsWithDevices(subscriptionInfo.getIdentifier(),
|
|
|
|
|
|
|
|
// applicationDTO.getDeviceTypeId(), deviceSubscriptionFilterCriteria.getOwner(), deviceSubscriptionFilterCriteria.getName(),
|
|
|
|
|
|
|
|
// deviceSubscriptionFilterCriteria.getDeviceStatus(), offset, limit);
|
|
|
|
|
|
|
|
// List<Integer> paginatedDeviceIdsOwnByGroup = groupDetailsDTO.getDeviceIds();
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// try {
|
|
|
|
|
|
|
|
// deviceSubscriptionDTOS = subscriptionDAO.getSubscriptionDetailsByDeviceIds(applicationReleaseDTO.getId(),
|
|
|
|
|
|
|
|
// isUnsubscribe, PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(), paginatedDeviceIdsOwnByGroup, dbSubscriptionStatus,
|
|
|
|
|
|
|
|
// null, deviceSubscriptionFilterCriteria.getTriggeredBy(), -1, -1);
|
|
|
|
|
|
|
|
// } catch (ApplicationManagementDAOException e) {
|
|
|
|
|
|
|
|
// throw new RuntimeException(e);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// return deviceSubscriptionDTOS;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// private void handleException(Exception e, String identifier) throws ApplicationManagementException {
|
|
|
|
|
|
|
|
// if (e instanceof GroupManagementException) {
|
|
|
|
|
|
|
|
// String msg = "Error encountered while retrieving group details for group: " + identifier;
|
|
|
|
|
|
|
|
// log.error(msg, e);
|
|
|
|
|
|
|
|
// throw new ApplicationManagementException(msg, e);
|
|
|
|
|
|
|
|
// } else if (e instanceof ApplicationManagementDAOException || e instanceof DBConnectionException) {
|
|
|
|
|
|
|
|
// String msg = "Error encountered while connecting to the database";
|
|
|
|
|
|
|
|
// log.error(msg, e);
|
|
|
|
|
|
|
|
// throw new ApplicationManagementException(msg, e);
|
|
|
|
|
|
|
|
// } else if (e instanceof DeviceManagementException) {
|
|
|
|
|
|
|
|
// throw new RuntimeException(e);
|
|
|
|
|
|
|
|
// } else {
|
|
|
|
|
|
|
|
// String msg = "Unexpected error occurred";
|
|
|
|
|
|
|
|
// log.error(msg, e);
|
|
|
|
|
|
|
|
// throw new ApplicationManagementException(msg, e);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public SubscriptionResponse getStatusBaseSubscriptionsDevice(SubscriptionInfo subscriptionInfo, int limit, int offset)
|
|
|
|
public SubscriptionResponse getStatusBaseSubscriptionsDevice(SubscriptionInfo subscriptionInfo, int limit, int offset)
|
|
|
|
throws ApplicationManagementException {
|
|
|
|
throws ApplicationManagementException {
|
|
|
|
// if (Objects.equals(subscriptionInfo.getSubscriptionType(), SubscriptionMetadata.SubscriptionTypes.DEVICE)){
|
|
|
|
|
|
|
|
// return null;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
final boolean isUnsubscribe = Objects.equals(SubscriptionMetadata.SUBSCRIPTION_STATUS_UNSUBSCRIBED, subscriptionInfo.getSubscriptionStatus());
|
|
|
|
final boolean isUnsubscribe = Objects.equals(SubscriptionMetadata.SUBSCRIPTION_STATUS_UNSUBSCRIBED, subscriptionInfo.getSubscriptionStatus());
|
|
|
|
List<DeviceSubscriptionDTO> deviceSubscriptionDTOS;
|
|
|
|
List<DeviceSubscriptionDTO> deviceSubscriptionDTOS;
|
|
|
|
int deviceCount = 0;
|
|
|
|
int deviceCount = 0;
|
|
|
@ -2093,7 +1974,7 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
ConnectionManagerUtil.openDBConnection();
|
|
|
|
ConnectionManagerUtil.openDBConnection();
|
|
|
|
List<Integer> deviceIdsOwnByRole = getAllDeviceIds(subscriptionInfo);
|
|
|
|
List<Integer> deviceIdsOwnByRoleUser = getAllDeviceIds(subscriptionInfo);
|
|
|
|
|
|
|
|
|
|
|
|
ApplicationReleaseDTO applicationReleaseDTO = applicationReleaseDAO.
|
|
|
|
ApplicationReleaseDTO applicationReleaseDTO = applicationReleaseDAO.
|
|
|
|
getReleaseByUUID(subscriptionInfo.getApplicationUUID(), tenantId);
|
|
|
|
getReleaseByUUID(subscriptionInfo.getApplicationUUID(), tenantId);
|
|
|
@ -2118,21 +1999,21 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|
|
|
|
|
|
|
|
|
|
|
if (Objects.equals(SubscriptionMetadata.DeviceSubscriptionStatus.NEW, deviceSubscriptionStatus)) {
|
|
|
|
if (Objects.equals(SubscriptionMetadata.DeviceSubscriptionStatus.NEW, deviceSubscriptionStatus)) {
|
|
|
|
deviceSubscriptionDTOS = subscriptionDAO.getSubscriptionDetailsByDeviceIds(applicationReleaseDTO.getId(),
|
|
|
|
deviceSubscriptionDTOS = subscriptionDAO.getSubscriptionDetailsByDeviceIds(applicationReleaseDTO.getId(),
|
|
|
|
isUnsubscribe, tenantId, deviceIdsOwnByRole, null,
|
|
|
|
isUnsubscribe, tenantId, deviceIdsOwnByRoleUser, null,
|
|
|
|
null, deviceSubscriptionFilterCriteria.getTriggeredBy(), -1, -1);
|
|
|
|
null, deviceSubscriptionFilterCriteria.getTriggeredBy(), -1, -1);
|
|
|
|
|
|
|
|
|
|
|
|
List<Integer> deviceIdsOfSubscription = deviceSubscriptionDTOS.stream().
|
|
|
|
List<Integer> deviceIdsOfSubscription = deviceSubscriptionDTOS.stream().
|
|
|
|
map(DeviceSubscriptionDTO::getDeviceId).collect(Collectors.toList());
|
|
|
|
map(DeviceSubscriptionDTO::getDeviceId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
for (Integer deviceId : deviceIdsOfSubscription) {
|
|
|
|
for (Integer deviceId : deviceIdsOfSubscription) {
|
|
|
|
deviceIdsOwnByRole.remove(deviceId);
|
|
|
|
deviceIdsOwnByRoleUser.remove(deviceId);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
List<Integer> newDeviceIds = deviceManagementProviderService.getDevicesInGivenIdList(deviceIdsOwnByRole);
|
|
|
|
List<Integer> newDeviceIds = deviceManagementProviderService.getDevicesInGivenIdList(deviceIdsOwnByRoleUser);
|
|
|
|
deviceSubscriptionDTOS = newDeviceIds.stream().map(DeviceSubscriptionDTO::new).collect(Collectors.toList());
|
|
|
|
deviceSubscriptionDTOS = newDeviceIds.stream().map(DeviceSubscriptionDTO::new).collect(Collectors.toList());
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
deviceSubscriptionDTOS = subscriptionDAO.getSubscriptionDetailsByDeviceIds(applicationReleaseDTO.getId(),
|
|
|
|
deviceSubscriptionDTOS = subscriptionDAO.getSubscriptionDetailsByDeviceIds(applicationReleaseDTO.getId(),
|
|
|
|
isUnsubscribe, tenantId, deviceIdsOwnByRole, dbSubscriptionStatus,
|
|
|
|
isUnsubscribe, tenantId, deviceIdsOwnByRoleUser, dbSubscriptionStatus,
|
|
|
|
subscriptionInfo.getSubscriptionType(), deviceSubscriptionFilterCriteria.getTriggeredBy(), -1, -1);
|
|
|
|
subscriptionInfo.getSubscriptionType(), deviceSubscriptionFilterCriteria.getTriggeredBy(), -1, -1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
deviceCount = SubscriptionManagementHelperUtil.getTotalDeviceSubscriptionCount(deviceSubscriptionDTOS,
|
|
|
|
deviceCount = SubscriptionManagementHelperUtil.getTotalDeviceSubscriptionCount(deviceSubscriptionDTOS,
|
|
|
@ -2181,25 +2062,6 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|
|
|
return deviceListOwnByRole.stream().map(Device::getId).collect(Collectors.toList());
|
|
|
|
return deviceListOwnByRole.stream().map(Device::getId).collect(Collectors.toList());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private List<Integer> getAllDeviceIds (SubscriptionInfo subscriptionInfo) throws DeviceManagementException, UserStoreException {
|
|
|
|
|
|
|
|
String type = subscriptionInfo.getSubscriptionType();
|
|
|
|
|
|
|
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
|
|
|
|
|
|
|
if (Objects.equals(type, SubscriptionMetadata.SubscriptionTypes.ROLE)){
|
|
|
|
|
|
|
|
return getDeviceIdsOwnByRole(subscriptionInfo.getIdentifier(),tenantId);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// if (Objects.equals(type, SubscriptionMetadata.SubscriptionTypes.GROUP)){
|
|
|
|
|
|
|
|
// return getDeviceIdsOwnByGroup(subscriptionInfo.getIdentifier(),tenantId);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
if (Objects.equals(type,SubscriptionMetadata.SubscriptionTypes.USER)){
|
|
|
|
|
|
|
|
return getDeviceIdsOwnByUser(subscriptionInfo.getIdentifier());
|
|
|
|
|
|
|
|
}else
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
private List<Integer> getDeviceIdsOwnByUser(String username) throws DeviceManagementException {
|
|
|
|
private List<Integer> getDeviceIdsOwnByUser(String username) throws DeviceManagementException {
|
|
|
|
List<Device> deviceListOwnByUser = new ArrayList<>();
|
|
|
|
List<Device> deviceListOwnByUser = new ArrayList<>();
|
|
|
@ -2214,6 +2076,18 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|
|
|
return deviceListOwnByUser.stream().map(Device::getId).collect(Collectors.toList());
|
|
|
|
return deviceListOwnByUser.stream().map(Device::getId).collect(Collectors.toList());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private List<Integer> getAllDeviceIds (SubscriptionInfo subscriptionInfo) throws DeviceManagementException, UserStoreException {
|
|
|
|
|
|
|
|
String type = subscriptionInfo.getSubscriptionType();
|
|
|
|
|
|
|
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
|
|
|
|
|
|
|
if (Objects.equals(type, SubscriptionMetadata.SubscriptionTypes.ROLE)){
|
|
|
|
|
|
|
|
return getDeviceIdsOwnByRole(subscriptionInfo.getIdentifier(),tenantId);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (Objects.equals(type,SubscriptionMetadata.SubscriptionTypes.USER)){
|
|
|
|
|
|
|
|
return getDeviceIdsOwnByUser(subscriptionInfo.getIdentifier());
|
|
|
|
|
|
|
|
}else
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Get subscription statistics related data describes by the {@link SubscriptionInfo}
|
|
|
|
* Get subscription statistics related data describes by the {@link SubscriptionInfo}
|
|
|
|