From 548ad336bfeeb3341d9a30a559d6a7b6770dca3c Mon Sep 17 00:00:00 2001 From: Ace Date: Fri, 18 Oct 2019 18:18:40 +0530 Subject: [PATCH 1/2] Adding status column to GROUP table and honuring same in API --- .../admin/GroupManagementAdminService.java | 14 ++++- .../impl/GroupManagementServiceImpl.java | 2 + .../GroupManagementAdminServiceImpl.java | 15 ++++- .../mgt/common/GroupPaginationRequest.java | 9 +++ .../mgt/common/group/mgt/DeviceGroup.java | 11 ++++ .../group/mgt/DeviceGroupConstants.java | 5 ++ .../carbon/device/mgt/core/dao/GroupDAO.java | 2 +- .../core/dao/impl/AbstractGroupDAOImpl.java | 56 ++++++++++++++++--- .../dao/impl/group/GenericGroupDAOImpl.java | 9 +++ .../dao/impl/group/OracleGroupDAOImpl.java | 9 +++ .../impl/group/PostgreSQLGroupDAOImpl.java | 25 ++++++++- .../dao/impl/group/SQLServerGroupDAOImpl.java | 9 +++ .../DeviceManagementProviderServiceImpl.java | 1 + .../GroupManagementProviderService.java | 8 +++ .../GroupManagementProviderServiceImpl.java | 26 ++++++++- .../src/test/resources/sql/h2.sql | 1 + .../src/test/resources/sql/CreateH2TestDB.sql | 1 + .../src/main/resources/dbscripts/cdm/h2.sql | 1 + .../main/resources/dbscripts/cdm/mssql.sql | 1 + .../main/resources/dbscripts/cdm/mysql.sql | 1 + .../main/resources/dbscripts/cdm/oracle.sql | 1 + .../resources/dbscripts/cdm/postgresql.sql | 1 + 22 files changed, 190 insertions(+), 18 deletions(-) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/GroupManagementAdminService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/GroupManagementAdminService.java index 3e47728c3d..c42739f296 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/GroupManagementAdminService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/GroupManagementAdminService.java @@ -142,7 +142,13 @@ public interface GroupManagementAdminService { value = "Provide how many device details you require from the starting pagination index/offset.", defaultValue = "5") @QueryParam("limit") - int limit); + int limit, + + @ApiParam( + name = "status", + value = "status of group to be retrieve.") + @QueryParam("status") + String status); @Path("/count") @GET @@ -190,6 +196,10 @@ public interface GroupManagementAdminService { message = "Internal Server Error. \n Server error occurred while fetching the group count.", response = ErrorResponse.class) }) - Response getGroupCount(); + Response getGroupCount(@ApiParam( + name = "status", + value = "status of groups of which count should be retrieved") + @QueryParam("status") + String status); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/GroupManagementServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/GroupManagementServiceImpl.java index e2cda27c0c..2c11397b9a 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/GroupManagementServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/GroupManagementServiceImpl.java @@ -29,6 +29,7 @@ import org.wso2.carbon.device.mgt.common.exceptions.DeviceNotFoundException; import org.wso2.carbon.device.mgt.common.GroupPaginationRequest; import org.wso2.carbon.device.mgt.common.PaginationResult; import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup; +import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroupConstants; import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyExistException; import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException; import org.wso2.carbon.device.mgt.common.group.mgt.RoleDoesNotExistException; @@ -100,6 +101,7 @@ public class GroupManagementServiceImpl implements GroupManagementService { return Response.status(Response.Status.BAD_REQUEST).build(); } group.setOwner(owner); + group.setStatus(DeviceGroupConstants.GroupStatus.ACTIVE); try { DeviceMgtAPIUtils.getGroupManagementProviderService().createGroup(group, DEFAULT_ADMIN_ROLE, DEFAULT_ADMIN_PERMISSIONS); return Response.status(Response.Status.CREATED).build(); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/GroupManagementAdminServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/GroupManagementAdminServiceImpl.java index f1783cb619..dcb0238204 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/GroupManagementAdminServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/GroupManagementAdminServiceImpl.java @@ -20,6 +20,7 @@ package org.wso2.carbon.device.mgt.jaxrs.service.impl.admin; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.solr.common.StringUtils; import org.wso2.carbon.device.mgt.common.GroupPaginationRequest; import org.wso2.carbon.device.mgt.common.PaginationResult; import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException; @@ -36,7 +37,7 @@ public class GroupManagementAdminServiceImpl implements GroupManagementAdminServ private static final Log log = LogFactory.getLog(GroupManagementAdminServiceImpl.class); @Override - public Response getGroups(String name, String owner, int offset, int limit) { + public Response getGroups(String name, String owner, int offset, int limit, String status) { try { RequestValidationUtil.validatePaginationParameters(offset, limit); GroupPaginationRequest request = new GroupPaginationRequest(offset, limit); @@ -46,6 +47,9 @@ public class GroupManagementAdminServiceImpl implements GroupManagementAdminServ if (owner != null) { request.setOwner(owner.toUpperCase()); } + if (status != null && !status.isEmpty()) { + request.setStatus(status.toUpperCase()); + } PaginationResult deviceGroupsResult = DeviceMgtAPIUtils.getGroupManagementProviderService() .getGroups(request); DeviceGroupList deviceGroupList = new DeviceGroupList(); @@ -65,9 +69,14 @@ public class GroupManagementAdminServiceImpl implements GroupManagementAdminServ } @Override - public Response getGroupCount() { + public Response getGroupCount(String status) { try { - int count = DeviceMgtAPIUtils.getGroupManagementProviderService().getGroupCount(); + int count; + if (status == null || status.isEmpty()) { + count = DeviceMgtAPIUtils.getGroupManagementProviderService().getGroupCount(); + } else { + count = DeviceMgtAPIUtils.getGroupManagementProviderService().getGroupCountByStatus(status); + } return Response.status(Response.Status.OK).entity(count).build(); } catch (GroupManagementException e) { String msg = "ErrorResponse occurred while retrieving group count."; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/GroupPaginationRequest.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/GroupPaginationRequest.java index 3c17ce32a9..d7a74f199b 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/GroupPaginationRequest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/GroupPaginationRequest.java @@ -27,12 +27,21 @@ public class GroupPaginationRequest { private int rowCount; private String owner; private String groupName; + private String status; public GroupPaginationRequest(int start, int rowCount) { this.startIndex = start; this.rowCount = rowCount; } + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + public int getStartIndex() { return startIndex; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/group/mgt/DeviceGroup.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/group/mgt/DeviceGroup.java index 9dff875672..20ed01fb49 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/group/mgt/DeviceGroup.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/group/mgt/DeviceGroup.java @@ -44,6 +44,17 @@ public class DeviceGroup implements Serializable { private String owner; + @ApiModelProperty(name = "status", value = "The status of group that needs updating/retrieval.") + private String status; + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + private Map groupProperties; public DeviceGroup() {} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/group/mgt/DeviceGroupConstants.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/group/mgt/DeviceGroupConstants.java index aab0fc16f3..039219bfe8 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/group/mgt/DeviceGroupConstants.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/group/mgt/DeviceGroupConstants.java @@ -65,6 +65,11 @@ public class DeviceGroupConstants { public static final String DEFAULT_VIEW_EVENTS = "view-events"; } + public static class GroupStatus { + public static final String ACTIVE = "ACTIVE"; + public static final String INACTIVE = "INACTIVE"; + } + public static class Permissions { public static final String[] DEFAULT_ADMIN_PERMISSIONS = {"/permission/device-mgt/groups", "/permission/device-mgt/user/groups"}; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/GroupDAO.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/GroupDAO.java index c181004dc4..9c2264b3f0 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/GroupDAO.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/GroupDAO.java @@ -158,7 +158,7 @@ public interface GroupDAO { * @return List of all Device Groups in tenant. * @throws GroupManagementDAOException */ - int getGroupCount(int tenantId) throws GroupManagementDAOException; + int getGroupCount(int tenantId, String status) throws GroupManagementDAOException; /** * Get paginated count of Device Groups in tenant. diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractGroupDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractGroupDAOImpl.java index cb893438b4..d4207c4047 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractGroupDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractGroupDAOImpl.java @@ -18,6 +18,7 @@ package org.wso2.carbon.device.mgt.core.dao.impl; +import org.apache.solr.common.StringUtils; import org.wso2.carbon.device.mgt.common.Device; import org.wso2.carbon.device.mgt.common.GroupPaginationRequest; import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup; @@ -46,14 +47,25 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO { PreparedStatement stmt = null; ResultSet rs; int groupId = -1; + boolean hasStatus = false; try { Connection conn = GroupManagementDAOFactory.getConnection(); - String sql = "INSERT INTO DM_GROUP(DESCRIPTION, GROUP_NAME, OWNER, TENANT_ID) VALUES (?, ?, ?, ?)"; + String sql; + if(deviceGroup.getStatus() == null || deviceGroup.getStatus().isEmpty()){ + sql = "INSERT INTO DM_GROUP(DESCRIPTION, GROUP_NAME, OWNER, TENANT_ID) VALUES (?, ?, ?, ?)"; + } else { + sql = "INSERT INTO DM_GROUP(DESCRIPTION, GROUP_NAME, OWNER, TENANT_ID, STATUS) VALUES (?, ?, ?, ?, ?)"; + hasStatus = true; + } stmt = conn.prepareStatement(sql, new String[]{"ID"}); stmt.setString(1, deviceGroup.getDescription()); stmt.setString(2, deviceGroup.getName()); stmt.setString(3, deviceGroup.getOwner()); stmt.setInt(4, tenantId); + if(hasStatus) { + stmt.setString(5, deviceGroup.getStatus()); + } + stmt.executeUpdate(); rs = stmt.getGeneratedKeys(); if (rs.next()) { @@ -128,16 +140,26 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO { public void updateGroup(DeviceGroup deviceGroup, int groupId, int tenantId) throws GroupManagementDAOException { PreparedStatement stmt = null; + boolean hasStatus = false; try { Connection conn = GroupManagementDAOFactory.getConnection(); String sql = "UPDATE DM_GROUP SET DESCRIPTION = ?, GROUP_NAME = ?, OWNER = ? WHERE ID = ? AND TENANT_ID = ?"; + + if(deviceGroup.getStatus() != null && !deviceGroup.getStatus().isEmpty()){ + sql = "UPDATE DM_GROUP SET DESCRIPTION = ?, GROUP_NAME = ?, OWNER = ?, STATUS = ? WHERE ID = ? AND TENANT_ID = ?"; + hasStatus = true; + } stmt = conn.prepareStatement(sql); - stmt.setString(1, deviceGroup.getDescription()); - stmt.setString(2, deviceGroup.getName()); - stmt.setString(3, deviceGroup.getOwner()); - stmt.setInt(4, groupId); - stmt.setInt(5, tenantId); + int paramIndex = 1; + stmt.setString(paramIndex++, deviceGroup.getDescription()); + stmt.setString(paramIndex++, deviceGroup.getName()); + stmt.setString(paramIndex++, deviceGroup.getOwner()); + if(hasStatus) { + stmt.setString(paramIndex++, deviceGroup.getStatus()); + } + stmt.setInt(paramIndex++, groupId); + stmt.setInt(paramIndex++, tenantId); stmt.executeUpdate(); } catch (SQLException e) { throw new GroupManagementDAOException("Error occurred while updating deviceGroup '" + @@ -213,8 +235,8 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO { Map properties = new HashMap(); try { Connection conn = GroupManagementDAOFactory.getConnection(); - stmt = conn.prepareStatement( - "SELECT PROPERTY_NAME, PROPERTY_VALUE FROM GROUP_PROPERTIES WHERE GROUP_ID = ? AND TENANT_ID = ?"); + String sql = "SELECT PROPERTY_NAME, PROPERTY_VALUE FROM GROUP_PROPERTIES WHERE GROUP_ID = ? AND TENANT_ID = ?"; + stmt = conn.prepareStatement(sql); stmt.setInt(1, groupId); stmt.setInt(2, tenantId); resultSet = stmt.executeQuery(); @@ -304,14 +326,22 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO { } @Override - public int getGroupCount(int tenantId) throws GroupManagementDAOException { + public int getGroupCount(int tenantId, String status) throws GroupManagementDAOException { PreparedStatement stmt = null; ResultSet resultSet = null; + boolean statusAvailable = false; try { Connection conn = GroupManagementDAOFactory.getConnection(); String sql = "SELECT COUNT(ID) AS GROUP_COUNT FROM DM_GROUP WHERE TENANT_ID = ?"; + if(!StringUtils.isEmpty(status)){ + sql += " AND STATUS = ?"; + statusAvailable = true; + } stmt = conn.prepareStatement(sql); stmt.setInt(1, tenantId); + if(statusAvailable){ + stmt.setString(2, status); + } resultSet = stmt.executeQuery(); if (resultSet.next()) { return resultSet.getInt("GROUP_COUNT"); @@ -335,6 +365,7 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO { boolean hasGroupName = false; String owner = request.getOwner(); boolean hasOwner = false; + boolean hasStatus = false; try { Connection conn = GroupManagementDAOFactory.getConnection(); @@ -347,6 +378,10 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO { sql += " AND OWNER LIKE ?"; hasOwner = true; } + if(!StringUtils.isEmpty(request.getStatus())){ + sql += " AND STATUS = ?"; + hasStatus = true; + } int paramIndex = 1; stmt = conn.prepareStatement(sql); @@ -357,6 +392,9 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO { if (hasOwner) { stmt.setString(paramIndex, owner + "%"); } + if (hasStatus) { + stmt.setString(paramIndex, request.getStatus()); + } resultSet = stmt.executeQuery(); if (resultSet.next()) { return resultSet.getInt("GROUP_COUNT"); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/GenericGroupDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/GenericGroupDAOImpl.java index 8ef981e701..ebfa129d42 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/GenericGroupDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/GenericGroupDAOImpl.java @@ -48,7 +48,9 @@ public class GenericGroupDAOImpl extends AbstractGroupDAOImpl { String groupName = request.getGroupName(); boolean hasGroupName = false; String owner = request.getOwner(); + String status = request.getStatus(); boolean hasOwner = false; + boolean hasStatus = false; boolean hasLimit = request.getRowCount() != 0; try { @@ -62,6 +64,10 @@ public class GenericGroupDAOImpl extends AbstractGroupDAOImpl { sql += " AND UPPER(OWNER) LIKE ?"; hasOwner = true; } + if (status != null && !status.isEmpty()) { + sql += " AND STATUS = ?"; + hasStatus = true; + } if (hasLimit) { sql += " LIMIT ?, ?"; } @@ -75,6 +81,9 @@ public class GenericGroupDAOImpl extends AbstractGroupDAOImpl { if (hasOwner) { stmt.setString(paramIndex++, owner + "%"); } + if (hasStatus) { + stmt.setString(paramIndex++, status.toUpperCase()); + } if (hasLimit) { stmt.setInt(paramIndex++, request.getStartIndex()); stmt.setInt(paramIndex, request.getRowCount()); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/OracleGroupDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/OracleGroupDAOImpl.java index ecbe0013b7..7a540643f2 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/OracleGroupDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/OracleGroupDAOImpl.java @@ -49,7 +49,9 @@ public class OracleGroupDAOImpl extends AbstractGroupDAOImpl { String groupName = request.getGroupName(); boolean hasGroupName = false; String owner = request.getOwner(); + String status = request.getStatus(); boolean hasOwner = false; + boolean hasStatus = false; boolean hasLimit = request.getRowCount() != 0; try { @@ -63,6 +65,10 @@ public class OracleGroupDAOImpl extends AbstractGroupDAOImpl { sql += " AND OWNER LIKE ?"; hasOwner = true; } + if (status != null && !status.isEmpty()) { + sql += " AND STATUS = ?"; + hasStatus = true; + } if (hasLimit) { sql += " OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"; } @@ -76,6 +82,9 @@ public class OracleGroupDAOImpl extends AbstractGroupDAOImpl { if (hasOwner) { stmt.setString(paramIndex++, owner + "%"); } + if (hasStatus) { + stmt.setString(paramIndex++, status.toUpperCase()); + } if (hasLimit) { stmt.setInt(paramIndex++, request.getStartIndex()); stmt.setInt(paramIndex, request.getRowCount()); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/PostgreSQLGroupDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/PostgreSQLGroupDAOImpl.java index 83020796ef..a677f467ed 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/PostgreSQLGroupDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/PostgreSQLGroupDAOImpl.java @@ -18,6 +18,7 @@ package org.wso2.carbon.device.mgt.core.dao.impl.group; +import org.apache.solr.common.StringUtils; import org.wso2.carbon.device.mgt.common.Device; import org.wso2.carbon.device.mgt.common.GroupPaginationRequest; import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup; @@ -44,15 +45,26 @@ public class PostgreSQLGroupDAOImpl extends AbstractGroupDAOImpl { PreparedStatement stmt = null; ResultSet rs; int groupId = -1; + boolean hasStatus = false; try { Connection conn = GroupManagementDAOFactory.getConnection(); - String sql = "INSERT INTO DM_GROUP(DESCRIPTION, GROUP_NAME, OWNER, TENANT_ID) " + - "VALUES (?, ?, ?, ?) RETURNING ID"; + String sql; + if(StringUtils.isEmpty(deviceGroup.getStatus())) { + sql = "INSERT INTO DM_GROUP(DESCRIPTION, GROUP_NAME, OWNER, TENANT_ID) " + + "VALUES (?, ?, ?, ?) RETURNING ID"; + } else { + sql = "INSERT INTO DM_GROUP(DESCRIPTION, GROUP_NAME, OWNER, TENANT_ID, STATUS) " + + "VALUES (?, ?, ?, ?, ?) RETURNING ID"; + hasStatus = true; + } stmt = conn.prepareStatement(sql); stmt.setString(1, deviceGroup.getDescription()); stmt.setString(2, deviceGroup.getName()); stmt.setString(3, deviceGroup.getOwner()); stmt.setInt(4, tenantId); + if(hasStatus) { + stmt.setString(5, deviceGroup.getStatus()); + } stmt.execute(); rs = stmt.getGeneratedKeys(); if (rs.next()) { @@ -77,7 +89,9 @@ public class PostgreSQLGroupDAOImpl extends AbstractGroupDAOImpl { String groupName = request.getGroupName(); boolean hasGroupName = false; String owner = request.getOwner(); + String status = request.getStatus(); boolean hasOwner = false; + boolean hasStatus = false; boolean hasLimit = request.getRowCount() != 0; try { @@ -91,6 +105,10 @@ public class PostgreSQLGroupDAOImpl extends AbstractGroupDAOImpl { sql += " AND OWNER LIKE ?"; hasOwner = true; } + if (status != null && !status.isEmpty()) { + sql += " AND STATUS = ?"; + hasStatus = true; + } if (hasLimit) { sql += " LIMIT ? OFFSET ?"; } @@ -104,6 +122,9 @@ public class PostgreSQLGroupDAOImpl extends AbstractGroupDAOImpl { if (hasOwner) { stmt.setString(paramIndex++, owner + "%"); } + if (hasStatus) { + stmt.setString(paramIndex++, status.toUpperCase()); + } if (hasLimit) { stmt.setInt(paramIndex++, request.getRowCount()); stmt.setInt(paramIndex, request.getStartIndex()); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/SQLServerGroupDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/SQLServerGroupDAOImpl.java index 34810ae5ab..f4f2bddc8c 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/SQLServerGroupDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/SQLServerGroupDAOImpl.java @@ -50,6 +50,8 @@ public class SQLServerGroupDAOImpl extends AbstractGroupDAOImpl { boolean hasGroupName = false; String owner = request.getOwner(); boolean hasOwner = false; + String status = request.getStatus(); + boolean hasStatus = false; boolean hasLimit = request.getRowCount() != 0; try { @@ -63,6 +65,10 @@ public class SQLServerGroupDAOImpl extends AbstractGroupDAOImpl { sql += " AND OWNER LIKE ?"; hasOwner = true; } + if (status != null && !status.isEmpty()) { + sql += " AND STATUS = ?"; + hasStatus = true; + } if (hasLimit) { sql += " ORDER BY ID OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"; } @@ -76,6 +82,9 @@ public class SQLServerGroupDAOImpl extends AbstractGroupDAOImpl { if (hasOwner) { stmt.setString(paramIndex++, owner + "%"); } + if (hasStatus) { + stmt.setString(paramIndex++, status.toUpperCase()); + } if (hasLimit) { stmt.setInt(paramIndex++, request.getStartIndex()); stmt.setInt(paramIndex, request.getRowCount()); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java index d4732d172d..abce164f01 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java @@ -2794,6 +2794,7 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv defaultGroup = new DeviceGroup(groupName); // Setting system level user (wso2.system.user) as the owner defaultGroup.setOwner(CarbonConstants.REGISTRY_SYSTEM_USERNAME); + defaultGroup.setStatus(DeviceGroupConstants.GroupStatus.ACTIVE); defaultGroup.setDescription("Default system group for devices with " + groupName + " ownership."); try { service.createGroup(defaultGroup, DeviceGroupConstants.Roles.DEFAULT_ADMIN_ROLE, diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/GroupManagementProviderService.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/GroupManagementProviderService.java index 4e3dda809d..6951862a77 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/GroupManagementProviderService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/GroupManagementProviderService.java @@ -127,6 +127,14 @@ public interface GroupManagementProviderService { */ int getGroupCount() throws GroupManagementException; + /** + * Get all device group count in tenant by group status + * + * @return group count + * @throws GroupManagementException + */ + int getGroupCountByStatus(String status) throws GroupManagementException; + /** * Get device group count of user * diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/GroupManagementProviderServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/GroupManagementProviderServiceImpl.java index 7266bf83da..457e1217c1 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/GroupManagementProviderServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/GroupManagementProviderServiceImpl.java @@ -472,7 +472,7 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid try { int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); GroupManagementDAOFactory.openConnection(); - return groupDAO.getGroupCount(tenantId); + return groupDAO.getGroupCount(tenantId, null); } catch (GroupManagementDAOException | SQLException e) { String msg = "Error occurred while retrieving all groups in tenant"; log.error(msg, e); @@ -485,6 +485,29 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid GroupManagementDAOFactory.closeConnection(); } } + @Override + public int getGroupCountByStatus(String status) throws GroupManagementException { + if (log.isDebugEnabled()) { + log.debug("Get groups count by Status"); + } + int tenantId = -1; + try { + tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); + GroupManagementDAOFactory.openConnection(); + return groupDAO.getGroupCount(tenantId, status); + } catch (GroupManagementDAOException | SQLException e) { + String msg = "Error occurred while retrieving all groups in tenant " + tenantId + +" by status : " + status; + log.error(msg, e); + throw new GroupManagementException(msg, e); + } catch (Exception e) { + String msg = "Error occurred"; + log.error(msg, e); + throw new GroupManagementException(msg, e); + } finally { + GroupManagementDAOFactory.closeConnection(); + } + } private int getGroupCount(GroupPaginationRequest request) throws GroupManagementException { if (log.isDebugEnabled()) { @@ -882,6 +905,7 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid DeviceGroup defaultGroup = this.getGroup(groupName); if (defaultGroup == null) { defaultGroup = new DeviceGroup(groupName); + defaultGroup.setStatus(DeviceGroupConstants.GroupStatus.ACTIVE); // Setting system level user (wso2.system.user) as the owner defaultGroup.setOwner(CarbonConstants.REGISTRY_SYSTEM_USERNAME); defaultGroup.setDescription("Default system group for devices with " + groupName + " ownership."); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/sql/h2.sql b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/sql/h2.sql index 89eaa6d335..80ac0335be 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/sql/h2.sql +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/sql/h2.sql @@ -11,6 +11,7 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE ( CREATE TABLE IF NOT EXISTS DM_GROUP ( ID INTEGER AUTO_INCREMENT NOT NULL, GROUP_NAME VARCHAR(100) DEFAULT NULL, + STATUS VARCHAR(50) DEFAULT NULL, DESCRIPTION TEXT DEFAULT NULL, OWNER VARCHAR(45) DEFAULT NULL, TENANT_ID INTEGER DEFAULT 0, diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/resources/sql/CreateH2TestDB.sql b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/resources/sql/CreateH2TestDB.sql index 379d4a4652..8880ec56c8 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/resources/sql/CreateH2TestDB.sql +++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/resources/sql/CreateH2TestDB.sql @@ -14,6 +14,7 @@ CREATE TABLE IF NOT EXISTS DM_GROUP ( ID INTEGER AUTO_INCREMENT NOT NULL, GROUP_NAME VARCHAR(100) DEFAULT NULL, DESCRIPTION TEXT DEFAULT NULL, + STATUS VARCHAR(50) DEFAULT NULL, DATE_OF_CREATE BIGINT DEFAULT NULL, DATE_OF_LAST_UPDATE BIGINT DEFAULT NULL, OWNER VARCHAR(45) DEFAULT NULL, diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/h2.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/h2.sql index 60597bc43d..35250241a3 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/h2.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/h2.sql @@ -20,6 +20,7 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_CERTIFICATE ( CREATE TABLE IF NOT EXISTS DM_GROUP ( ID INTEGER AUTO_INCREMENT NOT NULL, GROUP_NAME VARCHAR(100) DEFAULT NULL, + STATUS VARCHAR(50) DEFAULT NULL, DESCRIPTION TEXT DEFAULT NULL, OWNER VARCHAR(255) DEFAULT NULL, TENANT_ID INTEGER DEFAULT 0, diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mssql.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mssql.sql index c87b947eca..bada946270 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mssql.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mssql.sql @@ -29,6 +29,7 @@ IF NOT EXISTS(SELECT * CREATE TABLE DM_GROUP ( ID INTEGER IDENTITY (1, 1) NOT NULL, GROUP_NAME VARCHAR(100) DEFAULT NULL, + STATUS VARCHAR(50) DEFAULT NULL, DESCRIPTION VARCHAR(MAX) DEFAULT NULL, OWNER VARCHAR(255) DEFAULT NULL, TENANT_ID INTEGER DEFAULT 0, diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mysql.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mysql.sql index cca244f67f..9f75c4e5d1 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mysql.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mysql.sql @@ -24,6 +24,7 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_CERTIFICATE ( CREATE TABLE IF NOT EXISTS DM_GROUP ( ID INTEGER AUTO_INCREMENT NOT NULL, GROUP_NAME VARCHAR(100) DEFAULT NULL, + STATUS VARCHAR(50) DEFAULT NULL, DESCRIPTION TEXT DEFAULT NULL, OWNER VARCHAR(255) DEFAULT NULL, TENANT_ID INTEGER DEFAULT 0, diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/oracle.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/oracle.sql index 5ee36a2193..2520124d46 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/oracle.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/oracle.sql @@ -48,6 +48,7 @@ CREATE TABLE DM_GROUP ( ID NUMBER(10) NOT NULL, DESCRIPTION CLOB DEFAULT NULL, GROUP_NAME VARCHAR2(100) DEFAULT NULL, + STATUS VARCHAR2(50) DEFAULT NULL, OWNER VARCHAR2(255) DEFAULT NULL, TENANT_ID NUMBER(10) DEFAULT 0, CONSTRAINT PK_DM_GROUP PRIMARY KEY (ID) diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql index e5a5976b6f..8f0229ebf9 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql @@ -19,6 +19,7 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_CERTIFICATE ( CREATE TABLE IF NOT EXISTS DM_GROUP ( ID BIGSERIAL NOT NULL PRIMARY KEY, GROUP_NAME VARCHAR(100) DEFAULT NULL, + STATUS VARCHAR(50) DEFAULT NULL, DESCRIPTION TEXT DEFAULT NULL, OWNER VARCHAR(255) DEFAULT NULL, TENANT_ID INTEGER DEFAULT 0 From c3349a89a43f7add23b63070f10e2a32961d9f8d Mon Sep 17 00:00:00 2001 From: lasanthaDLPDS Date: Mon, 21 Oct 2019 22:38:03 +0530 Subject: [PATCH 2/2] Improve scope in device subscription view API --- .../mgt/common/DeviceSubscriptionData.java | 4 +- .../common/services/SubscriptionManager.java | 6 +-- .../core/impl/SubscriptionManagerImpl.java | 44 +++++++++++++++++-- .../admin/SubscriptionManagementAdminAPI.java | 4 +- .../SubscriptionManagementAdminAPIImpl.java | 21 --------- .../main/resources/conf/application-mgt.xml | 3 +- 6 files changed, 51 insertions(+), 31 deletions(-) diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/DeviceSubscriptionData.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/DeviceSubscriptionData.java index 9ce951afd0..3afac36acd 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/DeviceSubscriptionData.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/DeviceSubscriptionData.java @@ -1,4 +1,4 @@ -package org.wso2.carbon.device.application.mgt.common;/* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. +/* Copyright (c) 2019, 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 @@ -15,6 +15,8 @@ package org.wso2.carbon.device.application.mgt.common;/* Copyright (c) 2019, Ent * under the License. */ +package org.wso2.carbon.device.application.mgt.common; + import org.wso2.carbon.device.mgt.common.Device; import java.sql.Timestamp; diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/SubscriptionManager.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/SubscriptionManager.java index ca01ef2af6..b4b55e6edb 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/SubscriptionManager.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/SubscriptionManager.java @@ -116,9 +116,9 @@ public interface SubscriptionManager { * @param limitValue limit * @param appUUID application release UUID * @return {@link PaginationResult} - * @throws ApplicationManagementException if values are incorrect for offset and limit or couldn't find an - * application release for given UUID or error occurred while getting device details of subscribed device ids or - * getting subscription details of given application release UUID. + * @throws ApplicationManagementException if offset or limit contains incorrect values, if it couldn't find an + * application release for given UUID, if an error occurred while getting device details of subscribed device ids, + * if an error occurred while getting subscription details of given application release UUID. */ PaginationResult getAppSubscriptionDetails(int offsetValue, int limitValue, String appUUID) throws ApplicationManagementException; diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/SubscriptionManagerImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/SubscriptionManagerImpl.java index 5a31efe71d..9dc7a152db 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/SubscriptionManagerImpl.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/SubscriptionManagerImpl.java @@ -316,6 +316,15 @@ public class SubscriptionManagerImpl implements SubscriptionManager { } } + /** + * THis method is responsible to validate application install or uninstall request. + * + * @param params params could be either list of {@link DeviceIdentifier} or list of username or list of group + * names or list or role names. + * @param subType Subscription type. i.e DEVICE or USER or ROLE or GROUP + * @param action performing action. i.e Install or Uninstall + * @throws BadRequestException if incompatible data is found with app install/uninstall request. + */ private void validateRequest(List params, String subType, String action) throws BadRequestException { if (params.isEmpty()) { String msg = "In order to install application release, you should provide list of subscribers. " @@ -339,7 +348,7 @@ public class SubscriptionManagerImpl implements SubscriptionManager { } } - /*** + /** * This method perform given action (i.e APP INSTALL or APP UNINSTALL) on given set of devices. * * @param deviceType Application supported device type. @@ -425,7 +434,7 @@ public class SubscriptionManagerImpl implements SubscriptionManager { return applicationInstallResponse; } - /*** + /** * Filter given devices and davide given list of device into two sets, those are already application installed * devices and application installable devices. * @@ -470,6 +479,13 @@ public class SubscriptionManagerImpl implements SubscriptionManager { return subscribingDeviceIdHolder; } + /** + * This method returns the application categories of a particular application + * + * @param id Application Id + * @return List of application categories. + * @throws ApplicationManagementException if error occurred while getting application categories from the DB. + */ private List getApplicationCategories(int id) throws ApplicationManagementException { List categories; int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true); @@ -529,6 +545,18 @@ public class SubscriptionManagerImpl implements SubscriptionManager { } } + /** + * This method is responsible to update subscription data. + * + * @param applicationReleaseId Application release Id + * @param activities List of {@link Activity} + * @param subscribingDeviceIdHolder Subscribing device id holder. + * @param params subscribers. If subscription is performed via user, group or role, params is a list of + * {@link String} + * @param subType Subscription type. i.e USER, GROUP, ROLE or DEVICE + * @param action performing action. ie INSTALL or UNINSTALL> + * @throws ApplicationManagementException if error occurred while getting or updating subscription data. + */ private void updateSubscriptions(int applicationReleaseId, List activities, SubscribingDeviceIdHolder subscribingDeviceIdHolder, List params, String subType, String action) throws ApplicationManagementException { @@ -686,6 +714,16 @@ public class SubscriptionManagerImpl implements SubscriptionManager { } } + /** + * This method constructs operation payload to install/uninstall an application. + * + * @param deviceType Device type + * @param application {@link Application} data. + * @param action Action is either ININSTALL or UNINSTALL + * @return {@link Operation} + * @throws ApplicationManagementException if unknown application type is found to generate operation payload or + * invalid action is found to generate operation payload. + */ private Operation generateOperationPayloadByDeviceType(String deviceType, Application application, String action) throws ApplicationManagementException { try { @@ -941,7 +979,7 @@ public class SubscriptionManagerImpl implements SubscriptionManager { ConnectionManagerUtil.openDBConnection(); ApplicationDTO applicationDTO = this.applicationDAO.getAppWithRelatedRelease(appUUID, tenantId); if (applicationDTO == null) { - String msg = "Couldn't found an application with application release which has UUID " + appUUID; + String msg = "Couldn't find an application with application release which has UUID " + appUUID; log.error(msg); throw new NotFoundException(msg); } diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/admin/SubscriptionManagementAdminAPI.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/admin/SubscriptionManagementAdminAPI.java index 2411ec3d40..904e6acdd6 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/admin/SubscriptionManagementAdminAPI.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/admin/SubscriptionManagementAdminAPI.java @@ -67,8 +67,8 @@ import java.util.List; @org.wso2.carbon.apimgt.annotations.api.Scope( name = "View Application Subscriptions", description = "View Application Subscriptions.", - key = "perm:app:subscription:view", - permissions = {"/app-mgt/store/subscription/view"} + key = "perm:admin:app:subscription:view", + permissions = {"/app-mgt/store/admin/subscription/view"} ) } ) diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/impl/admin/SubscriptionManagementAdminAPIImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/impl/admin/SubscriptionManagementAdminAPIImpl.java index a34d050647..5dde7a6a37 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/impl/admin/SubscriptionManagementAdminAPIImpl.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/impl/admin/SubscriptionManagementAdminAPIImpl.java @@ -18,45 +18,24 @@ package org.wso2.carbon.device.application.mgt.store.api.services.impl.admin; -import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.device.application.mgt.common.ApplicationInstallResponse; -import org.wso2.carbon.device.application.mgt.common.BasicUserInfo; -import org.wso2.carbon.device.application.mgt.common.BasicUserInfoList; -import org.wso2.carbon.device.application.mgt.common.DeviceGroupList; -import org.wso2.carbon.device.application.mgt.common.DeviceList; -import org.wso2.carbon.device.application.mgt.common.ErrorResponse; -import org.wso2.carbon.device.application.mgt.common.RoleList; -import org.wso2.carbon.device.application.mgt.common.SubAction; -import org.wso2.carbon.device.application.mgt.common.SubscriptionType; import org.wso2.carbon.device.application.mgt.common.exception.ApplicationManagementException; import org.wso2.carbon.device.application.mgt.common.services.SubscriptionManager; -import org.wso2.carbon.device.application.mgt.core.exception.ApplicationOperationTaskException; import org.wso2.carbon.device.application.mgt.core.exception.BadRequestException; -import org.wso2.carbon.device.application.mgt.core.exception.ForbiddenException; import org.wso2.carbon.device.application.mgt.core.exception.NotFoundException; -import org.wso2.carbon.device.application.mgt.core.task.ScheduledAppSubscriptionTaskManager; import org.wso2.carbon.device.application.mgt.core.util.APIUtil; -import org.wso2.carbon.device.application.mgt.store.api.services.SubscriptionManagementAPI; import org.wso2.carbon.device.application.mgt.store.api.services.admin.SubscriptionManagementAdminAPI; -import org.wso2.carbon.device.mgt.common.Device; -import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.PaginationResult; -import javax.validation.Valid; import javax.ws.rs.Consumes; import javax.ws.rs.DefaultValue; import javax.ws.rs.GET; -import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.List; /** * Implementation of Subscription Management related APIs. diff --git a/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/conf/application-mgt.xml b/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/conf/application-mgt.xml index 8baa364de2..a8f2325821 100644 --- a/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/conf/application-mgt.xml +++ b/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/conf/application-mgt.xml @@ -156,6 +156,7 @@ perm:admin:app:review:view perm:admin:app:publisher:update perm:admin:app:review:update + perm:admin:app:subscription:view perm:device-types:types perm:enterprise:modify perm:enterprise:view @@ -255,7 +256,7 @@ perm:device:enroll perm:geo-service:analytics-view perm:geo-service:alerts-manage - appm:rea + appm:read perm:devices:permanent-delete