mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Fix issues in statistics
This commit is contained in:
parent
6b6787e083
commit
41d8c8ade8
@ -22,6 +22,7 @@ package io.entgra.device.mgt.core.application.mgt.common;
|
||||
import java.sql.Timestamp;
|
||||
|
||||
public class DeviceSubscription {
|
||||
private int deviceId;
|
||||
private String deviceName;
|
||||
private String deviceIdentifier;
|
||||
private String deviceStatus;
|
||||
@ -31,6 +32,14 @@ public class DeviceSubscription {
|
||||
private Timestamp dateOfLastUpdate;
|
||||
private SubscriptionData subscriptionData;
|
||||
|
||||
public int getDeviceId() {
|
||||
return deviceId;
|
||||
}
|
||||
|
||||
public void setDeviceId(int deviceId) {
|
||||
this.deviceId = deviceId;
|
||||
}
|
||||
|
||||
public String getDeviceName() {
|
||||
return deviceName;
|
||||
}
|
||||
|
||||
@ -25,6 +25,7 @@ import io.entgra.device.mgt.core.application.mgt.common.ExecutionStatus;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionEntity;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionInfo;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionResponse;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionStatistics;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionType;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.CategorizedSubscriptionCountsDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.DeviceSubscriptionDTO;
|
||||
@ -229,78 +230,13 @@ public interface SubscriptionManager {
|
||||
*/
|
||||
Activity getOperationAppDetails(String id) throws SubscriptionManagementException;
|
||||
|
||||
/**
|
||||
* Retrieves the group details associated with a given app release UUID.
|
||||
*
|
||||
* @param uuid the UUID of the app release
|
||||
* @param subscriptionStatus the status of the subscription (subscribed or unsubscribed)
|
||||
* @param offset the offset for the data set
|
||||
* @param limit the limit for the data set
|
||||
* @return {@link SubscriptionsDTO} which contains the details of subscriptions.
|
||||
* @throws ApplicationManagementException if an error occurs while fetching the group details
|
||||
*/
|
||||
public List<SubscriptionsDTO> getGroupsSubscriptionDetailsByUUID(String uuid, String subscriptionStatus,
|
||||
PaginationRequest request, int offset,
|
||||
int limit) throws ApplicationManagementException;
|
||||
|
||||
/**
|
||||
* Retrieves the user details associated with a given app release UUID.
|
||||
*
|
||||
* @param uuid the UUID of the app release
|
||||
* @param subscriptionStatus the status of the subscription (subscribed or unsubscribed)
|
||||
* @param offset the offset for the data set
|
||||
* @param limit the limit for the data set
|
||||
* @return {@link SubscriptionsDTO} which contains the details of subscriptions.
|
||||
* @throws ApplicationManagementException if an error occurs while fetching the user details
|
||||
*/
|
||||
List<SubscriptionsDTO> getUserSubscriptionsByUUID(String uuid, String subscriptionStatus, PaginationRequest request,
|
||||
int offset, int limit) throws ApplicationManagementException;
|
||||
|
||||
/**
|
||||
* Retrieves the Role details associated with a given app release UUID.
|
||||
*
|
||||
* @param uuid the UUID of the app release
|
||||
* @param subscriptionStatus the status of the subscription (subscribed or unsubscribed)
|
||||
* @param offset the offset for the data set
|
||||
* @param limit the limit for the data set
|
||||
* @return {@link SubscriptionsDTO} which contains the details of subscriptions.
|
||||
* @throws ApplicationManagementException if an error occurs while fetching the role details
|
||||
*/
|
||||
// List<SubscriptionsDTO> getRoleSubscriptionsByUUID(String uuid, String subscriptionStatus, PaginationRequest request,
|
||||
// int offset, int limit) throws ApplicationManagementException;
|
||||
SubscriptionResponse getSubscriptions(SubscriptionInfo subscriptionInfo, int limit, int offset)
|
||||
throws ApplicationManagementException;
|
||||
|
||||
SubscriptionResponse getStatusBaseSubscriptions(SubscriptionInfo subscriptionInfo, int limit, int offset)
|
||||
throws ApplicationManagementException;
|
||||
|
||||
/**
|
||||
* Retrieves the Device Subscription details associated with a given app release UUID.
|
||||
*
|
||||
* @param uuid the UUID of the app release
|
||||
* @param subscriptionStatus the status of the subscription (subscribed or unsubscribed)
|
||||
* @param offset the offset for the data set
|
||||
* @param limit the limit for the data set
|
||||
* @return {@link DeviceSubscriptionResponseDTO} which contains the details of device subscriptions.
|
||||
* @throws ApplicationManagementException if an error occurs while fetching the device subscription details
|
||||
*/
|
||||
DeviceSubscriptionResponseDTO getDeviceSubscriptionsDetailsByUUID(String uuid, String subscriptionStatus,
|
||||
PaginationRequest request, int offset,
|
||||
int limit) throws ApplicationManagementException;
|
||||
|
||||
/**
|
||||
* Retrieves the All Device details associated with a given app release UUID.
|
||||
*
|
||||
* @param uuid the UUID of the app release
|
||||
* @param subscriptionStatus the status of the subscription (subscribed or unsubscribed)
|
||||
* @param offset the offset for the data set
|
||||
* @param limit the limit for the data set
|
||||
* @return {@link DeviceSubscriptionResponseDTO} which contains the details of device subscriptions.
|
||||
* @throws ApplicationManagementException if an error occurs while fetching the subscription details
|
||||
*/
|
||||
DeviceSubscriptionResponseDTO getAllSubscriptionDetailsByUUID(String uuid, String subscriptionStatus,
|
||||
PaginationRequest request, int offset,
|
||||
int limit) throws ApplicationManagementException;
|
||||
SubscriptionStatistics getStatistics(SubscriptionInfo subscriptionInfo) throws ApplicationManagementException;
|
||||
|
||||
/**
|
||||
* This method is responsible for retrieving device subscription details related to the given UUID.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -59,6 +59,7 @@ public class SubscriptionManagementHelperUtil {
|
||||
if (idx >= 0) {
|
||||
DeviceSubscriptionDTO deviceSubscriptionDTO = deviceSubscriptionDTOS.get(idx);
|
||||
DeviceSubscription deviceSubscription = new DeviceSubscription();
|
||||
deviceSubscription.setDeviceId(device.getId());
|
||||
deviceSubscription.setDeviceIdentifier(device.getDeviceIdentifier());
|
||||
deviceSubscription.setDeviceOwner(device.getEnrolmentInfo().getOwner());
|
||||
deviceSubscription.setDeviceType(device.getType());
|
||||
@ -102,6 +103,10 @@ public class SubscriptionManagementHelperUtil {
|
||||
getPercentage(subscriptionStatisticDTO.getPendingDevicesCount(), allDeviceCount));
|
||||
subscriptionStatistics.setFailedPercentage(
|
||||
getPercentage(subscriptionStatisticDTO.getFailedDevicesCount(), allDeviceCount));
|
||||
subscriptionStatistics.setNewDevicesPercentage(getPercentage((allDeviceCount -
|
||||
subscriptionStatisticDTO.getCompletedDeviceCount() -
|
||||
subscriptionStatisticDTO.getPendingDevicesCount() -
|
||||
subscriptionStatisticDTO.getFailedDevicesCount()), allDeviceCount));
|
||||
return subscriptionStatistics;
|
||||
}
|
||||
|
||||
@ -109,6 +114,6 @@ public class SubscriptionManagementHelperUtil {
|
||||
if (denominator <= 0) {
|
||||
return 0.0f;
|
||||
}
|
||||
return (float) numerator/denominator;
|
||||
return ((float) numerator / (float) denominator) * 100;
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,37 +20,27 @@
|
||||
package io.entgra.device.mgt.core.application.mgt.core.util.subscription.mgt.impl;
|
||||
|
||||
import io.entgra.device.mgt.core.application.mgt.common.DeviceSubscription;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.DeviceSubscriptionData;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.DeviceSubscriptionFilterCriteria;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionEntity;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionInfo;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionResponse;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionStatistics;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.ApplicationReleaseDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.DeviceSubscriptionDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.SubscriptionsDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.exception.ApplicationManagementException;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.exception.DBConnectionException;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.exception.ApplicationManagementDAOException;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.exception.NotFoundException;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.internal.DataHolder;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.util.ConnectionManagerUtil;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.util.HelperUtil;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.util.subscription.mgt.SubscriptionManagementHelperUtil;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.util.subscription.mgt.service.SubscriptionManagementHelperService;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.Device;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.PaginationRequest;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.PaginationResult;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.exceptions.DeviceManagementException;
|
||||
import io.entgra.device.mgt.core.device.mgt.core.service.DeviceManagementProviderService;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
import org.wso2.carbon.user.api.UserStoreException;
|
||||
import org.wso2.carbon.user.api.UserStoreManager;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@ -136,7 +126,8 @@ public class DeviceBasedSubscriptionManagementHelperServiceImpl implements Subsc
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubscriptionStatistics getSubscriptionStatistics(SubscriptionInfo subscriptionInfo) throws ApplicationManagementException {
|
||||
public SubscriptionStatistics getSubscriptionStatistics(SubscriptionInfo subscriptionInfo)
|
||||
throws ApplicationManagementException {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -171,7 +171,9 @@ public class GroupBasedSubscriptionManagementHelperServiceImpl implements Subscr
|
||||
}
|
||||
List<SubscriptionEntity> subscriptionEntities = subscriptionDAO.
|
||||
getGroupsSubscriptionDetailsByAppReleaseID(applicationReleaseDTO.getId(), isUnsubscribe, tenantId, offset, limit);
|
||||
return new SubscriptionResponse(subscriptionInfo.getApplicationUUID(), subscriptionEntities);
|
||||
int subscriptionCount = isUnsubscribe ? subscriptionDAO.getGroupUnsubscriptionCount(applicationReleaseDTO.getId(), tenantId) :
|
||||
subscriptionDAO.getGroupSubscriptionCount(applicationReleaseDTO.getId(), tenantId);
|
||||
return new SubscriptionResponse(subscriptionInfo.getApplicationUUID(), subscriptionCount, subscriptionEntities);
|
||||
} catch (DBConnectionException | ApplicationManagementDAOException e) {
|
||||
String msg = "Error encountered while connecting to the database";
|
||||
log.error(msg, e);
|
||||
|
||||
@ -20,7 +20,6 @@
|
||||
package io.entgra.device.mgt.core.application.mgt.core.util.subscription.mgt.impl;
|
||||
|
||||
import io.entgra.device.mgt.core.application.mgt.common.DeviceSubscription;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.DeviceSubscriptionData;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.DeviceSubscriptionFilterCriteria;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionEntity;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionInfo;
|
||||
@ -28,6 +27,7 @@ import io.entgra.device.mgt.core.application.mgt.common.SubscriptionResponse;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionStatistics;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.ApplicationReleaseDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.DeviceSubscriptionDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.SubscriptionStatisticDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.exception.ApplicationManagementException;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.exception.DBConnectionException;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.exception.ApplicationManagementDAOException;
|
||||
@ -66,7 +66,6 @@ public class RoleBasedSubscriptionManagementHelperServiceImpl implements Subscri
|
||||
return RoleBasedSubscriptionManagementHelperServiceImplHolder.INSTANCE;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public SubscriptionResponse getStatusBaseSubscriptions(SubscriptionInfo subscriptionInfo, int limit, int offset)
|
||||
throws ApplicationManagementException {
|
||||
@ -77,23 +76,7 @@ public class RoleBasedSubscriptionManagementHelperServiceImpl implements Subscri
|
||||
|
||||
try {
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
UserStoreManager userStoreManager = DataHolder.getInstance().getRealmService().
|
||||
getTenantUserRealm(tenantId).getUserStoreManager();
|
||||
String[] usersWithRole =
|
||||
userStoreManager.getUserListOfRole(subscriptionInfo.getIdentifier());
|
||||
List<Device> deviceListOwnByRole = new ArrayList<>();
|
||||
for (String user : usersWithRole) {
|
||||
PaginationRequest paginationRequest = new PaginationRequest(offset, limit);
|
||||
paginationRequest.setOwner(user);
|
||||
paginationRequest.setStatusList(Arrays.asList("ACTIVE", "INACTIVE", "UNREACHABLE"));
|
||||
PaginationResult ownDeviceIds = HelperUtil.getDeviceManagementProviderService().
|
||||
getAllDevicesIdList(paginationRequest);
|
||||
if (ownDeviceIds.getData() != null) {
|
||||
deviceListOwnByRole.addAll((List<Device>)ownDeviceIds.getData());
|
||||
}
|
||||
}
|
||||
|
||||
List<Integer> deviceIdsOwnByRole = deviceListOwnByRole.stream().map(Device::getId).collect(Collectors.toList());
|
||||
List<Integer> deviceIdsOwnByRole = getDeviceIdsOwnByRole(subscriptionInfo.getIdentifier(), tenantId);
|
||||
|
||||
ApplicationReleaseDTO applicationReleaseDTO = applicationReleaseDAO.
|
||||
getReleaseByUUID(subscriptionInfo.getApplicationUUID(), tenantId);
|
||||
@ -117,7 +100,8 @@ public class RoleBasedSubscriptionManagementHelperServiceImpl implements Subscri
|
||||
List<Integer> deviceIdsOfSubscription = deviceSubscriptionDTOS.stream().
|
||||
map(DeviceSubscriptionDTO::getDeviceId).collect(Collectors.toList());
|
||||
|
||||
List<Integer> newDeviceIds = deviceManagementProviderService.getDevicesNotInGivenIdList(deviceIdsOfSubscription, new PaginationRequest(offset, limit));
|
||||
List<Integer> newDeviceIds = deviceManagementProviderService.getDevicesNotInGivenIdList(deviceIdsOfSubscription,
|
||||
new PaginationRequest(offset, limit));
|
||||
deviceSubscriptionDTOS = newDeviceIds.stream().map(DeviceSubscriptionDTO::new).collect(Collectors.toList());
|
||||
deviceCount = deviceManagementProviderService.getDeviceCountNotInGivenIdList(deviceIdsOfSubscription);
|
||||
} else {
|
||||
@ -169,7 +153,9 @@ public class RoleBasedSubscriptionManagementHelperServiceImpl implements Subscri
|
||||
}
|
||||
List<SubscriptionEntity> subscriptionEntities = subscriptionDAO.
|
||||
getRoleSubscriptionsByAppReleaseID(applicationReleaseDTO.getId(), isUnsubscribe, tenantId, offset, limit);
|
||||
return new SubscriptionResponse(subscriptionInfo.getApplicationUUID(), subscriptionEntities);
|
||||
int subscriptionCount = isUnsubscribe ? subscriptionDAO.getRoleUnsubscriptionCount(applicationReleaseDTO.getId(), tenantId) :
|
||||
subscriptionDAO.getRoleSubscriptionCount(applicationReleaseDTO.getId(), tenantId);
|
||||
return new SubscriptionResponse(subscriptionInfo.getApplicationUUID(), subscriptionCount, subscriptionEntities);
|
||||
} catch (DBConnectionException | ApplicationManagementDAOException e) {
|
||||
String msg = "Error encountered while connecting to the database";
|
||||
log.error(msg, e);
|
||||
@ -181,6 +167,40 @@ public class RoleBasedSubscriptionManagementHelperServiceImpl implements Subscri
|
||||
|
||||
@Override
|
||||
public SubscriptionStatistics getSubscriptionStatistics(SubscriptionInfo subscriptionInfo) throws ApplicationManagementException {
|
||||
return null;
|
||||
final boolean isUnsubscribe = Objects.equals("unsubscribe", subscriptionInfo.getSubscriptionStatus());
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
try {
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
SubscriptionStatisticDTO subscriptionStatisticDTO = subscriptionDAO.
|
||||
getSubscriptionStatistic(subscriptionInfo.getSubscriptionType(), isUnsubscribe, tenantId);
|
||||
int allDeviceCount = getDeviceIdsOwnByRole(subscriptionInfo.getIdentifier(), tenantId).size();
|
||||
return SubscriptionManagementHelperUtil.getSubscriptionStatistics(subscriptionStatisticDTO, allDeviceCount);
|
||||
} catch (DeviceManagementException | ApplicationManagementDAOException | UserStoreException e) {
|
||||
String msg = "Error encountered while getting subscription statistics for role: " + subscriptionInfo.getIdentifier();
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private List<Integer> getDeviceIdsOwnByRole(String roleName, int tenantId) throws UserStoreException, DeviceManagementException {
|
||||
UserStoreManager userStoreManager = DataHolder.getInstance().getRealmService().
|
||||
getTenantUserRealm(tenantId).getUserStoreManager();
|
||||
String[] usersWithRole =
|
||||
userStoreManager.getUserListOfRole(roleName);
|
||||
List<Device> deviceListOwnByRole = new ArrayList<>();
|
||||
for (String user : usersWithRole) {
|
||||
PaginationRequest paginationRequest = new PaginationRequest(-1, -1);
|
||||
paginationRequest.setOwner(user);
|
||||
paginationRequest.setStatusList(Arrays.asList("ACTIVE", "INACTIVE", "UNREACHABLE"));
|
||||
PaginationResult ownDeviceIds = HelperUtil.getDeviceManagementProviderService().
|
||||
getAllDevicesIdList(paginationRequest);
|
||||
if (ownDeviceIds.getData() != null) {
|
||||
deviceListOwnByRole.addAll((List<Device>)ownDeviceIds.getData());
|
||||
}
|
||||
}
|
||||
return deviceListOwnByRole.stream().map(Device::getId).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,6 +27,7 @@ import io.entgra.device.mgt.core.application.mgt.common.SubscriptionResponse;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionStatistics;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.ApplicationReleaseDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.DeviceSubscriptionDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.SubscriptionStatisticDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.exception.ApplicationManagementException;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.exception.DBConnectionException;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.exception.ApplicationManagementDAOException;
|
||||
@ -61,7 +62,6 @@ public class UserBasedSubscriptionManagementHelperServiceImpl implements Subscri
|
||||
return UserBasedSubscriptionManagementHelperServiceImpl.UserBasedSubscriptionManagementHelperServiceImplHolder.INSTANCE;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public SubscriptionResponse getStatusBaseSubscriptions(SubscriptionInfo subscriptionInfo, int limit, int offset)
|
||||
throws ApplicationManagementException {
|
||||
@ -72,17 +72,7 @@ public class UserBasedSubscriptionManagementHelperServiceImpl implements Subscri
|
||||
|
||||
try {
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
List<Device> deviceListOwnByUser = new ArrayList<>();
|
||||
PaginationRequest paginationRequest = new PaginationRequest(offset, limit);
|
||||
paginationRequest.setOwner(subscriptionInfo.getIdentifier());
|
||||
paginationRequest.setStatusList(Arrays.asList("ACTIVE", "INACTIVE", "UNREACHABLE"));
|
||||
PaginationResult ownDeviceIds = HelperUtil.getDeviceManagementProviderService().
|
||||
getAllDevicesIdList(paginationRequest);
|
||||
if (ownDeviceIds.getData() != null) {
|
||||
deviceListOwnByUser.addAll((List<Device>)ownDeviceIds.getData());
|
||||
}
|
||||
|
||||
List<Integer> deviceIdsOwnByUser = deviceListOwnByUser.stream().map(Device::getId).collect(Collectors.toList());
|
||||
List<Integer> deviceIdsOwnByUser = getDeviceIdsOwnByUser(subscriptionInfo.getIdentifier());
|
||||
|
||||
ApplicationReleaseDTO applicationReleaseDTO = applicationReleaseDAO.
|
||||
getReleaseByUUID(subscriptionInfo.getApplicationUUID(), tenantId);
|
||||
@ -155,7 +145,9 @@ public class UserBasedSubscriptionManagementHelperServiceImpl implements Subscri
|
||||
}
|
||||
List<SubscriptionEntity> subscriptionEntities = subscriptionDAO.
|
||||
getUserSubscriptionsByAppReleaseID(applicationReleaseDTO.getId(), isUnsubscribe, tenantId, offset, limit);
|
||||
return new SubscriptionResponse(subscriptionInfo.getApplicationUUID(), subscriptionEntities);
|
||||
int subscriptionCount = isUnsubscribe ? subscriptionDAO.getUserUnsubscriptionCount(applicationReleaseDTO.getId(), tenantId) :
|
||||
subscriptionDAO.getUserSubscriptionCount(applicationReleaseDTO.getId(), tenantId);
|
||||
return new SubscriptionResponse(subscriptionInfo.getApplicationUUID(), subscriptionCount, subscriptionEntities);
|
||||
} catch (DBConnectionException | ApplicationManagementDAOException e) {
|
||||
String msg = "Error encountered while connecting to the database";
|
||||
log.error(msg, e);
|
||||
@ -167,7 +159,34 @@ public class UserBasedSubscriptionManagementHelperServiceImpl implements Subscri
|
||||
|
||||
@Override
|
||||
public SubscriptionStatistics getSubscriptionStatistics(SubscriptionInfo subscriptionInfo) throws ApplicationManagementException {
|
||||
// todo: analytics engine
|
||||
return null;
|
||||
final boolean isUnsubscribe = Objects.equals("unsubscribe", subscriptionInfo.getSubscriptionStatus());
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
try {
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
SubscriptionStatisticDTO subscriptionStatisticDTO = subscriptionDAO.
|
||||
getSubscriptionStatistic(subscriptionInfo.getSubscriptionType(), isUnsubscribe, tenantId);
|
||||
int allDeviceCount = getDeviceIdsOwnByUser(subscriptionInfo.getIdentifier()).size();
|
||||
return SubscriptionManagementHelperUtil.getSubscriptionStatistics(subscriptionStatisticDTO, allDeviceCount);
|
||||
} catch (DeviceManagementException | ApplicationManagementDAOException e) {
|
||||
String msg = "Error encountered while getting subscription statistics for user: " + subscriptionInfo.getIdentifier();
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private List<Integer> getDeviceIdsOwnByUser(String username) throws DeviceManagementException {
|
||||
List<Device> deviceListOwnByUser = new ArrayList<>();
|
||||
PaginationRequest paginationRequest = new PaginationRequest(-1, -1);
|
||||
paginationRequest.setOwner(username);
|
||||
paginationRequest.setStatusList(Arrays.asList("ACTIVE", "INACTIVE", "UNREACHABLE"));
|
||||
PaginationResult ownDeviceIds = HelperUtil.getDeviceManagementProviderService().
|
||||
getAllDevicesIdList(paginationRequest);
|
||||
if (ownDeviceIds.getData() != null) {
|
||||
deviceListOwnByUser.addAll((List<Device>)ownDeviceIds.getData());
|
||||
}
|
||||
return deviceListOwnByUser.stream().map(Device::getId).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
@ -1564,7 +1564,7 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO {
|
||||
Connection connection = GroupManagementDAOFactory.getConnection();
|
||||
String sql = "SELECT COUNT(d.ID) AS COUNT FROM DM_GROUP d INNER JOIN " +
|
||||
"DM_DEVICE_GROUP_MAP m ON " +
|
||||
"d.ID = m.GROUP_ID WHERE TENANT_ID = ? AND d.GROUP_NAME = ?";
|
||||
"d.ID = m.GROUP_ID WHERE d.TENANT_ID = ? AND d.GROUP_NAME = ?";
|
||||
try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
|
||||
preparedStatement.setInt(1, tenantId);
|
||||
preparedStatement.setString(2, groupName);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user