mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
DAO and Services for APIs to populate the installation details static UI.
This commit is contained in:
parent
918c604d72
commit
e5cd6c40ce
@ -75,9 +75,13 @@ public class DeviceSubscriptionData {
|
||||
this.device = device;
|
||||
}
|
||||
|
||||
public String getCurrentInstalledVersion() { return currentInstalledVersion; }
|
||||
public String getCurrentInstalledVersion() {
|
||||
return currentInstalledVersion;
|
||||
}
|
||||
|
||||
public void setCurrentInstalledVersion(String currentInstalledVersion) { this.currentInstalledVersion = currentInstalledVersion; }
|
||||
public void setCurrentInstalledVersion(String currentInstalledVersion) {
|
||||
this.currentInstalledVersion = currentInstalledVersion;
|
||||
}
|
||||
|
||||
public int getSubId() {
|
||||
return subId;
|
||||
|
||||
@ -0,0 +1,55 @@
|
||||
/*
|
||||
* 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 CategorizedSubscriptionCountsDTO {
|
||||
private String subscriptionType;
|
||||
private int subscriptionCount;
|
||||
private int unsubscriptionCount;
|
||||
|
||||
public CategorizedSubscriptionCountsDTO(String subscriptionType, int subscriptionCount, int unsubscriptionCount) {
|
||||
this.subscriptionType = subscriptionType;
|
||||
this.subscriptionCount = subscriptionCount;
|
||||
this.unsubscriptionCount = unsubscriptionCount;
|
||||
}
|
||||
|
||||
public String getSubscriptionType() {
|
||||
return subscriptionType;
|
||||
}
|
||||
|
||||
public void setSubscriptionType(String subscriptionType) {
|
||||
this.subscriptionType = subscriptionType;
|
||||
}
|
||||
|
||||
public int getSubscriptionCount() {
|
||||
return subscriptionCount;
|
||||
}
|
||||
|
||||
public void setSubscriptionCount(int subscriptionCount) {
|
||||
this.subscriptionCount = subscriptionCount;
|
||||
}
|
||||
|
||||
public int getUnsubscriptionCount() {
|
||||
return unsubscriptionCount;
|
||||
}
|
||||
|
||||
public void setUnsubscriptionCount(int unsubscriptionCount) {
|
||||
this.unsubscriptionCount = unsubscriptionCount;
|
||||
}
|
||||
}
|
||||
@ -31,44 +31,94 @@ public class DeviceSubscriptionDTO {
|
||||
private String actionTriggeredFrom;
|
||||
private String status;
|
||||
private int deviceId;
|
||||
private int appReleaseId;
|
||||
private String appUuid;
|
||||
|
||||
public int getId() { return id; }
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) { this.id = id; }
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getSubscribedBy() { return subscribedBy; }
|
||||
public String getSubscribedBy() {
|
||||
return subscribedBy;
|
||||
}
|
||||
|
||||
public void setSubscribedBy(String subscribedBy) { this.subscribedBy = subscribedBy; }
|
||||
public void setSubscribedBy(String subscribedBy) {
|
||||
this.subscribedBy = subscribedBy;
|
||||
}
|
||||
|
||||
public Timestamp getSubscribedTimestamp() { return subscribedTimestamp; }
|
||||
public Timestamp getSubscribedTimestamp() {
|
||||
return subscribedTimestamp;
|
||||
}
|
||||
|
||||
public void setSubscribedTimestamp(Timestamp subscribedTimestamp) {
|
||||
this.subscribedTimestamp = subscribedTimestamp;
|
||||
}
|
||||
|
||||
public boolean isUnsubscribed() { return isUnsubscribed; }
|
||||
public boolean isUnsubscribed() {
|
||||
return isUnsubscribed;
|
||||
}
|
||||
|
||||
public void setUnsubscribed(boolean unsubscribed) { isUnsubscribed = unsubscribed; }
|
||||
public void setUnsubscribed(boolean unsubscribed) {
|
||||
isUnsubscribed = unsubscribed;
|
||||
}
|
||||
|
||||
public String getUnsubscribedBy() { return unsubscribedBy; }
|
||||
public String getUnsubscribedBy() {
|
||||
return unsubscribedBy;
|
||||
}
|
||||
|
||||
public void setUnsubscribedBy(String unsubscribedBy) { this.unsubscribedBy = unsubscribedBy; }
|
||||
public void setUnsubscribedBy(String unsubscribedBy) {
|
||||
this.unsubscribedBy = unsubscribedBy;
|
||||
}
|
||||
|
||||
public Timestamp getUnsubscribedTimestamp() { return unsubscribedTimestamp; }
|
||||
public Timestamp getUnsubscribedTimestamp() {
|
||||
return unsubscribedTimestamp;
|
||||
}
|
||||
|
||||
public void setUnsubscribedTimestamp(Timestamp unsubscribedTimestamp) {
|
||||
this.unsubscribedTimestamp = unsubscribedTimestamp;
|
||||
}
|
||||
|
||||
public String getActionTriggeredFrom() { return actionTriggeredFrom; }
|
||||
|
||||
public void setActionTriggeredFrom(String actionTriggeredFrom) { this.actionTriggeredFrom = actionTriggeredFrom; }
|
||||
|
||||
public String getStatus() { return status; }
|
||||
|
||||
public void setStatus(String status) { this.status = status; }
|
||||
|
||||
public int getDeviceId() { return deviceId; }
|
||||
|
||||
public void setDeviceId(int deviceId) { this.deviceId = deviceId; }
|
||||
public String getActionTriggeredFrom() {
|
||||
return actionTriggeredFrom;
|
||||
}
|
||||
|
||||
public void setActionTriggeredFrom(String actionTriggeredFrom) {
|
||||
this.actionTriggeredFrom = actionTriggeredFrom;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(String status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public int getDeviceId() {
|
||||
return deviceId;
|
||||
}
|
||||
|
||||
public void setDeviceId(int deviceId) {
|
||||
this.deviceId = deviceId;
|
||||
}
|
||||
|
||||
public int getAppReleaseId() {
|
||||
return appReleaseId;
|
||||
}
|
||||
|
||||
public void setAppReleaseId(int appReleaseId) {
|
||||
this.appReleaseId = appReleaseId;
|
||||
}
|
||||
|
||||
public String getAppUuid() {
|
||||
return appUuid;
|
||||
}
|
||||
|
||||
public void setAppUuid(String appUuid) {
|
||||
this.appUuid = appUuid;
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,6 +21,7 @@ import io.entgra.device.mgt.core.application.mgt.common.ApplicationInstallRespon
|
||||
import io.entgra.device.mgt.core.application.mgt.common.CategorizedSubscriptionResult;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.ExecutionStatus;
|
||||
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.GroupSubscriptionDetailDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.ScheduledSubscriptionDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.UserSubscriptionDTO;
|
||||
@ -35,7 +36,6 @@ import io.entgra.device.mgt.core.device.mgt.common.app.mgt.App;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.operation.mgt.Activity;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
@ -264,4 +264,15 @@ public interface SubscriptionManager {
|
||||
List<DeviceOperationDTO> getDeviceSubscriptionsOperationsByUUID(String uuid)
|
||||
throws ApplicationManagementException;
|
||||
|
||||
/**
|
||||
* This method is responsible for retrieving device counts details related to the given UUID.
|
||||
*
|
||||
* @param uuid the UUID of the application release.
|
||||
* @return {@link List<CategorizedSubscriptionCountsDTO>} which contains counts of subscriptions
|
||||
and unsubscription for each subscription type.
|
||||
* @throws SubscriptionManagementException if there is an error while fetching the details.
|
||||
*/
|
||||
List<CategorizedSubscriptionCountsDTO> getSubscriptionCountsByUUID(String uuid)
|
||||
throws ApplicationManagementException;
|
||||
|
||||
}
|
||||
|
||||
@ -374,4 +374,114 @@ public interface SubscriptionDAO {
|
||||
*/
|
||||
List<DeviceSubscriptionDTO> getDeviceSubscriptionsDetails(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException;
|
||||
|
||||
/**
|
||||
* This method is used to get the counts of all subscription types related to a UUID.
|
||||
*
|
||||
* @param appReleaseId the appReleaseId of the application release.
|
||||
* @param tenantId id of the current tenant.
|
||||
* @return {@link int} which contains the count of the subscription type
|
||||
* @throws ApplicationManagementDAOException if connection establishment or SQL execution fails.
|
||||
*/
|
||||
int getAllSubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException;
|
||||
|
||||
/**
|
||||
* This method is used to get the counts of all unsubscription types related to a UUID.
|
||||
*
|
||||
* @param appReleaseId the UUID of the application release.
|
||||
* @param tenantId id of the current tenant.
|
||||
* @return {@link int} which contains the count of the subscription type
|
||||
* @throws ApplicationManagementDAOException if connection establishment or SQL execution fails.
|
||||
*/
|
||||
int getAllUnsubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException;
|
||||
|
||||
/**
|
||||
* This method is used to get the counts of device subscriptions related to a UUID.
|
||||
*
|
||||
* @param appReleaseId the UUID of the application release.
|
||||
* @param tenantId id of the current tenant.
|
||||
* @return {@link int} which contains the count of the subscription type
|
||||
* @throws ApplicationManagementDAOException if connection establishment or SQL execution fails.
|
||||
*/
|
||||
int getDeviceSubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException;
|
||||
|
||||
/**
|
||||
* This method is used to get the counts of device unsubscription related to a UUID.
|
||||
*
|
||||
* @param appReleaseId the UUID of the application release.
|
||||
* @param tenantId id of the current tenant.
|
||||
* @return {@link int} which contains the count of the subscription type
|
||||
* @throws ApplicationManagementDAOException if connection establishment or SQL execution fails.
|
||||
*/
|
||||
int getDeviceUnsubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException;
|
||||
|
||||
/**
|
||||
* This method is used to get the counts of group subscriptions related to a UUID.
|
||||
*
|
||||
* @param appReleaseId the UUID of the application release.
|
||||
* @param tenantId id of the current tenant.
|
||||
* @return {@link int} which contains the count of the subscription type
|
||||
* @throws ApplicationManagementDAOException if connection establishment or SQL execution fails.
|
||||
*/
|
||||
int getGroupSubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException;
|
||||
|
||||
/**
|
||||
* This method is used to get the counts of group unsubscription related to a UUID.
|
||||
*
|
||||
* @param appReleaseId the UUID of the application release.
|
||||
* @param tenantId id of the current tenant.
|
||||
* @return {@link int} which contains the count of the subscription type
|
||||
* @throws ApplicationManagementDAOException if connection establishment or SQL execution fails.
|
||||
*/
|
||||
int getGroupUnsubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException;
|
||||
|
||||
/**
|
||||
* This method is used to get the counts of role subscriptions related to a UUID.
|
||||
*
|
||||
* @param appReleaseId the UUID of the application release.
|
||||
* @param tenantId id of the current tenant.
|
||||
* @return {@link int} which contains the count of the subscription type
|
||||
* @throws ApplicationManagementDAOException if connection establishment or SQL execution fails.
|
||||
*/
|
||||
int getRoleSubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException;
|
||||
|
||||
/**
|
||||
* This method is used to get the counts of role unsubscription related to a UUID.
|
||||
*
|
||||
* @param appReleaseId the UUID of the application release.
|
||||
* @param tenantId id of the current tenant.
|
||||
* @return {@link int} which contains the count of the subscription type
|
||||
* @throws ApplicationManagementDAOException if connection establishment or SQL execution fails.
|
||||
*/
|
||||
int getRoleUnsubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException;
|
||||
|
||||
/**
|
||||
* This method is used to get the counts of user subscriptions related to a UUID.
|
||||
*
|
||||
* @param appReleaseId the UUID of the application release.
|
||||
* @param tenantId id of the current tenant.
|
||||
* @return {@link int} which contains the count of the subscription type
|
||||
* @throws ApplicationManagementDAOException if connection establishment or SQL execution fails.
|
||||
*/
|
||||
int getUserSubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException;
|
||||
|
||||
/**
|
||||
* This method is used to get the counts of user unsubscription related to a UUID.
|
||||
*
|
||||
* @param appReleaseId the UUID of the application release.
|
||||
* @param tenantId id of the current tenant.
|
||||
* @return {@link int} which contains the count of the subscription type
|
||||
* @throws ApplicationManagementDAOException if connection establishment or SQL execution fails.
|
||||
*/
|
||||
int getUserUnsubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException;
|
||||
}
|
||||
|
||||
@ -1892,5 +1892,395 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getAllSubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Getting all subscriptions count for the application appReleaseId " + appReleaseId
|
||||
+ " from the database");
|
||||
}
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
String sql = "SELECT COUNT(*) AS count " +
|
||||
"FROM AP_DEVICE_SUBSCRIPTION " +
|
||||
"WHERE AP_APP_RELEASE_ID = ? " +
|
||||
"AND TENANT_ID = ? " +
|
||||
"AND UNSUBSCRIBED = FALSE";
|
||||
|
||||
try (PreparedStatement ps = conn.prepareStatement(sql)) {
|
||||
ps.setInt(1, appReleaseId);
|
||||
ps.setInt(2, tenantId);
|
||||
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
if (rs.next()) {
|
||||
return rs.getInt("count");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while running SQL to get all subscriptions count for application appReleaseId: "
|
||||
+ appReleaseId;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the DB connection for getting all subscriptions count for appReleaseId: "
|
||||
+ appReleaseId + ".";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAllUnsubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Getting all unsubscription count for the application appReleaseId " + appReleaseId
|
||||
+ " from the database");
|
||||
}
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
String sql = "SELECT COUNT(*) AS count " +
|
||||
"FROM AP_DEVICE_SUBSCRIPTION " +
|
||||
"WHERE AP_APP_RELEASE_ID = ? " +
|
||||
"AND TENANT_ID = ? " +
|
||||
"AND UNSUBSCRIBED = TRUE";
|
||||
|
||||
try (PreparedStatement ps = conn.prepareStatement(sql)) {
|
||||
ps.setInt(1, appReleaseId);
|
||||
ps.setInt(2, tenantId);
|
||||
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
if (rs.next()) {
|
||||
return rs.getInt("count");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while running SQL to get all unsubscription count for application appReleaseId: "
|
||||
+ appReleaseId;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the DB connection for getting all unsubscription count for appReleaseId: "
|
||||
+ appReleaseId + ".";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDeviceSubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Getting device subscriptions count for the application appReleaseId " + appReleaseId
|
||||
+ " from the database");
|
||||
}
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
String sql = "SELECT COUNT(*) AS count " +
|
||||
"FROM AP_DEVICE_SUBSCRIPTION " +
|
||||
"WHERE AP_APP_RELEASE_ID = ? " +
|
||||
"AND TENANT_ID = ? " +
|
||||
"AND UNSUBSCRIBED = FALSE " +
|
||||
"AND ACTION_TRIGGERED_FROM = 'DEVICE'";
|
||||
|
||||
try (PreparedStatement ps = conn.prepareStatement(sql)) {
|
||||
ps.setInt(1, appReleaseId);
|
||||
ps.setInt(2, tenantId);
|
||||
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
if (rs.next()) {
|
||||
return rs.getInt("count");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while running SQL to get device subscriptions count for application appReleaseId: "
|
||||
+ appReleaseId;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the DB connection for getting device subscriptions count for appReleaseId: "
|
||||
+ appReleaseId + ".";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDeviceUnsubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Getting device unsubscriptions count for the application appReleaseId " + appReleaseId
|
||||
+ " from the database");
|
||||
}
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
String sql = "SELECT COUNT(*) AS count " +
|
||||
"FROM AP_DEVICE_SUBSCRIPTION " +
|
||||
"WHERE AP_APP_RELEASE_ID = ? " +
|
||||
"AND TENANT_ID = ? " +
|
||||
"AND UNSUBSCRIBED = TRUE " +
|
||||
"AND ACTION_TRIGGERED_FROM = 'DEVICE'";
|
||||
|
||||
try (PreparedStatement ps = conn.prepareStatement(sql)) {
|
||||
ps.setInt(1, appReleaseId);
|
||||
ps.setInt(2, tenantId);
|
||||
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
if (rs.next()) {
|
||||
return rs.getInt("count");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while running SQL to get device unsubscription count for application appReleaseId: "
|
||||
+ appReleaseId;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the DB connection for getting device unsubscription count for appReleaseId: "
|
||||
+ appReleaseId + ".";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getGroupSubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Getting group subscriptions count for the application appReleaseId " + appReleaseId
|
||||
+ " from the database");
|
||||
}
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
String sql = "SELECT COUNT(*) AS count " +
|
||||
"FROM AP_GROUP_SUBSCRIPTION " +
|
||||
"WHERE AP_APP_RELEASE_ID = ? " +
|
||||
"AND TENANT_ID = ? " +
|
||||
"AND UNSUBSCRIBED = FALSE";
|
||||
|
||||
try (PreparedStatement ps = conn.prepareStatement(sql)) {
|
||||
ps.setInt(1, appReleaseId);
|
||||
ps.setInt(2, tenantId);
|
||||
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
if (rs.next()) {
|
||||
return rs.getInt("count");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while running SQL to get group subscriptions count for application appReleaseId: "
|
||||
+ appReleaseId;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the DB connection for getting group subscriptions count for appReleaseId: "
|
||||
+ appReleaseId + ".";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getGroupUnsubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Getting group unsubscriptions count for the application appReleaseId " + appReleaseId
|
||||
+ " from the database");
|
||||
}
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
String sql = "SELECT COUNT(*) AS count " +
|
||||
"FROM AP_GROUP_SUBSCRIPTION " +
|
||||
"WHERE AP_APP_RELEASE_ID = ? " +
|
||||
"AND TENANT_ID = ? " +
|
||||
"AND UNSUBSCRIBED = TRUE";
|
||||
|
||||
try (PreparedStatement ps = conn.prepareStatement(sql)) {
|
||||
ps.setInt(1, appReleaseId);
|
||||
ps.setInt(2, tenantId);
|
||||
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
if (rs.next()) {
|
||||
return rs.getInt("count");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while running SQL to get group unsubscription count for application appReleaseId: "
|
||||
+ appReleaseId;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the DB connection for getting group unsubscription count for appReleaseId: "
|
||||
+ appReleaseId + ".";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRoleSubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Getting role subscriptions count for the application appReleaseId " + appReleaseId
|
||||
+ " from the database");
|
||||
}
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
String sql = "SELECT COUNT(*) AS count " +
|
||||
"FROM AP_ROLE_SUBSCRIPTION " +
|
||||
"WHERE AP_APP_RELEASE_ID = ? " +
|
||||
"AND TENANT_ID = ? " +
|
||||
"AND UNSUBSCRIBED = FALSE";
|
||||
|
||||
try (PreparedStatement ps = conn.prepareStatement(sql)) {
|
||||
ps.setInt(1, appReleaseId);
|
||||
ps.setInt(2, tenantId);
|
||||
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
if (rs.next()) {
|
||||
return rs.getInt("count");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while running SQL to get role subscriptions count for application appReleaseId: "
|
||||
+ appReleaseId;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the DB connection for getting role subscriptions count for appReleaseId: "
|
||||
+ appReleaseId + ".";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRoleUnsubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Getting role unsubscription count for the application appReleaseId " + appReleaseId
|
||||
+ " from the database");
|
||||
}
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
String sql = "SELECT COUNT(*) AS count " +
|
||||
"FROM AP_ROLE_SUBSCRIPTION " +
|
||||
"WHERE AP_APP_RELEASE_ID = ? " +
|
||||
"AND TENANT_ID = ? " +
|
||||
"AND UNSUBSCRIBED = TRUE";
|
||||
|
||||
try (PreparedStatement ps = conn.prepareStatement(sql)) {
|
||||
ps.setInt(1, appReleaseId);
|
||||
ps.setInt(2, tenantId);
|
||||
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
if (rs.next()) {
|
||||
return rs.getInt("count");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while running SQL to get role unsubscription count for application appReleaseId: "
|
||||
+ appReleaseId;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the DB connection for getting role unsubscription count for appReleaseId: "
|
||||
+ appReleaseId + ".";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getUserSubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Getting user subscriptions count for the application appReleaseId " + appReleaseId
|
||||
+ " from the database");
|
||||
}
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
String sql = "SELECT COUNT(*) AS count " +
|
||||
"FROM AP_USER_SUBSCRIPTION " +
|
||||
"WHERE AP_APP_RELEASE_ID = ? " +
|
||||
"AND TENANT_ID = ? " +
|
||||
"AND UNSUBSCRIBED = FALSE";
|
||||
|
||||
try (PreparedStatement ps = conn.prepareStatement(sql)) {
|
||||
ps.setInt(1, appReleaseId);
|
||||
ps.setInt(2, tenantId);
|
||||
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
if (rs.next()) {
|
||||
return rs.getInt("count");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while running SQL to get user subscriptions count for application appReleaseId: "
|
||||
+ appReleaseId;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the DB connection for getting user subscriptions count for appReleaseId: "
|
||||
+ appReleaseId + ".";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getUserUnsubscriptionCount(int appReleaseId, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Getting user unsubscription count for the application appReleaseId " + appReleaseId
|
||||
+ " from the database");
|
||||
}
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
String sql = "SELECT COUNT(*) AS count " +
|
||||
"FROM AP_USER_SUBSCRIPTION " +
|
||||
"WHERE AP_APP_RELEASE_ID = ? " +
|
||||
"AND TENANT_ID = ? " +
|
||||
"AND UNSUBSCRIBED = TRUE";
|
||||
|
||||
try (PreparedStatement ps = conn.prepareStatement(sql)) {
|
||||
ps.setInt(1, appReleaseId);
|
||||
ps.setInt(2, tenantId);
|
||||
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
if (rs.next()) {
|
||||
return rs.getInt("count");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while running SQL to get user unsubscription count for application appReleaseId: "
|
||||
+ appReleaseId;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the DB connection for getting user unsubscription count for appReleaseId: "
|
||||
+ appReleaseId + ".";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -24,6 +24,7 @@ import io.entgra.device.mgt.core.application.mgt.common.ApplicationSubscriptionI
|
||||
import io.entgra.device.mgt.core.application.mgt.common.ApplicationType;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.CategorizedSubscriptionResult;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.DeviceSubscriptionData;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.CategorizedSubscriptionCountsDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.DeviceSubscriptionDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.GroupSubscriptionDetailDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.UserSubscriptionDTO;
|
||||
@ -42,6 +43,7 @@ import io.entgra.device.mgt.core.application.mgt.common.dto.ApplicationPolicyDTO
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssetDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppUserDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.services.VPPApplicationManager;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.dao.ApplicationReleaseDAO;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.dao.VppApplicationDAO;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.exception.BadRequestException;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.PaginationRequest;
|
||||
@ -143,12 +145,14 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
||||
private SubscriptionDAO subscriptionDAO;
|
||||
private ApplicationDAO applicationDAO;
|
||||
private VppApplicationDAO vppApplicationDAO;
|
||||
private ApplicationReleaseDAO applicationReleaseDAO;
|
||||
private LifecycleStateManager lifecycleStateManager;
|
||||
|
||||
public SubscriptionManagerImpl() {
|
||||
this.lifecycleStateManager = DataHolder.getInstance().getLifecycleStateManager();
|
||||
this.subscriptionDAO = ApplicationManagementDAOFactory.getSubscriptionDAO();
|
||||
this.applicationDAO = ApplicationManagementDAOFactory.getApplicationDAO();
|
||||
this.applicationReleaseDAO = ApplicationManagementDAOFactory.getApplicationReleaseDAO();
|
||||
this.vppApplicationDAO = ApplicationManagementDAOFactory.getVppApplicationDAO();
|
||||
}
|
||||
|
||||
@ -2132,4 +2136,60 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CategorizedSubscriptionCountsDTO> getSubscriptionCountsByUUID(String uuid)
|
||||
throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
if (uuid == null || uuid.isEmpty()) {
|
||||
throw new IllegalArgumentException("UUID cannot be null or empty.");
|
||||
}
|
||||
|
||||
try {
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
|
||||
ApplicationReleaseDTO applicationReleaseDTO = this.applicationReleaseDAO.getReleaseByUUID(uuid, tenantId);
|
||||
if (applicationReleaseDTO == null) {
|
||||
String msg = "Couldn't find an application release for application release UUID: " + uuid;
|
||||
log.error(msg);
|
||||
throw new NotFoundException(msg);
|
||||
}
|
||||
int appReleaseId = applicationReleaseDTO.getId();
|
||||
|
||||
List<CategorizedSubscriptionCountsDTO> subscriptionCounts = new ArrayList<>();
|
||||
|
||||
subscriptionCounts.add(new CategorizedSubscriptionCountsDTO(
|
||||
"ALL",
|
||||
subscriptionDAO.getAllSubscriptionCount(appReleaseId, tenantId),
|
||||
subscriptionDAO.getAllUnsubscriptionCount(appReleaseId, tenantId)));
|
||||
subscriptionCounts.add(new CategorizedSubscriptionCountsDTO(
|
||||
"DEVICE",
|
||||
subscriptionDAO.getDeviceSubscriptionCount(appReleaseId, tenantId),
|
||||
subscriptionDAO.getDeviceUnsubscriptionCount(appReleaseId, tenantId)));
|
||||
subscriptionCounts.add(new CategorizedSubscriptionCountsDTO(
|
||||
"GROUP",
|
||||
subscriptionDAO.getGroupSubscriptionCount(appReleaseId, tenantId),
|
||||
subscriptionDAO.getGroupUnsubscriptionCount(appReleaseId, tenantId)));
|
||||
subscriptionCounts.add(new CategorizedSubscriptionCountsDTO(
|
||||
"ROLE",
|
||||
subscriptionDAO.getRoleSubscriptionCount(appReleaseId, tenantId),
|
||||
subscriptionDAO.getRoleUnsubscriptionCount(appReleaseId, tenantId)));
|
||||
subscriptionCounts.add(new CategorizedSubscriptionCountsDTO(
|
||||
"USER",
|
||||
subscriptionDAO.getUserSubscriptionCount(appReleaseId, tenantId),
|
||||
subscriptionDAO.getUserUnsubscriptionCount(appReleaseId, tenantId)));
|
||||
|
||||
return subscriptionCounts;
|
||||
} catch (ApplicationManagementDAOException e) {
|
||||
String msg = "Error occurred while retrieving subscriptions counts for UUID: " + uuid;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while retrieving the database connection";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user