diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/pom.xml index fd1790f61bf..35aa312a0f7 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/pom.xml @@ -64,7 +64,8 @@ org.wso2.carbon.device.mgt.analytics.dashboard, - org.wso2.carbon.device.mgt.analytics.dashboard.dao.exception + org.wso2.carbon.device.mgt.analytics.dashboard.dao.exception, + org.wso2.carbon.device.mgt.analytics.dashboard.dao.bean org.osgi.framework, 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 3931e72fc2f..22afb893daf 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,7 +18,8 @@ package org.wso2.carbon.device.mgt.analytics.dashboard; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.exception.InvalidParameterException; +import org.wso2.carbon.device.mgt.analytics.dashboard.dao.bean.FilterSet; +import org.wso2.carbon.device.mgt.analytics.dashboard.dao.exception.InvalidParameterValueException; import org.wso2.carbon.device.mgt.common.PaginationResult; import java.sql.SQLException; @@ -50,43 +51,46 @@ public interface GadgetDataService { @SuppressWarnings("unused") PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) - throws InvalidParameterException, SQLException; + throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") - int getDeviceCount(Map filters) throws SQLException; + int getDeviceCount(FilterSet filterSet) throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") int getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, - Map filters) throws InvalidParameterException, SQLException; + FilterSet filterSet) throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") - Map getDeviceCountsByPlatforms(Map filters) throws SQLException; + Map getDeviceCountsByPlatforms(FilterSet filterSet) + throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") Map getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode, - Map filters) throws InvalidParameterException, SQLException; + FilterSet filterSet) throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") - Map getDeviceCountsByOwnershipTypes(Map filters) throws SQLException; + Map getDeviceCountsByOwnershipTypes(FilterSet filterSet) + throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") Map getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode, - Map filters) throws InvalidParameterException, SQLException; + FilterSet filterSet) throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") - PaginationResult getDevicesWithDetails(Map filters, - int startIndex, int resultCount) throws InvalidParameterException, SQLException; + PaginationResult getDevicesWithDetails(FilterSet filterSet, int startIndex, int resultCount) + throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") PaginationResult getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, - Map filters, int startIndex, int resultCount) - throws InvalidParameterException, SQLException; + FilterSet filterSet, int startIndex, int resultCount) + throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") - List> getDevicesWithDetails(Map filters) throws SQLException; + List> getDevicesWithDetails(FilterSet filterSet) + throws InvalidParameterValueException, SQLException; @SuppressWarnings("unused") List> getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, - Map filters) throws InvalidParameterException, SQLException; + 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 f166fedf7f0..04620a57a46 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,7 +18,8 @@ package org.wso2.carbon.device.mgt.analytics.dashboard.dao; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.exception.InvalidParameterException; +import org.wso2.carbon.device.mgt.analytics.dashboard.dao.bean.FilterSet; +import org.wso2.carbon.device.mgt.analytics.dashboard.dao.exception.InvalidParameterValueException; import org.wso2.carbon.device.mgt.common.PaginationResult; import java.sql.SQLException; @@ -70,33 +71,35 @@ public interface GadgetDataServiceDAO { int getUnmonitoredDeviceCount() throws SQLException; PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) - throws InvalidParameterException, SQLException; + throws InvalidParameterValueException, SQLException; - int getDeviceCount(Map filters) throws SQLException; + int getDeviceCount(FilterSet filterSet) throws InvalidParameterValueException, SQLException; int getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, - Map filters) throws InvalidParameterException, SQLException; + FilterSet filterSet) throws InvalidParameterValueException, SQLException; - Map getDeviceCountsByPlatforms(Map filters) throws SQLException; + Map getDeviceCountsByPlatforms(FilterSet filterSet) + throws InvalidParameterValueException, SQLException; Map getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode, - Map filters) throws InvalidParameterException, SQLException; + FilterSet filterSet) throws InvalidParameterValueException, SQLException; - Map getDeviceCountsByOwnershipTypes(Map filters) throws SQLException; + Map getDeviceCountsByOwnershipTypes(FilterSet filterSet) + throws InvalidParameterValueException, SQLException; Map getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode, - Map filters) throws InvalidParameterException, SQLException; + FilterSet filterSet) throws InvalidParameterValueException, SQLException; - PaginationResult getDevicesWithDetails(Map filters, - int startIndex, int resultCount) throws InvalidParameterException, SQLException; + PaginationResult getDevicesWithDetails(FilterSet filterSet, int startIndex, int resultCount) + throws InvalidParameterValueException, SQLException; PaginationResult getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, - Map filters, int startIndex, int resultCount) - throws InvalidParameterException, SQLException; + FilterSet filterSet, int startIndex, int resultCount) throws InvalidParameterValueException, SQLException; - List> getDevicesWithDetails(Map filters) throws SQLException; + List> getDevicesWithDetails(FilterSet filterSet) + throws InvalidParameterValueException, SQLException; List> getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, - Map filters) throws InvalidParameterException, SQLException; + 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 new file mode 100644 index 00000000000..1348b95577d --- /dev/null +++ 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 @@ -0,0 +1,23 @@ +/* + * 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 new file mode 100644 index 00000000000..0f046db35d8 --- /dev/null +++ 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 @@ -0,0 +1,58 @@ +/* + * 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 class FilterSet { + private String connectivityStatus; + private String potentialVulnerability; + private String platform; + private String ownership; + + public String getConnectivityStatus() { + return connectivityStatus; + } + + public void setConnectivityStatus(String connectivityStatus) { + this.connectivityStatus = connectivityStatus; + } + + public String getPotentialVulnerability() { + return potentialVulnerability; + } + + public void setPotentialVulnerability(String potentialVulnerability) { + this.potentialVulnerability = potentialVulnerability; + } + + public String getPlatform() { + return platform; + } + + public void setPlatform(String platform) { + this.platform = platform; + } + + public String getOwnership() { + return ownership; + } + + 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 new file mode 100644 index 00000000000..15e1ad47956 --- /dev/null +++ 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 @@ -0,0 +1,23 @@ +/* + * 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 new file mode 100644 index 00000000000..01d207ccd50 --- /dev/null +++ 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 @@ -0,0 +1,23 @@ +/* + * 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 new file mode 100644 index 00000000000..fe3ae5febc4 --- /dev/null +++ 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 @@ -0,0 +1,23 @@ +/* + * 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/exception/InvalidParameterException.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/exception/InvalidParameterValueException.java similarity index 86% rename from components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/exception/InvalidParameterException.java rename to components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/exception/InvalidParameterValueException.java index 74b0f264046..c36bf90e7cc 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/exception/InvalidParameterException.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/exception/InvalidParameterValueException.java @@ -22,7 +22,7 @@ package org.wso2.carbon.device.mgt.analytics.dashboard.dao.exception; * Custom exception class for catching invalid parameter issues, * relevant to Gadget Data Service DAO layer. */ -public class InvalidParameterException extends Exception { +public class InvalidParameterValueException extends Exception { private String errorMessage; private static final long serialVersionUID = 2021891706072918864L; @@ -34,7 +34,7 @@ public class InvalidParameterException extends Exception { * @param nestedException Nested exception. */ @SuppressWarnings("unused") - public InvalidParameterException(String errorMessage, Exception nestedException) { + public InvalidParameterValueException(String errorMessage, Exception nestedException) { super(errorMessage, nestedException); setErrorMessage(errorMessage); } @@ -46,7 +46,7 @@ public class InvalidParameterException extends Exception { * @param cause Cause of this exception. */ @SuppressWarnings("unused") - public InvalidParameterException(String errorMessage, Throwable cause) { + public InvalidParameterValueException(String errorMessage, Throwable cause) { super(errorMessage, cause); setErrorMessage(errorMessage); } @@ -56,7 +56,7 @@ public class InvalidParameterException extends Exception { * * @param errorMessage Specific error message. */ - public InvalidParameterException(String errorMessage) { + public InvalidParameterValueException(String errorMessage) { super(errorMessage); setErrorMessage(errorMessage); } @@ -67,7 +67,7 @@ public class InvalidParameterException extends Exception { * @param cause Cause of this exception. */ @SuppressWarnings("unused") - public InvalidParameterException(Throwable cause) { + public InvalidParameterValueException(Throwable cause) { super(cause); } 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 c79d38e7712..eb51abe7214 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 @@ -21,7 +21,8 @@ package org.wso2.carbon.device.mgt.analytics.dashboard.dao.impl; import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAO; import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOFactory; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.exception.InvalidParameterException; +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 org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil; @@ -29,65 +30,84 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { @Override public int getTotalDeviceCount() throws SQLException { - return this.getDeviceCount(null); + try { + return this.getDeviceCount(null); + } catch (InvalidParameterValueException e) { + throw new AssertionError(e); + } } @Override public int getActiveDeviceCount() throws SQLException { - Map filters = new HashMap<>(); - filters.put("CONNECTIVITY_STATUS", "ACTIVE"); - return this.getDeviceCount(filters); + 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 { - Map filters = new HashMap<>(); - filters.put("CONNECTIVITY_STATUS", "INACTIVE"); - return this.getDeviceCount(filters); + 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 { - Map filters = new HashMap<>(); - filters.put("CONNECTIVITY_STATUS", "REMOVED"); - return this.getDeviceCount(filters); + 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 { - Map filters = new HashMap<>(); - filters.put("IS_COMPLIANT", 0); - return this.getDeviceCount(filters); + FilterSet filterSet = new FilterSet(); + filterSet.setPotentialVulnerability(PotentialVulnerability.non_compliant.toString()); + try { + return this.getDeviceCount(filterSet); + } catch (InvalidParameterValueException e) { + throw new AssertionError(e); + } } @Override public int getUnmonitoredDeviceCount() throws SQLException { - Map filters = new HashMap<>(); - filters.put("POLICY_ID", -1); - return this.getDeviceCount(filters); + FilterSet filterSet = new FilterSet(); + filterSet.setPotentialVulnerability(PotentialVulnerability.unmonitored.toString()); + try { + return this.getDeviceCount(filterSet); + } catch (InvalidParameterValueException e) { + throw new AssertionError(e); + } } @Override public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) - throws InvalidParameterException, SQLException { + throws InvalidParameterValueException, SQLException { if (startIndex < 0) { - throw new InvalidParameterException("Start index (startIndex) should be " + - "equal to 0 or greater than that."); + throw new InvalidParameterValueException("Start index should be equal to 0 or greater than that."); } if (resultCount < 5) { - throw new InvalidParameterException("Result count (resultCount) should be " + - "equal to 5 or greater than that."); + throw new InvalidParameterValueException("Result count should be equal to 5 or greater than that."); } Connection con; @@ -137,7 +157,10 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { return paginationResult; } - public int getDeviceCount(Map filters) throws SQLException { + public int getDeviceCount(FilterSet filterSet) throws InvalidParameterValueException, SQLException { + + Map filters = this.extractDatabaseFiltersFromBean(filterSet); + Connection con; PreparedStatement stmt = null; ResultSet rs = null; @@ -179,13 +202,15 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { return filteredDeviceCount; } - public int getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, Map filters) - throws InvalidParameterException, SQLException { + public int getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, FilterSet filterSet) + throws InvalidParameterValueException, SQLException { if (nonCompliantFeatureCode == null || "".equals(nonCompliantFeatureCode)) { - throw new InvalidParameterException("nonCompliantFeatureCode should not be either null or empty."); + throw new InvalidParameterValueException("Non-compliant feature code should not be either null or empty."); } + Map filters = this.extractDatabaseFiltersFromBean(filterSet); + Connection con; PreparedStatement stmt = null; ResultSet rs = null; @@ -193,7 +218,8 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { int filteredDeviceCount = 0; try { con = this.getConnection(); - String sql = "SELECT COUNT(DEVICE_ID) AS DEVICE_COUNT FROM DEVICES_VIEW_2 WHERE TENANT_ID = ? AND FEATURE_CODE = ?"; + String sql = "SELECT COUNT(DEVICE_ID) AS DEVICE_COUNT FROM DEVICES_VIEW_2 " + + "WHERE TENANT_ID = ? AND FEATURE_CODE = ?"; // appending filters to support advanced filtering options // [1] appending filter columns if (filters != null && filters.size() > 0) { @@ -228,7 +254,11 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { return filteredDeviceCount; } - public Map getDeviceCountsByPlatforms(Map filters) throws SQLException { + public Map getDeviceCountsByPlatforms(FilterSet filterSet) + throws InvalidParameterValueException, SQLException { + + Map filters = this.extractDatabaseFiltersFromBean(filterSet); + Connection con; PreparedStatement stmt = null; ResultSet rs = null; @@ -273,13 +303,14 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { } public Map getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode, - Map filters) throws InvalidParameterException, SQLException { + FilterSet filterSet) throws InvalidParameterValueException, SQLException { if (nonCompliantFeatureCode == null || "".equals(nonCompliantFeatureCode)) { - throw new InvalidParameterException("Non-compliant feature code (nonCompliantFeatureCode) " + - "should not be either null or empty."); + throw new InvalidParameterValueException("Non-compliant feature code should not be either null or empty."); } + Map filters = this.extractDatabaseFiltersFromBean(filterSet); + Connection con; PreparedStatement stmt = null; ResultSet rs = null; @@ -324,7 +355,11 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { return filteredDeviceCountsByPlatforms; } - public Map getDeviceCountsByOwnershipTypes(Map filters) throws SQLException { + public Map getDeviceCountsByOwnershipTypes(FilterSet filterSet) + throws InvalidParameterValueException, SQLException { + + Map filters = this.extractDatabaseFiltersFromBean(filterSet); + Connection con; PreparedStatement stmt = null; ResultSet rs = null; @@ -369,13 +404,14 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { } public Map getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode, - Map filters) throws InvalidParameterException, SQLException { + FilterSet filterSet) throws InvalidParameterValueException, SQLException { if (nonCompliantFeatureCode == null || "".equals(nonCompliantFeatureCode)) { - throw new InvalidParameterException("Non-compliant feature code (nonCompliantFeatureCode) " + - "should not be either null or empty."); + throw new InvalidParameterValueException("Non-compliant feature code should not be either null or empty."); } + Map filters = this.extractDatabaseFiltersFromBean(filterSet); + Connection con; PreparedStatement stmt = null; ResultSet rs = null; @@ -420,19 +456,19 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { return filteredDeviceCountsByOwnershipTypes; } - public PaginationResult getDevicesWithDetails(Map filters, - int startIndex, int resultCount) throws InvalidParameterException, SQLException { + public PaginationResult getDevicesWithDetails(FilterSet filterSet, int startIndex, int resultCount) + throws InvalidParameterValueException, SQLException { if (startIndex < 0) { - throw new InvalidParameterException("Start index (startIndex) should be " + - "equal to 0 or greater than that."); + throw new InvalidParameterValueException("Start index should be equal to 0 or greater than that."); } if (resultCount < 5) { - throw new InvalidParameterException("Result count (resultCount) should be " + - "equal to 5 or greater than that."); + throw new InvalidParameterValueException("Result count should be equal to 5 or greater than that."); } + Map filters = this.extractDatabaseFiltersFromBean(filterSet); + Connection con; PreparedStatement stmt = null; ResultSet rs = null; @@ -504,24 +540,23 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { } public PaginationResult getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, - Map filters, int startIndex, int resultCount) - throws InvalidParameterException, SQLException { + FilterSet filterSet, int startIndex, int resultCount) + throws InvalidParameterValueException, SQLException { if (nonCompliantFeatureCode == null || "".equals(nonCompliantFeatureCode)) { - throw new InvalidParameterException("Non-compliant feature code (nonCompliantFeatureCode) " + - "should not be either null or empty."); + throw new InvalidParameterValueException("Non-compliant feature code should not be either null or empty."); } if (startIndex < 0) { - throw new InvalidParameterException("Start index (startIndex) should be " + - "equal to 0 or greater than that."); + throw new InvalidParameterValueException("Start index should be equal to 0 or greater than that."); } if (resultCount < 5) { - throw new InvalidParameterException("Result count (resultCount) should be " + - "equal to 5 or greater than that."); + throw new InvalidParameterValueException("Result count should be equal to 5 or greater than that."); } + Map filters = this.extractDatabaseFiltersFromBean(filterSet); + Connection con; PreparedStatement stmt = null; ResultSet rs = null; @@ -595,7 +630,11 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { return paginationResult; } - public List> getDevicesWithDetails(Map filters) throws SQLException { + public List> getDevicesWithDetails(FilterSet filterSet) + throws InvalidParameterValueException, SQLException { + + Map filters = this.extractDatabaseFiltersFromBean(filterSet); + Connection con; PreparedStatement stmt = null; ResultSet rs = null; @@ -645,13 +684,14 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { } public List> getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, - Map filters) throws InvalidParameterException, SQLException { + FilterSet filterSet) throws InvalidParameterValueException, SQLException { if (nonCompliantFeatureCode == null || "".equals(nonCompliantFeatureCode)) { - throw new InvalidParameterException("Non-compliant feature code (nonCompliantFeatureCode) " + - "should not be either null or empty."); + throw new InvalidParameterValueException("Non-compliant feature code should not be either null or empty."); } + Map filters = this.extractDatabaseFiltersFromBean(filterSet); + Connection con; PreparedStatement stmt = null; ResultSet rs = null; @@ -702,6 +742,67 @@ public class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO { return filteredDevicesWithDetails; } + private Map extractDatabaseFiltersFromBean(FilterSet filterSet) + throws InvalidParameterValueException { + if (filterSet == null) { + return null; + } + + Map filters = new LinkedHashMap<>(); + + 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."); + } + } + + 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)) { + 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."); + } + } + + 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."); + } + } + + 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."); + } + } + + return filters; + } + private Connection getConnection() throws SQLException { return GadgetDataServiceDAOFactory.getConnection(); } 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 98ceb5d88fa..4e8c3fca7de 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,8 +20,8 @@ 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.exception.InvalidParameterException; -import org.wso2.carbon.device.mgt.common.PaginationRequest; +import org.wso2.carbon.device.mgt.analytics.dashboard.dao.bean.FilterSet; +import org.wso2.carbon.device.mgt.analytics.dashboard.dao.exception.InvalidParameterValueException; import org.wso2.carbon.device.mgt.common.PaginationResult; import java.sql.SQLException; @@ -108,7 +108,7 @@ public class GadgetDataServiceImpl implements GadgetDataService { @Override public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) - throws SQLException, InvalidParameterException { + throws SQLException, InvalidParameterValueException { PaginationResult paginationResult; try { GadgetDataServiceDAOFactory.openConnection(); @@ -121,11 +121,11 @@ public class GadgetDataServiceImpl implements GadgetDataService { } @Override - public int getDeviceCount(Map filters) throws SQLException { + public int getDeviceCount(FilterSet filterSet) throws InvalidParameterValueException, SQLException { int deviceCount; try { GadgetDataServiceDAOFactory.openConnection(); - deviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getDeviceCount(filters); + deviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getDeviceCount(filterSet); } finally { GadgetDataServiceDAOFactory.closeConnection(); } @@ -133,13 +133,13 @@ public class GadgetDataServiceImpl implements GadgetDataService { } @Override - public int getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, Map filters) - throws SQLException, InvalidParameterException { + public int getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, FilterSet filterSet) + throws InvalidParameterValueException, SQLException { int featureNonCompliantDeviceCount; try { GadgetDataServiceDAOFactory.openConnection(); featureNonCompliantDeviceCount = GadgetDataServiceDAOFactory. - getGadgetDataServiceDAO().getFeatureNonCompliantDeviceCount(nonCompliantFeatureCode, filters); + getGadgetDataServiceDAO().getFeatureNonCompliantDeviceCount(nonCompliantFeatureCode, filterSet); } finally { GadgetDataServiceDAOFactory.closeConnection(); } @@ -147,12 +147,13 @@ public class GadgetDataServiceImpl implements GadgetDataService { } @Override - public Map getDeviceCountsByPlatforms(Map filters) throws SQLException { + public Map getDeviceCountsByPlatforms(FilterSet filterSet) + throws InvalidParameterValueException, SQLException { Map deviceCountsByPlatforms; try { GadgetDataServiceDAOFactory.openConnection(); deviceCountsByPlatforms = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). - getDeviceCountsByPlatforms(filters); + getDeviceCountsByPlatforms(filterSet); } finally { GadgetDataServiceDAOFactory.closeConnection(); } @@ -161,12 +162,12 @@ public class GadgetDataServiceImpl implements GadgetDataService { @Override public Map getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode, - Map filters) throws SQLException, InvalidParameterException { + FilterSet filterSet) throws InvalidParameterValueException, SQLException { Map featureNonCompliantDeviceCountsByPlatforms; try { GadgetDataServiceDAOFactory.openConnection(); featureNonCompliantDeviceCountsByPlatforms = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). - getFeatureNonCompliantDeviceCountsByPlatforms(nonCompliantFeatureCode, filters); + getFeatureNonCompliantDeviceCountsByPlatforms(nonCompliantFeatureCode, filterSet); } finally { GadgetDataServiceDAOFactory.closeConnection(); } @@ -174,12 +175,13 @@ public class GadgetDataServiceImpl implements GadgetDataService { } @Override - public Map getDeviceCountsByOwnershipTypes(Map filters) throws SQLException { + public Map getDeviceCountsByOwnershipTypes(FilterSet filterSet) + throws InvalidParameterValueException, SQLException { Map deviceCountsByOwnershipTypes; try { GadgetDataServiceDAOFactory.openConnection(); deviceCountsByOwnershipTypes = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). - getDeviceCountsByOwnershipTypes(filters); + getDeviceCountsByOwnershipTypes(filterSet); } finally { GadgetDataServiceDAOFactory.closeConnection(); } @@ -188,12 +190,12 @@ public class GadgetDataServiceImpl implements GadgetDataService { @Override public Map getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode, - Map filters) throws SQLException, InvalidParameterException { + FilterSet filterSet) throws SQLException, InvalidParameterValueException { Map featureNonCompliantDeviceCountsByOwnershipTypes; try { GadgetDataServiceDAOFactory.openConnection(); featureNonCompliantDeviceCountsByOwnershipTypes = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). - getFeatureNonCompliantDeviceCountsByOwnershipTypes(nonCompliantFeatureCode, filters); + getFeatureNonCompliantDeviceCountsByOwnershipTypes(nonCompliantFeatureCode, filterSet); } finally { GadgetDataServiceDAOFactory.closeConnection(); } @@ -201,13 +203,13 @@ public class GadgetDataServiceImpl implements GadgetDataService { } @Override - public PaginationResult getDevicesWithDetails(Map filters, - int startIndex, int resultCount) throws InvalidParameterException, SQLException { + public PaginationResult getDevicesWithDetails(FilterSet filterSet, + int startIndex, int resultCount) throws InvalidParameterValueException, SQLException { PaginationResult paginationResult; try { GadgetDataServiceDAOFactory.openConnection(); paginationResult = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). - getDevicesWithDetails(filters, startIndex, resultCount); + getDevicesWithDetails(filterSet, startIndex, resultCount); } finally { GadgetDataServiceDAOFactory.closeConnection(); } @@ -216,13 +218,13 @@ public class GadgetDataServiceImpl implements GadgetDataService { @Override public PaginationResult getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, - Map filters, int startIndex, int resultCount) - throws InvalidParameterException, SQLException { + FilterSet filterSet, int startIndex, int resultCount) + throws InvalidParameterValueException, SQLException { PaginationResult paginationResult; try { GadgetDataServiceDAOFactory.openConnection(); paginationResult = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). - getFeatureNonCompliantDevicesWithDetails(nonCompliantFeatureCode, filters, startIndex, resultCount); + getFeatureNonCompliantDevicesWithDetails(nonCompliantFeatureCode, filterSet, startIndex, resultCount); } finally { GadgetDataServiceDAOFactory.closeConnection(); } @@ -230,11 +232,12 @@ public class GadgetDataServiceImpl implements GadgetDataService { } @Override - public List> getDevicesWithDetails(Map filters) throws SQLException { + public List> getDevicesWithDetails(FilterSet filterSet) + throws InvalidParameterValueException, SQLException { List> devicesWithDetails; try { GadgetDataServiceDAOFactory.openConnection(); - devicesWithDetails = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getDevicesWithDetails(filters); + devicesWithDetails = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getDevicesWithDetails(filterSet); } finally { GadgetDataServiceDAOFactory.closeConnection(); } @@ -243,12 +246,12 @@ public class GadgetDataServiceImpl implements GadgetDataService { @Override public List> getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, - Map filters) throws SQLException, InvalidParameterException { + FilterSet filterSet) throws InvalidParameterValueException, SQLException { List> featureNonCompliantDevicesWithDetails; try { GadgetDataServiceDAOFactory.openConnection(); featureNonCompliantDevicesWithDetails = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). - getFeatureNonCompliantDevicesWithDetails(nonCompliantFeatureCode, filters); + getFeatureNonCompliantDevicesWithDetails(nonCompliantFeatureCode, filterSet); } finally { GadgetDataServiceDAOFactory.closeConnection(); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/internal/GadgetDataServiceComponent.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/internal/GadgetDataServiceComponent.java index 7d1bc08c197..5dda71d849d 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/internal/GadgetDataServiceComponent.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/internal/GadgetDataServiceComponent.java @@ -72,14 +72,14 @@ public class GadgetDataServiceComponent { //do nothing } - public void setDataSourceService(DataSourceService dataSourceService) { + protected void setDataSourceService(DataSourceService dataSourceService) { if (log.isDebugEnabled()) { log.debug("Binding org.wso2.carbon.ndatasource.core.DataSourceService..."); } //do nothing } - public void unsetDataSourceService(DataSourceService dataSourceService) { + protected void unsetDataSourceService(DataSourceService dataSourceService) { if (log.isDebugEnabled()) { log.debug("Unbinding org.wso2.carbon.ndatasource.core.DataSourceService..."); }