mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Add statistics to group based supscription mgt helper
This commit is contained in:
parent
0e01b1c0ee
commit
6b6787e083
@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2024, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
package io.entgra.device.mgt.core.application.mgt.common;
|
||||
|
||||
public class SubscriptionStatistics {
|
||||
private float completedPercentage;
|
||||
private float failedPercentage;
|
||||
private float pendingPercentage;
|
||||
private float newDevicesPercentage;
|
||||
|
||||
public SubscriptionStatistics() {}
|
||||
public SubscriptionStatistics(float completedPercentage, float failedPercentage, float pendingPercentage,
|
||||
float newDevicesPercentage) {
|
||||
this.completedPercentage = completedPercentage;
|
||||
this.failedPercentage = failedPercentage;
|
||||
this.pendingPercentage = pendingPercentage;
|
||||
this.newDevicesPercentage = newDevicesPercentage;
|
||||
}
|
||||
|
||||
public float getCompletedPercentage() {
|
||||
return completedPercentage;
|
||||
}
|
||||
|
||||
public void setCompletedPercentage(float completedPercentage) {
|
||||
this.completedPercentage = completedPercentage;
|
||||
}
|
||||
|
||||
public float getFailedPercentage() {
|
||||
return failedPercentage;
|
||||
}
|
||||
|
||||
public void setFailedPercentage(float failedPercentage) {
|
||||
this.failedPercentage = failedPercentage;
|
||||
}
|
||||
|
||||
public float getPendingPercentage() {
|
||||
return pendingPercentage;
|
||||
}
|
||||
|
||||
public void setPendingPercentage(float pendingPercentage) {
|
||||
this.pendingPercentage = pendingPercentage;
|
||||
}
|
||||
|
||||
public float getNewDevicesPercentage() {
|
||||
return newDevicesPercentage;
|
||||
}
|
||||
|
||||
public void setNewDevicesPercentage(float newDevicesPercentage) {
|
||||
this.newDevicesPercentage = newDevicesPercentage;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2024, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
package io.entgra.device.mgt.core.application.mgt.common.dto;
|
||||
|
||||
public class SubscriptionStatisticDTO {
|
||||
private int completedDeviceCount;
|
||||
private int pendingDevicesCount;
|
||||
private int failedDevicesCount;
|
||||
|
||||
public int getCompletedDeviceCount() {
|
||||
return completedDeviceCount;
|
||||
}
|
||||
|
||||
public void setCompletedDeviceCount(int completedDeviceCount) {
|
||||
this.completedDeviceCount = completedDeviceCount;
|
||||
}
|
||||
|
||||
public int getPendingDevicesCount() {
|
||||
return pendingDevicesCount;
|
||||
}
|
||||
|
||||
public void setPendingDevicesCount(int pendingDevicesCount) {
|
||||
this.pendingDevicesCount = pendingDevicesCount;
|
||||
}
|
||||
|
||||
public int getFailedDevicesCount() {
|
||||
return failedDevicesCount;
|
||||
}
|
||||
|
||||
public void setFailedDevicesCount(int failedDevicesCount) {
|
||||
this.failedDevicesCount = failedDevicesCount;
|
||||
}
|
||||
}
|
||||
@ -20,6 +20,7 @@ package io.entgra.device.mgt.core.application.mgt.core.dao;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.ExecutionStatus;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.GroupSubscriptionDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionEntity;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.SubscriptionStatisticDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.SubscriptionsDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.DeviceSubscriptionDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.ApplicationReleaseDTO;
|
||||
@ -521,4 +522,8 @@ public interface SubscriptionDAO {
|
||||
* @throws ApplicationManagementDAOException if connection establishment or SQL execution fails.
|
||||
*/
|
||||
int getUserUnsubscriptionCount(int appReleaseId, int tenantId) throws ApplicationManagementDAOException;
|
||||
|
||||
SubscriptionStatisticDTO getSubscriptionStatistic(String subscriptionType, boolean isUnsubscribed, int tenantId)
|
||||
throws ApplicationManagementDAOException;
|
||||
|
||||
}
|
||||
|
||||
@ -20,6 +20,7 @@ package io.entgra.device.mgt.core.application.mgt.core.dao.impl.subscription;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.GroupSubscriptionDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.DeviceOperationDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionEntity;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.SubscriptionStatisticDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.SubscriptionsDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.dao.SubscriptionDAO;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.dao.impl.AbstractDAOImpl;
|
||||
@ -47,6 +48,7 @@ import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.StringJoiner;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -2654,4 +2656,54 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubscriptionStatisticDTO getSubscriptionStatistic(String subscriptionType, boolean isUnsubscribed, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
SubscriptionStatisticDTO subscriptionStatisticDTO = new SubscriptionStatisticDTO();
|
||||
boolean doesAllEntriesRequired = true;
|
||||
try {
|
||||
Connection connection = getDBConnection();
|
||||
String sql = "SELECT COUNT(DISTINCT ID) AS COUNT, " +
|
||||
"STATUS FROM AP_DEVICE_SUBSCRIPTION WHERE " +
|
||||
"TENANT_ID = ? AND UNSUBSCRIBED = ?";
|
||||
if (!Objects.equals(subscriptionType, "DEVICE")) {
|
||||
sql = sql + " AND ACTION_TRIGGERED_FROM = ?";
|
||||
doesAllEntriesRequired = false;
|
||||
}
|
||||
sql = sql + " GROUP BY (STATUS)";
|
||||
|
||||
try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
|
||||
int idx = 1;
|
||||
|
||||
preparedStatement.setInt(idx++, tenantId);
|
||||
preparedStatement.setBoolean(idx++, isUnsubscribed);
|
||||
if (!doesAllEntriesRequired) {
|
||||
preparedStatement.setString(idx, subscriptionType);
|
||||
}
|
||||
try (ResultSet resultSet = preparedStatement.executeQuery()) {
|
||||
while (resultSet.next()) {
|
||||
int count = resultSet.getInt("COUNT");
|
||||
String status = resultSet.getString("STATUS");
|
||||
if (Objects.equals(status, "COMPLETED")) {
|
||||
subscriptionStatisticDTO.setCompletedDeviceCount(count);
|
||||
} else if (Objects.equals(status, "PENDING")) {
|
||||
subscriptionStatisticDTO.setPendingDevicesCount(count);
|
||||
} else {
|
||||
subscriptionStatisticDTO.setFailedDevicesCount(count);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return subscriptionStatisticDTO;
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the DB connection for getting subscription statistics";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while running SQL for getting subscription statistics";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -23,11 +23,14 @@ import io.entgra.device.mgt.core.application.mgt.common.DeviceSubscription;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.DeviceSubscriptionFilterCriteria;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionData;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionInfo;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionStatistics;
|
||||
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.core.util.HelperUtil;
|
||||
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.exceptions.DeviceManagementException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.ArrayList;
|
||||
@ -63,11 +66,7 @@ public class SubscriptionManagementHelperUtil {
|
||||
deviceSubscription.setDeviceStatus(device.getEnrolmentInfo().getStatus().name());
|
||||
deviceSubscription.setOwnershipType(device.getEnrolmentInfo().getOwnership().name());
|
||||
deviceSubscription.setDateOfLastUpdate(new Timestamp(device.getEnrolmentInfo().getDateOfLastUpdate()));
|
||||
SubscriptionData subscriptionData = new SubscriptionData();
|
||||
subscriptionData.setTriggeredBy(isUnsubscribed ? deviceSubscriptionDTO.getUnsubscribedBy() :
|
||||
deviceSubscriptionDTO.getSubscribedBy());
|
||||
subscriptionData.setTriggeredAt(deviceSubscriptionDTO.getSubscribedTimestamp());
|
||||
subscriptionData.setSubscriptionType(deviceSubscriptionDTO.getStatus());
|
||||
SubscriptionData subscriptionData = getSubscriptionData(isUnsubscribed, deviceSubscriptionDTO);
|
||||
deviceSubscription.setSubscriptionData(subscriptionData);
|
||||
deviceSubscriptions.add(deviceSubscription);
|
||||
}
|
||||
@ -75,6 +74,16 @@ public class SubscriptionManagementHelperUtil {
|
||||
return deviceSubscriptions;
|
||||
}
|
||||
|
||||
private static SubscriptionData getSubscriptionData(boolean isUnsubscribed, DeviceSubscriptionDTO deviceSubscriptionDTO) {
|
||||
SubscriptionData subscriptionData = new SubscriptionData();
|
||||
subscriptionData.setTriggeredBy(isUnsubscribed ? deviceSubscriptionDTO.getUnsubscribedBy() :
|
||||
deviceSubscriptionDTO.getSubscribedBy());
|
||||
subscriptionData.setTriggeredAt(deviceSubscriptionDTO.getSubscribedTimestamp());
|
||||
subscriptionData.setDeviceSubscriptionStatus(deviceSubscriptionDTO.getStatus());
|
||||
subscriptionData.setSubscriptionType(deviceSubscriptionDTO.getActionTriggeredFrom());
|
||||
return subscriptionData;
|
||||
}
|
||||
|
||||
public static String getDeviceSubscriptionStatus(SubscriptionInfo subscriptionInfo) {
|
||||
return getDeviceSubscriptionStatus(subscriptionInfo.getDeviceSubscriptionFilterCriteria().
|
||||
getFilteringDeviceSubscriptionStatus(), subscriptionInfo.getDeviceSubscriptionStatus());
|
||||
@ -84,4 +93,22 @@ public class SubscriptionManagementHelperUtil {
|
||||
return (deviceSubscriptionStatusFilter != null && !deviceSubscriptionStatusFilter.isEmpty()) ?
|
||||
deviceSubscriptionStatusFilter : deviceSubscriptionStatus;
|
||||
}
|
||||
|
||||
public static SubscriptionStatistics getSubscriptionStatistics(SubscriptionStatisticDTO subscriptionStatisticDTO, int allDeviceCount) {
|
||||
SubscriptionStatistics subscriptionStatistics = new SubscriptionStatistics();
|
||||
subscriptionStatistics.setCompletedPercentage(
|
||||
getPercentage(subscriptionStatisticDTO.getCompletedDeviceCount(), allDeviceCount));
|
||||
subscriptionStatistics.setPendingPercentage(
|
||||
getPercentage(subscriptionStatisticDTO.getPendingDevicesCount(), allDeviceCount));
|
||||
subscriptionStatistics.setFailedPercentage(
|
||||
getPercentage(subscriptionStatisticDTO.getFailedDevicesCount(), allDeviceCount));
|
||||
return subscriptionStatistics;
|
||||
}
|
||||
|
||||
public static float getPercentage(int numerator, int denominator) {
|
||||
if (denominator <= 0) {
|
||||
return 0.0f;
|
||||
}
|
||||
return (float) numerator/denominator;
|
||||
}
|
||||
}
|
||||
|
||||
@ -25,6 +25,7 @@ import io.entgra.device.mgt.core.application.mgt.common.DeviceSubscriptionFilter
|
||||
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;
|
||||
@ -135,7 +136,8 @@ public class DeviceBasedSubscriptionManagementHelperServiceImpl implements Subsc
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getSubscriptionStatistics() throws ApplicationManagementException {
|
||||
// todo: analytics engine
|
||||
public SubscriptionStatistics getSubscriptionStatistics(SubscriptionInfo subscriptionInfo) throws ApplicationManagementException {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -25,9 +25,11 @@ import io.entgra.device.mgt.core.application.mgt.common.DeviceSubscriptionFilter
|
||||
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.ApplicationDTO;
|
||||
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;
|
||||
@ -44,6 +46,7 @@ import io.entgra.device.mgt.core.device.mgt.core.service.DeviceManagementProvide
|
||||
import io.entgra.device.mgt.core.device.mgt.core.service.GroupManagementProviderService;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
|
||||
import java.util.List;
|
||||
@ -126,7 +129,7 @@ public class GroupBasedSubscriptionManagementHelperServiceImpl implements Subscr
|
||||
deviceSubscriptionDTOS = subscriptionDAO.getSubscriptionDetailsByDeviceIds(applicationReleaseDTO.getId(),
|
||||
isUnsubscribe, tenantId, deviceIdsOwnByGroup, subscriptionInfo.getDeviceSubscriptionStatus(),
|
||||
subscriptionInfo.getSubscriptionType(), deviceSubscriptionFilterCriteria.getTriggeredBy(),
|
||||
null, limit, offset);
|
||||
null, -1, -1);
|
||||
|
||||
deviceCount = subscriptionDAO.getDeviceSubscriptionCount(applicationReleaseDTO.getId(), isUnsubscribe, tenantId,
|
||||
subscriptionInfo.getDeviceSubscriptionStatus(), subscriptionInfo.getSubscriptionType(),
|
||||
@ -179,7 +182,26 @@ public class GroupBasedSubscriptionManagementHelperServiceImpl implements Subscr
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getSubscriptionStatistics() throws ApplicationManagementException {
|
||||
// todo: analytics engine
|
||||
public SubscriptionStatistics getSubscriptionStatistics(SubscriptionInfo subscriptionInfo)
|
||||
throws ApplicationManagementException {
|
||||
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 = HelperUtil.getGroupManagementProviderService().getDeviceCount(subscriptionInfo.getIdentifier());
|
||||
return SubscriptionManagementHelperUtil.getSubscriptionStatistics(subscriptionStatisticDTO, allDeviceCount);
|
||||
} catch (ApplicationManagementDAOException e) {
|
||||
String msg = "Error encountered while getting subscription statistics for group: " + subscriptionInfo.getIdentifier();
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (GroupManagementException e) {
|
||||
String msg = "Error encountered while getting device subscription for group: " + subscriptionInfo.getIdentifier();
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -25,6 +25,7 @@ import io.entgra.device.mgt.core.application.mgt.common.DeviceSubscriptionFilter
|
||||
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.exception.ApplicationManagementException;
|
||||
@ -179,7 +180,7 @@ public class RoleBasedSubscriptionManagementHelperServiceImpl implements Subscri
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getSubscriptionStatistics() throws ApplicationManagementException {
|
||||
// todo: analytics engine
|
||||
public SubscriptionStatistics getSubscriptionStatistics(SubscriptionInfo subscriptionInfo) throws ApplicationManagementException {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -24,6 +24,7 @@ import io.entgra.device.mgt.core.application.mgt.common.DeviceSubscriptionFilter
|
||||
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.exception.ApplicationManagementException;
|
||||
@ -165,7 +166,8 @@ public class UserBasedSubscriptionManagementHelperServiceImpl implements Subscri
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getSubscriptionStatistics() throws ApplicationManagementException {
|
||||
public SubscriptionStatistics getSubscriptionStatistics(SubscriptionInfo subscriptionInfo) throws ApplicationManagementException {
|
||||
// todo: analytics engine
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -24,6 +24,7 @@ import io.entgra.device.mgt.core.application.mgt.common.DeviceSubscriptionData;
|
||||
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.DeviceSubscriptionDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.SubscriptionsDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.exception.ApplicationManagementException;
|
||||
@ -42,5 +43,6 @@ public interface SubscriptionManagementHelperService {
|
||||
throws ApplicationManagementException;
|
||||
SubscriptionResponse getSubscriptions(SubscriptionInfo subscriptionInfo, int limit, int offset)
|
||||
throws ApplicationManagementException;
|
||||
void getSubscriptionStatistics() throws ApplicationManagementException;
|
||||
SubscriptionStatistics getSubscriptionStatistics(SubscriptionInfo subscriptionInfo)
|
||||
throws ApplicationManagementException;
|
||||
}
|
||||
|
||||
@ -488,4 +488,5 @@ public interface GroupDAO {
|
||||
int tenantId, String deviceOwner, String deviceName, String deviceStatus, int offset, int limit)
|
||||
throws GroupManagementDAOException;
|
||||
|
||||
int getDeviceCount(String groupName, int tenantId) throws GroupManagementDAOException;
|
||||
}
|
||||
@ -1556,4 +1556,29 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO {
|
||||
throw new GroupManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDeviceCount(String groupName, int tenantId) throws GroupManagementDAOException {
|
||||
int deviceCount = 0;
|
||||
try {
|
||||
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 = ?";
|
||||
try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
|
||||
preparedStatement.setInt(1, tenantId);
|
||||
preparedStatement.setString(2, groupName);
|
||||
try (ResultSet resultSet = preparedStatement.executeQuery()) {
|
||||
if (resultSet.next()) {
|
||||
deviceCount = resultSet.getInt("COUNT");
|
||||
}
|
||||
}
|
||||
}
|
||||
return deviceCount;
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while retrieving device count for the group: " + groupName;
|
||||
log.error(msg, e);
|
||||
throw new GroupManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -30,6 +30,7 @@ import io.entgra.device.mgt.core.device.mgt.common.group.mgt.GroupAlreadyExistEx
|
||||
import io.entgra.device.mgt.core.device.mgt.common.group.mgt.GroupManagementException;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.group.mgt.GroupNotExistException;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.group.mgt.RoleDoesNotExistException;
|
||||
import io.entgra.device.mgt.core.device.mgt.core.dao.GroupManagementDAOException;
|
||||
import io.entgra.device.mgt.core.device.mgt.core.dto.GroupDetailsDTO;
|
||||
import org.wso2.carbon.user.api.AuthorizationManager;
|
||||
import org.wso2.carbon.user.api.UserStoreManager;
|
||||
@ -389,4 +390,6 @@ public interface GroupManagementProviderService {
|
||||
GroupDetailsDTO getGroupDetailsWithDevices(String groupName, int deviceTypeId, String deviceOwner, String deviceName, String deviceStatus,
|
||||
int offset, int limit) throws GroupManagementException;
|
||||
|
||||
int getDeviceCount(String groupName) throws GroupManagementException;
|
||||
|
||||
}
|
||||
|
||||
@ -1725,4 +1725,18 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
||||
return groupDetailsWithDevices;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDeviceCount(String groupName) throws GroupManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
try {
|
||||
GroupManagementDAOFactory.openConnection();
|
||||
return groupDAO.getDeviceCount(groupName, tenantId);
|
||||
} catch (SQLException | GroupManagementDAOException e) {
|
||||
String msg = "Error occurred while retrieving device count.";
|
||||
log.error(msg, e);
|
||||
throw new GroupManagementException(msg, e);
|
||||
} finally {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user