From 17e958d83813b46176bf41d0b741909957c42856 Mon Sep 17 00:00:00 2001 From: dilanua Date: Sun, 8 May 2016 17:42:01 +0530 Subject: [PATCH] Adding inter-mediate development code bits for dashboard analytics feature --- .../dashboard/GadgetDataService.java | 36 +- .../dashboard/dao/GadgetDataServiceDAO.java | 62 +-- .../dao/bean/ConnectivityStatus.java | 23 - .../dashboard/dao/bean/FilterSet.java | 4 + .../dashboard/dao/bean/Ownership.java | 23 - .../dashboard/dao/bean/Platform.java | 23 - .../dao/bean/PotentialVulnerability.java | 23 - .../dao/impl/GadgetDataServiceDAOImpl.java | 425 ++++++++++-------- .../dashboard/impl/GadgetDataServiceImpl.java | 132 ++---- 9 files changed, 323 insertions(+), 428 deletions(-) delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/ConnectivityStatus.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/Ownership.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/Platform.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/PotentialVulnerability.java diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/GadgetDataService.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/GadgetDataService.java index 22afb893daf..c17dcfb2636 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/GadgetDataService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/GadgetDataService.java @@ -18,13 +18,12 @@ package org.wso2.carbon.device.mgt.analytics.dashboard; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.bean.FilterSet; +import org.wso2.carbon.device.mgt.analytics.dashboard.dao.bean.*; import org.wso2.carbon.device.mgt.analytics.dashboard.dao.exception.InvalidParameterValueException; import org.wso2.carbon.device.mgt.common.PaginationResult; import java.sql.SQLException; import java.util.List; -import java.util.Map; /** * To be updated... @@ -32,48 +31,39 @@ import java.util.Map; public interface GadgetDataService { @SuppressWarnings("unused") - int getTotalDeviceCount() throws SQLException; + DeviceCountByGroupEntry getDeviceCount(FilterSet filterSet) throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") - int getActiveDeviceCount() throws SQLException; + DeviceCountByGroupEntry getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, + FilterSet filterSet) throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") - int getInactiveDeviceCount() throws SQLException; + DeviceCountByGroupEntry getTotalDeviceCount() throws SQLException; @SuppressWarnings("unused") - int getRemovedDeviceCount() throws SQLException; + List getDeviceCountsByConnectivityStatuses() throws SQLException; @SuppressWarnings("unused") - int getNonCompliantDeviceCount() throws SQLException; - - @SuppressWarnings("unused") - int getUnmonitoredDeviceCount() throws SQLException; + List getDeviceCountsByPotentialVulnerabilities() throws SQLException; @SuppressWarnings("unused") PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") - int getDeviceCount(FilterSet filterSet) throws InvalidParameterValueException, SQLException; - - @SuppressWarnings("unused") - int getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, - FilterSet filterSet) throws InvalidParameterValueException, SQLException; - - @SuppressWarnings("unused") - Map getDeviceCountsByPlatforms(FilterSet filterSet) + List getDeviceCountsByPlatforms(FilterSet filterSet) throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") - Map getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode, + List getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode, FilterSet filterSet) throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") - Map getDeviceCountsByOwnershipTypes(FilterSet filterSet) + List getDeviceCountsByOwnershipTypes(FilterSet filterSet) throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") - Map getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode, + List getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode, FilterSet filterSet) throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") @@ -86,11 +76,11 @@ public interface GadgetDataService { throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") - List> getDevicesWithDetails(FilterSet filterSet) + List getDevicesWithDetails(FilterSet filterSet) throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") - List> getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, + List getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, FilterSet filterSet) throws InvalidParameterValueException, SQLException; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/GadgetDataServiceDAO.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/GadgetDataServiceDAO.java index 04620a57a46..d95250f1bf2 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/GadgetDataServiceDAO.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/GadgetDataServiceDAO.java @@ -18,76 +18,44 @@ package org.wso2.carbon.device.mgt.analytics.dashboard.dao; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.bean.FilterSet; +import org.wso2.carbon.device.mgt.analytics.dashboard.dao.bean.*; import org.wso2.carbon.device.mgt.analytics.dashboard.dao.exception.InvalidParameterValueException; import org.wso2.carbon.device.mgt.common.PaginationResult; import java.sql.SQLException; import java.util.List; -import java.util.Map; public interface GadgetDataServiceDAO { - /** - * Method to get total filtered device count from a particular tenant. - * - * @return Total filtered device count. - */ - int getTotalDeviceCount() throws SQLException; + DeviceCountByGroupEntry getDeviceCount(FilterSet filterSet) throws InvalidParameterValueException, SQLException; - /** - * Method to get active device count from a particular tenant. - * - * @return active device count. - */ - int getActiveDeviceCount() throws SQLException; + DeviceCountByGroupEntry getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, + FilterSet filterSet) throws InvalidParameterValueException, SQLException; /** - * Method to get inactive device count from a particular tenant. + * Method to get total device count from a particular tenant. * - * @return inactive device count. + * @return Total device count. */ - int getInactiveDeviceCount() throws SQLException; + DeviceCountByGroupEntry getTotalDeviceCount() throws SQLException; - /** - * Method to get removed device count from a particular tenant. - * - * @return removed device count. - */ - int getRemovedDeviceCount() throws SQLException; + List getDeviceCountsByConnectivityStatuses() throws SQLException; - /** - * Method to get non-compliant device count from a particular tenant. - * - * @return Non-compliant device count. - */ - int getNonCompliantDeviceCount() throws SQLException; - - /** - * Method to get unmonitored device count from a particular tenant. - * - * @return Unmonitored device count. - */ - int getUnmonitoredDeviceCount() throws SQLException; + List getDeviceCountsByPotentialVulnerabilities() throws SQLException; PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) throws InvalidParameterValueException, SQLException; - int getDeviceCount(FilterSet filterSet) throws InvalidParameterValueException, SQLException; - - int getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, - FilterSet filterSet) throws InvalidParameterValueException, SQLException; - - Map getDeviceCountsByPlatforms(FilterSet filterSet) + List getDeviceCountsByPlatforms(FilterSet filterSet) throws InvalidParameterValueException, SQLException; - Map getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode, + List getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode, FilterSet filterSet) throws InvalidParameterValueException, SQLException; - Map getDeviceCountsByOwnershipTypes(FilterSet filterSet) + List getDeviceCountsByOwnershipTypes(FilterSet filterSet) throws InvalidParameterValueException, SQLException; - Map getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode, + List getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode, FilterSet filterSet) throws InvalidParameterValueException, SQLException; PaginationResult getDevicesWithDetails(FilterSet filterSet, int startIndex, int resultCount) @@ -96,10 +64,10 @@ public interface GadgetDataServiceDAO { PaginationResult getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, FilterSet filterSet, int startIndex, int resultCount) throws InvalidParameterValueException, SQLException; - List> getDevicesWithDetails(FilterSet filterSet) + List getDevicesWithDetails(FilterSet filterSet) throws InvalidParameterValueException, SQLException; - List> getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, + List getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, FilterSet filterSet) throws InvalidParameterValueException, SQLException; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/ConnectivityStatus.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/ConnectivityStatus.java deleted file mode 100644 index 1348b95577d..00000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/ConnectivityStatus.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. - * - * WSO2 Inc. 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 org.wso2.carbon.device.mgt.analytics.dashboard.dao.bean; - -public enum ConnectivityStatus { - active, inactive, removed -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/FilterSet.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/FilterSet.java index 0f046db35d8..a9a775a08e5 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/FilterSet.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/FilterSet.java @@ -19,6 +19,7 @@ package org.wso2.carbon.device.mgt.analytics.dashboard.dao.bean; public class FilterSet { + private String connectivityStatus; private String potentialVulnerability; private String platform; @@ -44,6 +45,7 @@ public class FilterSet { return platform; } + @SuppressWarnings("unused") public void setPlatform(String platform) { this.platform = platform; } @@ -52,7 +54,9 @@ public class FilterSet { return ownership; } + @SuppressWarnings("unused") public void setOwnership(String ownership) { this.ownership = ownership; } + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/Ownership.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/Ownership.java deleted file mode 100644 index 15e1ad47956..00000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/Ownership.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. - * - * WSO2 Inc. 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 org.wso2.carbon.device.mgt.analytics.dashboard.dao.bean; - -public enum Ownership { - byod, cope -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/Platform.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/Platform.java deleted file mode 100644 index 01d207ccd50..00000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/Platform.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. - * - * WSO2 Inc. 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 org.wso2.carbon.device.mgt.analytics.dashboard.dao.bean; - -public enum Platform { - android, ios, windows -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/PotentialVulnerability.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/PotentialVulnerability.java deleted file mode 100644 index fe3ae5febc4..00000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/bean/PotentialVulnerability.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. - * - * WSO2 Inc. 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 org.wso2.carbon.device.mgt.analytics.dashboard.dao.bean; - -public enum PotentialVulnerability { - non_compliant, unmonitored -} \ No newline at end of file diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/impl/GadgetDataServiceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/impl/GadgetDataServiceDAOImpl.java index eb51abe7214..641783aceb5 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/impl/GadgetDataServiceDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/impl/GadgetDataServiceDAOImpl.java @@ -35,129 +35,36 @@ import java.util.*; public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { @Override - public int getTotalDeviceCount() throws SQLException { + public DeviceCountByGroupEntry getTotalDeviceCount() throws SQLException { + int totalDeviceCount; try { - return this.getDeviceCount(null); + totalDeviceCount = this.getFilteredDeviceCount(null); } catch (InvalidParameterValueException e) { throw new AssertionError(e); } - } - - @Override - public int getActiveDeviceCount() throws SQLException { - FilterSet filterSet = new FilterSet(); - filterSet.setConnectivityStatus(ConnectivityStatus.active.toString()); - try { - return this.getDeviceCount(filterSet); - } catch (InvalidParameterValueException e) { - throw new AssertionError(e); - } - } - - @Override - public int getInactiveDeviceCount() throws SQLException { - FilterSet filterSet = new FilterSet(); - filterSet.setConnectivityStatus(ConnectivityStatus.inactive.toString()); - try { - return this.getDeviceCount(filterSet); - } catch (InvalidParameterValueException e) { - throw new AssertionError(e); - } - } - - @Override - public int getRemovedDeviceCount() throws SQLException { - FilterSet filterSet = new FilterSet(); - filterSet.setConnectivityStatus(ConnectivityStatus.removed.toString()); - try { - return this.getDeviceCount(filterSet); - } catch (InvalidParameterValueException e) { - throw new AssertionError(e); - } - } - @Override - public int getNonCompliantDeviceCount() throws SQLException { - FilterSet filterSet = new FilterSet(); - filterSet.setPotentialVulnerability(PotentialVulnerability.non_compliant.toString()); - try { - return this.getDeviceCount(filterSet); - } catch (InvalidParameterValueException e) { - throw new AssertionError(e); - } - } + DeviceCountByGroupEntry deviceCountByGroupEntry = new DeviceCountByGroupEntry(); + deviceCountByGroupEntry.setGroup("total"); + deviceCountByGroupEntry.setDisplayNameForGroup("Total"); + deviceCountByGroupEntry.setDeviceCount(totalDeviceCount); - @Override - public int getUnmonitoredDeviceCount() throws SQLException { - FilterSet filterSet = new FilterSet(); - filterSet.setPotentialVulnerability(PotentialVulnerability.unmonitored.toString()); - try { - return this.getDeviceCount(filterSet); - } catch (InvalidParameterValueException e) { - throw new AssertionError(e); - } + return deviceCountByGroupEntry; } - @Override - public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) - throws InvalidParameterValueException, SQLException { + public DeviceCountByGroupEntry getDeviceCount(FilterSet filterSet) + throws InvalidParameterValueException, SQLException { - if (startIndex < 0) { - throw new InvalidParameterValueException("Start index should be equal to 0 or greater than that."); - } + int filteredDeviceCount = this.getFilteredDeviceCount(filterSet); - if (resultCount < 5) { - throw new InvalidParameterValueException("Result count should be equal to 5 or greater than that."); - } + DeviceCountByGroupEntry deviceCountByGroupEntry = new DeviceCountByGroupEntry(); + deviceCountByGroupEntry.setGroup("non-specific"); + deviceCountByGroupEntry.setDisplayNameForGroup("Non-specific"); + deviceCountByGroupEntry.setDeviceCount(filteredDeviceCount); - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - List> filteredNonCompliantDeviceCountsByFeatures = new ArrayList<>(); - int totalRecordsCount = 0; - try { - con = this.getConnection(); - String sql = "SELECT FEATURE_CODE, COUNT(DEVICE_ID) AS DEVICE_COUNT FROM DEVICES_VIEW_2 " + - "WHERE TENANT_ID = ? GROUP BY FEATURE_CODE ORDER BY DEVICE_COUNT DESC LIMIT ?, ?"; - stmt = con.prepareStatement(sql); - stmt.setInt(1, tenantId); - stmt.setInt(2, startIndex); - stmt.setInt(3, resultCount); - - // executing query - rs = stmt.executeQuery(); - // fetching query results - Map filteredNonCompliantDeviceCountByFeature; - while (rs.next()) { - filteredNonCompliantDeviceCountByFeature = new HashMap<>(); - filteredNonCompliantDeviceCountByFeature.put("FEATURE_CODE", rs.getString("FEATURE_CODE")); - filteredNonCompliantDeviceCountByFeature.put("DEVICE_COUNT", rs.getInt("DEVICE_COUNT")); - filteredNonCompliantDeviceCountsByFeatures.add(filteredNonCompliantDeviceCountByFeature); - } - // fetching total records count - sql = "SELECT COUNT(FEATURE_CODE) AS NON_COMPLIANT_FEATURE_COUNT FROM " + - "(SELECT DISTINCT FEATURE_CODE FROM DEVICES_VIEW_2 WHERE TENANT_ID = ?)"; - - stmt = con.prepareStatement(sql); - stmt.setInt(1, tenantId); - - // executing query - rs = stmt.executeQuery(); - // fetching query results - while (rs.next()) { - totalRecordsCount = rs.getInt("NON_COMPLIANT_FEATURE_COUNT"); - } - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - PaginationResult paginationResult = new PaginationResult(); - paginationResult.setData(filteredNonCompliantDeviceCountsByFeatures); - paginationResult.setRecordsTotal(totalRecordsCount); - return paginationResult; + return deviceCountByGroupEntry; } - public int getDeviceCount(FilterSet filterSet) throws InvalidParameterValueException, SQLException { + private int getFilteredDeviceCount(FilterSet filterSet) throws InvalidParameterValueException, SQLException { Map filters = this.extractDatabaseFiltersFromBean(filterSet); @@ -202,8 +109,9 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { return filteredDeviceCount; } - public int getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, FilterSet filterSet) - throws InvalidParameterValueException, SQLException { + @Override + public DeviceCountByGroupEntry getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, + FilterSet filterSet) throws InvalidParameterValueException, SQLException { if (nonCompliantFeatureCode == null || "".equals(nonCompliantFeatureCode)) { throw new InvalidParameterValueException("Non-compliant feature code should not be either null or empty."); @@ -219,7 +127,7 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { try { con = this.getConnection(); String sql = "SELECT COUNT(DEVICE_ID) AS DEVICE_COUNT FROM DEVICES_VIEW_2 " + - "WHERE TENANT_ID = ? AND FEATURE_CODE = ?"; + "WHERE TENANT_ID = ? AND FEATURE_CODE = ?"; // appending filters to support advanced filtering options // [1] appending filter columns if (filters != null && filters.size() > 0) { @@ -251,10 +159,149 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { } finally { DeviceManagementDAOUtil.cleanupResources(stmt, rs); } - return filteredDeviceCount; + + DeviceCountByGroupEntry deviceCountByGroupEntry = new DeviceCountByGroupEntry(); + deviceCountByGroupEntry.setGroup("feature-non-compliant"); + deviceCountByGroupEntry.setDisplayNameForGroup("Feature-non-compliant"); + deviceCountByGroupEntry.setDeviceCount(filteredDeviceCount); + + return deviceCountByGroupEntry; + } + + @Override + public List getDeviceCountsByConnectivityStatuses() throws SQLException { + Connection con; + PreparedStatement stmt = null; + ResultSet rs = null; + int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); + List deviceCountsByConnectivityStatuses = new ArrayList<>(); + try { + con = this.getConnection(); + String sql = "SELECT CONNECTIVITY_STATUS, COUNT(DEVICE_ID) AS DEVICE_COUNT FROM DEVICES_VIEW_1 " + + "WHERE TENANT_ID = ? GROUP BY CONNECTIVITY_STATUS"; + stmt = con.prepareStatement(sql); + // [2] appending filter column values, if exist + stmt.setInt(1, tenantId); + // executing query + rs = stmt.executeQuery(); + // fetching query results + DeviceCountByGroupEntry deviceCountByConnectivityStatus; + while (rs.next()) { + deviceCountByConnectivityStatus = new DeviceCountByGroupEntry(); + deviceCountByConnectivityStatus.setGroup(rs.getString("CONNECTIVITY_STATUS")); + deviceCountByConnectivityStatus.setDisplayNameForGroup(rs.getString("CONNECTIVITY_STATUS")); + deviceCountByConnectivityStatus.setDeviceCount(rs.getInt("DEVICE_COUNT")); + deviceCountsByConnectivityStatuses.add(deviceCountByConnectivityStatus); + } + } finally { + DeviceManagementDAOUtil.cleanupResources(stmt, rs); + } + return deviceCountsByConnectivityStatuses; + } + + @Override + public List getDeviceCountsByPotentialVulnerabilities() throws SQLException { + // getting non-compliant device count + DeviceCountByGroupEntry nonCompliantDeviceCount = new DeviceCountByGroupEntry(); + nonCompliantDeviceCount.setGroup(GadgetDataServiceDAOConstants.PotentialVulnerability.NON_COMPLIANT); + nonCompliantDeviceCount.setDisplayNameForGroup("Non-compliant"); + nonCompliantDeviceCount.setDeviceCount(getNonCompliantDeviceCount()); + + // getting unmonitored device count + DeviceCountByGroupEntry unmonitoredDeviceCount = new DeviceCountByGroupEntry(); + unmonitoredDeviceCount.setGroup(GadgetDataServiceDAOConstants.PotentialVulnerability.UNMONITORED); + unmonitoredDeviceCount.setDisplayNameForGroup("Unmonitored"); + unmonitoredDeviceCount.setDeviceCount(getUnmonitoredDeviceCount()); + + List deviceCountsByPotentialVulnerabilities = new ArrayList<>(); + deviceCountsByPotentialVulnerabilities.add(nonCompliantDeviceCount); + deviceCountsByPotentialVulnerabilities.add(unmonitoredDeviceCount); + + return deviceCountsByPotentialVulnerabilities; + } + + private int getNonCompliantDeviceCount() throws SQLException { + FilterSet filterSet = new FilterSet(); + filterSet.setPotentialVulnerability(GadgetDataServiceDAOConstants.PotentialVulnerability.NON_COMPLIANT); + try { + return this.getFilteredDeviceCount(filterSet); + } catch (InvalidParameterValueException e) { + throw new AssertionError(e); + } + } + + private int getUnmonitoredDeviceCount() throws SQLException { + FilterSet filterSet = new FilterSet(); + filterSet.setPotentialVulnerability(GadgetDataServiceDAOConstants.PotentialVulnerability.UNMONITORED); + try { + return this.getFilteredDeviceCount(filterSet); + } catch (InvalidParameterValueException e) { + throw new AssertionError(e); + } } - public Map getDeviceCountsByPlatforms(FilterSet filterSet) + @Override + public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) + throws InvalidParameterValueException, SQLException { + + if (startIndex < 0) { + throw new InvalidParameterValueException("Start index should be equal to 0 or greater than that."); + } + + if (resultCount < 5) { + throw new InvalidParameterValueException("Result count should be equal to 5 or greater than that."); + } + + Connection con; + PreparedStatement stmt = null; + ResultSet rs = null; + int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); + List filteredNonCompliantDeviceCountsByFeatures = new ArrayList<>(); + int totalRecordsCount = 0; + try { + con = this.getConnection(); + String sql = "SELECT FEATURE_CODE, COUNT(DEVICE_ID) AS DEVICE_COUNT FROM DEVICES_VIEW_2 " + + "WHERE TENANT_ID = ? GROUP BY FEATURE_CODE ORDER BY DEVICE_COUNT DESC LIMIT ?, ?"; + stmt = con.prepareStatement(sql); + stmt.setInt(1, tenantId); + stmt.setInt(2, startIndex); + stmt.setInt(3, resultCount); + + // executing query + rs = stmt.executeQuery(); + // fetching query results + DeviceCountByGroupEntry filteredNonCompliantDeviceCountByFeature; + while (rs.next()) { + filteredNonCompliantDeviceCountByFeature = new DeviceCountByGroupEntry(); + filteredNonCompliantDeviceCountByFeature.setGroup(rs.getString("FEATURE_CODE")); + filteredNonCompliantDeviceCountByFeature.setDisplayNameForGroup(rs.getString("FEATURE_CODE")); + filteredNonCompliantDeviceCountByFeature.setDeviceCount(rs.getInt("DEVICE_COUNT")); + filteredNonCompliantDeviceCountsByFeatures.add(filteredNonCompliantDeviceCountByFeature); + } + // fetching total records count + sql = "SELECT COUNT(FEATURE_CODE) AS NON_COMPLIANT_FEATURE_COUNT FROM " + + "(SELECT DISTINCT FEATURE_CODE FROM DEVICES_VIEW_2 WHERE TENANT_ID = ?)"; + + stmt = con.prepareStatement(sql); + stmt.setInt(1, tenantId); + + // executing query + rs = stmt.executeQuery(); + // fetching query results + while (rs.next()) { + totalRecordsCount = rs.getInt("NON_COMPLIANT_FEATURE_COUNT"); + } + } finally { + DeviceManagementDAOUtil.cleanupResources(stmt, rs); + } + PaginationResult paginationResult = new PaginationResult(); + paginationResult.setData(filteredNonCompliantDeviceCountsByFeatures); + paginationResult.setRecordsTotal(totalRecordsCount); + return paginationResult; + } + + @Override + public List getDeviceCountsByPlatforms(FilterSet filterSet) throws InvalidParameterValueException, SQLException { Map filters = this.extractDatabaseFiltersFromBean(filterSet); @@ -263,7 +310,7 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { PreparedStatement stmt = null; ResultSet rs = null; int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - Map filteredDeviceCountsByPlatforms = new HashMap<>(); + List filteredDeviceCountsByPlatforms = new ArrayList<>(); try { con = this.getConnection(); String sql, advancedSqlFiltering = ""; @@ -293,8 +340,13 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { // executing query rs = stmt.executeQuery(); // fetching query results + DeviceCountByGroupEntry filteredDeviceCountByPlatform; while (rs.next()) { - filteredDeviceCountsByPlatforms.put(rs.getString("PLATFORM"), rs.getInt("DEVICE_COUNT")); + filteredDeviceCountByPlatform = new DeviceCountByGroupEntry(); + filteredDeviceCountByPlatform.setGroup(rs.getString("PLATFORM")); + filteredDeviceCountByPlatform.setDisplayNameForGroup(rs.getString("PLATFORM").toUpperCase()); + filteredDeviceCountByPlatform.setDeviceCount(rs.getInt("DEVICE_COUNT")); + filteredDeviceCountsByPlatforms.add(filteredDeviceCountByPlatform); } } finally { DeviceManagementDAOUtil.cleanupResources(stmt, rs); @@ -302,7 +354,8 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { return filteredDeviceCountsByPlatforms; } - public Map getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode, + @Override + public List getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode, FilterSet filterSet) throws InvalidParameterValueException, SQLException { if (nonCompliantFeatureCode == null || "".equals(nonCompliantFeatureCode)) { @@ -315,7 +368,7 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { PreparedStatement stmt = null; ResultSet rs = null; int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - Map filteredDeviceCountsByPlatforms = new HashMap<>(); + List filteredDeviceCountsByPlatforms = new ArrayList<>(); try { con = this.getConnection(); String sql, advancedSqlFiltering = ""; @@ -346,8 +399,13 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { // executing query rs = stmt.executeQuery(); // fetching query results + DeviceCountByGroupEntry filteredDeviceCountByPlatform; while (rs.next()) { - filteredDeviceCountsByPlatforms.put(rs.getString("PLATFORM"), rs.getInt("DEVICE_COUNT")); + filteredDeviceCountByPlatform = new DeviceCountByGroupEntry(); + filteredDeviceCountByPlatform.setGroup(rs.getString("PLATFORM")); + filteredDeviceCountByPlatform.setDisplayNameForGroup(rs.getString("PLATFORM").toUpperCase()); + filteredDeviceCountByPlatform.setDeviceCount(rs.getInt("DEVICE_COUNT")); + filteredDeviceCountsByPlatforms.add(filteredDeviceCountByPlatform); } } finally { DeviceManagementDAOUtil.cleanupResources(stmt, rs); @@ -355,7 +413,8 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { return filteredDeviceCountsByPlatforms; } - public Map getDeviceCountsByOwnershipTypes(FilterSet filterSet) + @Override + public List getDeviceCountsByOwnershipTypes(FilterSet filterSet) throws InvalidParameterValueException, SQLException { Map filters = this.extractDatabaseFiltersFromBean(filterSet); @@ -364,7 +423,7 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { PreparedStatement stmt = null; ResultSet rs = null; int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - Map filteredDeviceCountsByOwnershipTypes = new HashMap<>(); + List filteredDeviceCountsByOwnershipTypes = new ArrayList<>(); try { con = this.getConnection(); String sql, advancedSqlFiltering = ""; @@ -394,8 +453,13 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { // executing query rs = stmt.executeQuery(); // fetching query results + DeviceCountByGroupEntry filteredDeviceCountByOwnershipType; while (rs.next()) { - filteredDeviceCountsByOwnershipTypes.put(rs.getString("OWNERSHIP"), rs.getInt("DEVICE_COUNT")); + filteredDeviceCountByOwnershipType = new DeviceCountByGroupEntry(); + filteredDeviceCountByOwnershipType.setGroup(rs.getString("OWNERSHIP")); + filteredDeviceCountByOwnershipType.setDisplayNameForGroup(rs.getString("OWNERSHIP")); + filteredDeviceCountByOwnershipType.setDeviceCount(rs.getInt("DEVICE_COUNT")); + filteredDeviceCountsByOwnershipTypes.add(filteredDeviceCountByOwnershipType); } } finally { DeviceManagementDAOUtil.cleanupResources(stmt, rs); @@ -403,7 +467,9 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { return filteredDeviceCountsByOwnershipTypes; } - public Map getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode, + @Override + public List + getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode, FilterSet filterSet) throws InvalidParameterValueException, SQLException { if (nonCompliantFeatureCode == null || "".equals(nonCompliantFeatureCode)) { @@ -416,7 +482,7 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { PreparedStatement stmt = null; ResultSet rs = null; int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - Map filteredDeviceCountsByOwnershipTypes = new HashMap<>(); + List filteredDeviceCountsByOwnershipTypes = new ArrayList<>(); try { con = this.getConnection(); String sql, advancedSqlFiltering = ""; @@ -447,8 +513,13 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { // executing query rs = stmt.executeQuery(); // fetching query results + DeviceCountByGroupEntry filteredDeviceCountByOwnershipType; while (rs.next()) { - filteredDeviceCountsByOwnershipTypes.put(rs.getString("OWNERSHIP"), rs.getInt("DEVICE_COUNT")); + filteredDeviceCountByOwnershipType = new DeviceCountByGroupEntry(); + filteredDeviceCountByOwnershipType.setGroup(rs.getString("OWNERSHIP")); + filteredDeviceCountByOwnershipType.setDisplayNameForGroup(rs.getString("OWNERSHIP")); + filteredDeviceCountByOwnershipType.setDeviceCount(rs.getInt("DEVICE_COUNT")); + filteredDeviceCountsByOwnershipTypes.add(filteredDeviceCountByOwnershipType); } } finally { DeviceManagementDAOUtil.cleanupResources(stmt, rs); @@ -456,6 +527,7 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { return filteredDeviceCountsByOwnershipTypes; } + @Override public PaginationResult getDevicesWithDetails(FilterSet filterSet, int startIndex, int resultCount) throws InvalidParameterValueException, SQLException { @@ -473,7 +545,7 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { PreparedStatement stmt = null; ResultSet rs = null; int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - List> filteredDevicesWithDetails = new ArrayList<>(); + List filteredDevicesWithDetails = new ArrayList<>(); int totalRecordsCount = 0; try { con = this.getConnection(); @@ -509,15 +581,16 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { // executing query rs = stmt.executeQuery(); // fetching query results - Map filteredDeviceWithDetails; + DetailedDeviceEntry filteredDeviceWithDetails; while (rs.next()) { - filteredDeviceWithDetails = new HashMap<>(); - filteredDeviceWithDetails.put("device-id", rs.getInt("DEVICE_ID")); - filteredDeviceWithDetails.put("platform", rs.getString("PLATFORM")); - filteredDeviceWithDetails.put("ownership", rs.getString("OWNERSHIP")); - filteredDeviceWithDetails.put("connectivity-details", rs.getString("CONNECTIVITY_STATUS")); + filteredDeviceWithDetails = new DetailedDeviceEntry(); + filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); + filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); + filteredDeviceWithDetails.setOwnershipType(rs.getString("OWNERSHIP")); + filteredDeviceWithDetails.setConnectivityStatus(rs.getString("CONNECTIVITY_STATUS")); filteredDevicesWithDetails.add(filteredDeviceWithDetails); } + // fetching total records count sql = "SELECT COUNT(DEVICE_ID) AS DEVICE_COUNT FROM DEVICES_VIEW_1 WHERE TENANT_ID = ?"; @@ -539,6 +612,7 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { return paginationResult; } + @Override public PaginationResult getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, FilterSet filterSet, int startIndex, int resultCount) throws InvalidParameterValueException, SQLException { @@ -561,7 +635,7 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { PreparedStatement stmt = null; ResultSet rs = null; int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - List> filteredDevicesWithDetails = new ArrayList<>(); + List filteredDevicesWithDetails = new ArrayList<>(); int totalRecordsCount = 0; try { con = this.getConnection(); @@ -598,15 +672,16 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { // executing query rs = stmt.executeQuery(); // fetching query results - Map filteredDeviceWithDetails; + DetailedDeviceEntry filteredDeviceWithDetails; while (rs.next()) { - filteredDeviceWithDetails = new HashMap<>(); - filteredDeviceWithDetails.put("device-id", rs.getInt("DEVICE_ID")); - filteredDeviceWithDetails.put("platform", rs.getString("PLATFORM")); - filteredDeviceWithDetails.put("ownership", rs.getString("OWNERSHIP")); - filteredDeviceWithDetails.put("connectivity-details", rs.getString("CONNECTIVITY_STATUS")); + filteredDeviceWithDetails = new DetailedDeviceEntry(); + filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); + filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); + filteredDeviceWithDetails.setOwnershipType(rs.getString("OWNERSHIP")); + filteredDeviceWithDetails.setConnectivityStatus(rs.getString("CONNECTIVITY_STATUS")); filteredDevicesWithDetails.add(filteredDeviceWithDetails); } + // fetching total records count sql = "SELECT COUNT(DEVICE_ID) AS DEVICE_COUNT FROM DEVICES_VIEW_2 " + "WHERE TENANT_ID = ? AND FEATURE_CODE = ?"; @@ -630,7 +705,8 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { return paginationResult; } - public List> getDevicesWithDetails(FilterSet filterSet) + @Override + public List getDevicesWithDetails(FilterSet filterSet) throws InvalidParameterValueException, SQLException { Map filters = this.extractDatabaseFiltersFromBean(filterSet); @@ -639,7 +715,7 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { PreparedStatement stmt = null; ResultSet rs = null; int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - List> filteredDevicesWithDetails = new ArrayList<>(); + List filteredDevicesWithDetails = new ArrayList<>(); try { con = this.getConnection(); String sql; @@ -668,13 +744,13 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { // executing query rs = stmt.executeQuery(); // fetching query results - Map filteredDeviceWithDetails; + DetailedDeviceEntry filteredDeviceWithDetails; while (rs.next()) { - filteredDeviceWithDetails = new HashMap<>(); - filteredDeviceWithDetails.put("device-id", rs.getInt("DEVICE_ID")); - filteredDeviceWithDetails.put("platform", rs.getString("PLATFORM")); - filteredDeviceWithDetails.put("ownership", rs.getString("OWNERSHIP")); - filteredDeviceWithDetails.put("connectivity-details", rs.getString("CONNECTIVITY_STATUS")); + filteredDeviceWithDetails = new DetailedDeviceEntry(); + filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); + filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); + filteredDeviceWithDetails.setOwnershipType(rs.getString("OWNERSHIP")); + filteredDeviceWithDetails.setConnectivityStatus(rs.getString("CONNECTIVITY_STATUS")); filteredDevicesWithDetails.add(filteredDeviceWithDetails); } } finally { @@ -683,7 +759,8 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { return filteredDevicesWithDetails; } - public List> getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, + @Override + public List getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, FilterSet filterSet) throws InvalidParameterValueException, SQLException { if (nonCompliantFeatureCode == null || "".equals(nonCompliantFeatureCode)) { @@ -696,7 +773,7 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { PreparedStatement stmt = null; ResultSet rs = null; int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - List> filteredDevicesWithDetails = new ArrayList<>(); + List filteredDevicesWithDetails = new ArrayList<>(); try { con = this.getConnection(); String sql; @@ -727,13 +804,13 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { // executing query rs = stmt.executeQuery(); // fetching query results - Map filteredDeviceWithDetails; + DetailedDeviceEntry filteredDeviceWithDetails; while (rs.next()) { - filteredDeviceWithDetails = new HashMap<>(); - filteredDeviceWithDetails.put("device-id", rs.getInt("DEVICE_ID")); - filteredDeviceWithDetails.put("platform", rs.getString("PLATFORM")); - filteredDeviceWithDetails.put("ownership", rs.getString("OWNERSHIP")); - filteredDeviceWithDetails.put("connectivity-details", rs.getString("CONNECTIVITY_STATUS")); + filteredDeviceWithDetails = new DetailedDeviceEntry(); + filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); + filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); + filteredDeviceWithDetails.setOwnershipType(rs.getString("OWNERSHIP")); + filteredDeviceWithDetails.setConnectivityStatus(rs.getString("CONNECTIVITY_STATUS")); filteredDevicesWithDetails.add(filteredDeviceWithDetails); } } finally { @@ -752,52 +829,34 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { String connectivityStatus = filterSet.getConnectivityStatus(); if (connectivityStatus != null) { - if (ConnectivityStatus.active.toString().equals(connectivityStatus) || - ConnectivityStatus.inactive.toString().equals(connectivityStatus) || - ConnectivityStatus.removed.toString().equals(connectivityStatus)) { - filters.put("CONNECTIVITY_STATUS", connectivityStatus.toUpperCase()); - } else { - throw new InvalidParameterValueException("Invalid use of value for platform. " + - "Value of platform could only be either android, ios or windows."); - } + filters.put("CONNECTIVITY_STATUS", connectivityStatus); } String potentialVulnerability = filterSet.getPotentialVulnerability(); if (potentialVulnerability != null) { - if (PotentialVulnerability.non_compliant.toString().equals(potentialVulnerability) || - PotentialVulnerability.unmonitored.toString().equals(potentialVulnerability)) { - if (PotentialVulnerability.non_compliant.toString().equals(potentialVulnerability)) { + if (GadgetDataServiceDAOConstants.PotentialVulnerability.NON_COMPLIANT.equals(potentialVulnerability) || + GadgetDataServiceDAOConstants.PotentialVulnerability.UNMONITORED.equals(potentialVulnerability)) { + if (GadgetDataServiceDAOConstants.PotentialVulnerability.NON_COMPLIANT.equals(potentialVulnerability)) { filters.put("IS_COMPLIANT", 0); } else { filters.put("POLICY_ID", -1); } } else { throw new InvalidParameterValueException("Invalid use of value for potential vulnerability. " + - "Value of potential vulnerability could only be non_compliant or unmonitored."); + "Value of potential vulnerability could only be either " + + GadgetDataServiceDAOConstants.PotentialVulnerability.NON_COMPLIANT + " or " + + GadgetDataServiceDAOConstants.PotentialVulnerability.UNMONITORED + "."); } } String platform = filterSet.getPlatform(); if (platform != null) { - if (Platform.android.toString().equals(platform) || - Platform.ios.toString().equals(platform) || - Platform.windows.toString().equals(platform)) { - filters.put("PLATFORM", platform); - } else { - throw new InvalidParameterValueException("Invalid use of value for platform. " + - "Value of platform could only be either android, ios or windows."); - } + filters.put("PLATFORM", platform); } String ownership = filterSet.getOwnership(); if (ownership != null) { - if (Ownership.byod.toString().equals(ownership) || - Ownership.cope.toString().equals(ownership)) { - filters.put("OWNERSHIP", ownership.toUpperCase()); - } else { - throw new InvalidParameterValueException("Invalid use of value for ownership. " + - "Value of ownership could only be either BYOD or COPE."); - } + filters.put("OWNERSHIP", ownership); } return filters; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/impl/GadgetDataServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/impl/GadgetDataServiceImpl.java index 4e8c3fca7de..7c3304bb9e0 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/impl/GadgetDataServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/impl/GadgetDataServiceImpl.java @@ -20,13 +20,12 @@ package org.wso2.carbon.device.mgt.analytics.dashboard.impl; import org.wso2.carbon.device.mgt.analytics.dashboard.GadgetDataService; import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOFactory; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.bean.FilterSet; +import org.wso2.carbon.device.mgt.analytics.dashboard.dao.bean.*; import org.wso2.carbon.device.mgt.analytics.dashboard.dao.exception.InvalidParameterValueException; import org.wso2.carbon.device.mgt.common.PaginationResult; import java.sql.SQLException; import java.util.List; -import java.util.Map; /** * To be updated... @@ -34,81 +33,72 @@ import java.util.Map; public class GadgetDataServiceImpl implements GadgetDataService { @Override - public int getTotalDeviceCount() throws SQLException { - int totalDeviceCount; + public DeviceCountByGroupEntry getDeviceCount(FilterSet filterSet) throws InvalidParameterValueException, SQLException { + DeviceCountByGroupEntry filteredDeviceCount; try { GadgetDataServiceDAOFactory.openConnection(); - totalDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getTotalDeviceCount(); + filteredDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getDeviceCount(filterSet); } finally { GadgetDataServiceDAOFactory.closeConnection(); } - return totalDeviceCount; + return filteredDeviceCount; } @Override - public int getActiveDeviceCount() throws SQLException { - int activeDeviceCount; + public DeviceCountByGroupEntry getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, FilterSet filterSet) + throws InvalidParameterValueException, SQLException { + DeviceCountByGroupEntry featureNonCompliantDeviceCount; try { GadgetDataServiceDAOFactory.openConnection(); - activeDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getActiveDeviceCount(); - } finally { - GadgetDataServiceDAOFactory.closeConnection(); - } - return activeDeviceCount; - } - - @Override - public int getInactiveDeviceCount() throws SQLException { - int inactiveDeviceCount; - try { - GadgetDataServiceDAOFactory.openConnection(); - inactiveDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getInactiveDeviceCount(); + featureNonCompliantDeviceCount = GadgetDataServiceDAOFactory. + getGadgetDataServiceDAO().getFeatureNonCompliantDeviceCount(nonCompliantFeatureCode, filterSet); } finally { GadgetDataServiceDAOFactory.closeConnection(); } - return inactiveDeviceCount; + return featureNonCompliantDeviceCount; } @Override - public int getRemovedDeviceCount() throws SQLException { - int removedDeviceCount; + public DeviceCountByGroupEntry getTotalDeviceCount() throws SQLException { + DeviceCountByGroupEntry totalDeviceCount; try { GadgetDataServiceDAOFactory.openConnection(); - removedDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getRemovedDeviceCount(); + totalDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getTotalDeviceCount(); } finally { GadgetDataServiceDAOFactory.closeConnection(); } - return removedDeviceCount; + return totalDeviceCount; } @Override - public int getNonCompliantDeviceCount() throws SQLException { - int nonCompliantDeviceCount; + public List getDeviceCountsByConnectivityStatuses() throws SQLException { + List deviceCountsByConnectivityStatuses; try { GadgetDataServiceDAOFactory.openConnection(); - nonCompliantDeviceCount = GadgetDataServiceDAOFactory. - getGadgetDataServiceDAO().getNonCompliantDeviceCount(); + deviceCountsByConnectivityStatuses = GadgetDataServiceDAOFactory. + getGadgetDataServiceDAO().getDeviceCountsByConnectivityStatuses(); } finally { GadgetDataServiceDAOFactory.closeConnection(); } - return nonCompliantDeviceCount; + return deviceCountsByConnectivityStatuses; } @Override - public int getUnmonitoredDeviceCount() throws SQLException { - int unmonitoredDeviceCount; + public List getDeviceCountsByPotentialVulnerabilities() throws SQLException { + List deviceCountsByPotentialVulnerabilities; try { GadgetDataServiceDAOFactory.openConnection(); - unmonitoredDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getUnmonitoredDeviceCount(); + deviceCountsByPotentialVulnerabilities = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). + getDeviceCountsByPotentialVulnerabilities(); } finally { GadgetDataServiceDAOFactory.closeConnection(); } - return unmonitoredDeviceCount; + return deviceCountsByPotentialVulnerabilities; } @Override public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) - throws SQLException, InvalidParameterValueException { + throws SQLException, InvalidParameterValueException { PaginationResult paginationResult; try { GadgetDataServiceDAOFactory.openConnection(); @@ -121,35 +111,9 @@ public class GadgetDataServiceImpl implements GadgetDataService { } @Override - public int getDeviceCount(FilterSet filterSet) throws InvalidParameterValueException, SQLException { - int deviceCount; - try { - GadgetDataServiceDAOFactory.openConnection(); - deviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getDeviceCount(filterSet); - } finally { - GadgetDataServiceDAOFactory.closeConnection(); - } - return deviceCount; - } - - @Override - public int getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, FilterSet filterSet) - throws InvalidParameterValueException, SQLException { - int featureNonCompliantDeviceCount; - try { - GadgetDataServiceDAOFactory.openConnection(); - featureNonCompliantDeviceCount = GadgetDataServiceDAOFactory. - getGadgetDataServiceDAO().getFeatureNonCompliantDeviceCount(nonCompliantFeatureCode, filterSet); - } finally { - GadgetDataServiceDAOFactory.closeConnection(); - } - return featureNonCompliantDeviceCount; - } - - @Override - public Map getDeviceCountsByPlatforms(FilterSet filterSet) - throws InvalidParameterValueException, SQLException { - Map deviceCountsByPlatforms; + public List getDeviceCountsByPlatforms(FilterSet filterSet) + throws InvalidParameterValueException, SQLException { + List deviceCountsByPlatforms; try { GadgetDataServiceDAOFactory.openConnection(); deviceCountsByPlatforms = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). @@ -161,9 +125,9 @@ public class GadgetDataServiceImpl implements GadgetDataService { } @Override - public Map getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode, - FilterSet filterSet) throws InvalidParameterValueException, SQLException { - Map featureNonCompliantDeviceCountsByPlatforms; + public List getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode, + FilterSet filterSet) throws InvalidParameterValueException, SQLException { + List featureNonCompliantDeviceCountsByPlatforms; try { GadgetDataServiceDAOFactory.openConnection(); featureNonCompliantDeviceCountsByPlatforms = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). @@ -175,9 +139,9 @@ public class GadgetDataServiceImpl implements GadgetDataService { } @Override - public Map getDeviceCountsByOwnershipTypes(FilterSet filterSet) - throws InvalidParameterValueException, SQLException { - Map deviceCountsByOwnershipTypes; + public List getDeviceCountsByOwnershipTypes(FilterSet filterSet) + throws InvalidParameterValueException, SQLException { + List deviceCountsByOwnershipTypes; try { GadgetDataServiceDAOFactory.openConnection(); deviceCountsByOwnershipTypes = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). @@ -189,9 +153,10 @@ public class GadgetDataServiceImpl implements GadgetDataService { } @Override - public Map getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode, - FilterSet filterSet) throws SQLException, InvalidParameterValueException { - Map featureNonCompliantDeviceCountsByOwnershipTypes; + public List + getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode, + FilterSet filterSet) throws SQLException, InvalidParameterValueException { + List featureNonCompliantDeviceCountsByOwnershipTypes; try { GadgetDataServiceDAOFactory.openConnection(); featureNonCompliantDeviceCountsByOwnershipTypes = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). @@ -204,7 +169,7 @@ public class GadgetDataServiceImpl implements GadgetDataService { @Override public PaginationResult getDevicesWithDetails(FilterSet filterSet, - int startIndex, int resultCount) throws InvalidParameterValueException, SQLException { + int startIndex, int resultCount) throws InvalidParameterValueException, SQLException { PaginationResult paginationResult; try { GadgetDataServiceDAOFactory.openConnection(); @@ -218,8 +183,8 @@ public class GadgetDataServiceImpl implements GadgetDataService { @Override public PaginationResult getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, - FilterSet filterSet, int startIndex, int resultCount) - throws InvalidParameterValueException, SQLException { + FilterSet filterSet, int startIndex, int resultCount) + throws InvalidParameterValueException, SQLException { PaginationResult paginationResult; try { GadgetDataServiceDAOFactory.openConnection(); @@ -232,12 +197,13 @@ public class GadgetDataServiceImpl implements GadgetDataService { } @Override - public List> getDevicesWithDetails(FilterSet filterSet) + public List getDevicesWithDetails(FilterSet filterSet) throws InvalidParameterValueException, SQLException { - List> devicesWithDetails; + List devicesWithDetails; try { GadgetDataServiceDAOFactory.openConnection(); - devicesWithDetails = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getDevicesWithDetails(filterSet); + devicesWithDetails = GadgetDataServiceDAOFactory. + getGadgetDataServiceDAO().getDevicesWithDetails(filterSet); } finally { GadgetDataServiceDAOFactory.closeConnection(); } @@ -245,9 +211,9 @@ public class GadgetDataServiceImpl implements GadgetDataService { } @Override - public List> getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, - FilterSet filterSet) throws InvalidParameterValueException, SQLException { - List> featureNonCompliantDevicesWithDetails; + public List getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, + FilterSet filterSet) throws InvalidParameterValueException, SQLException { + List featureNonCompliantDevicesWithDetails; try { GadgetDataServiceDAOFactory.openConnection(); featureNonCompliantDevicesWithDetails = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().