diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.annotations/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.annotations/pom.xml index e9690ac76f..f8c274ed3d 100644 --- a/components/apimgt-extensions/org.wso2.carbon.apimgt.annotations/pom.xml +++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.annotations/pom.xml @@ -22,13 +22,13 @@ apimgt-extensions org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.annotations - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT bundle WSO2 Carbon - API Management Annotations WSO2 Carbon - API Management Custom Annotation Module diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/pom.xml index 4a8e81b6d2..19826ffdf8 100644 --- a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/pom.xml +++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/pom.xml @@ -21,12 +21,12 @@ apimgt-extensions org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT org.wso2.carbon.apimgt.application.extension.api war WSO2 Carbon - API Application Management API diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/pom.xml index 346dcee7d7..d0152c179f 100644 --- a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/pom.xml +++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/pom.xml @@ -22,12 +22,12 @@ apimgt-extensions org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT org.wso2.carbon.apimgt.application.extension bundle WSO2 Carbon - API Application Management diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/pom.xml index 1229cba544..5f93ad9f4c 100644 --- a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/pom.xml +++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/pom.xml @@ -21,13 +21,13 @@ apimgt-extensions org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.handlers - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT bundle WSO2 Carbon - API Security Handler Component WSO2 Carbon - API Management Security Handler Module diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.client/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.client/pom.xml index 712d591637..4409ee82ee 100644 --- a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.client/pom.xml +++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.client/pom.xml @@ -13,13 +13,13 @@ apimgt-extensions org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.integration.client - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT bundle WSO2 Carbon - API Management Integration Client WSO2 Carbon - API Management Integration Client diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/pom.xml index 08364b0f75..c66e82883b 100644 --- a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/pom.xml +++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/pom.xml @@ -13,13 +13,13 @@ apimgt-extensions org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.integration.generated.client - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT bundle WSO2 Carbon - API Management Integration Generated Client WSO2 Carbon - API Management Integration Client diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/pom.xml index eb7b752326..13fba1afc2 100644 --- a/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/pom.xml +++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/pom.xml @@ -22,13 +22,13 @@ apimgt-extensions org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.webapp.publisher - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT bundle WSO2 Carbon - API Management Webapp Publisher WSO2 Carbon - API Management Webapp Publisher diff --git a/components/apimgt-extensions/pom.xml b/components/apimgt-extensions/pom.xml index 5b1f5bd23f..aa51092065 100644 --- a/components/apimgt-extensions/pom.xml +++ b/components/apimgt-extensions/pom.xml @@ -22,13 +22,13 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml 4.0.0 apimgt-extensions - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT pom WSO2 Carbon - API Management Extensions Component http://wso2.org diff --git a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.api/pom.xml b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.api/pom.xml index abfc923d28..0464a0276a 100644 --- a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.api/pom.xml +++ b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.api/pom.xml @@ -22,7 +22,7 @@ certificate-mgt org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api/pom.xml b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api/pom.xml index 9d2749963c..5c4621db4d 100644 --- a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api/pom.xml +++ b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api/pom.xml @@ -22,7 +22,7 @@ certificate-mgt org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.core/pom.xml b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.core/pom.xml index ace80b9bfc..12a600bcc9 100644 --- a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.core/pom.xml +++ b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.core/pom.xml @@ -21,13 +21,13 @@ org.wso2.carbon.devicemgt certificate-mgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.certificate.mgt.core - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT bundle WSO2 Carbon - Certificate Management Core WSO2 Carbon - Certificate Management Core diff --git a/components/certificate-mgt/pom.xml b/components/certificate-mgt/pom.xml index 59c65abf37..7edc09c333 100644 --- a/components/certificate-mgt/pom.xml +++ b/components/certificate-mgt/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml 4.0.0 org.wso2.carbon.devicemgt certificate-mgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT pom WSO2 Carbon - Certificate Management Component http://wso2.org diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml index 4a6e7b1945..19fa3b0fc4 100644 --- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml +++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml @@ -22,7 +22,7 @@ device-mgt-extensions org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.pull.notification/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.pull.notification/pom.xml index 06d849f0a2..821ca49471 100644 --- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.pull.notification/pom.xml +++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.pull.notification/pom.xml @@ -22,7 +22,7 @@ device-mgt-extensions org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm/pom.xml index 6c77174cac..e5321fcd97 100644 --- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm/pom.xml +++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm/pom.xml @@ -22,7 +22,7 @@ device-mgt-extensions org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http/pom.xml index 8e867ad5a9..ba8393bdd4 100644 --- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http/pom.xml +++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http/pom.xml @@ -22,7 +22,7 @@ device-mgt-extensions org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt/pom.xml index c8fa92fd08..9e40b3511d 100644 --- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt/pom.xml +++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt/pom.xml @@ -22,7 +22,7 @@ device-mgt-extensions org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp/pom.xml index a8dec8001b..aba3f1387d 100644 --- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp/pom.xml +++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp/pom.xml @@ -22,7 +22,7 @@ device-mgt-extensions org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/components/device-mgt-extensions/pom.xml b/components/device-mgt-extensions/pom.xml index 9bcb66cce2..3c10824fdd 100644 --- a/components/device-mgt-extensions/pom.xml +++ b/components/device-mgt-extensions/pom.xml @@ -22,7 +22,7 @@ carbon-devicemgt org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml 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 deleted file mode 100644 index b071cbf9d9..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/pom.xml +++ /dev/null @@ -1,111 +0,0 @@ - - - - org.wso2.carbon.devicemgt - device-mgt - 3.0.133-SNAPSHOT - ../pom.xml - - - 4.0.0 - org.wso2.carbon.device.mgt.analytics.dashboard - bundle - WSO2 Carbon - Device Management Dashboard Analytics - WSO2 Carbon - Device Management Dashboard Analytics - http://wso2.org - - - - org.eclipse.osgi - org.eclipse.osgi.services - - - org.wso2.carbon - org.wso2.carbon.logging - - - org.wso2.carbon.devicemgt - org.wso2.carbon.device.mgt.common - - - org.wso2.carbon.devicemgt - org.wso2.carbon.device.mgt.core - - - org.wso2.carbon - org.wso2.carbon.ndatasource.core - - - - - - - org.apache.felix - maven-scr-plugin - - - org.apache.felix - maven-bundle-plugin - 1.4.0 - true - - - ${project.artifactId} - ${project.artifactId} - ${carbon.device.mgt.version} - Device Management Dashboard Analytics Bundle - - org.wso2.carbon.device.mgt.analytics.dashboard.dao, - org.wso2.carbon.device.mgt.analytics.dashboard.dao.impl, - org.wso2.carbon.device.mgt.analytics.dashboard.impl, - org.wso2.carbon.device.mgt.analytics.dashboard.internal - - - org.wso2.carbon.device.mgt.analytics.dashboard, - org.wso2.carbon.device.mgt.analytics.dashboard.util, - org.wso2.carbon.device.mgt.analytics.dashboard.exception, - org.wso2.carbon.device.mgt.analytics.dashboard.bean - - - org.osgi.framework, - org.osgi.service.component, - org.apache.commons.logging.*, - javax.sql, - org.wso2.carbon.context, - org.wso2.carbon.device.mgt.common.*, - org.wso2.carbon.device.mgt.core.*, - org.wso2.carbon.ndatasource.core.*; - - - - - - org.jacoco - jacoco-maven-plugin - - ${basedir}/target/coverage-reports/jacoco-unit.exec - - - - jacoco-initialize - - prepare-agent - - - - jacoco-site - test - - report - - - ${basedir}/target/coverage-reports/jacoco-unit.exec - ${basedir}/target/coverage-reports/site - - - - - - - - \ 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/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 deleted file mode 100644 index 5a251fc9c2..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/GadgetDataService.java +++ /dev/null @@ -1,261 +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; - -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.BasicFilterSet; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.ExtendedFilterSet; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroup; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceWithDetails; -import org.wso2.carbon.device.mgt.analytics.dashboard.exception.*; -import org.wso2.carbon.device.mgt.common.PaginationResult; - -import java.util.List; - -/** - * This interface exposes useful service layer functions to retrieve data - * required by high level dashboard APIs. - */ -public interface GadgetDataService { - - /** - * This method is used to get a count of devices based on a defined filter set. - * @param extendedFilterSet An abstract representation of possible filtering options. - * if this value is simply "null" or no values are set for the defined filtering - * options, this method would return total device count in the system - * wrapped by the defined return format. - * @return An object of type DeviceCountByGroup. - * @throws InvalidPotentialVulnerabilityValueException This can occur if potentialVulnerability - * value of extendedFilterSet is set with some - * value other than "NON_COMPLIANT" or "UNMONITORED". - * @throws DataAccessLayerException This can occur due to errors connecting to database, - * executing SQL query and retrieving data. - */ - @SuppressWarnings("unused") - DeviceCountByGroup getDeviceCount(ExtendedFilterSet extendedFilterSet, String userName) - throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException; - - /** - * This method is used to get a count of devices non-compliant upon on a particular feature - * and a defined filter set. - * @param featureCode Code name of the non-compliant feature. - * @param basicFilterSet An abstract representation of possible filtering options. - * if this value is simply "null" or no values are set for the defined filtering - * options, this method would return total non-compliant device count in the system - * for the given feature-code, wrapped by the defined return format. - * @return An object of type DeviceCountByGroup. - * @throws InvalidFeatureCodeValueException This can occur if featureCode is set to null or empty. - * @throws DataAccessLayerException This can occur due to errors connecting to database, - * executing SQL query and retrieving data. - */ - @SuppressWarnings("unused") - DeviceCountByGroup getFeatureNonCompliantDeviceCount(String featureCode, BasicFilterSet basicFilterSet, String userName) - throws InvalidFeatureCodeValueException, DataAccessLayerException; - - /** - * This method is used to get total count of devices currently enrolled under a particular tenant. - * @return An object of type DeviceCountByGroup. - * @throws DataAccessLayerException This can occur due to errors connecting to database, - * executing SQL query and retrieving data. - */ - @SuppressWarnings("unused") - DeviceCountByGroup getTotalDeviceCount(String userName) throws DataAccessLayerException; - - /** - * This method is used to get device counts classified by connectivity statuses. - * @return A list of objects of type DeviceCountByGroup. - * @throws DataAccessLayerException This can occur due to errors connecting to database, - * executing SQL query and retrieving data. - */ - @SuppressWarnings("unused") - List getDeviceCountsByConnectivityStatuses(String userName) throws DataAccessLayerException; - - /** - * This method is used to get device counts classified by potential vulnerabilities. - * @return A list of objects of type DeviceCountByGroup. - * @throws DataAccessLayerException This can occur due to errors connecting to database, - * executing SQL query and retrieving data. - */ - @SuppressWarnings("unused") - List getDeviceCountsByPotentialVulnerabilities(String userName) throws DataAccessLayerException; - - /** - * This method is used to get non-compliant device counts classified by individual features. - * @param startIndex Starting index of the data set to be retrieved. - * @param resultCount Total count of the result set retrieved. - * @return An object of type PaginationResult. - * @throws InvalidStartIndexValueException This can occur if startIndex value is lesser than its minimum (0). - * @throws InvalidResultCountValueException This can occur if resultCount value is lesser than its minimum (5). - * @throws DataAccessLayerException This can occur due to errors connecting to database, - * executing SQL query and retrieving data. - */ - @SuppressWarnings("unused") - PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount, String userName) throws - InvalidStartIndexValueException, InvalidResultCountValueException, DataAccessLayerException; - - /** - * This method is used to get device counts classified by platforms. - * @param extendedFilterSet An abstract representation of possible filtering options. - * if this value is simply "null" or no values are set for the defined filtering - * options, this method would return total device counts per each platform in - * the system, wrapped by the defined return format. - * @return An object of type DeviceCountByGroup. - * @throws InvalidPotentialVulnerabilityValueException This can occur if potentialVulnerability - * value of extendedFilterSet is set with some - * value other than "NON_COMPLIANT" or "UNMONITORED". - * @throws DataAccessLayerException This can occur due to errors connecting to database, - * executing SQL query and retrieving data. - */ - @SuppressWarnings("unused") - List getDeviceCountsByPlatforms(ExtendedFilterSet extendedFilterSet, String userName) - throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException; - - /** - * This method is used to get device counts non-compliant upon a particular feature classified by platforms. - * @param featureCode Code name of the non-compliant feature. - * @param basicFilterSet An abstract representation of possible filtering options. - * if this value is simply "null" or no values are set for the defined filtering - * options, this method would return total non-compliant device counts per each platform - * in the system, wrapped by the defined return format. - * @return A list of objects of type DeviceCountByGroup. - * @throws InvalidFeatureCodeValueException This can occur if featureCode is set to null or empty. - * @throws DataAccessLayerException This can occur due to errors connecting to database, - * executing SQL query and retrieving data. - */ - @SuppressWarnings("unused") - List getFeatureNonCompliantDeviceCountsByPlatforms(String featureCode, - BasicFilterSet basicFilterSet, String userName) throws InvalidFeatureCodeValueException, - DataAccessLayerException; - - /** - * This method is used to get device counts classified by ownership types. - * @param extendedFilterSet An abstract representation of possible filtering options. - * if this value is simply "null" or no values are set for the defined filtering - * options, this method would return total device counts per each ownership - * type in the system, wrapped by the defined return format. - * @return A list of objects of type DeviceCountByGroup. - * @throws InvalidPotentialVulnerabilityValueException This can occur if potentialVulnerability - * value of extendedFilterSet is set with some - * value other than "NON_COMPLIANT" or "UNMONITORED". - * @throws DataAccessLayerException This can occur due to errors connecting to database, - * executing SQL query and retrieving data. - */ - @SuppressWarnings("unused") - List getDeviceCountsByOwnershipTypes(ExtendedFilterSet extendedFilterSet, String userName) - throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException; - - /** - * This method is used to get device counts non-compliant upon a particular feature - * classified by ownership types. - * @param featureCode Code name of the non-compliant feature. - * @param basicFilterSet An abstract representation of possible filtering options. - * if this value is simply "null" or no values are set for the defined filtering - * options, this method would return total non-compliant device counts per each - * ownership type in the system, wrapped by the defined return format. - * @return A list of objects of type DeviceCountByGroup. - * @throws InvalidFeatureCodeValueException This can occur if featureCode is set to null or empty. - * @throws DataAccessLayerException This can occur due to errors connecting to database, - * executing SQL query and retrieving data. - */ - @SuppressWarnings("unused") - List getFeatureNonCompliantDeviceCountsByOwnershipTypes(String featureCode, - BasicFilterSet basicFilterSet, String userName) throws InvalidFeatureCodeValueException, - DataAccessLayerException; - - /** - * This method is used to get a paginated list of devices with details, based on a defined filter set. - * @param extendedFilterSet An abstract representation of possible filtering options. - * if this value is simply "null" or no values are set for the defined - * filtering options, this method would return a paginated device list in the - * system specified by result count, starting from specified start index, and - * wrapped by the defined return format. - * @param startIndex Starting index of the data set to be retrieved. - * @param resultCount Total count of the result set retrieved. - * @return An object of type PaginationResult. - * @throws InvalidPotentialVulnerabilityValueException This can occur if potentialVulnerability - * value of extendedFilterSet is set with some - * value other than "NON_COMPLIANT" or "UNMONITORED". - * @throws DataAccessLayerException This can occur due to errors connecting to database, - * executing SQL query and retrieving data. - * @throws InvalidStartIndexValueException This can occur if startIndex value is lesser than its minimum (0). - * @throws InvalidResultCountValueException This can occur if resultCount value is lesser than its minimum (5). - */ - @SuppressWarnings("unused") - PaginationResult getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, int startIndex, int resultCount, String userName) - throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException, - InvalidStartIndexValueException, InvalidResultCountValueException; - - /** - * This method is used to get a paginated list of non-compliant devices with details, - * upon a particular feature. - * @param featureCode Code name of the non-compliant feature. - * @param basicFilterSet An abstract representation of possible filtering options. - * if this value is simply "null" or no values are set for the defined filtering - * options, this method would return a paginated device list in the system, - * non-compliant by specified feature-code, result count, starting from specified - * start index, and wrapped by the defined return format. - * @param startIndex Starting index of the data set to be retrieved. - * @param resultCount Total count of the result set retrieved. - * @return An object of type PaginationResult. - * @throws InvalidFeatureCodeValueException This can occur if featureCode is set to null or empty. - * @throws DataAccessLayerException This can occur due to errors connecting to database, - * executing SQL query and retrieving data. - * @throws InvalidStartIndexValueException This can occur if startIndex value is lesser than its minimum (0). - * @throws InvalidResultCountValueException This can occur if resultCount value is lesser than its minimum (5). - */ - @SuppressWarnings("unused") - PaginationResult getFeatureNonCompliantDevicesWithDetails(String featureCode, BasicFilterSet basicFilterSet, - int startIndex, int resultCount, String userName) throws InvalidFeatureCodeValueException, - DataAccessLayerException, InvalidStartIndexValueException, - InvalidResultCountValueException; - - /** - * This method is used to get a list of devices with details, based on a defined filter set. - * @param extendedFilterSet An abstract representation of possible filtering options. - * if this value is simply "null" or no values are set for the defined filtering - * options, this method would return total device list in the system - * wrapped by the defined return format. - * @return A list of objects of type DeviceWithDetails. - * @throws InvalidPotentialVulnerabilityValueException This can occur if potentialVulnerability - * value of extendedFilterSet is set with some - * value other than "NON_COMPLIANT" or "UNMONITORED". - * @throws DataAccessLayerException This can occur due to errors connecting to database, - * executing SQL query and retrieving data. - */ - @SuppressWarnings("unused") - List getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, String userName) - throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException; - - /** - * This method is used to get a list of non-compliant devices with details, upon a particular feature. - * @param featureCode Code name of the non-compliant feature. - * @param basicFilterSet An abstract representation of possible filtering options. - * if this value is simply "null" or no values are set for the defined filtering - * options, this method would return total set of non-compliant devices in the - * system upon given feature-code, wrapped by the defined return format. - * @return A list of objects of type DeviceWithDetails. - * @throws InvalidFeatureCodeValueException This can occur if featureCode is set to null or empty. - * @throws DataAccessLayerException This can occur due to errors connecting to database, - * executing SQL query and retrieving data. - */ - @SuppressWarnings("unused") - List getFeatureNonCompliantDevicesWithDetails(String featureCode, - BasicFilterSet basicFilterSet, String userName) throws InvalidFeatureCodeValueException, - DataAccessLayerException; - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/bean/BasicFilterSet.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/bean/BasicFilterSet.java deleted file mode 100644 index 901949ea84..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/bean/BasicFilterSet.java +++ /dev/null @@ -1,53 +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.bean; - -public class BasicFilterSet { - - private String connectivityStatus; - private String platform; - private String ownership; - - public String getConnectivityStatus() { - return connectivityStatus; - } - - public void setConnectivityStatus(String connectivityStatus) { - this.connectivityStatus = connectivityStatus; - } - - public String getPlatform() { - return platform; - } - - @SuppressWarnings("unused") - public void setPlatform(String platform) { - this.platform = platform; - } - - public String getOwnership() { - 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/bean/DeviceCountByGroup.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/bean/DeviceCountByGroup.java deleted file mode 100644 index 43076fb0de..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/bean/DeviceCountByGroup.java +++ /dev/null @@ -1,53 +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.bean; - -public class DeviceCountByGroup { - - private String group; - private String displayNameForGroup; - private int deviceCount; - - @SuppressWarnings("unused") - public String getGroup() { - return group; - } - - public void setGroup(String group) { - this.group = group; - } - - @SuppressWarnings("unused") - public String getDisplayNameForGroup() { - return displayNameForGroup; - } - - public void setDisplayNameForGroup(String displayNameForGroup) { - this.displayNameForGroup = displayNameForGroup; - } - - @SuppressWarnings("unused") - public int getDeviceCount() { - return deviceCount; - } - - public void setDeviceCount(int deviceCount) { - this.deviceCount = deviceCount; - } -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/bean/DeviceWithDetails.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/bean/DeviceWithDetails.java deleted file mode 100644 index becadff9c9..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/bean/DeviceWithDetails.java +++ /dev/null @@ -1,74 +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.bean; - -public class DeviceWithDetails { - - private int deviceId; - private String deviceIdentification; - private String platform; - private String ownershipType; - private String connectivityStatus; - - @SuppressWarnings("unused") - public int getDeviceId() { - return deviceId; - } - - public void setDeviceId(int deviceId) { - this.deviceId = deviceId; - } - - @SuppressWarnings("unused") - public String getDeviceIdentification() { - return deviceIdentification; - } - - public void setDeviceIdentification(String deviceIdentification) { - this.deviceIdentification = deviceIdentification; - } - - @SuppressWarnings("unused") - public String getPlatform() { - return platform; - } - - public void setPlatform(String platform) { - this.platform = platform; - } - - @SuppressWarnings("unused") - public String getOwnershipType() { - return ownershipType; - } - - public void setOwnershipType(String ownershipType) { - this.ownershipType = ownershipType; - } - - @SuppressWarnings("unused") - public String getConnectivityStatus() { - return connectivityStatus; - } - - public void setConnectivityStatus(String connectivityStatus) { - this.connectivityStatus = connectivityStatus; - } - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/bean/ExtendedFilterSet.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/bean/ExtendedFilterSet.java deleted file mode 100644 index b68a441a90..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/bean/ExtendedFilterSet.java +++ /dev/null @@ -1,37 +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.bean; - -public class ExtendedFilterSet extends BasicFilterSet { - - /* - * Following property is an abstract filter, introduced @ service layer, - * wrapping few (actual) low level database properties. - */ - private String potentialVulnerability; - - public String getPotentialVulnerability() { - return potentialVulnerability; - } - - public void setPotentialVulnerability(String potentialVulnerability) { - this.potentialVulnerability = potentialVulnerability; - } - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/AbstractGadgetDataServiceDAO.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/AbstractGadgetDataServiceDAO.java deleted file mode 100644 index 4cad3f2201..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/AbstractGadgetDataServiceDAO.java +++ /dev/null @@ -1,807 +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; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.BasicFilterSet; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceWithDetails; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroup; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.ExtendedFilterSet; -import org.wso2.carbon.device.mgt.analytics.dashboard.exception.InvalidFeatureCodeValueException; -import org.wso2.carbon.device.mgt.analytics.dashboard.exception.InvalidPotentialVulnerabilityValueException; -import org.wso2.carbon.device.mgt.analytics.dashboard.util.APIUtil; -import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException; -import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import static org.wso2.carbon.device.mgt.analytics.dashboard.util.APIUtil.getAuthenticatedUser; -import static org.wso2.carbon.device.mgt.analytics.dashboard.util.APIUtil.getAuthenticatedUserTenantDomainId; - -public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceDAO { - - private static final Log log = LogFactory.getLog(AbstractGadgetDataServiceDAO.class); - @Override - public DeviceCountByGroup getTotalDeviceCount(String userName) throws SQLException { - int totalDeviceCount; - try { - totalDeviceCount = this.getFilteredDeviceCount(null, userName); - } catch (InvalidPotentialVulnerabilityValueException e) { - throw new AssertionError(e); - } - DeviceCountByGroup deviceCountByGroup = new DeviceCountByGroup(); - deviceCountByGroup.setGroup("total"); - deviceCountByGroup.setDisplayNameForGroup("Total"); - deviceCountByGroup.setDeviceCount(totalDeviceCount); - return deviceCountByGroup; - } - - @Override - public DeviceCountByGroup getDeviceCount(ExtendedFilterSet extendedFilterSet, String userName) - throws InvalidPotentialVulnerabilityValueException, SQLException { - int filteredDeviceCount = this.getFilteredDeviceCount(extendedFilterSet, userName); - DeviceCountByGroup deviceCountByGroup = new DeviceCountByGroup(); - deviceCountByGroup.setGroup("filtered"); - deviceCountByGroup.setDisplayNameForGroup("Filtered"); - deviceCountByGroup.setDeviceCount(filteredDeviceCount); - return deviceCountByGroup; - } - - private int getFilteredDeviceCount(ExtendedFilterSet extendedFilterSet, String userName) - throws InvalidPotentialVulnerabilityValueException, SQLException { - - Map filters = this.extractDatabaseFiltersFromBean(extendedFilterSet); - - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = getAuthenticatedUserTenantDomainId(); - int filteredDeviceCount = 0; - try { - String sql; - con = this.getConnection(); - if (APIUtil.isDeviceAdminUser()) { - sql = "SELECT COUNT(DEVICE_ID) AS DEVICE_COUNT FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_1 + " POLICY__INFO WHERE TENANT_ID = ?"; - } else { - sql = "SELECT COUNT(POLICY__INFO.DEVICE_ID) AS DEVICE_COUNT FROM " - + GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_1 + " POLICY__INFO INNER JOIN" + - " DM_ENROLMENT ENR_DB ON ENR_DB.DEVICE_ID = POLICY__INFO.DEVICE_ID AND " + - " POLICY__INFO.TENANT_ID = ? AND ENR_DB.OWNER = ? "; - } - // appending filters to support advanced filtering options - // [1] appending filter columns - if (filters != null && filters.size() > 0) { - for (String column : filters.keySet()) { - sql = sql + " AND POLICY__INFO." + column + " = ? "; - } - } - // [2] appending filter column values, if exist - stmt = con.prepareStatement(sql); - stmt.setInt(1, tenantId); - int index = 2; - if (!APIUtil.isDeviceAdminUser()) { - stmt.setString(2, userName); - index = 3; - } - if (filters != null && filters.values().size() > 0) { - int i = index; - for (Object value : filters.values()) { - if (value instanceof Integer) { - stmt.setInt(i, (Integer) value); - } else if (value instanceof String) { - stmt.setString(i, (String) value); - } - i++; - } - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - while (rs.next()) { - filteredDeviceCount = rs.getInt("DEVICE_COUNT"); - } - } catch (DeviceAccessAuthorizationException e) { - String msg = "Error occurred while checking device access authorization"; - log.error(msg, e); - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - return filteredDeviceCount; - } - - @Override - public DeviceCountByGroup getFeatureNonCompliantDeviceCount(String featureCode, - BasicFilterSet basicFilterSet, String userName) throws InvalidFeatureCodeValueException, SQLException { - - if (featureCode == null || featureCode.isEmpty()) { - throw new InvalidFeatureCodeValueException("Feature code should not be either null or empty."); - } - - Map filters = this.extractDatabaseFiltersFromBean(basicFilterSet); - - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = getAuthenticatedUserTenantDomainId(); - int filteredDeviceCount = 0; - try { - String sql; - con = this.getConnection(); - if (APIUtil.isDeviceAdminUser()) { - sql = "SELECT COUNT(DEVICE_ID) AS DEVICE_COUNT FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_2 + " FEATURE_INFO WHERE TENANT_ID =" + - " ? AND FEATURE_CODE = ?"; - } else { - sql = "SELECT COUNT(FEATURE_INFO.DEVICE_ID) AS DEVICE_COUNT FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_2 + " FEATURE_INFO INNER JOIN " + - "DM_ENROLMENT ENR_DB ON ENR_DB.DEVICE_ID = FEATURE_INFO.DEVICE_ID AND " + - "FEATURE_INFO.TENANT_ID = ? AND FEATURE_INFO.FEATURE_CODE = ? AND ENR_DB.OWNER = ? "; - } - // appending filters to support advanced filtering options - // [1] appending filter columns - if (filters != null && filters.size() > 0) { - for (String column : filters.keySet()) { - sql = sql + " AND FEATURE_INFO." + column + " = ?"; - } - } - stmt = con.prepareStatement(sql); - // [2] appending filter column values, if exist - stmt.setInt(1, tenantId); - stmt.setString(2, featureCode); - int index = 3; - if (!APIUtil.isDeviceAdminUser()) { - stmt.setString(3, userName); - index = 4; - } - if (filters != null && filters.values().size() > 0) { - int i = index; - for (Object value : filters.values()) { - if (value instanceof Integer) { - stmt.setInt(i, (Integer) value); - } else if (value instanceof String) { - stmt.setString(i, (String) value); - } - i++; - } - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - while (rs.next()) { - filteredDeviceCount = rs.getInt("DEVICE_COUNT"); - } - } catch (DeviceAccessAuthorizationException e) { - String msg = "Error occurred while checking device access authorization"; - log.error(msg, e); - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - - DeviceCountByGroup deviceCountByGroup = new DeviceCountByGroup(); - deviceCountByGroup.setGroup("feature-non-compliant-and-filtered"); - deviceCountByGroup.setDisplayNameForGroup("Feature-non-compliant-and-filtered"); - deviceCountByGroup.setDeviceCount(filteredDeviceCount); - - return deviceCountByGroup; - } - - @Override - public List getDeviceCountsByConnectivityStatuses(String userName) throws SQLException { - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = getAuthenticatedUserTenantDomainId(); - List deviceCountsByConnectivityStatuses = new ArrayList<>(); - try { - String sql; - con = this.getConnection(); - if (APIUtil.isDeviceAdminUser()) { - sql = "SELECT CONNECTIVITY_STATUS, COUNT(DEVICE_ID) AS DEVICE_COUNT FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_1 + - " WHERE TENANT_ID = ? GROUP BY CONNECTIVITY_STATUS"; - } else { - sql = "SELECT POLICY__INFO.CONNECTIVITY_STATUS AS CONNECTIVITY_STATUS, " + - "COUNT(POLICY__INFO.DEVICE_ID) AS DEVICE_COUNT FROM " - + GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_1 + " POLICY__INFO " + - "INNER JOIN DM_ENROLMENT ENR_DB ON ENR_DB.DEVICE_ID = POLICY__INFO.DEVICE_ID " + - " AND POLICY__INFO.TENANT_ID = ? AND ENR_DB.OWNER = ? GROUP BY POLICY__INFO.CONNECTIVITY_STATUS"; - } - stmt = con.prepareStatement(sql); - // [2] appending filter column values, if exist - stmt.setInt(1, tenantId); - if(!APIUtil.isDeviceAdminUser()){ - stmt.setString(2, userName); - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceCountByGroup deviceCountByConnectivityStatus; - while (rs.next()) { - deviceCountByConnectivityStatus = new DeviceCountByGroup(); - deviceCountByConnectivityStatus.setGroup(rs.getString("CONNECTIVITY_STATUS")); - deviceCountByConnectivityStatus.setDisplayNameForGroup(rs.getString("CONNECTIVITY_STATUS")); - deviceCountByConnectivityStatus.setDeviceCount(rs.getInt("DEVICE_COUNT")); - deviceCountsByConnectivityStatuses.add(deviceCountByConnectivityStatus); - } - } catch (DeviceAccessAuthorizationException e) { - String msg = "Error occurred while checking device access authorization"; - log.error(msg, e); - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - return deviceCountsByConnectivityStatuses; - } - - @Override - public List getDeviceCountsByPotentialVulnerabilities(String userName) throws SQLException { - // getting non-compliant device count - DeviceCountByGroup nonCompliantDeviceCount = new DeviceCountByGroup(); - nonCompliantDeviceCount.setGroup(GadgetDataServiceDAOConstants.PotentialVulnerability.NON_COMPLIANT); - nonCompliantDeviceCount.setDisplayNameForGroup("Non-compliant"); - nonCompliantDeviceCount.setDeviceCount(getNonCompliantDeviceCount()); - - // getting unmonitored device count - DeviceCountByGroup unmonitoredDeviceCount = new DeviceCountByGroup(); - 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 { - ExtendedFilterSet extendedFilterSet = new ExtendedFilterSet(); - extendedFilterSet.setPotentialVulnerability(GadgetDataServiceDAOConstants.PotentialVulnerability.NON_COMPLIANT); - try { - String userName = getAuthenticatedUser(); - return this.getFilteredDeviceCount(extendedFilterSet, userName); - } catch (InvalidPotentialVulnerabilityValueException e) { - throw new AssertionError(e); - } - } - - private int getUnmonitoredDeviceCount() throws SQLException { - ExtendedFilterSet extendedFilterSet = new ExtendedFilterSet(); - extendedFilterSet.setPotentialVulnerability(GadgetDataServiceDAOConstants. - PotentialVulnerability.UNMONITORED); - try { - String userName = getAuthenticatedUser(); - return this.getFilteredDeviceCount(extendedFilterSet, userName); - } catch (InvalidPotentialVulnerabilityValueException e) { - throw new AssertionError(e); - } - } - - @Override - public List getDeviceCountsByPlatforms(ExtendedFilterSet extendedFilterSet, String userName) - throws InvalidPotentialVulnerabilityValueException, SQLException { - - Map filters = this.extractDatabaseFiltersFromBean(extendedFilterSet); - - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = getAuthenticatedUserTenantDomainId(); - List filteredDeviceCountsByPlatforms = new ArrayList<>(); - try { - con = this.getConnection(); - String sql, advancedSqlFiltering = ""; - // appending filters if exist, to support advanced filtering options - // [1] appending filter columns, if exist - if (filters != null && filters.size() > 0) { - for (String column : filters.keySet()) { - advancedSqlFiltering = advancedSqlFiltering + " AND POLICY__INFO." + column + " = ? "; - } - } - if (APIUtil.isDeviceAdminUser()) { - sql = "SELECT PLATFORM, COUNT(DEVICE_ID) AS DEVICE_COUNT FROM " + GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_1 + " POLICY__INFO WHERE TENANT_ID = ? " + advancedSqlFiltering + - " GROUP BY PLATFORM"; - } else { - sql = "SELECT POLICY__INFO.PLATFORM, COUNT(POLICY__INFO.DEVICE_ID) AS DEVICE_COUNT FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_1 + " POLICY__INFO INNER JOIN " + - "DM_ENROLMENT ENR_DB ON ENR_DB.DEVICE_ID = POLICY__INFO.DEVICE_ID AND " + - "POLICY__INFO.TENANT_ID = ? AND ENR_DB.OWNER = ? " + advancedSqlFiltering + " GROUP BY " + - "POLICY__INFO.PLATFORM"; - } - stmt = con.prepareStatement(sql); - // [2] appending filter column values, if exist - stmt.setInt(1, tenantId); - int index = 2; - if (!APIUtil.isDeviceAdminUser()) { - stmt.setString(2, userName); - index = 3; - } - if (filters != null && filters.values().size() > 0) { - int i = index; - for (Object value : filters.values()) { - if (value instanceof Integer) { - stmt.setInt(i, (Integer) value); - } else if (value instanceof String) { - stmt.setString(i, (String) value); - } - i++; - } - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceCountByGroup filteredDeviceCountByPlatform; - while (rs.next()) { - filteredDeviceCountByPlatform = new DeviceCountByGroup(); - filteredDeviceCountByPlatform.setGroup(rs.getString("PLATFORM")); - filteredDeviceCountByPlatform.setDisplayNameForGroup(rs.getString("PLATFORM").toUpperCase()); - filteredDeviceCountByPlatform.setDeviceCount(rs.getInt("DEVICE_COUNT")); - filteredDeviceCountsByPlatforms.add(filteredDeviceCountByPlatform); - } - } catch (DeviceAccessAuthorizationException e) { - String msg = "Error occurred while checking device access authorization"; - log.error(msg, e); - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - return filteredDeviceCountsByPlatforms; - } - - @Override - public List - getFeatureNonCompliantDeviceCountsByPlatforms(String featureCode, - BasicFilterSet basicFilterSet, String userName) throws InvalidFeatureCodeValueException, SQLException { - - if (featureCode == null || featureCode.isEmpty()) { - throw new InvalidFeatureCodeValueException("Feature code should not be either null or empty."); - } - - Map filters = this.extractDatabaseFiltersFromBean(basicFilterSet); - - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = getAuthenticatedUserTenantDomainId(); - List filteredDeviceCountsByPlatforms = new ArrayList<>(); - try { - con = this.getConnection(); - String sql, advancedSqlFiltering = ""; - // appending filters if exist, to support advanced filtering options - // [1] appending filter columns, if exist - if (filters != null && filters.size() > 0) { - for (String column : filters.keySet()) { - advancedSqlFiltering = advancedSqlFiltering + " AND FEATURE_INFO." + column + " = ? "; - } - } - if (APIUtil.isDeviceAdminUser()) { - sql = "SELECT PLATFORM, COUNT(DEVICE_ID) AS DEVICE_COUNT FROM " + GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_2 + " FEATURE_INFO WHERE TENANT_ID = ? AND FEATURE_CODE = ? " + - advancedSqlFiltering + " GROUP BY PLATFORM"; - } else { - sql = "SELECT FEATURE_INFO.PLATFORM, COUNT(FEATURE_INFO.DEVICE_ID) AS DEVICE_COUNT FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_2 + " FEATURE_INFO INNER JOIN " + - "DM_ENROLMENT ENR_DB ON ENR_DB.DEVICE_ID = FEATURE_INFO.DEVICE_ID " + - " AND FEATURE_INFO.TENANT_ID = ? AND FEATURE_INFO.FEATURE_CODE = ? AND ENR_DB.OWNER = ? " + - advancedSqlFiltering + " GROUP BY FEATURE_INFO.PLATFORM"; - } - - stmt = con.prepareStatement(sql); - // [2] appending filter column values, if exist - stmt.setInt(1, tenantId); - stmt.setString(2, featureCode); - int index = 3; - if (!APIUtil.isDeviceAdminUser()) { - stmt.setString(3, userName); - index = 4; - } - if (filters != null && filters.values().size() > 0) { - int i = index; - for (Object value : filters.values()) { - if (value instanceof Integer) { - stmt.setInt(i, (Integer) value); - } else if (value instanceof String) { - stmt.setString(i, (String) value); - } - i++; - } - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceCountByGroup filteredDeviceCountByPlatform; - while (rs.next()) { - filteredDeviceCountByPlatform = new DeviceCountByGroup(); - filteredDeviceCountByPlatform.setGroup(rs.getString("PLATFORM")); - filteredDeviceCountByPlatform.setDisplayNameForGroup(rs.getString("PLATFORM").toUpperCase()); - filteredDeviceCountByPlatform.setDeviceCount(rs.getInt("DEVICE_COUNT")); - filteredDeviceCountsByPlatforms.add(filteredDeviceCountByPlatform); - } - } catch (DeviceAccessAuthorizationException e) { - String msg = "Error occurred while checking device access authorization"; - log.error(msg, e); - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - return filteredDeviceCountsByPlatforms; - } - - @Override - public List getDeviceCountsByOwnershipTypes(ExtendedFilterSet extendedFilterSet, String userName) - throws InvalidPotentialVulnerabilityValueException, SQLException { - - Map filters = this.extractDatabaseFiltersFromBean(extendedFilterSet); - - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = getAuthenticatedUserTenantDomainId(); - List filteredDeviceCountsByOwnershipTypes = new ArrayList<>(); - try { - con = this.getConnection(); - String sql, advancedSqlFiltering = ""; - // appending filters if exist, to support advanced filtering options - // [1] appending filter columns, if exist - if (filters != null && filters.size() > 0) { - for (String column : filters.keySet()) { - advancedSqlFiltering = advancedSqlFiltering + " AND POLICY__INFO." + column + " = ? "; - } - } - if(APIUtil.isDeviceAdminUser()){ - sql = "SELECT OWNERSHIP, COUNT(DEVICE_ID) AS DEVICE_COUNT FROM " + GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_1 + " POLICY__INFO WHERE TENANT_ID = ? " + - advancedSqlFiltering + "GROUP BY OWNERSHIP"; - }else{ - sql = "SELECT POLICY__INFO.OWNERSHIP, COUNT(POLICY__INFO.DEVICE_ID) AS DEVICE_COUNT FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_1 + " POLICY__INFO INNER JOIN " + - "DM_ENROLMENT ENR_DB ON ENR_DB.DEVICE_ID = POLICY__INFO.DEVICE_ID AND POLICY__INFO.TENANT_ID" + - " = ? AND ENR_DB.OWNER = ? " + advancedSqlFiltering + " GROUP BY POLICY__INFO.OWNERSHIP"; - } - stmt = con.prepareStatement(sql); - // [2] appending filter column values, if exist - stmt.setInt(1, tenantId); - int index = 2; - if(!APIUtil.isDeviceAdminUser()){ - stmt.setString(2, userName); - index = 3; - } - if (filters != null && filters.values().size() > 0) { - int i = index; - for (Object value : filters.values()) { - if (value instanceof Integer) { - stmt.setInt(i, (Integer) value); - } else if (value instanceof String) { - stmt.setString(i, (String) value); - } - i++; - } - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceCountByGroup filteredDeviceCountByOwnershipType; - while (rs.next()) { - filteredDeviceCountByOwnershipType = new DeviceCountByGroup(); - filteredDeviceCountByOwnershipType.setGroup(rs.getString("OWNERSHIP")); - filteredDeviceCountByOwnershipType.setDisplayNameForGroup(rs.getString("OWNERSHIP")); - filteredDeviceCountByOwnershipType.setDeviceCount(rs.getInt("DEVICE_COUNT")); - filteredDeviceCountsByOwnershipTypes.add(filteredDeviceCountByOwnershipType); - } - } catch (DeviceAccessAuthorizationException e) { - String msg = "Error occurred while checking device access authorization"; - log.error(msg, e); - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - return filteredDeviceCountsByOwnershipTypes; - } - - @Override - public List - getFeatureNonCompliantDeviceCountsByOwnershipTypes(String featureCode, - BasicFilterSet basicFilterSet, String userName) throws InvalidFeatureCodeValueException, SQLException { - - if (featureCode == null || featureCode.isEmpty()) { - throw new InvalidFeatureCodeValueException("Feature code should not be either null or empty."); - } - - Map filters = this.extractDatabaseFiltersFromBean(basicFilterSet); - - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = getAuthenticatedUserTenantDomainId(); - List filteredDeviceCountsByOwnershipTypes = new ArrayList<>(); - try { - con = this.getConnection(); - String sql, advancedSqlFiltering = ""; - // appending filters if exist, to support advanced filtering options - // [1] appending filter columns, if exist - if (filters != null && filters.size() > 0) { - for (String column : filters.keySet()) { - advancedSqlFiltering = advancedSqlFiltering + " AND FEATURE_INFO." + column + " = ? "; - } - } - if(APIUtil.isDeviceAdminUser()){ - sql = "SELECT OWNERSHIP, COUNT(DEVICE_ID) AS DEVICE_COUNT FROM " + GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_2 + " FEATURE_INFO WHERE TENANT_ID = ? AND FEATURE_CODE = ? " + - advancedSqlFiltering + "GROUP BY OWNERSHIP"; - }else{ - sql = "SELECT FEATURE_INFO.OWNERSHIP, COUNT(FEATURE_INFO.DEVICE_ID) AS DEVICE_COUNT FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_2 + " FEATURE_INFO INNER JOIN " + - "DM_ENROLMENT ENR_DB ON ENR_DB.DEVICE_ID = FEATURE_INFO.DEVICE_ID AND FEATURE_INFO.TENANT_ID " + - "= ? AND FEATURE_INFO.FEATURE_CODE = ? AND ENR_DB.OWNER = ? " + advancedSqlFiltering - + " GROUP BY FEATURE_INFO.OWNERSHIP"; - } - stmt = con.prepareStatement(sql); - // [2] appending filter column values, if exist - stmt.setInt(1, tenantId); - stmt.setString(2, featureCode); - int index = 3; - if(!APIUtil.isDeviceAdminUser()){ - stmt.setString(3, userName); - index = 4; - } - if (filters != null && filters.values().size() > 0) { - int i = index; - for (Object value : filters.values()) { - if (value instanceof Integer) { - stmt.setInt(i, (Integer) value); - } else if (value instanceof String) { - stmt.setString(i, (String) value); - } - i++; - } - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceCountByGroup filteredDeviceCountByOwnershipType; - while (rs.next()) { - filteredDeviceCountByOwnershipType = new DeviceCountByGroup(); - filteredDeviceCountByOwnershipType.setGroup(rs.getString("OWNERSHIP")); - filteredDeviceCountByOwnershipType.setDisplayNameForGroup(rs.getString("OWNERSHIP")); - filteredDeviceCountByOwnershipType.setDeviceCount(rs.getInt("DEVICE_COUNT")); - filteredDeviceCountsByOwnershipTypes.add(filteredDeviceCountByOwnershipType); - } - } catch (DeviceAccessAuthorizationException e) { - String msg = "Error occurred while checking device access authorization"; - log.error(msg, e); - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - return filteredDeviceCountsByOwnershipTypes; - } - - @Override - public List getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, String userName) - throws InvalidPotentialVulnerabilityValueException, SQLException { - - Map filters = this.extractDatabaseFiltersFromBean(extendedFilterSet); - - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = getAuthenticatedUserTenantDomainId(); - List filteredDevicesWithDetails = new ArrayList<>(); - try { - con = this.getConnection(); - String sql; - if(APIUtil.isDeviceAdminUser()){ - sql = "SELECT DEVICE_ID, DEVICE_IDENTIFICATION, PLATFORM, OWNERSHIP, CONNECTIVITY_STATUS FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_1 + " POLICY__INFO WHERE TENANT_ID = ?"; - }else{ - sql = "SELECT POLICY__INFO.DEVICE_ID, POLICY__INFO.DEVICE_IDENTIFICATION, POLICY__INFO.PLATFORM," + - " POLICY__INFO.OWNERSHIP, POLICY__INFO.CONNECTIVITY_STATUS FROM "+ - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_1+" POLICY__INFO INNER JOIN " + - "DM_ENROLMENT ENR_DB ON ENR_DB.DEVICE_ID = POLICY__INFO.DEVICE_ID AND " + - "POLICY__INFO.TENANT_ID = ? AND ENR_DB.OWNER = ?"; - } - // appending filters to support advanced filtering options - // [1] appending filter columns, if exist - if (filters != null && filters.size() > 0) { - for (String column : filters.keySet()) { - sql = sql + " AND POLICY__INFO." + column + " = ?"; - } - } - stmt = con.prepareStatement(sql); - // [2] appending filter column values, if exist - stmt.setInt(1, tenantId); - int index = 2; - if(!APIUtil.isDeviceAdminUser()){ - stmt.setString(2, userName); - index = 3; - } - if (filters != null && filters.values().size() > 0) { - int i = index; - for (Object value : filters.values()) { - if (value instanceof Integer) { - stmt.setInt(i, (Integer) value); - } else if (value instanceof String) { - stmt.setString(i, (String) value); - } - i++; - } - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceWithDetails filteredDeviceWithDetails; - while (rs.next()) { - filteredDeviceWithDetails = new DeviceWithDetails(); - filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); - filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); - filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); - filteredDeviceWithDetails.setOwnershipType(rs.getString("OWNERSHIP")); - filteredDeviceWithDetails.setConnectivityStatus(rs.getString("CONNECTIVITY_STATUS")); - filteredDevicesWithDetails.add(filteredDeviceWithDetails); - } - } catch (DeviceAccessAuthorizationException e) { - String msg = "Error occurred while checking device access authorization"; - log.error(msg, e); - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - return filteredDevicesWithDetails; - } - - @Override - public List getFeatureNonCompliantDevicesWithDetails(String featureCode, - BasicFilterSet basicFilterSet, String userName) throws InvalidFeatureCodeValueException, SQLException { - - if (featureCode == null || featureCode.isEmpty()) { - throw new InvalidFeatureCodeValueException("Feature code should not be either null or empty."); - } - - Map filters = this.extractDatabaseFiltersFromBean(basicFilterSet); - - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = getAuthenticatedUserTenantDomainId(); - List filteredDevicesWithDetails = new ArrayList<>(); - try { - con = this.getConnection(); - String sql; - if(APIUtil.isDeviceAdminUser()){ - sql = "SELECT DEVICE_ID, DEVICE_IDENTIFICATION, PLATFORM, OWNERSHIP, CONNECTIVITY_STATUS FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_2 + - " WHERE TENANT_ID = ? AND FEATURE_CODE = ?"; - }else{ - sql = "SELECT FEATURE_INFO.DEVICE_ID, FEATURE_INFO.DEVICE_IDENTIFICATION, FEATURE_INFO.PLATFORM, " + - "FEATURE_INFO.OWNERSHIP, FEATURE_INFO.CONNECTIVITY_STATUS FROM "+ - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_2+" FEATURE_INFO INNER JOIN " + - "DM_ENROLMENT ENR_DB ON ENR_DB.DEVICE_ID = FEATURE_INFO.DEVICE_ID AND FEATURE_INFO.TENANT_ID" + - " = ? AND FEATURE_INFO.FEATURE_CODE = ? AND ENR_DB.OWNER = ? "; - } - // appending filters to support advanced filtering options - // [1] appending filter columns, if exist - if (filters != null && filters.size() > 0) { - for (String column : filters.keySet()) { - sql = sql + " AND FEATURE_INFO." + column + " = ?"; - } - } - stmt = con.prepareStatement(sql); - // [2] appending filter column values, if exist - stmt.setInt(1, tenantId); - stmt.setString(2, featureCode); - int index = 3; - if(!APIUtil.isDeviceAdminUser()){ - stmt.setString(3, userName); - index = 4; - } - if (filters != null && filters.values().size() > 0) { - int i = index; - for (Object value : filters.values()) { - if (value instanceof Integer) { - stmt.setInt(i, (Integer) value); - } else if (value instanceof String) { - stmt.setString(i, (String) value); - } - i++; - } - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceWithDetails filteredDeviceWithDetails; - while (rs.next()) { - filteredDeviceWithDetails = new DeviceWithDetails(); - filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); - filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); - filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); - filteredDeviceWithDetails.setOwnershipType(rs.getString("OWNERSHIP")); - filteredDeviceWithDetails.setConnectivityStatus(rs.getString("CONNECTIVITY_STATUS")); - filteredDevicesWithDetails.add(filteredDeviceWithDetails); - } - } catch (DeviceAccessAuthorizationException e) { - String msg = "Error occurred while checking device access authorization"; - log.error(msg, e); - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - return filteredDevicesWithDetails; - } - - protected Map extractDatabaseFiltersFromBean(BasicFilterSet basicFilterSet) { - if (basicFilterSet == null) { - return null; - } - - Map filters = new LinkedHashMap<>(); - - String connectivityStatus = basicFilterSet.getConnectivityStatus(); - if (connectivityStatus != null && !connectivityStatus.isEmpty()) { - filters.put("CONNECTIVITY_STATUS", connectivityStatus); - } - - String platform = basicFilterSet.getPlatform(); - if (platform != null && !platform.isEmpty()) { - filters.put("PLATFORM", platform); - } - - String ownership = basicFilterSet.getOwnership(); - if (ownership != null && !ownership.isEmpty()) { - filters.put("OWNERSHIP", ownership); - } - - return filters; - } - - protected Map extractDatabaseFiltersFromBean(ExtendedFilterSet extendedFilterSet) - throws InvalidPotentialVulnerabilityValueException { - if (extendedFilterSet == null) { - return null; - } - - Map filters = this.extractDatabaseFiltersFromBean((BasicFilterSet) extendedFilterSet); - - String potentialVulnerability = extendedFilterSet.getPotentialVulnerability(); - if (potentialVulnerability != null && !potentialVulnerability.isEmpty()) { - 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 InvalidPotentialVulnerabilityValueException("Invalid use of value for potential " + - "vulnerability. Value of potential vulnerability could only be either " + - GadgetDataServiceDAOConstants.PotentialVulnerability.NON_COMPLIANT + " or " + - GadgetDataServiceDAOConstants.PotentialVulnerability.UNMONITORED + "."); - } - } - - return filters; - } - - protected 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/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 deleted file mode 100644 index 0033f19327..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/GadgetDataServiceDAO.java +++ /dev/null @@ -1,74 +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; - -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceWithDetails; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroup; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.BasicFilterSet; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.ExtendedFilterSet; -import org.wso2.carbon.device.mgt.analytics.dashboard.exception.*; -import org.wso2.carbon.device.mgt.common.PaginationResult; - -import java.sql.SQLException; -import java.util.List; - -public interface GadgetDataServiceDAO { - - DeviceCountByGroup getDeviceCount(ExtendedFilterSet extendedFilterSet, String userName) - throws InvalidPotentialVulnerabilityValueException, SQLException; - - DeviceCountByGroup getFeatureNonCompliantDeviceCount(String featureCode, BasicFilterSet basicFilterSet, String userName) - throws InvalidFeatureCodeValueException, SQLException; - - DeviceCountByGroup getTotalDeviceCount(String userName) throws SQLException; - - List getDeviceCountsByConnectivityStatuses(String userName) throws SQLException; - - List getDeviceCountsByPotentialVulnerabilities(String userName) throws SQLException; - - PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount, String userName) throws - InvalidStartIndexValueException, InvalidResultCountValueException, SQLException; - - List getDeviceCountsByPlatforms(ExtendedFilterSet extendedFilterSet, String userName) - throws InvalidPotentialVulnerabilityValueException, SQLException; - - List getFeatureNonCompliantDeviceCountsByPlatforms(String featureCode, - BasicFilterSet basicFilterSet, String userName) throws InvalidFeatureCodeValueException, SQLException; - - List getDeviceCountsByOwnershipTypes(ExtendedFilterSet extendedFilterSet, String userName) - throws InvalidPotentialVulnerabilityValueException, SQLException; - - List getFeatureNonCompliantDeviceCountsByOwnershipTypes(String featureCode, - BasicFilterSet basicFilterSet, String userName) throws InvalidFeatureCodeValueException, SQLException; - - PaginationResult getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, int startIndex, int resultCount, String userName) - throws InvalidPotentialVulnerabilityValueException, - InvalidStartIndexValueException, InvalidResultCountValueException, SQLException; - - PaginationResult getFeatureNonCompliantDevicesWithDetails(String featureCode, BasicFilterSet basicFilterSet, - int startIndex, int resultCount, String userName) throws InvalidFeatureCodeValueException, - InvalidStartIndexValueException, InvalidResultCountValueException, SQLException; - - List getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, String userName) - throws InvalidPotentialVulnerabilityValueException, SQLException; - - List getFeatureNonCompliantDevicesWithDetails(String featureCode, - BasicFilterSet basicFilterSet, String userName) throws InvalidFeatureCodeValueException, 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/GadgetDataServiceDAOConstants.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/GadgetDataServiceDAOConstants.java deleted file mode 100644 index cd770b9651..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/GadgetDataServiceDAOConstants.java +++ /dev/null @@ -1,61 +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; - -public final class GadgetDataServiceDAOConstants { - - public static class DatabaseView { - - public static final String DEVICES_VIEW_1 = "POLICY_COMPLIANCE_INFO"; - public static final String DEVICES_VIEW_2 = "FEATURE_NON_COMPLIANCE_INFO"; - - private DatabaseView() { - throw new AssertionError(); - } - - } - - public static class Pagination { - - // Minimum acceptable values for start index and result count - public static final int MIN_START_INDEX = 0; - public static final int MIN_RESULT_COUNT = 5; - - private Pagination() { - throw new AssertionError(); - } - - } - - public static class PotentialVulnerability { - - // These constants do not hold actual database values - // These are just abstract values defined and used @ Gadget Data Service DAO Implementation layer - public static final String NON_COMPLIANT = "NON_COMPLIANT"; - public static final String UNMONITORED = "UNMONITORED"; - - private PotentialVulnerability() { - throw new AssertionError(); - } - - } - - private GadgetDataServiceDAOConstants() { throw new AssertionError(); } - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/GadgetDataServiceDAOFactory.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/GadgetDataServiceDAOFactory.java deleted file mode 100644 index d202b685c1..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/GadgetDataServiceDAOFactory.java +++ /dev/null @@ -1,155 +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; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.impl.GenericGadgetDataServiceDAOImpl; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.impl.MSSQLGadgetDataServiceDAOImpl; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.impl.OracleGadgetDataServiceDAOImpl; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.impl.PostgreSQLGadgetDataServiceDAOImpl; -import org.wso2.carbon.device.mgt.common.DeviceManagementConstants; -import org.wso2.carbon.device.mgt.common.IllegalTransactionStateException; -import org.wso2.carbon.device.mgt.common.UnsupportedDatabaseEngineException; -import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig; -import org.wso2.carbon.device.mgt.core.config.datasource.JNDILookupDefinition; -import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil; - -import javax.sql.DataSource; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.Hashtable; -import java.util.List; - -@SuppressWarnings("unused") -public class GadgetDataServiceDAOFactory { - - private static final Log log = LogFactory.getLog(GadgetDataServiceDAOFactory.class); - private static DataSource dataSource; - private static String databaseEngine; - private static ThreadLocal currentConnection = new ThreadLocal<>(); - - public static GadgetDataServiceDAO getGadgetDataServiceDAO() { - if (databaseEngine != null) { - switch (databaseEngine) { - case DeviceManagementConstants.DataBaseTypes.DB_TYPE_H2: - return new GenericGadgetDataServiceDAOImpl(); - case DeviceManagementConstants.DataBaseTypes.DB_TYPE_MYSQL: - return new GenericGadgetDataServiceDAOImpl(); - case DeviceManagementConstants.DataBaseTypes.DB_TYPE_MSSQL: - return new MSSQLGadgetDataServiceDAOImpl(); - case DeviceManagementConstants.DataBaseTypes.DB_TYPE_POSTGRESQL: - return new PostgreSQLGadgetDataServiceDAOImpl(); - case DeviceManagementConstants.DataBaseTypes.DB_TYPE_ORACLE: - return new OracleGadgetDataServiceDAOImpl(); - default: - throw new UnsupportedDatabaseEngineException("Unsupported database engine : " + databaseEngine); - } - } - throw new IllegalStateException("Database engine has not initialized properly."); - } - - public static void init(DataSourceConfig config) { - dataSource = resolveDataSource(config); - try { - databaseEngine = dataSource.getConnection().getMetaData().getDatabaseProductName(); - } catch (SQLException e) { - log.error("Error occurred while retrieving config.datasource connection.", e); - } - } - - public static void init(DataSource dtSource) { - dataSource = dtSource; - try { - databaseEngine = dataSource.getConnection().getMetaData().getDatabaseProductName(); - } catch (SQLException e) { - log.error("Error occurred while retrieving config.datasource connection.", e); - } - } - - public static void openConnection() throws SQLException { - Connection conn = currentConnection.get(); - if (conn != null) { - throw new IllegalTransactionStateException("A transaction is already active within the context of " + - "this particular thread. Therefore, calling 'beginTransaction/openConnection' while another " + - "transaction is already active is a sign of improper transaction handling."); - } - conn = dataSource.getConnection(); - currentConnection.set(conn); - } - - public static Connection getConnection() throws SQLException { - Connection conn = currentConnection.get(); - if (conn == null) { - throw new IllegalTransactionStateException("No connection is associated with the current transaction. " + - "This might have ideally been caused by not properly initiating the transaction via " + - "'beginTransaction'/'openConnection' methods."); - } - return conn; - } - - public static void closeConnection() { - Connection conn = currentConnection.get(); - if (conn == null) { - throw new IllegalTransactionStateException("No connection is associated with the current transaction. " + - "This might have ideally been caused by not properly initiating the transaction via " + - "'beginTransaction'/'openConnection' methods."); - } - try { - conn.close(); - } catch (SQLException e) { - log.warn("Error occurred while close the connection."); - } - currentConnection.remove(); - } - - - /** - * Resolve data source from the data source definition. - * - * @param config data source configuration. - * @return data source resolved from the data source definition. - */ - private static DataSource resolveDataSource(DataSourceConfig config) { - DataSource dataSource = null; - if (config == null) { - throw new RuntimeException( - "Device Management Repository data source configuration is null and " + - "thus, is not initialized."); - } - JNDILookupDefinition jndiConfig = config.getJndiLookupDefinition(); - if (jndiConfig != null) { - if (log.isDebugEnabled()) { - log.debug("Initializing Device Management Repository data source using the JNDI Lookup Definition."); - } - List jndiPropertyList = jndiConfig.getJndiProperties(); - if (jndiPropertyList != null) { - Hashtable jndiProperties = new Hashtable<>(); - for (JNDILookupDefinition.JNDIProperty prop : jndiPropertyList) { - jndiProperties.put(prop.getName(), prop.getValue()); - } - dataSource = DeviceManagementDAOUtil.lookupDataSource(jndiConfig.getJndiName(), jndiProperties); - } else { - dataSource = DeviceManagementDAOUtil.lookupDataSource(jndiConfig.getJndiName(), null); - } - } - return dataSource; - } - -} 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/GenericGadgetDataServiceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/impl/GenericGadgetDataServiceDAOImpl.java deleted file mode 100644 index 68defcc788..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/impl/GenericGadgetDataServiceDAOImpl.java +++ /dev/null @@ -1,374 +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.impl; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceWithDetails; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroup; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.BasicFilterSet; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.ExtendedFilterSet; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.AbstractGadgetDataServiceDAO; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOConstants; -import org.wso2.carbon.device.mgt.analytics.dashboard.exception.*; -import org.wso2.carbon.device.mgt.analytics.dashboard.util.APIUtil; -import org.wso2.carbon.device.mgt.common.PaginationResult; -import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException; -import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import static org.wso2.carbon.device.mgt.analytics.dashboard.util.APIUtil.getAuthenticatedUserTenantDomainId; - -public class GenericGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO { - - private static final Log log = LogFactory.getLog(GenericGadgetDataServiceDAOImpl.class); - - @Override - public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount, String userName) - throws InvalidStartIndexValueException, InvalidResultCountValueException, SQLException { - - if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { - throw new InvalidStartIndexValueException("Start index should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); - } - - if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { - throw new InvalidResultCountValueException("Result count should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); - } - - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = getAuthenticatedUserTenantDomainId(); - List filteredNonCompliantDeviceCountsByFeatures = new ArrayList<>(); - int totalRecordsCount = 0; - try { - String sql; - con = this.getConnection(); - if(APIUtil.isDeviceAdminUser()){ - sql = "SELECT FEATURE_CODE, COUNT(DEVICE_ID) AS DEVICE_COUNT FROM " + GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_2 + " WHERE TENANT_ID = ? GROUP BY FEATURE_CODE " + - "ORDER BY DEVICE_COUNT DESC LIMIT ?, ?"; - }else{ - sql = "SELECT FEATURE_INFO.FEATURE_CODE, COUNT(FEATURE_INFO.DEVICE_ID) AS DEVICE_COUNT " + - "FROM "+GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_2+" FEATURE_INFO INNER JOIN " + - "DM_ENROLMENT ENR_DB ON ENR_DB.DEVICE_ID = FEATURE_INFO.DEVICE_ID AND " + - "FEATURE_INFO.TENANT_ID = ? AND ENR_DB.OWNER = ? GROUP BY FEATURE_INFO.FEATURE_CODE ORDER BY" + - " DEVICE_COUNT DESC LIMIT ?, ?"; - } - stmt = con.prepareStatement(sql); - stmt.setInt(1, tenantId); - if(!APIUtil.isDeviceAdminUser()){ - stmt.setString(2, userName); - stmt.setInt(3, startIndex); - stmt.setInt(4, resultCount); - }else{ - stmt.setInt(2, startIndex); - stmt.setInt(3, resultCount); - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceCountByGroup filteredNonCompliantDeviceCountByFeature; - while (rs.next()) { - filteredNonCompliantDeviceCountByFeature = new DeviceCountByGroup(); - 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 - if(APIUtil.isDeviceAdminUser()){ - sql = "SELECT COUNT(FEATURE_CODE) AS NON_COMPLIANT_FEATURE_COUNT FROM (SELECT DISTINCT FEATURE_CODE FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_2 + " WHERE TENANT_ID = ?) " + - "NON_COMPLIANT_FEATURE_CODE"; - }else{ - sql = "SELECT COUNT(FEATURE_CODE) AS NON_COMPLIANT_FEATURE_COUNT FROM (SELECT DISTINCT " + - "FEATURE_INFO.FEATURE_CODE FROM "+GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_2 - +" FEATURE_INFO INNER JOIN DM_ENROLMENT ENR_DB ON ENR_DB.DEVICE_ID = FEATURE_INFO.DEVICE_ID " + - "AND FEATURE_INFO.TENANT_ID = ? AND ENR_DB.OWNER = ? ) NON_COMPLIANT_FEATURE_CODE"; - } - stmt = con.prepareStatement(sql); - stmt.setInt(1, tenantId); - if(!APIUtil.isDeviceAdminUser()){ - stmt.setString(2, userName); - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - while (rs.next()) { - totalRecordsCount = rs.getInt("NON_COMPLIANT_FEATURE_COUNT"); - } - } catch (DeviceAccessAuthorizationException e) { - String msg = "Error occurred while checking device access authorization"; - log.error(msg, e); - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - PaginationResult paginationResult = new PaginationResult(); - paginationResult.setData(filteredNonCompliantDeviceCountsByFeatures); - paginationResult.setRecordsTotal(totalRecordsCount); - return paginationResult; - } - - @Override - public PaginationResult getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, int startIndex, - int resultCount, String userName) throws InvalidPotentialVulnerabilityValueException, - InvalidStartIndexValueException, InvalidResultCountValueException, SQLException { - - if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { - throw new InvalidStartIndexValueException("Start index should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); - } - - if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { - throw new InvalidResultCountValueException("Result count should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); - } - - Map filters = this.extractDatabaseFiltersFromBean(extendedFilterSet); - - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = getAuthenticatedUserTenantDomainId(); - List filteredDevicesWithDetails = new ArrayList<>(); - int totalRecordsCount = 0; - try { - con = this.getConnection(); - String sql, advancedSqlFiltering = ""; - // appending filters if exist, to support advanced filtering options - // [1] appending filter columns, if exist - if (filters != null && filters.size() > 0) { - for (String column : filters.keySet()) { - advancedSqlFiltering = advancedSqlFiltering + " AND POLICY__INFO." + column + " = ? "; - } - } - if(APIUtil.isDeviceAdminUser()){ - sql = "SELECT DEVICE_ID, DEVICE_IDENTIFICATION, PLATFORM, OWNERSHIP, CONNECTIVITY_STATUS FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_1 + " POLICY__INFO WHERE TENANT_ID = ? " + - advancedSqlFiltering + "ORDER BY DEVICE_ID ASC LIMIT ?, ?"; - }else{ - sql = "SELECT POLICY__INFO.DEVICE_ID, POLICY__INFO.DEVICE_IDENTIFICATION, POLICY__INFO.PLATFORM, " + - "POLICY__INFO.OWNERSHIP, POLICY__INFO.CONNECTIVITY_STATUS FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_1 + " POLICY__INFO INNER JOIN DM_ENROLMENT " + - "ENR_DB ON ENR_DB.DEVICE_ID = POLICY__INFO.DEVICE_ID AND " + - "POLICY__INFO.TENANT_ID = ? AND ENR_DB.OWNER = ? " + advancedSqlFiltering + " ORDER BY " + - "POLICY__INFO.DEVICE_ID ASC LIMIT ?,?"; - } - stmt = con.prepareStatement(sql); - // [2] appending filter column values, if exist - stmt.setInt(1, tenantId); - int index = 2; - if(!APIUtil.isDeviceAdminUser()){ - stmt.setString(2, userName); - index = 3; - } - if (filters != null && filters.values().size() > 0) { - int i = index; - for (Object value : filters.values()) { - if (value instanceof Integer) { - stmt.setInt(i, (Integer) value); - } else if (value instanceof String) { - stmt.setString(i, (String) value); - } - i++; - } - stmt.setInt(i, startIndex); - stmt.setInt(++i, resultCount); - } else { - stmt.setInt(3, startIndex); - stmt.setInt(4, resultCount); - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceWithDetails filteredDeviceWithDetails; - while (rs.next()) { - filteredDeviceWithDetails = new DeviceWithDetails(); - filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); - filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); - filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); - filteredDeviceWithDetails.setOwnershipType(rs.getString("OWNERSHIP")); - filteredDeviceWithDetails.setConnectivityStatus(rs.getString("CONNECTIVITY_STATUS")); - filteredDevicesWithDetails.add(filteredDeviceWithDetails); - } - if(APIUtil.isDeviceAdminUser()){ - sql = "SELECT COUNT(DEVICE_ID) AS DEVICE_COUNT FROM " + GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_1 + " WHERE TENANT_ID = ?"; - }else{ - sql = "SELECT COUNT(POLICY__INFO.DEVICE_ID) AS DEVICE_COUNT FROM "+GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_1+" POLICY__INFO INNER JOIN DM_ENROLMENT ENR_DB ON " + - "ENR_DB.DEVICE_ID = POLICY__INFO.DEVICE_ID AND POLICY__INFO.TENANT_ID = ? AND ENR_DB.OWNER = ? "; - } - stmt = con.prepareStatement(sql); - stmt.setInt(1, tenantId); - if(!APIUtil.isDeviceAdminUser()){ - stmt.setString(2, userName); - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - while (rs.next()) { - totalRecordsCount = rs.getInt("DEVICE_COUNT"); - } - } catch (DeviceAccessAuthorizationException e) { - String msg = "Error occurred while checking device access authorization"; - log.error(msg, e); - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - PaginationResult paginationResult = new PaginationResult(); - paginationResult.setData(filteredDevicesWithDetails); - paginationResult.setRecordsTotal(totalRecordsCount); - return paginationResult; - } - - @Override - public PaginationResult getFeatureNonCompliantDevicesWithDetails(String featureCode, - BasicFilterSet basicFilterSet, int startIndex, int resultCount, String userName) - throws InvalidFeatureCodeValueException, InvalidStartIndexValueException, - InvalidResultCountValueException, SQLException { - - if (featureCode == null || featureCode.isEmpty()) { - throw new InvalidFeatureCodeValueException("Feature code should not be either null or empty."); - } - - if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { - throw new InvalidStartIndexValueException("Start index should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); - } - - if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { - throw new InvalidResultCountValueException("Result count should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); - } - - Map filters = this.extractDatabaseFiltersFromBean(basicFilterSet); - - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = getAuthenticatedUserTenantDomainId(); - List filteredDevicesWithDetails = new ArrayList<>(); - int totalRecordsCount = 0; - try { - con = this.getConnection(); - String sql, advancedSqlFiltering = ""; - // appending filters if exist, to support advanced filtering options - // [1] appending filter columns, if exist - if (filters != null && filters.size() > 0) { - for (String column : filters.keySet()) { - advancedSqlFiltering = advancedSqlFiltering + "AND FEATURE_INFO." + column + " = ? "; - } - } - if(APIUtil.isDeviceAdminUser()){ - sql = "SELECT DEVICE_ID, DEVICE_IDENTIFICATION, PLATFORM, OWNERSHIP, CONNECTIVITY_STATUS FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_2 + - " FEATURE_INFO WHERE TENANT_ID = ? AND FEATURE_CODE = ? " + advancedSqlFiltering + - "ORDER BY DEVICE_ID ASC LIMIT ?, ?"; - }else{ - sql = "SELECT FEATURE_INFO.DEVICE_ID, FEATURE_INFO.DEVICE_IDENTIFICATION, FEATURE_INFO.PLATFORM, " + - "FEATURE_INFO.OWNERSHIP, FEATURE_INFO.CONNECTIVITY_STATUS FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_2 + " FEATURE_INFO INNER JOIN DM_ENROLMENT " + - "ENR_DB ON ENR_DB.DEVICE_ID = FEATURE_INFO.DEVICE_ID " + - " AND FEATURE_INFO.TENANT_ID = ? AND FEATURE_INFO.FEATURE_CODE = ? AND ENR_DB.OWNER = ? " + - advancedSqlFiltering + " ORDER BY DEVICE_ID ASC LIMIT ?,?"; - } - - stmt = con.prepareStatement(sql); - // [2] appending filter column values, if exist - stmt.setInt(1, tenantId); - stmt.setString(2, featureCode); - int index = 3; - if(!APIUtil.isDeviceAdminUser()){ - stmt.setString(3, userName); - index = 4; - } - if (filters != null && filters.values().size() > 0) { - int i = index; - for (Object value : filters.values()) { - if (value instanceof Integer) { - stmt.setInt(i, (Integer) value); - } else if (value instanceof String) { - stmt.setString(i, (String) value); - } - i++; - } - stmt.setInt(i, startIndex); - stmt.setInt(++i, resultCount); - } else { - stmt.setInt(index, startIndex); - stmt.setInt(++index, resultCount); - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceWithDetails filteredDeviceWithDetails; - while (rs.next()) { - filteredDeviceWithDetails = new DeviceWithDetails(); - filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); - filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); - filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); - filteredDeviceWithDetails.setOwnershipType(rs.getString("OWNERSHIP")); - filteredDeviceWithDetails.setConnectivityStatus(rs.getString("CONNECTIVITY_STATUS")); - filteredDevicesWithDetails.add(filteredDeviceWithDetails); - } - if(APIUtil.isDeviceAdminUser()){ - sql = "SELECT COUNT(DEVICE_ID) AS DEVICE_COUNT FROM " + GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_2 + " WHERE TENANT_ID = ? AND FEATURE_CODE = ?"; - }else{ - sql = "SELECT COUNT(FEATURE_INFO.DEVICE_ID) AS DEVICE_COUNT FROM " + GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_2 + " FEATURE_INFO INNER JOIN DM_ENROLMENT ENR_DB ON " + - "ENR_DB.DEVICE_ID = FEATURE_INFO.DEVICE_ID AND FEATURE_INFO.TENANT_ID = ? AND " + - "FEATURE_INFO.FEATURE_CODE = ? AND ENR_DB.OWNER = ? "; - } - stmt = con.prepareStatement(sql); - stmt.setInt(1, tenantId); - stmt.setString(2, featureCode); - if(!APIUtil.isDeviceAdminUser()){ - stmt.setString(3, userName); - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - while (rs.next()) { - totalRecordsCount = rs.getInt("DEVICE_COUNT"); - } - } catch (DeviceAccessAuthorizationException e) { - String msg = "Error occurred while checking device access authorization"; - log.error(msg, e); - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - PaginationResult paginationResult = new PaginationResult(); - paginationResult.setData(filteredDevicesWithDetails); - paginationResult.setRecordsTotal(totalRecordsCount); - return paginationResult; - } - -} 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/MSSQLGadgetDataServiceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/impl/MSSQLGadgetDataServiceDAOImpl.java deleted file mode 100644 index 23374a3fc2..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/impl/MSSQLGadgetDataServiceDAOImpl.java +++ /dev/null @@ -1,298 +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.impl; - -import org.wso2.carbon.context.PrivilegedCarbonContext; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceWithDetails; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroup; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.BasicFilterSet; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.ExtendedFilterSet; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.AbstractGadgetDataServiceDAO; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOConstants; -import org.wso2.carbon.device.mgt.analytics.dashboard.exception.*; -import org.wso2.carbon.device.mgt.common.PaginationResult; -import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -public class MSSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO { - - @Override - public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount, String userName) - throws InvalidStartIndexValueException, InvalidResultCountValueException, SQLException { - - if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { - throw new InvalidStartIndexValueException("Start index should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); - } - - if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { - throw new InvalidResultCountValueException("Result count should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " 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 " + GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_2 + " WHERE TENANT_ID = ? GROUP BY FEATURE_CODE ORDER BY DEVICE_COUNT DESC " + - "OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"; - stmt = con.prepareStatement(sql); - stmt.setInt(1, tenantId); - stmt.setInt(2, startIndex); - stmt.setInt(3, resultCount); - - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceCountByGroup filteredNonCompliantDeviceCountByFeature; - while (rs.next()) { - filteredNonCompliantDeviceCountByFeature = new DeviceCountByGroup(); - 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 " + GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_2 + - " WHERE TENANT_ID = ?) NON_COMPLIANT_FEATURE_CODE"; - - 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 PaginationResult getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, int startIndex, int resultCount, String userName) - throws InvalidPotentialVulnerabilityValueException, - InvalidStartIndexValueException, - InvalidResultCountValueException, - SQLException { - - if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { - throw new InvalidStartIndexValueException("Start index should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); - } - - if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { - throw new InvalidResultCountValueException("Result count should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); - } - - Map filters = this.extractDatabaseFiltersFromBean(extendedFilterSet); - - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - List filteredDevicesWithDetails = new ArrayList<>(); - int totalRecordsCount = 0; - try { - con = this.getConnection(); - String sql, advancedSqlFiltering = ""; - // appending filters if exist, to support advanced filtering options - // [1] appending filter columns, if exist - if (filters != null && filters.size() > 0) { - for (String column : filters.keySet()) { - advancedSqlFiltering = advancedSqlFiltering + "AND " + column + " = ? "; - } - } - sql = "SELECT DEVICE_ID, DEVICE_IDENTIFICATION, PLATFORM, OWNERSHIP, CONNECTIVITY_STATUS FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_1 + " WHERE TENANT_ID = ? " + - advancedSqlFiltering + "ORDER BY DEVICE_ID ASC OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"; - stmt = con.prepareStatement(sql); - // [2] appending filter column values, if exist - stmt.setInt(1, tenantId); - if (filters != null && filters.values().size() > 0) { - int i = 2; - for (Object value : filters.values()) { - if (value instanceof Integer) { - stmt.setInt(i, (Integer) value); - } else if (value instanceof String) { - stmt.setString(i, (String) value); - } - i++; - } - stmt.setInt(i, startIndex); - stmt.setInt(++i, resultCount); - } else { - stmt.setInt(2, startIndex); - stmt.setInt(3, resultCount); - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceWithDetails filteredDeviceWithDetails; - while (rs.next()) { - filteredDeviceWithDetails = new DeviceWithDetails(); - filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); - filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); - 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 " + GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_1 + " 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("DEVICE_COUNT"); - } - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - PaginationResult paginationResult = new PaginationResult(); - paginationResult.setData(filteredDevicesWithDetails); - paginationResult.setRecordsTotal(totalRecordsCount); - return paginationResult; - } - - @Override - public PaginationResult getFeatureNonCompliantDevicesWithDetails(String featureCode, - BasicFilterSet basicFilterSet, int startIndex, int resultCount, String userName) - throws InvalidFeatureCodeValueException, InvalidStartIndexValueException, - InvalidResultCountValueException, SQLException { - - if (featureCode == null || featureCode.isEmpty()) { - throw new InvalidFeatureCodeValueException("Feature code should not be either null or empty."); - } - - if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { - throw new InvalidStartIndexValueException("Start index should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); - } - - if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { - throw new InvalidResultCountValueException("Result count should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); - } - - Map filters = this.extractDatabaseFiltersFromBean(basicFilterSet); - - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - List filteredDevicesWithDetails = new ArrayList<>(); - int totalRecordsCount = 0; - try { - con = this.getConnection(); - String sql, advancedSqlFiltering = ""; - // appending filters if exist, to support advanced filtering options - // [1] appending filter columns, if exist - if (filters != null && filters.size() > 0) { - for (String column : filters.keySet()) { - advancedSqlFiltering = advancedSqlFiltering + "AND " + column + " = ? "; - } - } - sql = "SELECT DEVICE_ID, DEVICE_IDENTIFICATION, PLATFORM, OWNERSHIP, CONNECTIVITY_STATUS FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_2 + " WHERE TENANT_ID = ? AND FEATURE_CODE = ? " + - advancedSqlFiltering + "ORDER BY DEVICE_ID ASC OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"; - - stmt = con.prepareStatement(sql); - // [2] appending filter column values, if exist - stmt.setInt(1, tenantId); - stmt.setString(2, featureCode); - if (filters != null && filters.values().size() > 0) { - int i = 3; - for (Object value : filters.values()) { - if (value instanceof Integer) { - stmt.setInt(i, (Integer) value); - } else if (value instanceof String) { - stmt.setString(i, (String) value); - } - i++; - } - stmt.setInt(i, startIndex); - stmt.setInt(++i, resultCount); - } else { - stmt.setInt(3, startIndex); - stmt.setInt(4, resultCount); - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceWithDetails filteredDeviceWithDetails; - while (rs.next()) { - filteredDeviceWithDetails = new DeviceWithDetails(); - filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); - filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); - 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 " + GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_2 + " WHERE TENANT_ID = ? AND FEATURE_CODE = ?"; - - stmt = con.prepareStatement(sql); - stmt.setInt(1, tenantId); - stmt.setString(2, featureCode); - - // executing query - rs = stmt.executeQuery(); - // fetching query results - while (rs.next()) { - totalRecordsCount = rs.getInt("DEVICE_COUNT"); - } - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - PaginationResult paginationResult = new PaginationResult(); - paginationResult.setData(filteredDevicesWithDetails); - paginationResult.setRecordsTotal(totalRecordsCount); - return paginationResult; - } - -} 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/OracleGadgetDataServiceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/impl/OracleGadgetDataServiceDAOImpl.java deleted file mode 100644 index 4d58e508e7..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/impl/OracleGadgetDataServiceDAOImpl.java +++ /dev/null @@ -1,295 +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.impl; - -import org.wso2.carbon.context.PrivilegedCarbonContext; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceWithDetails; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroup; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.BasicFilterSet; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.ExtendedFilterSet; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.AbstractGadgetDataServiceDAO; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOConstants; -import org.wso2.carbon.device.mgt.analytics.dashboard.exception.*; -import org.wso2.carbon.device.mgt.common.PaginationResult; -import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -public class OracleGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO { - - @Override - public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount, String userName) - throws InvalidStartIndexValueException, InvalidResultCountValueException, SQLException { - - if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { - throw new InvalidStartIndexValueException("Start index should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); - } - - if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { - throw new InvalidResultCountValueException("Result count should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " 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 " + GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_2 - + " WHERE TENANT_ID = ? GROUP BY FEATURE_CODE ORDER BY DEVICE_COUNT DESC " - + "OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"; - stmt = con.prepareStatement(sql); - stmt.setInt(1, tenantId); - stmt.setInt(2, startIndex); - stmt.setInt(3, resultCount); - - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceCountByGroup filteredNonCompliantDeviceCountByFeature; - while (rs.next()) { - filteredNonCompliantDeviceCountByFeature = new DeviceCountByGroup(); - 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 " + GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_2 + - " WHERE TENANT_ID = ?) NON_COMPLIANT_FEATURE_CODE"; - - 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 PaginationResult getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, int startIndex, int resultCount, String userName) - throws InvalidPotentialVulnerabilityValueException, InvalidStartIndexValueException, - InvalidResultCountValueException, SQLException { - - if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { - throw new InvalidStartIndexValueException("Start index should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); - } - - if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { - throw new InvalidResultCountValueException("Result count should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); - } - - Map filters = this.extractDatabaseFiltersFromBean(extendedFilterSet); - - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - List filteredDevicesWithDetails = new ArrayList<>(); - int totalRecordsCount = 0; - try { - con = this.getConnection(); - String sql, advancedSqlFiltering = ""; - // appending filters if exist, to support advanced filtering options - // [1] appending filter columns, if exist - if (filters != null && filters.size() > 0) { - for (String column : filters.keySet()) { - advancedSqlFiltering = advancedSqlFiltering + "AND " + column + " = ? "; - } - } - sql = "SELECT DEVICE_ID, DEVICE_IDENTIFICATION, PLATFORM, OWNERSHIP, CONNECTIVITY_STATUS FROM " - + GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_1 + " WHERE TENANT_ID = ? " - + advancedSqlFiltering + "ORDER BY DEVICE_ID ASC OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"; - stmt = con.prepareStatement(sql); - // [2] appending filter column values, if exist - stmt.setInt(1, tenantId); - if (filters != null && filters.values().size() > 0) { - int i = 2; - for (Object value : filters.values()) { - if (value instanceof Integer) { - stmt.setInt(i, (Integer) value); - } else if (value instanceof String) { - stmt.setString(i, (String) value); - } - i++; - } - stmt.setInt(i, startIndex); - stmt.setInt(++i, resultCount); - } else { - stmt.setInt(2, startIndex); - stmt.setInt(3, resultCount); - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceWithDetails filteredDeviceWithDetails; - while (rs.next()) { - filteredDeviceWithDetails = new DeviceWithDetails(); - filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); - filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); - 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 " + GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_1 + " 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("DEVICE_COUNT"); - } - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - PaginationResult paginationResult = new PaginationResult(); - paginationResult.setData(filteredDevicesWithDetails); - paginationResult.setRecordsTotal(totalRecordsCount); - return paginationResult; - } - - @Override - public PaginationResult getFeatureNonCompliantDevicesWithDetails(String featureCode, BasicFilterSet basicFilterSet, - int startIndex, int resultCount, String userName) throws InvalidFeatureCodeValueException, - InvalidStartIndexValueException, InvalidResultCountValueException, SQLException { - - if (featureCode == null || featureCode.isEmpty()) { - throw new InvalidFeatureCodeValueException("Feature code should not be either null or empty."); - } - - if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { - throw new InvalidStartIndexValueException("Start index should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); - } - - if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { - throw new InvalidResultCountValueException("Result count should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); - } - - Map filters = this.extractDatabaseFiltersFromBean(basicFilterSet); - - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - List filteredDevicesWithDetails = new ArrayList<>(); - int totalRecordsCount = 0; - try { - con = this.getConnection(); - String sql, advancedSqlFiltering = ""; - // appending filters if exist, to support advanced filtering options - // [1] appending filter columns, if exist - if (filters != null && filters.size() > 0) { - for (String column : filters.keySet()) { - advancedSqlFiltering = advancedSqlFiltering + "AND " + column + " = ? "; - } - } - sql = "SELECT DEVICE_ID, DEVICE_IDENTIFICATION, PLATFORM, OWNERSHIP, CONNECTIVITY_STATUS FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_2 + " WHERE TENANT_ID = ? AND FEATURE_CODE = ? " + - advancedSqlFiltering + "ORDER BY DEVICE_ID ASC OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"; - stmt = con.prepareStatement(sql); - // [2] appending filter column values, if exist - stmt.setInt(1, tenantId); - stmt.setString(2, featureCode); - if (filters != null && filters.values().size() > 0) { - int i = 3; - for (Object value : filters.values()) { - if (value instanceof Integer) { - stmt.setInt(i, (Integer) value); - } else if (value instanceof String) { - stmt.setString(i, (String) value); - } - i++; - } - stmt.setInt(i, startIndex); - stmt.setInt(++i, resultCount); - } else { - stmt.setInt(3, startIndex); - stmt.setInt(4, resultCount); - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceWithDetails filteredDeviceWithDetails; - while (rs.next()) { - filteredDeviceWithDetails = new DeviceWithDetails(); - filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); - filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); - 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 " + GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_2 + " WHERE TENANT_ID = ? AND FEATURE_CODE = ?"; - - stmt = con.prepareStatement(sql); - stmt.setInt(1, tenantId); - stmt.setString(2, featureCode); - - // executing query - rs = stmt.executeQuery(); - // fetching query results - while (rs.next()) { - totalRecordsCount = rs.getInt("DEVICE_COUNT"); - } - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - PaginationResult paginationResult = new PaginationResult(); - paginationResult.setData(filteredDevicesWithDetails); - paginationResult.setRecordsTotal(totalRecordsCount); - return paginationResult; - } - -} 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/PostgreSQLGadgetDataServiceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/impl/PostgreSQLGadgetDataServiceDAOImpl.java deleted file mode 100644 index 5f859ec8b2..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/dao/impl/PostgreSQLGadgetDataServiceDAOImpl.java +++ /dev/null @@ -1,297 +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.impl; - -import org.wso2.carbon.context.PrivilegedCarbonContext; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceWithDetails; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroup; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.BasicFilterSet; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.ExtendedFilterSet; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.AbstractGadgetDataServiceDAO; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOConstants; -import org.wso2.carbon.device.mgt.analytics.dashboard.exception.*; -import org.wso2.carbon.device.mgt.common.PaginationResult; -import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -public class PostgreSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO { - - @Override - public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount, String userName) - throws InvalidStartIndexValueException, InvalidResultCountValueException, SQLException { - - if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { - throw new InvalidStartIndexValueException("Start index should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); - } - - if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { - throw new InvalidResultCountValueException("Result count should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " 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 " + GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_2 + " WHERE TENANT_ID = ? GROUP BY FEATURE_CODE " + - "ORDER BY DEVICE_COUNT DESC OFFSET ? 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 - DeviceCountByGroup filteredNonCompliantDeviceCountByFeature; - while (rs.next()) { - filteredNonCompliantDeviceCountByFeature = new DeviceCountByGroup(); - 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 " + GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_2 + - " WHERE TENANT_ID = ?) NON_COMPLIANT_FEATURE_CODE"; - - 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 PaginationResult getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, int startIndex, int resultCount, String userName) - throws InvalidPotentialVulnerabilityValueException, InvalidStartIndexValueException, - InvalidResultCountValueException, SQLException { - - if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { - throw new InvalidStartIndexValueException("Start index should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); - } - - if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { - throw new InvalidResultCountValueException("Result count should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); - } - - Map filters = this.extractDatabaseFiltersFromBean(extendedFilterSet); - - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - List filteredDevicesWithDetails = new ArrayList<>(); - int totalRecordsCount = 0; - try { - con = this.getConnection(); - String sql, advancedSqlFiltering = ""; - // appending filters if exist, to support advanced filtering options - // [1] appending filter columns, if exist - if (filters != null && filters.size() > 0) { - for (String column : filters.keySet()) { - advancedSqlFiltering = advancedSqlFiltering + "AND " + column + " = ? "; - } - } - sql = "SELECT DEVICE_ID, DEVICE_IDENTIFICATION, PLATFORM, OWNERSHIP, CONNECTIVITY_STATUS FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_1 + " WHERE TENANT_ID = ? " + - advancedSqlFiltering + "ORDER BY DEVICE_ID ASC OFFSET ? LIMIT ?"; - - stmt = con.prepareStatement(sql); - // [2] appending filter column values, if exist - stmt.setInt(1, tenantId); - if (filters != null && filters.values().size() > 0) { - int i = 2; - for (Object value : filters.values()) { - if (value instanceof Integer) { - stmt.setInt(i, (Integer) value); - } else if (value instanceof String) { - stmt.setString(i, (String) value); - } - i++; - } - stmt.setInt(i, startIndex); - stmt.setInt(++i, resultCount); - } else { - stmt.setInt(2, startIndex); - stmt.setInt(3, resultCount); - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceWithDetails filteredDeviceWithDetails; - while (rs.next()) { - filteredDeviceWithDetails = new DeviceWithDetails(); - filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); - filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); - 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 " + GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_1 + " 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("DEVICE_COUNT"); - } - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - PaginationResult paginationResult = new PaginationResult(); - paginationResult.setData(filteredDevicesWithDetails); - paginationResult.setRecordsTotal(totalRecordsCount); - return paginationResult; - } - - @Override - public PaginationResult getFeatureNonCompliantDevicesWithDetails(String featureCode, BasicFilterSet basicFilterSet, - int startIndex, int resultCount, String userName) throws InvalidFeatureCodeValueException, - InvalidStartIndexValueException, InvalidResultCountValueException, SQLException { - - if (featureCode == null || featureCode.isEmpty()) { - throw new InvalidFeatureCodeValueException("Feature code should not be either null or empty."); - } - - if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { - throw new InvalidStartIndexValueException("Start index should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); - } - - if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { - throw new InvalidResultCountValueException("Result count should be equal to " + - GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); - } - - Map filters = this.extractDatabaseFiltersFromBean(basicFilterSet); - - Connection con; - PreparedStatement stmt = null; - ResultSet rs = null; - int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - List filteredDevicesWithDetails = new ArrayList<>(); - int totalRecordsCount = 0; - try { - con = this.getConnection(); - String sql, advancedSqlFiltering = ""; - // appending filters if exist, to support advanced filtering options - // [1] appending filter columns, if exist - if (filters != null && filters.size() > 0) { - for (String column : filters.keySet()) { - advancedSqlFiltering = advancedSqlFiltering + "AND " + column + " = ? "; - } - } - sql = "SELECT DEVICE_ID, DEVICE_IDENTIFICATION, PLATFORM, OWNERSHIP, CONNECTIVITY_STATUS FROM " + - GadgetDataServiceDAOConstants.DatabaseView.DEVICES_VIEW_2 + " WHERE TENANT_ID = ? AND FEATURE_CODE = ? " + - advancedSqlFiltering + "ORDER BY DEVICE_ID ASC OFFSET ? LIMIT ?"; - - stmt = con.prepareStatement(sql); - // [2] appending filter column values, if exist - stmt.setInt(1, tenantId); - stmt.setString(2, featureCode); - if (filters != null && filters.values().size() > 0) { - int i = 3; - for (Object value : filters.values()) { - if (value instanceof Integer) { - stmt.setInt(i, (Integer) value); - } else if (value instanceof String) { - stmt.setString(i, (String) value); - } - i++; - } - stmt.setInt(i, startIndex); - stmt.setInt(++i, resultCount); - } else { - stmt.setInt(3, startIndex); - stmt.setInt(4, resultCount); - } - // executing query - rs = stmt.executeQuery(); - // fetching query results - DeviceWithDetails filteredDeviceWithDetails; - while (rs.next()) { - filteredDeviceWithDetails = new DeviceWithDetails(); - filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); - filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); - 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 " + GadgetDataServiceDAOConstants. - DatabaseView.DEVICES_VIEW_2 + " WHERE TENANT_ID = ? AND FEATURE_CODE = ?"; - - stmt = con.prepareStatement(sql); - stmt.setInt(1, tenantId); - stmt.setString(2, featureCode); - - // executing query - rs = stmt.executeQuery(); - // fetching query results - while (rs.next()) { - totalRecordsCount = rs.getInt("DEVICE_COUNT"); - } - } finally { - DeviceManagementDAOUtil.cleanupResources(stmt, rs); - } - PaginationResult paginationResult = new PaginationResult(); - paginationResult.setData(filteredDevicesWithDetails); - paginationResult.setRecordsTotal(totalRecordsCount); - return paginationResult; - } - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/exception/DataAccessLayerException.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/exception/DataAccessLayerException.java deleted file mode 100644 index 69bd5a9f6a..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/exception/DataAccessLayerException.java +++ /dev/null @@ -1,80 +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.exception; - -/** - * Custom exception class for communicating data access layer issues - * relevant to Gadget Data Service DAO layer. - * (In this particular instance, SQL exceptions related to database access). - */ -public class DataAccessLayerException extends Exception { - - private String errorMessage; - private static final long serialVersionUID = 2021891706072918864L; - - /** - * Constructs a new exception with the specific error message and nested exception. - * @param errorMessage specific error message. - * @param nestedException Nested exception. - */ - @SuppressWarnings("unused") - public DataAccessLayerException(String errorMessage, Exception nestedException) { - super(errorMessage, nestedException); - setErrorMessage(errorMessage); - } - - /** - * Constructs a new exception with the specific error message and cause. - * @param errorMessage Specific error message. - * @param cause Cause of this exception. - */ - @SuppressWarnings("unused") - public DataAccessLayerException(String errorMessage, Throwable cause) { - super(errorMessage, cause); - setErrorMessage(errorMessage); - } - - /** - * Constructs a new exception with the specific error message. - * @param errorMessage Specific error message. - */ - public DataAccessLayerException(String errorMessage) { - super(errorMessage); - setErrorMessage(errorMessage); - } - - /** - * Constructs a new exception with the specific error message and cause. - * @param cause Cause of this exception. - */ - @SuppressWarnings("unused") - public DataAccessLayerException(Throwable cause) { - super(cause); - } - - @SuppressWarnings("unused") - public String getErrorMessage() { - return errorMessage; - } - - public void setErrorMessage(String errorMessage) { - this.errorMessage = errorMessage; - } - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/exception/InvalidFeatureCodeValueException.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/exception/InvalidFeatureCodeValueException.java deleted file mode 100644 index 0ba644a611..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/exception/InvalidFeatureCodeValueException.java +++ /dev/null @@ -1,80 +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.exception; - -/** - * Custom exception class for catching invalid parameter values, - * relevant to Gadget Data Service DAO layer. - */ -public class InvalidFeatureCodeValueException extends Exception { - - private String errorMessage; - private static final long serialVersionUID = 2021891706072918864L; - - /** - * Constructs a new exception with the specific error message and nested exception. - * @param errorMessage specific error message. - * @param nestedException Nested exception. - */ - @SuppressWarnings("unused") - public InvalidFeatureCodeValueException(String errorMessage, Exception nestedException) { - super(errorMessage, nestedException); - setErrorMessage(errorMessage); - } - - /** - * Constructs a new exception with the specific error message and cause. - * @param errorMessage Specific error message. - * @param cause Cause of this exception. - */ - @SuppressWarnings("unused") - public InvalidFeatureCodeValueException(String errorMessage, Throwable cause) { - super(errorMessage, cause); - setErrorMessage(errorMessage); - } - - /** - * Constructs a new exception with the specific error message. - * @param errorMessage Specific error message. - */ - public InvalidFeatureCodeValueException(String errorMessage) { - super(errorMessage); - setErrorMessage(errorMessage); - } - - /** - * Constructs a new exception with the specific error message and cause. - * @param cause Cause of this exception. - */ - @SuppressWarnings("unused") - public InvalidFeatureCodeValueException(Throwable cause) { - super(cause); - } - - @SuppressWarnings("unused") - public String getErrorMessage() { - return errorMessage; - } - - public void setErrorMessage(String errorMessage) { - this.errorMessage = errorMessage; - } - -} - diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/exception/InvalidPotentialVulnerabilityValueException.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/exception/InvalidPotentialVulnerabilityValueException.java deleted file mode 100644 index a31b68f8fa..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/exception/InvalidPotentialVulnerabilityValueException.java +++ /dev/null @@ -1,79 +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.exception; - -/** - * Custom exception class for catching invalid parameter values, - * relevant to Gadget Data Service DAO layer. - */ -public class InvalidPotentialVulnerabilityValueException extends Exception { - - private String errorMessage; - private static final long serialVersionUID = 2021891706072918864L; - - /** - * Constructs a new exception with the specific error message and nested exception. - * @param errorMessage specific error message. - * @param nestedException Nested exception. - */ - @SuppressWarnings("unused") - public InvalidPotentialVulnerabilityValueException(String errorMessage, Exception nestedException) { - super(errorMessage, nestedException); - setErrorMessage(errorMessage); - } - - /** - * Constructs a new exception with the specific error message and cause. - * @param errorMessage Specific error message. - * @param cause Cause of this exception. - */ - @SuppressWarnings("unused") - public InvalidPotentialVulnerabilityValueException(String errorMessage, Throwable cause) { - super(errorMessage, cause); - setErrorMessage(errorMessage); - } - - /** - * Constructs a new exception with the specific error message. - * @param errorMessage Specific error message. - */ - public InvalidPotentialVulnerabilityValueException(String errorMessage) { - super(errorMessage); - setErrorMessage(errorMessage); - } - - /** - * Constructs a new exception with the specific error message and cause. - * @param cause Cause of this exception. - */ - @SuppressWarnings("unused") - public InvalidPotentialVulnerabilityValueException(Throwable cause) { - super(cause); - } - - @SuppressWarnings("unused") - public String getErrorMessage() { - return errorMessage; - } - - public void setErrorMessage(String errorMessage) { - this.errorMessage = errorMessage; - } - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/exception/InvalidResultCountValueException.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/exception/InvalidResultCountValueException.java deleted file mode 100644 index 9d20a6971d..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/exception/InvalidResultCountValueException.java +++ /dev/null @@ -1,80 +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.exception; - -/** - * Custom exception class for catching invalid parameter values, - * relevant to Gadget Data Service DAO layer. - */ -public class InvalidResultCountValueException extends Exception { - - private String errorMessage; - private static final long serialVersionUID = 2021891706072918864L; - - /** - * Constructs a new exception with the specific error message and nested exception. - * @param errorMessage specific error message. - * @param nestedException Nested exception. - */ - @SuppressWarnings("unused") - public InvalidResultCountValueException(String errorMessage, Exception nestedException) { - super(errorMessage, nestedException); - setErrorMessage(errorMessage); - } - - /** - * Constructs a new exception with the specific error message and cause. - * @param errorMessage Specific error message. - * @param cause Cause of this exception. - */ - @SuppressWarnings("unused") - public InvalidResultCountValueException(String errorMessage, Throwable cause) { - super(errorMessage, cause); - setErrorMessage(errorMessage); - } - - /** - * Constructs a new exception with the specific error message. - * @param errorMessage Specific error message. - */ - public InvalidResultCountValueException(String errorMessage) { - super(errorMessage); - setErrorMessage(errorMessage); - } - - /** - * Constructs a new exception with the specific error message and cause. - * @param cause Cause of this exception. - */ - @SuppressWarnings("unused") - public InvalidResultCountValueException(Throwable cause) { - super(cause); - } - - @SuppressWarnings("unused") - public String getErrorMessage() { - return errorMessage; - } - - public void setErrorMessage(String errorMessage) { - this.errorMessage = errorMessage; - } - -} - diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/exception/InvalidStartIndexValueException.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/exception/InvalidStartIndexValueException.java deleted file mode 100644 index 39370c0ab1..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/exception/InvalidStartIndexValueException.java +++ /dev/null @@ -1,80 +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.exception; - -/** - * Custom exception class for catching invalid parameter values, - * relevant to Gadget Data Service DAO layer. - */ -public class InvalidStartIndexValueException extends Exception { - - private String errorMessage; - private static final long serialVersionUID = 2021891706072918864L; - - /** - * Constructs a new exception with the specific error message and nested exception. - * @param errorMessage specific error message. - * @param nestedException Nested exception. - */ - @SuppressWarnings("unused") - public InvalidStartIndexValueException(String errorMessage, Exception nestedException) { - super(errorMessage, nestedException); - setErrorMessage(errorMessage); - } - - /** - * Constructs a new exception with the specific error message and cause. - * @param errorMessage Specific error message. - * @param cause Cause of this exception. - */ - @SuppressWarnings("unused") - public InvalidStartIndexValueException(String errorMessage, Throwable cause) { - super(errorMessage, cause); - setErrorMessage(errorMessage); - } - - /** - * Constructs a new exception with the specific error message. - * @param errorMessage Specific error message. - */ - public InvalidStartIndexValueException(String errorMessage) { - super(errorMessage); - setErrorMessage(errorMessage); - } - - /** - * Constructs a new exception with the specific error message and cause. - * @param cause Cause of this exception. - */ - @SuppressWarnings("unused") - public InvalidStartIndexValueException(Throwable cause) { - super(cause); - } - - @SuppressWarnings("unused") - public String getErrorMessage() { - return errorMessage; - } - - public void setErrorMessage(String errorMessage) { - this.errorMessage = errorMessage; - } - -} - 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 deleted file mode 100644 index 9a392ab8df..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/impl/GadgetDataServiceImpl.java +++ /dev/null @@ -1,281 +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.impl; - -import org.wso2.carbon.device.mgt.analytics.dashboard.GadgetDataService; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroup; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceWithDetails; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.ExtendedFilterSet; -import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOFactory; -import org.wso2.carbon.device.mgt.analytics.dashboard.bean.BasicFilterSet; -import org.wso2.carbon.device.mgt.analytics.dashboard.exception.*; -import org.wso2.carbon.device.mgt.common.PaginationResult; - -import java.sql.SQLException; -import java.util.List; - -/** - * Implementation class of GadgetDataService. - */ -public class GadgetDataServiceImpl implements GadgetDataService { - - @Override - public DeviceCountByGroup getDeviceCount(ExtendedFilterSet extendedFilterSet, String userName) - throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException { - DeviceCountByGroup filteredDeviceCount; - try { - - GadgetDataServiceDAOFactory.openConnection(); - filteredDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). - getDeviceCount(extendedFilterSet, userName); - } catch (SQLException e) { - throw new DataAccessLayerException("Error in either opening a database connection or " + - "accessing the database to fetch corresponding results.", e); - } finally { - GadgetDataServiceDAOFactory.closeConnection(); - } - return filteredDeviceCount; - } - - @Override - public DeviceCountByGroup getFeatureNonCompliantDeviceCount(String featureCode, BasicFilterSet basicFilterSet, String userName) - throws InvalidFeatureCodeValueException, DataAccessLayerException { - DeviceCountByGroup featureNonCompliantDeviceCount; - try { - GadgetDataServiceDAOFactory.openConnection(); - featureNonCompliantDeviceCount = GadgetDataServiceDAOFactory. - getGadgetDataServiceDAO().getFeatureNonCompliantDeviceCount(featureCode, basicFilterSet, userName); - } catch (SQLException e) { - throw new DataAccessLayerException("Error in either opening a database connection or " + - "accessing the database to fetch corresponding results.", e); - } finally { - GadgetDataServiceDAOFactory.closeConnection(); - } - return featureNonCompliantDeviceCount; - } - - @Override - public DeviceCountByGroup getTotalDeviceCount(String userName) throws DataAccessLayerException { - DeviceCountByGroup totalDeviceCount; - try { - GadgetDataServiceDAOFactory.openConnection(); - totalDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getTotalDeviceCount(userName); - } catch (SQLException e) { - throw new DataAccessLayerException("Error in either opening a database connection or " + - "accessing the database to fetch corresponding results.", e); - } finally { - GadgetDataServiceDAOFactory.closeConnection(); - } - return totalDeviceCount; - } - - @Override - public List getDeviceCountsByConnectivityStatuses(String userName) throws DataAccessLayerException { - List deviceCountsByConnectivityStatuses; - try { - GadgetDataServiceDAOFactory.openConnection(); - deviceCountsByConnectivityStatuses = GadgetDataServiceDAOFactory. - getGadgetDataServiceDAO().getDeviceCountsByConnectivityStatuses(userName); - } catch (SQLException e) { - throw new DataAccessLayerException("Error in either opening a database connection or " + - "accessing the database to fetch corresponding results.", e); - } finally { - GadgetDataServiceDAOFactory.closeConnection(); - } - return deviceCountsByConnectivityStatuses; - } - - @Override - public List getDeviceCountsByPotentialVulnerabilities(String userName) throws DataAccessLayerException { - List deviceCountsByPotentialVulnerabilities; - try { - GadgetDataServiceDAOFactory.openConnection(); - deviceCountsByPotentialVulnerabilities = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). - getDeviceCountsByPotentialVulnerabilities(userName); - } catch (SQLException e) { - throw new DataAccessLayerException("Error in either opening a database connection or " + - "accessing the database to fetch corresponding results.", e); - } finally { - GadgetDataServiceDAOFactory.closeConnection(); - } - return deviceCountsByPotentialVulnerabilities; - } - - @Override - public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount, String userName) - throws InvalidStartIndexValueException, InvalidResultCountValueException, - DataAccessLayerException { - PaginationResult paginationResult; - try { - GadgetDataServiceDAOFactory.openConnection(); - paginationResult = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). - getNonCompliantDeviceCountsByFeatures(startIndex, resultCount, userName); - } catch (SQLException e) { - throw new DataAccessLayerException("Error in either opening a database connection or " + - "accessing the database to fetch corresponding results.", e); - } finally { - GadgetDataServiceDAOFactory.closeConnection(); - } - return paginationResult; - } - - @Override - public List getDeviceCountsByPlatforms(ExtendedFilterSet extendedFilterSet, String userName) - throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException { - List deviceCountsByPlatforms; - try { - GadgetDataServiceDAOFactory.openConnection(); - deviceCountsByPlatforms = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). - getDeviceCountsByPlatforms(extendedFilterSet, userName); - } catch (SQLException e) { - throw new DataAccessLayerException("Error in either opening a database connection or " + - "accessing the database to fetch corresponding results.", e); - } finally { - GadgetDataServiceDAOFactory.closeConnection(); - } - return deviceCountsByPlatforms; - } - - @Override - public List getFeatureNonCompliantDeviceCountsByPlatforms(String featureCode, - BasicFilterSet basicFilterSet, String userName) throws InvalidFeatureCodeValueException, - DataAccessLayerException { - List featureNonCompliantDeviceCountsByPlatforms; - try { - GadgetDataServiceDAOFactory.openConnection(); - featureNonCompliantDeviceCountsByPlatforms = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). - getFeatureNonCompliantDeviceCountsByPlatforms(featureCode, basicFilterSet, userName); - } catch (SQLException e) { - throw new DataAccessLayerException("Error in either opening a database connection or " + - "accessing the database to fetch corresponding results.", e); - } finally { - GadgetDataServiceDAOFactory.closeConnection(); - } - return featureNonCompliantDeviceCountsByPlatforms; - } - - @Override - public List getDeviceCountsByOwnershipTypes(ExtendedFilterSet extendedFilterSet, String userName) - throws InvalidPotentialVulnerabilityValueException, - DataAccessLayerException { - List deviceCountsByOwnershipTypes; - try { - GadgetDataServiceDAOFactory.openConnection(); - deviceCountsByOwnershipTypes = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). - getDeviceCountsByOwnershipTypes(extendedFilterSet, userName); - } catch (SQLException e) { - throw new DataAccessLayerException("Error in either opening a database connection or " + - "accessing the database to fetch corresponding results.", e); - } finally { - GadgetDataServiceDAOFactory.closeConnection(); - } - return deviceCountsByOwnershipTypes; - } - - @Override - public List - getFeatureNonCompliantDeviceCountsByOwnershipTypes(String featureCode, BasicFilterSet basicFilterSet, String userName) - throws InvalidFeatureCodeValueException, DataAccessLayerException { - List featureNonCompliantDeviceCountsByOwnershipTypes; - try { - GadgetDataServiceDAOFactory.openConnection(); - featureNonCompliantDeviceCountsByOwnershipTypes = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). - getFeatureNonCompliantDeviceCountsByOwnershipTypes(featureCode, basicFilterSet, userName); - } catch (SQLException e) { - throw new DataAccessLayerException("Error in either opening a database connection or " + - "accessing the database to fetch corresponding results.", e); - } finally { - GadgetDataServiceDAOFactory.closeConnection(); - } - return featureNonCompliantDeviceCountsByOwnershipTypes; - } - - @Override - public PaginationResult getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, int startIndex, int resultCount, String userName) - throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException, - InvalidStartIndexValueException, InvalidResultCountValueException { - PaginationResult paginationResult; - try { - GadgetDataServiceDAOFactory.openConnection(); - paginationResult = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). - getDevicesWithDetails(extendedFilterSet, startIndex, resultCount, userName); - } catch (SQLException e) { - throw new DataAccessLayerException("Error in either opening a database connection or " + - "accessing the database to fetch corresponding results.", e); - } finally { - GadgetDataServiceDAOFactory.closeConnection(); - } - return paginationResult; - } - - @Override - public PaginationResult getFeatureNonCompliantDevicesWithDetails(String featureCode, BasicFilterSet basicFilterSet, - int startIndex, int resultCount, String userName) throws InvalidFeatureCodeValueException, - DataAccessLayerException, InvalidStartIndexValueException, - InvalidResultCountValueException { - PaginationResult paginationResult; - try { - GadgetDataServiceDAOFactory.openConnection(); - paginationResult = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). - getFeatureNonCompliantDevicesWithDetails(featureCode, basicFilterSet, startIndex, resultCount, userName); - } catch (SQLException e) { - throw new DataAccessLayerException("Error in either opening a database connection or " + - "accessing the database to fetch corresponding results.", e); - } finally { - GadgetDataServiceDAOFactory.closeConnection(); - } - return paginationResult; - } - - @Override - public List getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, String userName) - throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException { - List devicesWithDetails; - try { - GadgetDataServiceDAOFactory.openConnection(); - devicesWithDetails = GadgetDataServiceDAOFactory. - getGadgetDataServiceDAO().getDevicesWithDetails(extendedFilterSet, userName); - } catch (SQLException e) { - throw new DataAccessLayerException("Error in either opening a database connection or " + - "accessing the database to fetch corresponding results.", e); - } finally { - GadgetDataServiceDAOFactory.closeConnection(); - } - return devicesWithDetails; - } - - @Override - public List getFeatureNonCompliantDevicesWithDetails(String featureCode, - BasicFilterSet basicFilterSet, String userName) throws InvalidFeatureCodeValueException, - DataAccessLayerException { - List featureNonCompliantDevicesWithDetails; - try { - GadgetDataServiceDAOFactory.openConnection(); - featureNonCompliantDevicesWithDetails = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). - getFeatureNonCompliantDevicesWithDetails(featureCode, basicFilterSet, userName); - } catch (SQLException e) { - throw new DataAccessLayerException("Error in either opening a database connection or " + - "accessing the database to fetch corresponding results.", e); - } finally { - GadgetDataServiceDAOFactory.closeConnection(); - } - return featureNonCompliantDevicesWithDetails; - } - -} 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 deleted file mode 100644 index 5dda71d849..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/internal/GadgetDataServiceComponent.java +++ /dev/null @@ -1,89 +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.internal; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.osgi.service.component.ComponentContext; -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.impl.GadgetDataServiceImpl; -import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager; -import org.wso2.carbon.device.mgt.core.config.DeviceManagementConfig; -import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig; -import org.wso2.carbon.ndatasource.core.DataSourceService; - -@SuppressWarnings("unused") -/** - * @scr.component name="org.wso2.carbon.device.mgt.analytics.dashboard.GadgetDataService" immediate="true" - * @scr.reference name="org.wso2.carbon.ndatasource" - * interface="org.wso2.carbon.ndatasource.core.DataSourceService" - * cardinality="1..1" - * policy="dynamic" - * bind="setDataSourceService" - * unbind="unsetDataSourceService" - */ -public class GadgetDataServiceComponent { - - private static final Log log = LogFactory.getLog(GadgetDataServiceComponent.class); - - protected void activate(ComponentContext componentContext) { - if (log.isDebugEnabled()) { - log.debug("Starting Device Management Dashboard Analytics Bundle..."); - } - try { - DeviceConfigurationManager.getInstance().initConfig(); - DeviceManagementConfig config = - DeviceConfigurationManager.getInstance().getDeviceManagementConfig(); - - DataSourceConfig dsConfig = config.getDeviceManagementConfigRepository().getDataSourceConfig(); - GadgetDataServiceDAOFactory.init(dsConfig); - //Register GadgetDataService to expose corresponding data to external parties. - componentContext.getBundleContext(). - registerService(GadgetDataService.class.getName(), new GadgetDataServiceImpl(), null); - if (log.isDebugEnabled()) { - log.debug("Device Management Dashboard Analytics Bundle has been started successfully."); - } - } catch (Throwable e) { - log.error("Error occurred while initializing the bundle.", e); - } - } - - protected void deactivate(ComponentContext componentContext) { - if (log.isDebugEnabled()) { - log.debug("Deactivating Device Management Dashboard Analytics Bundle..."); - } - //do nothing - } - - protected void setDataSourceService(DataSourceService dataSourceService) { - if (log.isDebugEnabled()) { - log.debug("Binding org.wso2.carbon.ndatasource.core.DataSourceService..."); - } - //do nothing - } - - protected void unsetDataSourceService(DataSourceService dataSourceService) { - if (log.isDebugEnabled()) { - log.debug("Unbinding org.wso2.carbon.ndatasource.core.DataSourceService..."); - } - //do nothing - } - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/util/APIUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/util/APIUtil.java deleted file mode 100644 index e9635e5d58..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/src/main/java/org/wso2/carbon/device/mgt/analytics/dashboard/util/APIUtil.java +++ /dev/null @@ -1,70 +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.util; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.context.CarbonContext; -import org.wso2.carbon.context.PrivilegedCarbonContext; -import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException; -import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationService; -import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; -import org.wso2.carbon.user.api.UserStoreException; - -import java.net.SocketException; - - -/** - * This class provides utility functions used by REST-API. - */ -public class APIUtil { - - private static Log log = LogFactory.getLog(APIUtil.class); - - public static String getAuthenticatedUser() { - PrivilegedCarbonContext threadLocalCarbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - String username = threadLocalCarbonContext.getUsername(); - String tenantDomain = threadLocalCarbonContext.getTenantDomain(); - if (username.endsWith(tenantDomain)) { - return username.substring(0, username.lastIndexOf("@")); - } - return username; - } - - public static int getAuthenticatedUserTenantDomainId() { - PrivilegedCarbonContext threadLocalCarbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - return threadLocalCarbonContext.getTenantId(); - } - - public static boolean isDeviceAdminUser() throws DeviceAccessAuthorizationException { - return getDeviceAccessAuthorizationService().isDeviceAdminUser(); - } - - private static DeviceAccessAuthorizationService getDeviceAccessAuthorizationService() { - PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - DeviceAccessAuthorizationService deviceAccessAuthorizationService = - (DeviceAccessAuthorizationService) ctx.getOSGiService(DeviceAccessAuthorizationService.class, null); - if (deviceAccessAuthorizationService == null) { - String msg = "DeviceAccessAuthorization service has not initialized."; - log.error(msg); - throw new IllegalStateException(msg); - } - return deviceAccessAuthorizationService; - } -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml index 0e41ad71a4..c2e173105f 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt device-mgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml @@ -75,16 +75,12 @@ org.wso2.carbon.databridge.commons - org.wso2.carbon.registry - org.wso2.carbon.registry.indexing - - - org.wso2.carbon.registry - org.wso2.carbon.registry.common + org.wso2.carbon + org.wso2.carbon.securevault - org.json.wso2 - json + org.apache.sling + org.apache.sling.testing.osgi-mock @@ -118,9 +114,6 @@ org.wso2.carbon.context;version="${carbon.kernel.version.range}", org.wso2.carbon.utils;version="${carbon.kernel.version.range}", org.wso2.carbon.databridge.*;version="${carbon.analytics.common.version.range}", - org.wso2.carbon.registry.core.*;resolution:=optional, - org.wso2.carbon.registry.common.*;version="${carbon.registry.imp.pkg.version.range}", - org.wso2.carbon.registry.indexing.*; version="${carbon.registry.imp.pkg.version.range}", org.json;version="${commons-json.version}", javax.xml.*, javax.xml.parsers;version="${javax.xml.parsers.import.pkg.version}";resolution:=optional, diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/DataPublisherUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/DataPublisherUtil.java index da430d5fd4..086b04c4a7 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/DataPublisherUtil.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/DataPublisherUtil.java @@ -19,6 +19,7 @@ package org.wso2.carbon.device.mgt.analytics.data.publisher; import org.w3c.dom.Document; +import org.wso2.carbon.databridge.agent.DataPublisher; import org.wso2.carbon.device.mgt.analytics.data.publisher.exception.DataPublisherConfigurationException; import javax.xml.XMLConstants; @@ -28,6 +29,9 @@ import java.io.File; public class DataPublisherUtil { + private DataPublisherUtil(){ + } + public static Document convertToDocument(File file) throws DataPublisherConfigurationException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/DeviceDataPublisher.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/DeviceDataPublisher.java index 537e5b01b4..8753dc2af7 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/DeviceDataPublisher.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/DeviceDataPublisher.java @@ -18,13 +18,6 @@ */ package org.wso2.carbon.device.mgt.analytics.data.publisher; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.json.JSONException; -import org.json.JSONObject; -import org.wso2.carbon.base.MultitenantConstants; -import org.wso2.carbon.context.CarbonContext; -import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.databridge.agent.DataPublisher; import org.wso2.carbon.databridge.agent.exception.DataEndpointAgentConfigurationException; import org.wso2.carbon.databridge.agent.exception.DataEndpointAuthenticationException; @@ -32,38 +25,16 @@ import org.wso2.carbon.databridge.agent.exception.DataEndpointConfigurationExcep import org.wso2.carbon.databridge.agent.exception.DataEndpointException; import org.wso2.carbon.databridge.commons.exception.TransportException; import org.wso2.carbon.device.mgt.analytics.data.publisher.config.AnalyticsConfiguration; -import org.wso2.carbon.device.mgt.analytics.data.publisher.exception.DataPublisherAlreadyExistsException; import org.wso2.carbon.device.mgt.analytics.data.publisher.exception.DataPublisherConfigurationException; -import org.wso2.carbon.device.mgt.analytics.data.publisher.internal.DataPublisherDataHolder; -import org.wso2.carbon.registry.core.Registry; -import org.wso2.carbon.registry.core.Resource; -import org.wso2.carbon.registry.core.exceptions.RegistryException; -import org.wso2.carbon.registry.core.service.RegistryService; -import org.wso2.carbon.registry.core.service.TenantRegistryLoader; - -import java.nio.charset.Charset; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; /** * This is used to manage data publisher per tenant. */ public class DeviceDataPublisher { - private static final Log log = LogFactory.getLog(DeviceDataPublisher.class); - private static final String TENANT_DAS_CONFIG_LOCATION = "/das/config.json"; - private static final String USERNAME_CONFIG_TAG = "username"; - private static final String PASSWORD_CONFIG_TAG = "password"; - /** - * map to store data publishers for each tenant. - */ - private static Map dataPublisherMap; + private DataPublisher dataPublisher; private static DeviceDataPublisher deviceDataPublisher; - public DeviceDataPublisher() { - dataPublisherMap = new ConcurrentHashMap<>(); - } - public static DeviceDataPublisher getInstance() { if (deviceDataPublisher == null) { synchronized (DeviceDataPublisher.class) { @@ -78,144 +49,43 @@ public class DeviceDataPublisher { /** * this return the data publisher for the tenant. * - * @return + * @return instance of data publisher * @throws DataPublisherConfigurationException * */ public DataPublisher getDataPublisher() throws DataPublisherConfigurationException { - String tenantDomain = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain(true); - //Get LoadBalancingDataPublisher which has been registered for the tenant. - DataPublisher dataPublisher = getDataPublisher(tenantDomain); - //If a LoadBalancingDataPublisher had not been registered for the tenant. - if (dataPublisher == null) { - AnalyticsConfiguration analyticsConfig = AnalyticsConfiguration.getInstance(); - if (!analyticsConfig.isEnable()) { - return null; - } - String analyticsServerUrlGroups = analyticsConfig.getReceiverServerUrl(); - String analyticsServerUsername = analyticsConfig.getAdminUsername(); - String analyticsServerPassword = analyticsConfig.getAdminPassword(); - if (!MultitenantConstants.SUPER_TENANT_DOMAIN_NAME.equals(tenantDomain)) { - int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); - String userInfo[] = getAnalyticsServerUserInfo(tenantId); - if (userInfo != null) { - analyticsServerUsername = userInfo[0]; - analyticsServerPassword = userInfo[1]; - } - } - //Create new DataPublisher for the tenant. - try { - dataPublisher = new DataPublisher(analyticsServerUrlGroups, analyticsServerUsername, - analyticsServerPassword); - //Add created DataPublisher. - addDataPublisher(tenantDomain, dataPublisher); - } catch (DataEndpointAgentConfigurationException e) { - throw new DataPublisherConfigurationException("Configuration Exception on data publisher for " + - "ReceiverGroup = " + analyticsServerUrlGroups + " for username " + analyticsServerUsername, e); - } catch (DataEndpointException e) { - throw new DataPublisherConfigurationException("Invalid ReceiverGroup = " + analyticsServerUrlGroups, e); - } catch (DataEndpointConfigurationException e) { - throw new DataPublisherConfigurationException("Invalid Data endpoint configuration.", e); - } catch (DataEndpointAuthenticationException e) { - throw new DataPublisherConfigurationException("Authentication Failed for user " + - analyticsServerUsername, e); - } catch (TransportException e) { - throw new DataPublisherConfigurationException("Error occurred while retrieving data publisher", e); - } catch (DataPublisherAlreadyExistsException e) { - log.warn("Attempting to register a data publisher for the tenant " + tenantDomain + - " when one already exists. Returning existing data publisher"); - return getDataPublisher(tenantDomain); - } - } - return dataPublisher; - } - - /** - * Fetch the data publisher which has been registered under the tenant domain. - * - * @param tenantDomain - The tenant domain under which the data publisher is registered - * @return - Instance of the DataPublisher which was registered. Null if not registered. - */ - private DataPublisher getDataPublisher(String tenantDomain) { - if (dataPublisherMap.containsKey(tenantDomain)) { - return dataPublisherMap.get(tenantDomain); - } - return null; - } - - /** - * Adds a LoadBalancingDataPublisher to the data publisher map. - * - * @param tenantDomain - The tenant domain under which the data publisher will be registered. - * @param dataPublisher - Instance of the LoadBalancingDataPublisher - * @throws DataPublisherAlreadyExistsException - * - - * If a data publisher has already been registered under the tenant - * domain - */ - private void addDataPublisher(String tenantDomain, DataPublisher dataPublisher) - throws DataPublisherAlreadyExistsException { - if (dataPublisherMap.containsKey(tenantDomain)) { - throw new DataPublisherAlreadyExistsException( - "A DataPublisher has already been created for the tenant " + tenantDomain); - } - - dataPublisherMap.put(tenantDomain, dataPublisher); - } - - /** - * retrieve the credential from registry - */ - private String[] getAnalyticsServerUserInfo(int tenantId) throws DataPublisherConfigurationException { - try { - String config = getConfigRegistryResourceContent(tenantId, TENANT_DAS_CONFIG_LOCATION); - JSONObject jsonConfigforDas = new JSONObject(config); - String credential[] = new String[2]; - credential[0] = jsonConfigforDas.getString(USERNAME_CONFIG_TAG); - credential[1] = jsonConfigforDas.getString(PASSWORD_CONFIG_TAG); - return credential; - } catch (RegistryException e) { - throw new DataPublisherConfigurationException("Failed to load the registry for tenant " + tenantId, e); - } catch (JSONException e) { - throw new DataPublisherConfigurationException( - "Failed to parse the credential from the registry for tenant " + tenantId, e); - } - } - - /** - * get the credential detail from the registry for tenants. - * - * @param tenantId for identify tenant space. - * @param registryLocation retrieve the config file from tenant space. - * @return the config for tenant - * @throws RegistryException - */ - private String getConfigRegistryResourceContent(int tenantId, final String registryLocation) - throws RegistryException { - String content = null; - try { - PrivilegedCarbonContext.startTenantFlow(); - PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(tenantId, true); - RegistryService registryService = DataPublisherDataHolder.getInstance().getRegistryService(); - if (registryService != null) { - Registry registry = registryService.getConfigSystemRegistry(tenantId); - this.loadTenantRegistry(tenantId); - if (registry.resourceExists(registryLocation)) { - Resource resource = registry.get(registryLocation); - content = new String((byte[]) resource.getContent(), Charset.defaultCharset()); + if (this.dataPublisher == null) { + synchronized (this) { + if (this.dataPublisher == null) { + AnalyticsConfiguration analyticsConfig = AnalyticsConfiguration.getInstance(); + if (!analyticsConfig.isEnable()) { + return null; + } + String analyticsServerUrlGroups = analyticsConfig.getReceiverServerUrl(); + String analyticsServerUsername = analyticsConfig.getAdminUsername(); + String analyticsServerPassword = analyticsConfig.getAdminPassword(); + try { + this.dataPublisher = new DataPublisher(analyticsServerUrlGroups, analyticsServerUsername, + analyticsServerPassword); + } catch (DataEndpointAgentConfigurationException e) { + throw new DataPublisherConfigurationException("Configuration Exception on data publisher for " + + "ReceiverGroup = " + analyticsServerUrlGroups + " for username " + analyticsServerUsername, e); + } catch (DataEndpointException e) { + throw new DataPublisherConfigurationException("Invalid ReceiverGroup = " + analyticsServerUrlGroups, e); + } catch (DataEndpointConfigurationException e) { + throw new DataPublisherConfigurationException("Invalid Data endpoint configuration.", e); + } catch (DataEndpointAuthenticationException e) { + throw new DataPublisherConfigurationException("Authentication Failed for user " + + analyticsServerUsername, e); + } catch (TransportException e) { + throw new DataPublisherConfigurationException("Error occurred while retrieving data publisher", e); + } + } else { + return this.dataPublisher; } } - } finally { - PrivilegedCarbonContext.endTenantFlow(); } - - return content; - } - - private void loadTenantRegistry(int tenantId) throws RegistryException { - TenantRegistryLoader tenantRegistryLoader = DataPublisherDataHolder.getInstance().getTenantRegistryLoader(); - DataPublisherDataHolder.getInstance().getIndexLoaderService().loadTenantIndex(tenantId); - tenantRegistryLoader.loadTenantRegistry(tenantId); + return this.dataPublisher; } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/config/AnalyticsConfiguration.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/config/AnalyticsConfiguration.java index 8c08d5eccf..b758d4cf1c 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/config/AnalyticsConfiguration.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/config/AnalyticsConfiguration.java @@ -98,8 +98,12 @@ public class AnalyticsConfiguration { } public static void init() throws DataPublisherConfigurationException { + init(AnalyticsConfiguration.DEVICE_ANALYTICS_CONFIG_PATH); + } + + public static void init(String analyticsConfigPath) throws DataPublisherConfigurationException { try { - File authConfig = new File(AnalyticsConfiguration.DEVICE_ANALYTICS_CONFIG_PATH); + File authConfig = new File(analyticsConfigPath); Document doc = DataPublisherUtil.convertToDocument(authConfig); /* Un-marshaling device analytics configuration */ diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/config/InvalidConfigurationStateException.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/config/InvalidConfigurationStateException.java index 8603b21f16..b9686bac42 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/config/InvalidConfigurationStateException.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/config/InvalidConfigurationStateException.java @@ -26,20 +26,4 @@ public class InvalidConfigurationStateException extends RuntimeException { super(message); } - public InvalidConfigurationStateException(String message, Throwable cause) { - super(message, cause); - } - - public InvalidConfigurationStateException(String msg, Exception nestedEx) { - super(msg, nestedEx); - } - - public InvalidConfigurationStateException() { - super(); - } - - public InvalidConfigurationStateException(Throwable cause) { - super(cause); - } - } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/exception/DataPublisherAlreadyExistsException.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/exception/DataPublisherAlreadyExistsException.java deleted file mode 100644 index 8646d92e57..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/exception/DataPublisherAlreadyExistsException.java +++ /dev/null @@ -1,44 +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.data.publisher.exception; - -public class DataPublisherAlreadyExistsException extends Exception { - public DataPublisherAlreadyExistsException() { - super(); - } - - public DataPublisherAlreadyExistsException(String message) { - super(message); - } - - public DataPublisherAlreadyExistsException(String message, Throwable cause) { - super(message, cause); - } - - public DataPublisherAlreadyExistsException(Throwable cause) { - super(cause); - } - - protected DataPublisherAlreadyExistsException(String message, Throwable cause, - boolean enableSuppression, - boolean writableStackTrace) { - super(message, cause, enableSuppression, writableStackTrace); - } -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/exception/DataPublisherConfigurationException.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/exception/DataPublisherConfigurationException.java index 7db8ae1009..ea93c62a31 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/exception/DataPublisherConfigurationException.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/exception/DataPublisherConfigurationException.java @@ -19,9 +19,6 @@ package org.wso2.carbon.device.mgt.analytics.data.publisher.exception; public class DataPublisherConfigurationException extends Exception { - public DataPublisherConfigurationException() { - super(); - } public DataPublisherConfigurationException(String message) { super(message); @@ -31,14 +28,4 @@ public class DataPublisherConfigurationException extends Exception { super(message, cause); } - public DataPublisherConfigurationException(Throwable cause) { - super(cause); - } - - protected DataPublisherConfigurationException(String message, Throwable cause, - boolean enableSuppression, - boolean writableStackTrace) { - super(message, cause, enableSuppression, writableStackTrace); - } - } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/internal/DataPublisherDataHolder.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/internal/DataPublisherDataHolder.java deleted file mode 100644 index 6f132b3fb8..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/internal/DataPublisherDataHolder.java +++ /dev/null @@ -1,63 +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.data.publisher.internal; - -import org.wso2.carbon.registry.core.service.RegistryService; -import org.wso2.carbon.registry.core.service.TenantRegistryLoader; -import org.wso2.carbon.registry.indexing.service.TenantIndexingLoader; - -public class DataPublisherDataHolder { - private static DataPublisherDataHolder thisInstance = new DataPublisherDataHolder(); - - private TenantRegistryLoader tenantRegistryLoader; - private TenantIndexingLoader indexLoader; - private RegistryService registryService; - private DataPublisherDataHolder() { - } - - - public static DataPublisherDataHolder getInstance() { - return thisInstance; - } - - public void setTenantRegistryLoader(TenantRegistryLoader tenantRegistryLoader){ - this.tenantRegistryLoader = tenantRegistryLoader; - } - - public TenantRegistryLoader getTenantRegistryLoader(){ - return tenantRegistryLoader; - } - - public void setIndexLoaderService(TenantIndexingLoader indexLoader) { - this.indexLoader = indexLoader; - } - - public TenantIndexingLoader getIndexLoaderService(){ - return indexLoader; - } - - public RegistryService getRegistryService() { - return registryService; - } - - public void setRegistryService(RegistryService registryService) { - this.registryService = registryService; - } - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/internal/DataPublisherServiceComponent.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/internal/DataPublisherServiceComponent.java index 2314b73806..fe2cad0ea1 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/internal/DataPublisherServiceComponent.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/internal/DataPublisherServiceComponent.java @@ -26,30 +26,10 @@ import org.osgi.service.component.ComponentContext; import org.wso2.carbon.device.mgt.analytics.data.publisher.config.AnalyticsConfiguration; import org.wso2.carbon.device.mgt.analytics.data.publisher.service.EventsPublisherService; import org.wso2.carbon.device.mgt.analytics.data.publisher.service.EventsPublisherServiceImpl; -import org.wso2.carbon.registry.core.service.RegistryService; -import org.wso2.carbon.registry.core.service.TenantRegistryLoader; -import org.wso2.carbon.registry.indexing.service.TenantIndexingLoader; /** * @scr.component name="org.wso2.carbon.device.mgt.analytics.data.publisher.internal.DataPublisherServiceComponent" * immediate="true" - * @scr.reference name="registry.service" - * interface="org.wso2.carbon.registry.core.service.RegistryService" - * cardinality="1..1" - * policy="dynamic" - * bind="setRegistryService" - * unbind="unsetRegistryService" - * @scr.reference name="tenant.registryloader" - * interface="org.wso2.carbon.registry.core.service.TenantRegistryLoader" - * cardinality="1..1" policy="dynamic" - * bind="setTenantRegistryLoader" - * unbind="unsetTenantRegistryLoader" - * @scr.reference name="tenant.indexloader" - * interface="org.wso2.carbon.registry.indexing.service.TenantIndexingLoader" - * cardinality="1..1" - * policy="dynamic" - * bind="setIndexLoader" - * unbind="unsetIndexLoader" */ public class DataPublisherServiceComponent { @@ -62,11 +42,9 @@ public class DataPublisherServiceComponent { log.debug("Initializing device analytics bundle"); } AnalyticsConfiguration.init(); - BundleContext bundleCtx = componentCtx.getBundleContext(); this.analyticsServiceRef = bundleCtx.registerService(EventsPublisherService.class, new EventsPublisherServiceImpl(), null); - if (log.isDebugEnabled()) { log.debug("Device management analytics bundle has been successfully initialized"); } @@ -86,35 +64,4 @@ public class DataPublisherServiceComponent { log.debug("Device analytics bundle has been successfully deactivated"); } } - - protected void setRegistryService(RegistryService registryService) { - if (registryService != null && log.isDebugEnabled()) { - log.debug("Registry service initialized"); - } - DataPublisherDataHolder.getInstance().setRegistryService(registryService); - } - - protected void unsetRegistryService(RegistryService registryService) { - DataPublisherDataHolder.getInstance().setRegistryService(null); - } - - protected void setTenantRegistryLoader(TenantRegistryLoader tenantRegistryLoader) { - DataPublisherDataHolder.getInstance().setTenantRegistryLoader(tenantRegistryLoader); - } - - protected void unsetTenantRegistryLoader(TenantRegistryLoader tenantRegistryLoader) { - DataPublisherDataHolder.getInstance().setTenantRegistryLoader(null); - } - - protected void setIndexLoader(TenantIndexingLoader indexLoader) { - if (indexLoader != null && log.isDebugEnabled()) { - log.debug("IndexLoader service initialized"); - } - DataPublisherDataHolder.getInstance().setIndexLoaderService(indexLoader); - } - - protected void unsetIndexLoader(TenantIndexingLoader indexLoader) { - DataPublisherDataHolder.getInstance().setIndexLoaderService(null); - } - } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/BaseAnalyticsDataPublisherTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/BaseAnalyticsDataPublisherTest.java new file mode 100644 index 0000000000..3d42a3020b --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/BaseAnalyticsDataPublisherTest.java @@ -0,0 +1,57 @@ +/* +* Copyright (c) 2017, 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.data.publisher; + +import org.testng.annotations.BeforeSuite; +import org.wso2.carbon.base.MultitenantConstants; +import org.wso2.carbon.context.PrivilegedCarbonContext; + +import java.io.File; + +public class BaseAnalyticsDataPublisherTest { + + @BeforeSuite + public void init() { + setUpCarbonHome(); + } + + private void setUpCarbonHome() { + if (System.getProperty("carbon.home") == null) { + File file = new File("src/test/resources/carbon-home"); + if (file.exists()) { + System.setProperty("carbon.home", file.getAbsolutePath()); + } + file = new File("carbon-home"); + if (file.exists()) { + System.setProperty("carbon.home", file.getAbsolutePath()); + } + file = new File("../../resources/carbon-home"); + if (file.exists()) { + System.setProperty("carbon.home", file.getAbsolutePath()); + } + file = new File("../../../resources/carbon-home"); + if (file.exists()) { + System.setProperty("carbon.home", file.getAbsolutePath()); + } + } + PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(MultitenantConstants + .SUPER_TENANT_DOMAIN_NAME); + PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(MultitenantConstants.SUPER_TENANT_ID); + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/DataPublisherConfigTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/DataPublisherConfigTest.java new file mode 100644 index 0000000000..e5bcab9378 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/DataPublisherConfigTest.java @@ -0,0 +1,83 @@ +/* +* Copyright (c) 2017, 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.data.publisher; + +import junit.framework.Assert; +import org.testng.annotations.Test; +import org.wso2.carbon.device.mgt.analytics.data.publisher.config.AnalyticsConfiguration; +import org.wso2.carbon.device.mgt.analytics.data.publisher.config.InvalidConfigurationStateException; +import org.wso2.carbon.device.mgt.analytics.data.publisher.exception.DataPublisherConfigurationException; + +import java.io.File; +import java.lang.reflect.Field; +import java.net.URL; + +/** + * This test class will validate the Data publisher configuration creation. + */ +public class DataPublisherConfigTest extends BaseAnalyticsDataPublisherTest { + + @Test(description = "Validating the behaviour od getInstance of the config before calling the init", + expectedExceptions = InvalidConfigurationStateException.class) + public void testGetInstanceWithoutInit() throws NoSuchFieldException, IllegalAccessException { + Field configField = AnalyticsConfiguration.class.getDeclaredField("config"); + configField.setAccessible(true); + configField.set(configField, null); + AnalyticsConfiguration.getInstance(); + } + + @Test(description = "Validating the behaviour od getInstance of the config before calling the init", + expectedExceptions = DataPublisherConfigurationException.class, + dependsOnMethods = "testGetInstanceWithoutInit") + public void testInitWithInvalidConfig() throws DataPublisherConfigurationException { + ClassLoader classLoader = this.getClass().getClassLoader(); + URL invalidConfig = classLoader.getResource("carbon-home/repository/conf/etc/" + + "device-analytics-config-invalid.xml"); + Assert.assertTrue("No configuration - device-analytics-config-invalid.xml found in resource dir", + invalidConfig != null); + File file = new File(invalidConfig.getFile()); + AnalyticsConfiguration.init(file.getAbsolutePath()); + } + + + @Test(description = "Validating the behaviour od getInstance of the config before calling the init", + expectedExceptions = DataPublisherConfigurationException.class, + dependsOnMethods = "testInitWithInvalidConfig") + public void testInitWithInvalidXML() throws DataPublisherConfigurationException { + ClassLoader classLoader = this.getClass().getClassLoader(); + URL invalidConfig = classLoader.getResource("carbon-home/repository/conf/etc/" + + "device-analytics-config-invalid-xml.xml"); + Assert.assertTrue("No configuration - device-analytics-config-invalid-xml.xml found in resource dir", + invalidConfig != null); + File file = new File(invalidConfig.getFile()); + AnalyticsConfiguration.init(file.getAbsolutePath()); + } + + + @Test(description = "Validating the init method with all required params", + dependsOnMethods = "testInitWithInvalidXML") + public void testInitWithValidConfig() throws DataPublisherConfigurationException { + AnalyticsConfiguration.init(); + AnalyticsConfiguration analyticsConfiguration = AnalyticsConfiguration.getInstance(); + Assert.assertEquals(analyticsConfiguration.getAdminPassword(), "testuserpwd"); + Assert.assertEquals(analyticsConfiguration.getAdminUsername(), "testuser"); + Assert.assertEquals(analyticsConfiguration.getReceiverServerUrl(), "tcp://localhost:7615"); + Assert.assertTrue(analyticsConfiguration.isEnable()); + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/DataPublisherServiceComponentTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/DataPublisherServiceComponentTest.java new file mode 100644 index 0000000000..d5ffb75d48 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/DataPublisherServiceComponentTest.java @@ -0,0 +1,67 @@ +/* +* Copyright (c) 2017, 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.data.publisher; + + +import org.apache.sling.testing.mock.osgi.MockOsgi; +import org.osgi.service.component.ComponentContext; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; +import org.wso2.carbon.device.mgt.analytics.data.publisher.internal.DataPublisherServiceComponent; +import org.wso2.carbon.device.mgt.analytics.data.publisher.util.TestComponentContext; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +/** + * This tesclass will be validating the behaviour of {@link DataPublisherServiceComponent} + */ +public class DataPublisherServiceComponentTest extends BaseAnalyticsDataPublisherTest { + private DataPublisherServiceComponent serviceComponent; + + @BeforeClass + public void initTest() { + this.serviceComponent = new DataPublisherServiceComponent(); + } + + @Test (description = "Test bundle activation with exception thrown when service resgistration") + public void activateWithException() throws NoSuchMethodException, IllegalAccessException, + InvocationTargetException { + this.activate(new TestComponentContext()); + } + + @Test(dependsOnMethods = "activateWithException", description = "Test the bundle activation with succesful path") + public void activateWithoutException() throws NoSuchMethodException, InvocationTargetException, + IllegalAccessException { + this.activate(MockOsgi.newComponentContext()); + } + + @Test(dependsOnMethods = "activateWithoutException", description = "Test bundle deactivation") + public void deActivate() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { + Method method = this.serviceComponent.getClass().getDeclaredMethod("deactivate", ComponentContext.class); + method.setAccessible(true); + method.invoke(this.serviceComponent, MockOsgi.newComponentContext()); + } + + private void activate(ComponentContext componentContext) throws NoSuchMethodException, InvocationTargetException, + IllegalAccessException { + Method method = this.serviceComponent.getClass().getDeclaredMethod("activate", ComponentContext.class); + method.setAccessible(true); + method.invoke(this.serviceComponent, componentContext); + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/EventPublisherServiceTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/EventPublisherServiceTest.java new file mode 100644 index 0000000000..a7e5e8083d --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/EventPublisherServiceTest.java @@ -0,0 +1,144 @@ +/* +* Copyright (c) 2017, 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.data.publisher; + +import org.testng.Assert; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; +import org.wso2.carbon.context.PrivilegedCarbonContext; +import org.wso2.carbon.databridge.agent.AgentHolder; +import org.wso2.carbon.databridge.agent.exception.DataEndpointAgentConfigurationException; +import org.wso2.carbon.device.mgt.analytics.data.publisher.config.AnalyticsConfiguration; +import org.wso2.carbon.device.mgt.analytics.data.publisher.config.InvalidConfigurationStateException; +import org.wso2.carbon.device.mgt.analytics.data.publisher.exception.DataPublisherConfigurationException; +import org.wso2.carbon.device.mgt.analytics.data.publisher.service.EventsPublisherService; +import org.wso2.carbon.device.mgt.analytics.data.publisher.service.EventsPublisherServiceImpl; + +import java.lang.reflect.Field; + +/** + * This test class will test the methods that are exposed from {@link EventsPublisherService} + */ +public class EventPublisherServiceTest extends BaseAnalyticsDataPublisherTest { + + private static final String STREAM_NAME = "org.wso2.test.stream"; + private static final String TENANT_DOMAIN = "test.com"; + + private EventsPublisherService eventsPublisherService; + + @BeforeClass + public void initTest() { + this.eventsPublisherService = new EventsPublisherServiceImpl(); + } + + @Test(description = "Publish the event before initializing", + expectedExceptions = InvalidConfigurationStateException.class) + public void publishBeforeInit() throws DataPublisherConfigurationException, NoSuchFieldException, + IllegalAccessException, InstantiationException { + Field configField = AnalyticsConfiguration.class.getDeclaredField("config"); + configField.setAccessible(true); + configField.set(configField, null); + this.eventsPublisherService.publishEvent(STREAM_NAME, "1.0.0", getEventProps(), getEventProps(), + getEventProps()); + } + + @Test(description = "Publish with analytics config disabled", dependsOnMethods = "publishBeforeInit") + public void publishWhenAnalyticsConfigDisabled() throws DataPublisherConfigurationException { + AnalyticsConfiguration.init(); + AnalyticsConfiguration.getInstance().setEnable(false); + boolean published = this.eventsPublisherService.publishEvent(STREAM_NAME, "1.0.0", getEventProps(), + getEventProps(), getEventProps()); + Assert.assertFalse(published); + } + + @Test(description = "Publish the event after initializing", dependsOnMethods = "publishWhenAnalyticsConfigDisabled") + public void publishAfterInit() throws DataPublisherConfigurationException { + AnalyticsConfiguration.getInstance().setEnable(true); + boolean published = this.eventsPublisherService.publishEvent(STREAM_NAME, "1.0.0", getEventProps(), + getEventProps(), getEventProps()); + Assert.assertTrue(published); + } + + @Test(description = "Publish as tenant", dependsOnMethods = "publishAfterInit") + public void publishAsTenant() throws DataPublisherConfigurationException { + publishAsTenant(getEventProps()); + } + + @Test(description = "Publish the with no meta data as tenant", dependsOnMethods = "publishAsTenant", + expectedExceptions = DataPublisherConfigurationException.class) + public void publishAsTenantWithNoMetaData() throws DataPublisherConfigurationException { + publishAsTenant(null); + } + + @Test(description = "Publish the with empty meta data as tenant", dependsOnMethods = "publishAsTenant", + expectedExceptions = DataPublisherConfigurationException.class) + public void publishAsTenantWithEmptyMetaData() throws DataPublisherConfigurationException { + publishAsTenant(new Object[0]); + } + + @Test(description = "Publishing with invalid data publisher config", + dependsOnMethods = {"publishAsTenantWithEmptyMetaData", "publishAsTenantWithNoMetaData"}, + expectedExceptions = DataPublisherConfigurationException.class) + public void publishWithDataEndpointConfigException() throws DataPublisherConfigurationException, + NoSuchFieldException, IllegalAccessException { + AnalyticsConfiguration analyticsConfiguration = AnalyticsConfiguration.getInstance(); + analyticsConfiguration.setReceiverServerUrl(""); + Field dataPublisherField = DeviceDataPublisher.class.getDeclaredField("deviceDataPublisher"); + dataPublisherField.setAccessible(true); + dataPublisherField.set(dataPublisherField, null); + publishAsTenant(getEventProps()); + } + + @Test(description = "Publishing with invalid data publisher config", + dependsOnMethods = "publishWithDataEndpointConfigException", + expectedExceptions = DataPublisherConfigurationException.class) + public void publishWithDataAgentConfigException() throws DataPublisherConfigurationException, + NoSuchFieldException, IllegalAccessException, DataEndpointAgentConfigurationException { + AnalyticsConfiguration.init(); + Field defaultAgentName = AgentHolder.getInstance().getClass().getDeclaredField("defaultDataEndpointAgentName"); + defaultAgentName.setAccessible(true); + defaultAgentName.set(AgentHolder.getInstance(), "dummyAgent"); + publishAsTenant(getEventProps()); + } + + @Test(description = "Publishing with invalid data publisher config", + dependsOnMethods = "publishWithDataAgentConfigException") + public void publishWithDataEndpointException() throws DataPublisherConfigurationException, + NoSuchFieldException, IllegalAccessException, DataEndpointAgentConfigurationException { + AnalyticsConfiguration.init(); + + } + + private void publishAsTenant(Object[] metaData) throws DataPublisherConfigurationException { + PrivilegedCarbonContext.startTenantFlow(); + PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(TENANT_DOMAIN, true); + try { + boolean published = this.eventsPublisherService.publishEvent(STREAM_NAME, "1.0.0", metaData, + getEventProps(), getEventProps()); + Assert.assertTrue(published); + } finally { + PrivilegedCarbonContext.endTenantFlow(); + } + } + + private Object[] getEventProps() { + return new Object[]{"123"}; + } + + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/util/TestComponentContext.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/util/TestComponentContext.java new file mode 100644 index 0000000000..adcb3cba2f --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/util/TestComponentContext.java @@ -0,0 +1,81 @@ +/* +* Copyright (c) 2017, 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.data.publisher.util; + +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; +import org.osgi.service.component.ComponentContext; +import org.osgi.service.component.ComponentInstance; + +import java.util.Dictionary; + +/** + * Mock implementation for component context. + */ +public class TestComponentContext implements ComponentContext { + @Override + public Dictionary getProperties() { + return null; + } + + @Override + public Object locateService(String s) { + return null; + } + + @Override + public Object locateService(String s, ServiceReference serviceReference) { + return null; + } + + @Override + public Object[] locateServices(String s) { + return new Object[0]; + } + + @Override + public BundleContext getBundleContext() { + return null; + } + + @Override + public Bundle getUsingBundle() { + return null; + } + + @Override + public ComponentInstance getComponentInstance() { + return null; + } + + @Override + public void enableComponent(String s) { + + } + + @Override + public void disableComponent(String s) { + + } + + @Override + public ServiceReference getServiceReference() { + return null; + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/carbon.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/carbon.xml new file mode 100644 index 0000000000..31752cf9b4 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/carbon.xml @@ -0,0 +1,656 @@ + + + + + + + + + ${product.name} + + + ${product.key} + + + ${product.version} + + + + + + + + + local:/${carbon.context}/services/ + + + + + + + ${default.server.role} + + + + + + + org.wso2.carbon + + + / + + + + + + + + + 15 + + + + + + + + + 0 + + + + + 9999 + + 11111 + + + + + + 10389 + + 8000 + + + + + + 10500 + + + + + + + org.wso2.carbon.tomcat.jndi.CarbonJavaURLContextFactory + + + + + + + + + java + + + + + + + + + + false + + + false + + + 600 + + + + false + + + + + + + + 30 + + + + + + + + + 15 + + + + + + ${carbon.home}/repository/deployment/server/ + + + 15 + + + ${carbon.home}/repository/conf/axis2/axis2.xml + + + 30000 + + + ${carbon.home}/repository/deployment/client/ + + ${carbon.home}/repository/conf/axis2/axis2_client.xml + + true + + + + + + + + + + admin + Default Administrator Role + + + user + Default User Role + + + + + + + + + + + + ${carbon.home}/repository/resources/security/wso2carbon.jks + + JKS + + wso2carbon + + wso2carbon + + wso2carbon + + + + + + ${carbon.home}/repository/resources/security/client-truststore.jks + + JKS + + wso2carbon + + + + + + + + + + + + + + + + + + + UserManager + + + false + + + + + + + ${carbon.home}/tmp/work + + + + + + true + + + 10 + + + 30 + + + + + + 100 + + + + keystore + certificate + * + + org.wso2.carbon.ui.transports.fileupload.AnyFileUploadExecutor + + + + + jarZip + + org.wso2.carbon.ui.transports.fileupload.JarZipUploadExecutor + + + + dbs + + org.wso2.carbon.ui.transports.fileupload.DBSFileUploadExecutor + + + + tools + + org.wso2.carbon.ui.transports.fileupload.ToolsFileUploadExecutor + + + + toolsAny + + org.wso2.carbon.ui.transports.fileupload.ToolsAnyFileUploadExecutor + + + + + + + info + org.wso2.carbon.core.transports.util.InfoProcessor + + + wsdl + org.wso2.carbon.core.transports.util.Wsdl11Processor + + + wsdl2 + org.wso2.carbon.core.transports.util.Wsdl20Processor + + + xsd + org.wso2.carbon.core.transports.util.XsdProcessor + + + + + + false + false + true + svn + http://svnrepo.example.com/repos/ + username + password + true + + + + + + + + + + + + + + + ${require.carbon.servlet} + + + + + true + + + + + + + default repository + ${p2.repo.url} + + + + + + + + true + + + + + + true + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/data-bridge/data-agent-config-invalid.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/data-bridge/data-agent-config-invalid.xml new file mode 100644 index 0000000000..2d0264e368 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/data-bridge/data-agent-config-invalid.xml @@ -0,0 +1,69 @@ + + + + + + Thrift + org.wso2.carbon.databridge.agent.endpoint.thrift.ThriftDataEndpointNoClass + src/test/resources/client-truststore.jks + wso2carbon + 32768 + 200 + 1 + 30000 + 1 + 20 + 30 + 250 + 250 + 5500 + 5000 + 250 + 250 + 5500 + 5000 + + + + + + Binary + org.wso2.carbon.databridge.agent.endpoint.binary.BinaryDataEndpoint + src/test/resources/client-truststore.jks + wso2carbon + 32768 + 200 + 1 + 1 + 30000 + 20 + 30 + 250 + 250 + 5500 + 5000 + 250 + 250 + 5500 + 5000 + + + + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/data-bridge/data-agent-config.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/data-bridge/data-agent-config.xml new file mode 100644 index 0000000000..05215f7fc0 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/data-bridge/data-agent-config.xml @@ -0,0 +1,69 @@ + + + + + + Thrift + org.wso2.carbon.databridge.agent.endpoint.thrift.ThriftDataEndpoint + src/test/resources/client-truststore.jks + wso2carbon + 32768 + 200 + 1 + 30000 + 1 + 20 + 30 + 250 + 250 + 5500 + 5000 + 250 + 250 + 5500 + 5000 + + + + + + Binary + org.wso2.carbon.databridge.agent.endpoint.binary.BinaryDataEndpoint + src/test/resources/client-truststore.jks + wso2carbon + 32768 + 200 + 1 + 1 + 30000 + 20 + 30 + 250 + 250 + 5500 + 5000 + 250 + 250 + 5500 + 5000 + + + + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/etc/device-analytics-config-invalid-xml.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/etc/device-analytics-config-invalid-xml.xml new file mode 100644 index 0000000000..4353624e50 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/etc/device-analytics-config-invalid-xml.xml @@ -0,0 +1,35 @@ + + + + + + tcp://localhost:7615 + testuser + testuserpwd diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/etc/device-analytics-config-invalid.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/etc/device-analytics-config-invalid.xml new file mode 100644 index 0000000000..624a05b5f4 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/etc/device-analytics-config-invalid.xml @@ -0,0 +1,35 @@ + + + + + + tcp://localhost:7615 + testuser + testuserpwd + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/etc/device-analytics-config.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/etc/device-analytics-config.xml new file mode 100644 index 0000000000..8edea74667 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/etc/device-analytics-config.xml @@ -0,0 +1,36 @@ + + + + + + true + tcp://localhost:7615 + testuser + testuserpwd + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/registry.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/registry.xml new file mode 100644 index 0000000000..a226ae80a8 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/registry.xml @@ -0,0 +1,50 @@ + + + + + + + + wso2registry + false + true + / + + + jdbc:h2:./target/databasetest/CARBON_TEST + + org.h2.Driver + 80 + 60000 + 5 + + + false + + + + true + true + true + true + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/client-truststore.jks b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/client-truststore.jks new file mode 100644 index 0000000000..3b9fdfb9e8 Binary files /dev/null and b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/client-truststore.jks differ diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/testng.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/testng.xml new file mode 100644 index 0000000000..8a3669fd4d --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/testng.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml index 3e56eb72ed..8e7f816339 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml @@ -22,7 +22,7 @@ device-mgt org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml @@ -300,11 +300,6 @@ org.wso2.carbon.apimgt.annotations provided - - org.wso2.carbon.devicemgt - org.wso2.carbon.device.mgt.analytics.dashboard - provided - org.wso2.orbit.com.fasterxml.jackson.core jackson-annotations diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/DeviceMgtAPIUtils.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/DeviceMgtAPIUtils.java index d719e90e00..254ad9a95e 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/DeviceMgtAPIUtils.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/DeviceMgtAPIUtils.java @@ -35,7 +35,6 @@ import org.wso2.carbon.analytics.api.AnalyticsDataAPI; import org.wso2.carbon.context.CarbonContext; import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.core.util.Utils; -import org.wso2.carbon.device.mgt.analytics.dashboard.GadgetDataService; import org.wso2.carbon.device.mgt.analytics.data.publisher.service.EventsPublisherService; import org.wso2.carbon.device.mgt.common.Device; import org.wso2.carbon.device.mgt.common.DeviceIdentifier; @@ -438,15 +437,6 @@ public class DeviceMgtAPIUtils { return searchManagerService; } - public static GadgetDataService getGadgetDataService() { - PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - GadgetDataService gadgetDataService = (GadgetDataService) ctx.getOSGiService(GadgetDataService.class, null); - if (gadgetDataService == null) { - throw new IllegalStateException("Gadget Data Service has not been initialized."); - } - return gadgetDataService; - } - public static GeoLocationProviderService getGeoService() { PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); GeoLocationProviderService diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.common/pom.xml index ff8f607ee2..c55bf82534 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/pom.xml @@ -21,7 +21,7 @@ device-mgt org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml index 5b91f5d22f..dd957edad7 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt device-mgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManager.java index c81b4e4eb3..010b47b8d0 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManager.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManager.java @@ -108,7 +108,10 @@ public class TestDeviceManager implements DeviceManager { @Override public License getLicense(String languageCode) throws LicenseManagementException { - return null; + License testLicense = new License(); + testLicense.setText("This is a dummy license for test device type."); + testLicense.setLanguage("ENG"); + return testLicense; } @Override diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/BaseDeviceManagementTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/BaseDeviceManagementTest.java index 51789b1fef..466d92becf 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/BaseDeviceManagementTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/BaseDeviceManagementTest.java @@ -18,6 +18,9 @@ */ package org.wso2.carbon.device.mgt.core.common; +import org.apache.axis2.AxisFault; +import org.apache.axis2.context.ConfigurationContext; +import org.apache.axis2.context.ConfigurationContextFactory; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.tomcat.jdbc.pool.PoolProperties; @@ -47,6 +50,7 @@ import org.wso2.carbon.registry.core.internal.RegistryDataHolder; import org.wso2.carbon.registry.core.jdbc.realm.InMemoryRealmService; import org.wso2.carbon.registry.core.service.RegistryService; import org.wso2.carbon.user.core.service.RealmService; +import org.wso2.carbon.utils.ConfigurationContextService; import javax.sql.DataSource; import javax.xml.bind.JAXBContext; @@ -80,7 +84,7 @@ public abstract class BaseDeviceManagementTest { NotificationManagementDAOFactory.init(dataSource); } - protected void initServices() throws DeviceManagementException, RegistryException { + private void initServices() throws DeviceManagementException, RegistryException, AxisFault { DeviceConfigurationManager.getInstance().initConfig(); DeviceManagementProviderService deviceMgtService = new DeviceManagementProviderServiceImpl(); DeviceManagementServiceComponent.notifyStartupListeners(); @@ -89,6 +93,8 @@ public abstract class BaseDeviceManagementTest { DeviceManagementDataHolder.getInstance().setDeviceAccessAuthorizationService(new DeviceAccessAuthorizationServiceImpl()); DeviceManagementDataHolder.getInstance().setGroupManagementProviderService(new GroupManagementProviderServiceImpl()); DeviceManagementDataHolder.getInstance().setDeviceTaskManagerService(null); + DeviceManagementDataHolder.getInstance().setEmailSenderService(new TestEmailSenderService()); + DeviceManagementDataHolder.getInstance().setConfigurationContextService(getConfigContextService()); } private RegistryService getRegistryService() throws RegistryException { @@ -101,6 +107,12 @@ public abstract class BaseDeviceManagementTest { return context.getEmbeddedRegistryService(); } + private ConfigurationContextService getConfigContextService() throws RegistryException, AxisFault { + ConfigurationContext context = ConfigurationContextFactory.createConfigurationContextFromFileSystem + ("src/test/resources/carbon-home/repository/conf/axis2/axis2.xml"); + return new ConfigurationContextService(context, null); + } + @BeforeClass public abstract void init() throws Exception; @@ -163,47 +175,6 @@ public abstract class BaseDeviceManagementTest { } } - public void deleteData() { - Connection conn = null; - try { - conn = getDataSource().getConnection(); - conn.setAutoCommit(false); - String[] cleanupTables = new String[]{"DM_NOTIFICATION","DM_DEVICE_OPERATION_RESPONSE","DM_ENROLMENT_OP_MAPPING", "DM_CONFIG_OPERATION", - "DM_POLICY_OPERATION", "DM_COMMAND_OPERATION", "DM_PROFILE_OPERATION", "DM_DEVICE_GROUP_MAP", - "DM_GROUP", "DM_ENROLMENT", "DM_DEVICE_APPLICATION_MAPPING", - "DM_APPLICATION", "DM_DEVICE", "DM_DEVICE_TYPE"}; - for (String table : cleanupTables) { - this.cleanData(conn, table); - } - conn.commit(); - } catch (SQLException e) { - try { - if (conn != null) { - conn.rollback(); - } - } catch (SQLException e1) { - log.error("Error occurred while roll-backing the transaction", e); - } - String msg = "Error occurred while cleaning up temporary data generated during test execution"; - log.error(msg, e); - Assert.fail(msg, e); - } finally { - if (conn != null) { - try { - conn.close(); - } catch (SQLException e) { - log.warn("Error occurred while closing the connection", e); - } - } - } - } - - private void cleanData(Connection conn, String tableName) throws SQLException { - try (PreparedStatement stmt = conn.prepareStatement("DELETE FROM " + tableName)) { - stmt.execute(); - } - } - protected DataSource getDataSource() { return dataSource; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/TestDataHolder.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/TestDataHolder.java index a6868bd89a..355ec9a55a 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/TestDataHolder.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/TestDataHolder.java @@ -62,8 +62,8 @@ public class TestDataHolder { deviceInfo.setIMEI("IMEI-12345"); deviceInfo.setIMSI("IMSI-12344"); deviceInfo.setDeviceModel("DUMMY_MODEL"); - deviceInfo.setVendor("Google"); - deviceInfo.setOsVersion("Oreo"); + deviceInfo.setVendor("WSO2"); + deviceInfo.setOsVersion("OREO"); deviceInfo.setOsBuildDate("24-05-2017"); deviceInfo.setBatteryLevel(25.0); deviceInfo.setInternalTotalMemory(1.5); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/TestEmailSenderService.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/TestEmailSenderService.java new file mode 100644 index 0000000000..fc1e174f72 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/TestEmailSenderService.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2017, 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.core.common; + +import org.wso2.carbon.email.sender.core.EmailContext; +import org.wso2.carbon.email.sender.core.EmailSendingFailedException; +import org.wso2.carbon.email.sender.core.EmailTransportNotConfiguredException; +import org.wso2.carbon.email.sender.core.service.EmailSenderService; + +public class TestEmailSenderService implements EmailSenderService { + @Override + public void sendEmail(EmailContext emailCtx) throws EmailSendingFailedException, EmailTransportNotConfiguredException { + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceTest.java index d2425c4cdd..1975a56828 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceTest.java @@ -24,7 +24,10 @@ import org.wso2.carbon.device.mgt.common.Device; import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.DeviceManagementException; import org.wso2.carbon.device.mgt.common.EnrolmentInfo; +import org.wso2.carbon.device.mgt.common.PaginationRequest; import org.wso2.carbon.device.mgt.common.TransactionManagementException; +import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationManagementException; +import org.wso2.carbon.device.mgt.common.license.mgt.License; import org.wso2.carbon.device.mgt.core.TestDeviceManagementService; import org.wso2.carbon.device.mgt.core.authorization.DeviceAccessAuthorizationServiceImpl; import org.wso2.carbon.device.mgt.core.common.BaseDeviceManagementTest; @@ -48,6 +51,7 @@ import java.io.InputStream; import java.util.Calendar; import java.util.Date; import java.util.List; +import java.util.Properties; public class DeviceManagementProviderServiceTest extends BaseDeviceManagementTest { @@ -429,6 +433,79 @@ public class DeviceManagementProviderServiceTest extends BaseDeviceManagementTes } } + @Test + public void testGetAvaliableDeviceTypes() { + try { + List deviceTypes = deviceMgtService.getAvailableDeviceTypes(); + Assert.assertTrue(!deviceTypes.isEmpty()); + } catch (DeviceManagementException e) { + String msg = "Error occurred while updating the device status"; + Assert.fail(msg, e); + } + } + + @Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"}) + public void testGetAllDevices() { + try { + List devices = deviceMgtService.getAllDevices(); + Assert.assertTrue(!devices.isEmpty()); + } catch (DeviceManagementException e) { + String msg = "Error occurred while updating the device status"; + Assert.fail(msg, e); + } + } + + @Test(dependsOnMethods = {"testDeviceByDate"}) + public void testGetAllDevicesWithInfo() { + try { + List devices = deviceMgtService.getAllDevices(true); + Assert.assertTrue(!devices.isEmpty()); + Assert.assertTrue(devices.get(0).getDeviceInfo() != null); + } catch (DeviceManagementException e) { + String msg = "Error occurred while updating the device status"; + Assert.fail(msg, e); + } + } + + @Test(dependsOnMethods = {"testDeviceByDate"}) + public void testGetLicense() { + try { + License license = deviceMgtService.getLicense(DEVICE_TYPE, "ENG"); + Assert.assertTrue(license.getLanguage().equalsIgnoreCase("ENG")); + } catch (DeviceManagementException e) { + String msg = "Error occurred while updating the device status"; + Assert.fail(msg, e); + } + } + + @Test(expectedExceptions = DeviceManagementException.class) + public void testSendRegistrationEmailNoMetaInfo() throws ConfigurationManagementException, DeviceManagementException { + deviceMgtService.sendRegistrationEmail(null); + Assert.assertTrue(false); + } + + @Test + public void testSendRegistrationEmailSuccessFlow() { + try { + String recipient = "test-user@wso2.com"; + Properties props = new Properties(); + props.setProperty("first-name", "Test"); + props.setProperty("username", "User"); + props.setProperty("password", "!@#$$$%"); + + EmailMetaInfo metaInfo = new EmailMetaInfo(recipient, props); + + deviceMgtService.sendRegistrationEmail(metaInfo); + Assert.assertTrue(true); + } catch (ConfigurationManagementException e) { + Assert.assertTrue(false, "Error in sending registration email : Configration " + + "related error" + e.getMessage()); + } catch (DeviceManagementException e) { + Assert.assertTrue(false, "Error in sending registration email" + + e.getMessage()); + } + } + private Date yesterday() { final Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, -1); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml index 366efb7e2b..cfc757cabc 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml @@ -22,7 +22,7 @@ device-mgt org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java index 1f1ee0d868..6e2aff8b35 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java @@ -83,9 +83,7 @@ public class DeviceTypeManager implements DeviceManager { if (deviceTypeConfiguration.getFeatures() != null && deviceTypeConfiguration.getFeatures(). getFeature() != null) { List features = deviceTypeConfiguration.getFeatures().getFeature(); - if (features != null) { - featureManager = new ConfigurationBasedFeatureManager(features); - } + featureManager = new ConfigurationBasedFeatureManager(features); } if (deviceTypeConfiguration.getDeviceAuthorizationConfig() != null) { requiredDeviceTypeAuthorization = deviceTypeConfiguration.getDeviceAuthorizationConfig(). @@ -119,7 +117,8 @@ public class DeviceTypeManager implements DeviceManager { try { defaultPlatformConfiguration = this.getDefaultConfiguration(); } catch (DeviceManagementException e) { - String msg = "Error occurred while default platform configuration"; + String msg = + "Error occurred while getting default platform configuration for the device type " + deviceType; throw new DeviceTypeDeployerPayloadException(msg, e); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/PropertyBasedPluginDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/PropertyBasedPluginDAOImpl.java index ceedeb7454..0e1502f34a 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/PropertyBasedPluginDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/PropertyBasedPluginDAOImpl.java @@ -126,14 +126,13 @@ public class PropertyBasedPluginDAOImpl implements PluginDAO { } public boolean updateDevice(Device device) throws DeviceTypeMgtPluginException { - boolean status = false; - Connection conn = null; + Connection conn; PreparedStatement stmt = null; try { conn = deviceTypeDAOHandler.getConnection(); stmt = conn.prepareStatement( - "UPDATE DM_DEVICE_PROPERTIES SET PROPERTY_VALUE = ? WHERE DEVICE_TYPE_NAME = ? AND " + - "DEVICE_IDENTIFICATION = ? AND PROPERTY_NAME = ? AND TENANT_ID= ?"); + "UPDATE DM_DEVICE_PROPERTIES SET PROPERTY_VALUE = ? WHERE DEVICE_TYPE_NAME = ? AND " + + "DEVICE_IDENTIFICATION = ? AND PROPERTY_NAME = ? AND TENANT_ID= ?"); for (Device.Property property : device.getProperties()) { if (!deviceProps.contains(property.getName())) { @@ -149,8 +148,8 @@ public class PropertyBasedPluginDAOImpl implements PluginDAO { stmt.executeBatch(); return true; } catch (SQLException e) { - String msg = "Error occurred while modifying the device '" + - device.getDeviceIdentifier() + "' data on" + deviceType; + String msg = "Error occurred while modifying the device '" + device.getDeviceIdentifier() + "' data on" + + deviceType; log.error(msg, e); throw new DeviceTypeMgtPluginException(msg, e); } finally { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeMgtPluginException.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeMgtPluginException.java index 1919e88f42..a07808a9ff 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeMgtPluginException.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeMgtPluginException.java @@ -22,6 +22,10 @@ package org.wso2.carbon.device.mgt.extensions.device.type.template.exception; */ public class DeviceTypeMgtPluginException extends Exception{ + public DeviceTypeMgtPluginException(String msg) { + super(msg); + } + public DeviceTypeMgtPluginException(String msg, Exception nestedEx) { super(msg, nestedEx); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/util/DeviceTypeUtils.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/util/DeviceTypeUtils.java index d409d22b38..56ab67d7bf 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/util/DeviceTypeUtils.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/util/DeviceTypeUtils.java @@ -25,6 +25,7 @@ import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.device.mgt.extensions.device.type.template.exception.DeviceTypeMgtPluginException; import org.wso2.carbon.device.mgt.extensions.internal.DeviceTypeExtensionDataHolder; import org.wso2.carbon.registry.api.RegistryException; +import org.wso2.carbon.registry.api.RegistryService; import org.wso2.carbon.registry.api.Resource; import org.wso2.carbon.registry.core.Registry; @@ -101,25 +102,28 @@ public class DeviceTypeUtils { public static Registry getConfigurationRegistry() throws DeviceTypeMgtPluginException { try { int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - return DeviceTypeExtensionDataHolder.getInstance().getRegistryService() - .getConfigSystemRegistry(tenantId); + org.wso2.carbon.registry.core.service.RegistryService registryService = DeviceTypeExtensionDataHolder + .getInstance().getRegistryService(); + if (registryService == null) { + throw new DeviceTypeMgtPluginException("Registry Service is not initialized properly"); + } + return registryService.getConfigSystemRegistry(tenantId); } catch (RegistryException e) { throw new DeviceTypeMgtPluginException("Error in retrieving conf registry instance: " + e.getMessage(), e); } } public static boolean putRegistryResource(String path, Resource resource) throws DeviceTypeMgtPluginException { - boolean status; try { - DeviceTypeUtils.getConfigurationRegistry().beginTransaction(); - DeviceTypeUtils.getConfigurationRegistry().put(path, resource); - DeviceTypeUtils.getConfigurationRegistry().commitTransaction(); - status = true; + Registry registry = getConfigurationRegistry(); + registry.beginTransaction(); + registry.put(path, resource); + registry.commitTransaction(); + return true; } catch (RegistryException e) { - throw new DeviceTypeMgtPluginException("Error occurred while persisting registry resource : " + - e.getMessage(), e); + throw new DeviceTypeMgtPluginException( + "Error occurred while persisting registry resource : " + e.getMessage(), e); } - return status; } public static Resource getRegistryResource(String path) throws DeviceTypeMgtPluginException { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerNegativeTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerNegativeTest.java index d2d9060d12..06c0a3a0fb 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerNegativeTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerNegativeTest.java @@ -18,13 +18,26 @@ package org.wso2.carbon.device.mgt.extensions.device.type.template; +import org.h2.jdbcx.JdbcDataSource; +import org.mockito.Mockito; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import org.wso2.carbon.base.MultitenantConstants; +import org.wso2.carbon.device.mgt.common.Device; +import org.wso2.carbon.device.mgt.common.DeviceIdentifier; +import org.wso2.carbon.device.mgt.common.DeviceManagementException; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DataSource; +import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceDetails; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceTypeConfiguration; +import org.wso2.carbon.device.mgt.extensions.device.type.template.config.Properties; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.exception.DeviceTypeConfigurationException; +import org.wso2.carbon.device.mgt.extensions.device.type.template.dao.DeviceDAODefinition; +import org.wso2.carbon.device.mgt.extensions.device.type.template.dao.DeviceTypeDAOHandler; +import org.wso2.carbon.device.mgt.extensions.device.type.template.dao.DeviceTypePluginDAOImpl; +import org.wso2.carbon.device.mgt.extensions.device.type.template.dao.DeviceTypePluginDAOManager; +import org.wso2.carbon.device.mgt.extensions.device.type.template.dao.PropertyBasedPluginDAOImpl; import org.wso2.carbon.device.mgt.extensions.device.type.template.exception.DeviceTypeDeployerPayloadException; +import org.wso2.carbon.device.mgt.extensions.device.type.template.exception.DeviceTypeMgtPluginException; import org.wso2.carbon.device.mgt.extensions.utils.Utils; import org.xml.sax.SAXException; @@ -32,7 +45,11 @@ import javax.xml.bind.JAXBException; import javax.xml.parsers.ParserConfigurationException; import java.io.File; import java.io.IOException; +import java.lang.reflect.Field; import java.net.URL; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.List; /** * This class tests the negative scenarios in {@link DeviceTypeManager} initialization; @@ -40,15 +57,22 @@ import java.net.URL; public class DeviceTypeManagerNegativeTest { private DeviceTypeConfiguration defectiveDeviceTypeConfiguration1; private DeviceTypeConfiguration defectiveDeviceTypeConfiguration2; + private DeviceTypeConfiguration defectiveDeviceTypeConfiguration3; private DeviceTypeConfiguration androidDeviceTypeConfiguration; private DeviceTypeConfigIdentifier deviceTypeConfigIdentifier; + private DeviceTypeManager androidDeviceTypeManager; + private DeviceTypeDAOHandler deviceTypeDAOHandler; private final String DEFECTIVE_DEVICE_TYPE = "defectiveDeviceType"; private final String TABLE_NAME = "DEFECTIVE_DEVICE"; + private DeviceIdentifier deviceIdentifier; + private final String ANDROID_DEVICE_TYPE = "android"; + private PropertyBasedPluginDAOImpl propertyBasedPluginDAO; + private Device sampleDevice; @BeforeTest public void setup() throws SAXException, JAXBException, ParserConfigurationException, DeviceTypeConfigurationException, - IOException { + IOException, NoSuchFieldException, IllegalAccessException { ClassLoader classLoader = getClass().getClassLoader(); URL resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "defective-devicetype.xml"); File configurationFile = null; @@ -76,6 +100,37 @@ public class DeviceTypeManagerNegativeTest { if (configurationFile != null) { androidDeviceTypeConfiguration = Utils.getDeviceTypeConfiguration(configurationFile.getAbsoluteFile()); } + + resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "defective-devicetype3.xml"); + if (resourceUrl != null) { + configurationFile = new File(resourceUrl.getFile()); + } + if (configurationFile != null) { + defectiveDeviceTypeConfiguration3 = Utils + .getDeviceTypeConfiguration(configurationFile.getAbsoluteFile()); + } + createDefectiveDeviceTypeManager(); + deviceIdentifier = new DeviceIdentifier(); + deviceIdentifier.setId(Utils.TEST_STRING); + deviceIdentifier.setType(ANDROID_DEVICE_TYPE); + + DeviceDetails deviceDetails = new DeviceDetails(); + Properties properties = new Properties(); + List propertyList = new ArrayList<>(); + propertyList.add(Utils.TEST_STRING); + properties.addProperties(propertyList); + + deviceDetails.setProperties(properties); + propertyBasedPluginDAO = new PropertyBasedPluginDAOImpl(deviceDetails, + deviceTypeDAOHandler, ANDROID_DEVICE_TYPE); + sampleDevice = new Device(); + sampleDevice.setDeviceIdentifier(Utils.TEST_STRING); + List deviceProperties = new ArrayList<>(); + Device.Property property = new Device.Property(); + property.setName(Utils.TEST_STRING); + property.setValue(Utils.TEST_STRING); + deviceProperties.add(property); + sampleDevice.setProperties(deviceProperties); } @Test(description = "This test case tests the behaviour of the DeviceTypeManager creation without defining the " @@ -121,4 +176,168 @@ public class DeviceTypeManagerNegativeTest { new DeviceTypeManager(deviceTypeConfigIdentifier, androidDeviceTypeConfiguration); } + + @Test(description = "This test case tests the behaviour of the DeviceTypeManager creation when having a " + + "defective platform configuration ", expectedExceptions = {DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Error occurred while getting default platform configuration for the " + + "device type wrong *") + public void testWithDefectivePlatformConfiguration() { + DeviceTypeConfigIdentifier wrongDeviceTypeConfigIdentifier = new DeviceTypeConfigIdentifier("wrong", + MultitenantConstants.SUPER_TENANT_DOMAIN_NAME); + new DeviceTypeManager(wrongDeviceTypeConfigIdentifier, androidDeviceTypeConfiguration); + } + + @Test(description = "This test case tests the behaviour of the DeviceTypeManager creation when having a " + + "defective platform configuration ", expectedExceptions = {DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Error while looking up the data source:.*") + public void testWithoutDeviceSpecificTable() { + new DeviceTypeManager(deviceTypeConfigIdentifier, defectiveDeviceTypeConfiguration3); + } + + @Test(description = "This test case tests the behaviour of the isEnrolled when the relevant tables are not there", + expectedExceptions = {DeviceManagementException.class}, + expectedExceptionsMessageRegExp = "Error while checking the enrollment status of android device.*") + public void testIsEnrolled() throws DeviceManagementException { + androidDeviceTypeManager.isEnrolled(deviceIdentifier); + } + + @Test(description = "This test case tests the behaviour of the modifyEnrollment when the relevant tables " + + "are not there", + expectedExceptions = {DeviceManagementException.class}, + expectedExceptionsMessageRegExp = "Error while updating the enrollment of the.*") + public void testModifyEnrollment() throws DeviceManagementException { + Device device = new Device(); + device.setDeviceIdentifier(deviceIdentifier.getId()); + device.setType(deviceIdentifier.getType()); + androidDeviceTypeManager.modifyEnrollment(device); + } + + @Test(description = "This test case tests the behaviour of the getAllDevices when the relevant tables " + + "are not there", + expectedExceptions = {DeviceManagementException.class}, + expectedExceptionsMessageRegExp = "Error occurred while fetching all.*") + public void testGetAllDevices() throws DeviceManagementException { + androidDeviceTypeManager.getAllDevices(); + } + + @Test(description = "This test case tests the behaviour of the updateDeviceInfo when the relevant tables " + + "are not there", + expectedExceptions = {DeviceManagementException.class}, + expectedExceptionsMessageRegExp = "Error occurred while fetching the.*") + public void testUpdateDeviceInfo() throws DeviceManagementException { + Device device = new Device(); + device.setDeviceIdentifier(deviceIdentifier.getId()); + device.setType(deviceIdentifier.getType()); + androidDeviceTypeManager.updateDeviceInfo(deviceIdentifier, device); + } + + @Test(description = ("This test case tests the behaviour of the enrollDevice when the relevant tables are not " + + "there"), expectedExceptions = {DeviceManagementException.class}, + expectedExceptionsMessageRegExp = "Error while enrolling the.*", dependsOnMethods = {"testIsEnrolled"}) + public void testEnrollDevice() throws DeviceManagementException { + Device device = new Device(); + device.setDeviceIdentifier(deviceIdentifier.getId()); + device.setType(deviceIdentifier.getType()); + Mockito.doReturn(false).when(androidDeviceTypeManager).isEnrolled(Mockito.any()); + androidDeviceTypeManager.enrollDevice(device); + } + + @Test(description = ("This test case tests the behaviour of the updateDeviceInfo when the relevant tables are not " + + "there"), expectedExceptions = {DeviceManagementException.class}, + expectedExceptionsMessageRegExp = "Error occurred while updating the.*", dependsOnMethods = + {"testUpdateDeviceInfo"}) + public void testUpdateDeviceWithMock() throws DeviceManagementException { + Mockito.doReturn(new Device()).when(androidDeviceTypeManager).getDevice(Mockito.any()); + androidDeviceTypeManager.updateDeviceInfo(deviceIdentifier, sampleDevice); + } + + @Test(description = "This test case tests the behaviour of addDevice when the relevant tables are not available", + expectedExceptions = { DeviceTypeMgtPluginException.class }, + expectedExceptionsMessageRegExp = "Error occurred while adding the device .*") + public void testAddDevice() throws DeviceTypeMgtPluginException { + propertyBasedPluginDAO.addDevice(sampleDevice); + } + + @Test(description = "This test case tests the behaviour of getDevice when the relevant tables are not available", + expectedExceptions = { DeviceTypeMgtPluginException.class }, + expectedExceptionsMessageRegExp = "Error occurred while fetching device .*") + public void testGetPropertyBasedDevice() throws DeviceTypeMgtPluginException { + propertyBasedPluginDAO.getDevice("id"); + } + + @Test(description = "This test case tests the behaviour of the getAllDevices method of the PropertyBasedPuginDAO", + expectedExceptions = {DeviceTypeMgtPluginException.class}, expectedExceptionsMessageRegExp = "Error " + + "occurred while fetching all.*") + public void testGetAllPropertyBasedDevices() throws DeviceTypeMgtPluginException { + propertyBasedPluginDAO.getAllDevices(); + } + + @Test(description = "This test case tests the behaviour of the updateDevice method of the PropertyBasedPuginDAO", + expectedExceptions = {DeviceTypeMgtPluginException.class}, expectedExceptionsMessageRegExp = "Error " + + "occurred while modifying the device.*") + public void testUpdateDevice() throws DeviceTypeMgtPluginException { + propertyBasedPluginDAO.updateDevice(sampleDevice); + } + + /** + * To create a defective device type manager for testing. + * @throws NoSuchFieldException No Such Field Exception. + * @throws SAXException SAX Exception. + * @throws JAXBException JAXB Exception + * @throws ParserConfigurationException Parser Configuration Exception. + * @throws DeviceTypeConfigurationException Device Type Configuration Exception. + * @throws IOException IO Exception. + * @throws IllegalAccessException Illegal Access Exception. + */ + private void createDefectiveDeviceTypeManager() + throws NoSuchFieldException, SAXException, JAXBException, ParserConfigurationException, + DeviceTypeConfigurationException, IOException, IllegalAccessException { + Field datasourceField = DeviceTypeDAOHandler.class.getDeclaredField("dataSource"); + datasourceField.setAccessible(true); + Field currentConnection = DeviceTypeDAOHandler.class.getDeclaredField("currentConnection"); + currentConnection.setAccessible(true); + Field deviceTypePluginDAOField = DeviceTypePluginDAOManager.class.getDeclaredField("deviceTypePluginDAO"); + deviceTypePluginDAOField.setAccessible(true); + Field deviceTypeDAOHandlerField = DeviceTypePluginDAOManager.class.getDeclaredField("deviceTypeDAOHandler"); + deviceTypeDAOHandlerField.setAccessible(true); + + ClassLoader classLoader = getClass().getClassLoader(); + URL resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "android.xml"); + File androidConfiguration = null; + if (resourceUrl != null) { + androidConfiguration = new File(resourceUrl.getFile()); + } + DeviceTypeConfiguration androidDeviceConfiguration = Utils.getDeviceTypeConfiguration(androidConfiguration); + androidDeviceTypeManager = Mockito.mock(DeviceTypeManager.class, Mockito.CALLS_REAL_METHODS); + + deviceTypeDAOHandler = Mockito + .mock(DeviceTypeDAOHandler.class, Mockito.CALLS_REAL_METHODS); + + JdbcDataSource dataSource = new JdbcDataSource(); + dataSource.setURL("jdbc:h2:mem:notexist;DB_CLOSE_DELAY=-1"); + dataSource.setUser("sa"); + dataSource.setPassword("sa"); + datasourceField.set(deviceTypeDAOHandler, dataSource); + currentConnection.set(deviceTypeDAOHandler, new ThreadLocal()); + + DeviceDAODefinition deviceDAODefinition = Utils.getDeviceDAODefinition(androidDeviceConfiguration); + DeviceTypePluginDAOImpl deviceTypePluginDAO = new DeviceTypePluginDAOImpl(deviceDAODefinition, + deviceTypeDAOHandler); + DeviceTypePluginDAOManager deviceTypePluginDAOManager = Mockito + .mock(DeviceTypePluginDAOManager.class, Mockito.CALLS_REAL_METHODS); + deviceTypePluginDAOField.set(deviceTypePluginDAOManager, deviceTypePluginDAO); + deviceTypeDAOHandlerField.set(deviceTypePluginDAOManager, deviceTypeDAOHandler); + + Field deviceTypePluginDAOManagerField = DeviceTypeManager.class.getDeclaredField("deviceTypePluginDAOManager"); + deviceTypePluginDAOManagerField.setAccessible(true); + deviceTypePluginDAOManagerField.set(androidDeviceTypeManager, deviceTypePluginDAOManager); + + Field propertiesExist = DeviceTypeManager.class.getDeclaredField("propertiesExist"); + propertiesExist.setAccessible(true); + Field deviceType = DeviceTypeManager.class.getDeclaredField("deviceType"); + deviceType.setAccessible(true); + + deviceType.set(androidDeviceTypeManager, ANDROID_DEVICE_TYPE); + propertiesExist.set(androidDeviceTypeManager, true); + } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerTest.java index 27ebd3f827..d6f732cf13 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerTest.java @@ -170,8 +170,8 @@ public class DeviceTypeManagerTest { Assert.assertTrue(customDeviceTypeManager.enrollDevice(customDevice), "Custom device type enrollment failed."); List properties = customDevice.getProperties(); Device.Property property = new Device.Property(); - property.setName("test"); - property.setValue("test"); + property.setName(Utils.TEST_STRING); + property.setValue(Utils.TEST_STRING); properties.add(property); customDevice.setProperties(properties); Assert.assertFalse(customDeviceTypeManager.enrollDevice(customDevice), @@ -239,8 +239,8 @@ public class DeviceTypeManagerTest { list.add(property); } - sampleDevice1 = new Device("testdevice", androidDeviceType, "test", "testdevice", null, null, list); - sampleDevice2 = new Device("testdevice1", androidDeviceType, "test", "testdevice", null, null, list); + sampleDevice1 = new Device("testdevice", androidDeviceType, Utils.TEST_STRING, "testdevice", null, null, list); + sampleDevice2 = new Device("testdevice1", androidDeviceType, Utils.TEST_STRING, "testdevice", null, null, list); } /** diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest.java index 7c4ff9ec2c..b6beda3c2c 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest.java @@ -42,9 +42,13 @@ import javax.xml.bind.JAXBException; import javax.xml.parsers.ParserConfigurationException; import java.io.File; import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.net.URL; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * This test case contains the tests for {@link HTTPDeviceTypeManagerService} and {@link DeviceTypeGeneratorServiceImpl} @@ -75,7 +79,8 @@ public class HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest { @Test(description = "This test case tests the enrollment of newly added device type") public void testEnrollDevice() throws DeviceManagementException { String deviceId = "testdevice1"; - Device sampleDevice1 = new Device(deviceId, androidSenseDeviceType, "test", "testdevice", null, null, null); + Device sampleDevice1 = new Device(deviceId, androidSenseDeviceType, Utils.TEST_STRING, "testdevice", null, null, + null); Assert.assertTrue(httpDeviceTypeManagerService.getDeviceManager().enrollDevice(sampleDevice1), "Enrollment of " + androidSenseDeviceType + " device failed"); Assert.assertTrue(httpDeviceTypeManagerService.getDeviceManager() @@ -108,7 +113,7 @@ public class HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest { ConfigurationEntry configurationEntry = configurationEntries.get(0); - Assert.assertEquals(configurationEntry.getName(), "test", + Assert.assertEquals(configurationEntry.getName(), Utils.TEST_STRING, "Platform Configuration for device type " + "sample is not saved correctly"); String contentType = configurationEntry.getContentType(); @@ -142,6 +147,28 @@ public class HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest { httpDeviceTypeManagerService.getDeviceManager().enrollDevice(null); } + @Test(description = "This test case tests the getDeviceTypeConfiguration method", + dependsOnMethods = {"testPopulateDeviceManagementService"}) + public void testGetDeviceTypeConfiguration() + throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { + Method getDeviceTypeConfiguration = HTTPDeviceTypeManagerService.class + .getDeclaredMethod("getDeviceTypeConfiguration", String.class, DeviceTypeMetaDefinition.class); + getDeviceTypeConfiguration.setAccessible(true); + List properties = new ArrayList<>(); + properties.add(Utils.TEST_STRING); + deviceTypeMetaDefinition.setProperties(properties); + Map mapProperties = new HashMap<>(); + mapProperties.put(Utils.TEST_STRING, Utils.TEST_STRING); + PushNotificationConfig pushNotificationConfig = new PushNotificationConfig("push", true, mapProperties); + deviceTypeMetaDefinition.setPushNotificationConfig(pushNotificationConfig); + DeviceTypeConfiguration deviceTypeConfiguration = (DeviceTypeConfiguration) getDeviceTypeConfiguration + .invoke(httpDeviceTypeManagerService, "android", deviceTypeMetaDefinition); + Assert.assertEquals(deviceTypeMetaDefinition.getProperties().size(), + deviceTypeConfiguration.getDeviceDetails().getProperties().getProperty().size(), "Number of " + + "properties added in device-type meta definition is not equal to the properties added in " + + "the DeviceType Configuration"); + } + /** * To create a sample device type meta defintion. * @throws SAXException SAX Exception. @@ -180,6 +207,13 @@ public class HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest { commonFeature.setCode(feature.getCode()); commonFeature.setDescription(feature.getDescription()); commonFeature.setName(feature.getName()); + org.wso2.carbon.device.mgt.common.Feature.MetadataEntry metadataEntry = new org.wso2.carbon.device.mgt + .common.Feature.MetadataEntry(); + metadataEntry.setId(1); + metadataEntry.setValue(Utils.TEST_STRING); + List metadataEntries = new ArrayList<>(); + metadataEntries.add(metadataEntry); + commonFeature.setMetadataEntries(metadataEntries); features.add(commonFeature); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/utils/Utils.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/utils/Utils.java index d35b8eba93..8a2634d0f8 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/utils/Utils.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/utils/Utils.java @@ -56,6 +56,7 @@ import java.util.List; */ public class Utils { public static final String DEVICE_TYPE_FOLDER = "device-types" + File.separator; + public static final String TEST_STRING = "test"; /** * To get the device type configuration based on the configuration file diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/utils/UtilsTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/utils/UtilsTest.java index 01651d3b2c..c5a6f419cd 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/utils/UtilsTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/utils/UtilsTest.java @@ -23,10 +23,15 @@ import org.testng.Assert; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import org.wso2.carbon.base.MultitenantConstants; +import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.device.mgt.common.license.mgt.License; import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManagementException; +import org.wso2.carbon.device.mgt.extensions.device.type.template.DeviceTypeConfigIdentifier; +import org.wso2.carbon.device.mgt.extensions.device.type.template.exception.DeviceTypeMgtPluginException; import org.wso2.carbon.device.mgt.extensions.device.type.template.util.DeviceSchemaInitializer; +import org.wso2.carbon.device.mgt.extensions.device.type.template.util.DeviceTypeUtils; import org.wso2.carbon.device.mgt.extensions.license.mgt.file.FileSystemBasedLicenseManager; +import org.wso2.carbon.device.mgt.extensions.license.mgt.registry.RegistryBasedLicenseManager; import java.io.File; import java.lang.reflect.InvocationTargetException; @@ -63,7 +68,7 @@ public class UtilsTest { @Test(description = "This test case tests the getLicense method of the FileBasedLicenseManager") public void testFileBasedLicenseManagerGetLicense() throws LicenseManagementException { - License fileBasedLicense = fileSystemBasedLicenseManager.getLicense("test","en_US"); + License fileBasedLicense = fileSystemBasedLicenseManager.getLicense(Utils.TEST_STRING,"en_US"); Assert.assertEquals(fileBasedLicense.getText(), "This is a file based license", "FileBased License cannot " + "be retrieved by FileBasedLicenseManager"); } @@ -79,6 +84,43 @@ public class UtilsTest { + "file system", expectedExceptions = {UnsupportedOperationException.class}, expectedExceptionsMessageRegExp = "'addLicense' method is not supported in FileSystemBasedLicenseManager") public void testFileBasedLicenseManagerAddLicense() throws LicenseManagementException { - fileSystemBasedLicenseManager.addLicense("test", null); + fileSystemBasedLicenseManager.addLicense(Utils.TEST_STRING, null); + } + + @Test(description = "This test case tests the DeviceTypeConfigIdentifier equals method") + public void testDeviceTypeConfigIdentifier() { + DeviceTypeConfigIdentifier deviceTypeConfigIdentifier = new DeviceTypeConfigIdentifier("sample", + MultitenantConstants.SUPER_TENANT_DOMAIN_NAME); + DeviceTypeConfigIdentifier clonedDeviceTypeConfigIdentifier = new DeviceTypeConfigIdentifier("sample", + MultitenantConstants.SUPER_TENANT_DOMAIN_NAME); + Assert.assertTrue(deviceTypeConfigIdentifier.equals(clonedDeviceTypeConfigIdentifier), + "Clone device type config identifier gives wrong results for equals check."); + Assert.assertFalse(deviceTypeConfigIdentifier.equals(null), + "Device Type config identifier object comparison gives wrong results."); + } + + @Test(description = "This test cases tests the registry based license addition") + public void testAddRegistryBasedLicense() throws LicenseManagementException { + String newLicenseString = "New License"; + License fileBasedLicense = fileSystemBasedLicenseManager.getLicense(Utils.TEST_STRING, "en_US"); + RegistryBasedLicenseManager registryBasedLicenseManager = new RegistryBasedLicenseManager(); + registryBasedLicenseManager.addLicense(Utils.TEST_STRING, fileBasedLicense); + Assert.assertEquals(fileBasedLicense.getText(), + registryBasedLicenseManager.getLicense(Utils.TEST_STRING, "en_US").getText(), + "Registry license addition failed"); + fileBasedLicense.setText(newLicenseString); + registryBasedLicenseManager.addLicense(Utils.TEST_STRING, fileBasedLicense); + Assert.assertEquals(registryBasedLicenseManager.getLicense(Utils.TEST_STRING, "en_US").getText(), + newLicenseString, "Registry license update failed"); + } + + @Test(description = "This test case tests the GetConfigurationRegistry method when the registry service is " + + "unavailable", dependsOnMethods = {"testDeviceSchemaInitializer", "testDeviceTypeConfigIdentifier", + "testAddRegistryBasedLicense"}, + expectedExceptions = {DeviceTypeMgtPluginException.class}, + expectedExceptionsMessageRegExp = "Error in retrieving conf registry instance:.*") + public void testGetConfigurationRegistry() throws DeviceTypeMgtPluginException { + PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(4); + DeviceTypeUtils.getConfigurationRegistry(); } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/carbon-home/repository/conf/etc/device-mgt-plugin-configs/mobile/wrong-default-platform-configuration.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/carbon-home/repository/conf/etc/device-mgt-plugin-configs/mobile/wrong-default-platform-configuration.xml new file mode 100644 index 0000000000..645805d7a8 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/carbon-home/repository/conf/etc/device-mgt-plugin-configs/mobile/wrong-default-platform-configuration.xml @@ -0,0 +1,23 @@ + + + + + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/carbon-home/repository/conf/registry.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/carbon-home/repository/conf/registry.xml index 0bb97a7dc9..036b3dda06 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/carbon-home/repository/conf/registry.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/carbon-home/repository/conf/registry.xml @@ -24,7 +24,7 @@ wso2registry false - true + false / diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/android.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/android.xml index 176469c329..0320698ff4 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/android.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/android.xml @@ -51,6 +51,11 @@ true + + + true + + + + + + + defective + + + + + + + Control Bulb + Control Bulb on Arduino Uno + + + state + + + + + + + true + + + + en_US + 1.0.0 + This is license text + + + + + jdbc/MobileAndroidDM_DS + + + +
+
+
+ +
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.ui/pom.xml index 493e5a644a..30e36caf3e 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/pom.xml @@ -22,7 +22,7 @@ device-mgt org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.url.printer/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.url.printer/pom.xml index 40b1b772d4..69a2a2637a 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.url.printer/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.url.printer/pom.xml @@ -23,7 +23,7 @@ device-mgt org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/components/device-mgt/pom.xml b/components/device-mgt/pom.xml index 596c8ee509..eda7460652 100644 --- a/components/device-mgt/pom.xml +++ b/components/device-mgt/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml @@ -37,7 +37,6 @@ org.wso2.carbon.device.mgt.common org.wso2.carbon.device.mgt.extensions org.wso2.carbon.device.mgt.ui - org.wso2.carbon.device.mgt.analytics.dashboard org.wso2.carbon.device.mgt.api org.wso2.carbon.device.mgt.analytics.data.publisher org.wso2.carbon.device.mgt.url.printer diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/pom.xml b/components/email-sender/org.wso2.carbon.email.sender.core/pom.xml index 2088a6fdc7..b2a2550d54 100644 --- a/components/email-sender/org.wso2.carbon.email.sender.core/pom.xml +++ b/components/email-sender/org.wso2.carbon.email.sender.core/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt email-sender - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/components/email-sender/pom.xml b/components/email-sender/pom.xml index 77dacf9fbb..570304d23b 100644 --- a/components/email-sender/pom.xml +++ b/components/email-sender/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml diff --git a/components/identity-extensions/org.wso2.carbon.device.mgt.oauth.extensions/pom.xml b/components/identity-extensions/org.wso2.carbon.device.mgt.oauth.extensions/pom.xml index 348517b6bb..396e9f5055 100644 --- a/components/identity-extensions/org.wso2.carbon.device.mgt.oauth.extensions/pom.xml +++ b/components/identity-extensions/org.wso2.carbon.device.mgt.oauth.extensions/pom.xml @@ -22,13 +22,13 @@ org.wso2.carbon.devicemgt identity-extensions - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.oauth.extensions - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT bundle WSO2 Carbon - OAuth Extensions http://wso2.org diff --git a/components/identity-extensions/org.wso2.carbon.identity.authenticator.backend.oauth/pom.xml b/components/identity-extensions/org.wso2.carbon.identity.authenticator.backend.oauth/pom.xml index 8cc4b491d4..0eb7fa3873 100644 --- a/components/identity-extensions/org.wso2.carbon.identity.authenticator.backend.oauth/pom.xml +++ b/components/identity-extensions/org.wso2.carbon.identity.authenticator.backend.oauth/pom.xml @@ -21,7 +21,7 @@ identity-extensions org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT 4.0.0 diff --git a/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/pom.xml b/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/pom.xml index 9bf4d0fccc..5b85940c95 100644 --- a/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/pom.xml +++ b/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt identity-extensions - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/components/identity-extensions/pom.xml b/components/identity-extensions/pom.xml index 1be104abcc..7fd48618ec 100644 --- a/components/identity-extensions/pom.xml +++ b/components/identity-extensions/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml diff --git a/components/policy-mgt/org.wso2.carbon.complex.policy.decision.point/pom.xml b/components/policy-mgt/org.wso2.carbon.complex.policy.decision.point/pom.xml index 9f25e45c45..3f21bfd509 100644 --- a/components/policy-mgt/org.wso2.carbon.complex.policy.decision.point/pom.xml +++ b/components/policy-mgt/org.wso2.carbon.complex.policy.decision.point/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt policy-mgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.devicemgt org.wso2.carbon.complex.policy.decision.point - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT bundle WSO2 Carbon - Policy Decision Point WSO2 Carbon - Policy Decision Point diff --git a/components/policy-mgt/org.wso2.carbon.policy.decision.point/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.decision.point/pom.xml index 31ba08cb23..62c9d89e1b 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.decision.point/pom.xml +++ b/components/policy-mgt/org.wso2.carbon.policy.decision.point/pom.xml @@ -3,14 +3,14 @@ org.wso2.carbon.devicemgt policy-mgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.devicemgt org.wso2.carbon.policy.decision.point - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT bundle WSO2 Carbon - Policy Decision Point WSO2 Carbon - Policy Decision Point diff --git a/components/policy-mgt/org.wso2.carbon.policy.information.point/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.information.point/pom.xml index 3cacaad61c..677cd14ad8 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.information.point/pom.xml +++ b/components/policy-mgt/org.wso2.carbon.policy.information.point/pom.xml @@ -3,7 +3,7 @@ org.wso2.carbon.devicemgt policy-mgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml @@ -11,7 +11,7 @@ 4.0.0 org.wso2.carbon.devicemgt org.wso2.carbon.policy.information.point - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT bundle WSO2 Carbon - Policy Information Point WSO2 Carbon - Policy Information Point diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.common/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.mgt.common/pom.xml index 0d9ac451b5..b9bf3abffe 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.mgt.common/pom.xml +++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.common/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt policy-mgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.devicemgt org.wso2.carbon.policy.mgt.common - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT bundle WSO2 Carbon - Policy Management Common WSO2 Carbon - Policy Management Common diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml index 23ba4b22fe..7d40f0b4fc 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml +++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt policy-mgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.devicemgt org.wso2.carbon.policy.mgt.core - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT bundle WSO2 Carbon - Policy Management Core WSO2 Carbon - Policy Management Core diff --git a/components/policy-mgt/pom.xml b/components/policy-mgt/pom.xml index a71e8e543e..6749c51f28 100644 --- a/components/policy-mgt/pom.xml +++ b/components/policy-mgt/pom.xml @@ -23,13 +23,13 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml 4.0.0 policy-mgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT pom WSO2 Carbon - Policy Management Component http://wso2.org diff --git a/components/test-coverage/pom.xml b/components/test-coverage/pom.xml index 2bb7b6a394..f3b91f12ff 100644 --- a/components/test-coverage/pom.xml +++ b/components/test-coverage/pom.xml @@ -21,7 +21,7 @@ carbon-devicemgt org.wso2.carbon.devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml 4.0.0 @@ -51,9 +51,6 @@ ${basedir}/../${device.mgt}/org.wso2.carbon.device.mgt.common ${basedir}/../${device.mgt}/org.wso2.carbon.device.mgt.api ${basedir}/../${device.mgt}/org.wso2.carbon.device.mgt.extensions - - ${basedir}/../${device.mgt}/org.wso2.carbon.device.mgt.analytics.dashboard - ${basedir}/../${device.mgt}/org.wso2.carbon.device.mgt.analytics.data.publisher @@ -183,6 +180,9 @@ + + + @@ -214,14 +214,6 @@ - - - - - - - - diff --git a/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/pom.xml b/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/pom.xml index c43b464c39..18c559ff95 100644 --- a/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/pom.xml +++ b/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/pom.xml @@ -21,14 +21,14 @@ org.wso2.carbon.devicemgt webapp-authenticator-framework - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.devicemgt org.wso2.carbon.webapp.authenticator.framework - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT bundle WSO2 Carbon - Web Application Authenticator Framework Bundle WSO2 Carbon - Web Application Authenticator Framework Bundle diff --git a/components/webapp-authenticator-framework/pom.xml b/components/webapp-authenticator-framework/pom.xml index 8bb2533da8..8d9c3af156 100644 --- a/components/webapp-authenticator-framework/pom.xml +++ b/components/webapp-authenticator-framework/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml 4.0.0 org.wso2.carbon.devicemgt webapp-authenticator-framework - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT pom WSO2 Carbon - Webapp Authenticator Framework http://wso2.org diff --git a/features/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.feature/pom.xml b/features/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.feature/pom.xml index 4a9a9d4a7e..492422103f 100644 --- a/features/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.feature/pom.xml +++ b/features/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.feature/pom.xml @@ -21,14 +21,14 @@ org.wso2.carbon.devicemgt apimgt-extensions-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.application.extension.feature pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - API Management Application Extension Feature http://wso2.org This feature contains an implementation of a api application registration, which takes care of subscription diff --git a/features/apimgt-extensions/org.wso2.carbon.apimgt.handler.server.feature/pom.xml b/features/apimgt-extensions/org.wso2.carbon.apimgt.handler.server.feature/pom.xml index 6ccb77a47d..434193f312 100644 --- a/features/apimgt-extensions/org.wso2.carbon.apimgt.handler.server.feature/pom.xml +++ b/features/apimgt-extensions/org.wso2.carbon.apimgt.handler.server.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt apimgt-extensions-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.handler.server.feature pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - Device Management - APIM handler Server Feature http://wso2.org This feature contains the handler for the api authentications diff --git a/features/apimgt-extensions/org.wso2.carbon.apimgt.integration.client.feature/pom.xml b/features/apimgt-extensions/org.wso2.carbon.apimgt.integration.client.feature/pom.xml index a863f769c3..2a66d35b7d 100644 --- a/features/apimgt-extensions/org.wso2.carbon.apimgt.integration.client.feature/pom.xml +++ b/features/apimgt-extensions/org.wso2.carbon.apimgt.integration.client.feature/pom.xml @@ -21,13 +21,13 @@ org.wso2.carbon.devicemgt apimgt-extensions-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.integration.client.feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT pom WSO2 Carbon - APIM Integration Client Feature http://wso2.org diff --git a/features/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml b/features/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml index 40956e721a..21c0399875 100644 --- a/features/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml +++ b/features/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml @@ -21,14 +21,14 @@ org.wso2.carbon.devicemgt apimgt-extensions-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.webapp.publisher.feature pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - API Management Webapp Publisher Feature http://wso2.org This feature contains an implementation of a Tomcat lifecycle listener, which takes care of publishing diff --git a/features/apimgt-extensions/pom.xml b/features/apimgt-extensions/pom.xml index bc7ee90b95..56a6447737 100644 --- a/features/apimgt-extensions/pom.xml +++ b/features/apimgt-extensions/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml 4.0.0 org.wso2.carbon.devicemgt apimgt-extensions-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT pom WSO2 Carbon - API Management Extensions Feature http://wso2.org diff --git a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.api.feature/pom.xml b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.api.feature/pom.xml index b3a14faa47..8da8c40219 100644 --- a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.api.feature/pom.xml +++ b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.api.feature/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt certificate-mgt-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api.feature/pom.xml b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api.feature/pom.xml index f5f0f5165b..2ac02154e9 100644 --- a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api.feature/pom.xml +++ b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api.feature/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt certificate-mgt-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.server.feature/pom.xml b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.server.feature/pom.xml index 54c36ed8bf..a43df2dbb6 100644 --- a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.server.feature/pom.xml +++ b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.server.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt certificate-mgt-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.certificate.mgt.server.feature pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - Certificate Management Server Feature http://wso2.org This feature contains the core bundles required for back-end Certificate Management functionality diff --git a/features/certificate-mgt/pom.xml b/features/certificate-mgt/pom.xml index 7a1b83aaab..7a2b4a9c83 100644 --- a/features/certificate-mgt/pom.xml +++ b/features/certificate-mgt/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml 4.0.0 org.wso2.carbon.devicemgt certificate-mgt-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT pom WSO2 Carbon - Certificate Management Feature http://wso2.org diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature/pom.xml index 403acfba3e..be6690416d 100644 --- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature/pom.xml +++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt device-mgt-extensions-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - Device Type Deployer Feature http://wso2.org WSO2 Carbon - Device Type Deployer Feature diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature/pom.xml index 54d1c9a283..52347ab727 100644 --- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature/pom.xml +++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt device-mgt-extensions-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - FCM Based Push Notification Provider Feature http://wso2.org WSO2 Carbon - MQTT Based Push Notification Provider Feature diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.feature/pom.xml index d8c60415ad..1d4e231be0 100644 --- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.feature/pom.xml +++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt device-mgt-extensions-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.feature pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - MQTT Based Push Notification Provider Feature http://wso2.org WSO2 Carbon - MQTT Based Push Notification Provider Feature diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature/pom.xml index 1fd9e76778..271901b494 100644 --- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature/pom.xml +++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt device-mgt-extensions-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - MQTT Based Push Notification Provider Feature http://wso2.org WSO2 Carbon - MQTT Based Push Notification Provider Feature diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature/pom.xml index 00330b5054..6950163a53 100644 --- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature/pom.xml +++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt device-mgt-extensions-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - XMPP Based Push Notification Provider Feature http://wso2.org WSO2 Carbon - XMPP Based Push Notification Provider Feature diff --git a/features/device-mgt-extensions/pom.xml b/features/device-mgt-extensions/pom.xml index 43383ab498..0ab0dbf720 100644 --- a/features/device-mgt-extensions/pom.xml +++ b/features/device-mgt-extensions/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard.feature/pom.xml deleted file mode 100644 index 929a9bbadc..0000000000 --- a/features/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard.feature/pom.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - org.wso2.carbon.devicemgt - device-mgt-feature - 3.0.133-SNAPSHOT - ../pom.xml - - 4.0.0 - - org.wso2.carbon.device.mgt.analytics.dashboard.feature - 3.0.133-SNAPSHOT - pom - WSO2 Carbon - Device Management Dashboard Analytics Feature - WSO2 Carbon - Device Management Dashboard Analytics Feature - http://wso2.org - - - - org.wso2.carbon.devicemgt - org.wso2.carbon.device.mgt.analytics.dashboard - - - - - - - org.wso2.maven - carbon-p2-plugin - ${carbon.p2.plugin.version} - - - p2-feature-generation - package - - p2-feature-gen - - - org.wso2.carbon.device.mgt.analytics.dashboard - ../../../features/etc/feature.properties - - - org.wso2.carbon.p2.category.type:server - org.eclipse.equinox.p2.type.group:false - - - - - org.wso2.carbon.devicemgt:org.wso2.carbon.device.mgt.analytics.dashboard:${carbon.device.mgt.version} - - - - org.wso2.carbon.core.server:${carbon.kernel.version} - - - - - - - - - - \ No newline at end of file diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher.feature/pom.xml index ff4a6ba3d4..8a2a841978 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher.feature/pom.xml +++ b/features/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt device-mgt-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.analytics.data.publisher.feature pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - Device Management Server Feature http://wso2.org This feature contains bundles related to device analytics data publisher diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml index 866c0e11c3..3786b295a0 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml +++ b/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt device-mgt-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.extensions.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.extensions.feature/pom.xml index 30b483c0b9..441f9f72d6 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.extensions.feature/pom.xml +++ b/features/device-mgt/org.wso2.carbon.device.mgt.extensions.feature/pom.xml @@ -4,14 +4,14 @@ org.wso2.carbon.devicemgt device-mgt-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.extensions.feature pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - Device Management Extensions Feature http://wso2.org This feature contains common extensions used by key device management functionalities diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.feature/pom.xml index 1281c82a7d..7897bfe92d 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.feature/pom.xml +++ b/features/device-mgt/org.wso2.carbon.device.mgt.feature/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt device-mgt-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/pom.xml index 461b6927bc..ff1c7b14f0 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/pom.xml +++ b/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt device-mgt-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.server.feature pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - Device Management Server Feature http://wso2.org This feature contains the core bundles required for Back-end Device Management functionality diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml index 7ef2deb74d..8af4e3f62f 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml +++ b/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt device-mgt-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml diff --git a/features/device-mgt/pom.xml b/features/device-mgt/pom.xml index 5d17341f2d..783edb6b0f 100644 --- a/features/device-mgt/pom.xml +++ b/features/device-mgt/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml @@ -39,7 +39,6 @@ org.wso2.carbon.device.mgt.feature org.wso2.carbon.device.mgt.extensions.feature org.wso2.carbon.device.mgt.analytics.data.publisher.feature - org.wso2.carbon.device.mgt.analytics.dashboard.feature \ No newline at end of file diff --git a/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml b/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml index 0f8cf39855..502ec9639c 100644 --- a/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml +++ b/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt email-sender-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.email.sender.feature pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - Email Sender Feature http://wso2.org This feature contains the core bundles required for email sender related functionality diff --git a/features/email-sender/pom.xml b/features/email-sender/pom.xml index df3a409ccb..c3ff389df3 100644 --- a/features/email-sender/pom.xml +++ b/features/email-sender/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml 4.0.0 org.wso2.carbon.devicemgt email-sender-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT pom WSO2 Carbon - Email Sender Feature http://wso2.org diff --git a/features/jwt-client/org.wso2.carbon.identity.jwt.client.extension.feature/pom.xml b/features/jwt-client/org.wso2.carbon.identity.jwt.client.extension.feature/pom.xml index 2553a2930c..f4c9333745 100644 --- a/features/jwt-client/org.wso2.carbon.identity.jwt.client.extension.feature/pom.xml +++ b/features/jwt-client/org.wso2.carbon.identity.jwt.client.extension.feature/pom.xml @@ -23,14 +23,14 @@ org.wso2.carbon.devicemgt jwt-client-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.identity.jwt.client.extension.feature pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - JWT Client Feature http://wso2.org This feature contains jwt client implementation from which we can get a access token using the jwt diff --git a/features/jwt-client/pom.xml b/features/jwt-client/pom.xml index e78db85683..e831d60b4c 100644 --- a/features/jwt-client/pom.xml +++ b/features/jwt-client/pom.xml @@ -23,13 +23,13 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml 4.0.0 jwt-client-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT pom WSO2 Carbon - JWT Client Extension Feature http://wso2.org diff --git a/features/oauth-extensions/org.wso2.carbon.device.mgt.oauth.extensions.feature/pom.xml b/features/oauth-extensions/org.wso2.carbon.device.mgt.oauth.extensions.feature/pom.xml index e1d75de1c6..2da753548c 100644 --- a/features/oauth-extensions/org.wso2.carbon.device.mgt.oauth.extensions.feature/pom.xml +++ b/features/oauth-extensions/org.wso2.carbon.device.mgt.oauth.extensions.feature/pom.xml @@ -23,14 +23,14 @@ org.wso2.carbon.devicemgt oauth-extensions-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.oauth.extensions.feature pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - Device Mgt OAuth Extensions Feature http://wso2.org This feature contains devicemgt related OAuth extensions diff --git a/features/oauth-extensions/pom.xml b/features/oauth-extensions/pom.xml index 2a277ff986..a8ba4c82f2 100644 --- a/features/oauth-extensions/pom.xml +++ b/features/oauth-extensions/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml 4.0.0 org.wso2.carbon.devicemgt oauth-extensions-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT pom WSO2 Carbon - Device Management OAuth Extensions Feature http://wso2.org diff --git a/features/policy-mgt/org.wso2.carbon.policy.mgt.server.feature/pom.xml b/features/policy-mgt/org.wso2.carbon.policy.mgt.server.feature/pom.xml index d59eb2befe..8765527a64 100644 --- a/features/policy-mgt/org.wso2.carbon.policy.mgt.server.feature/pom.xml +++ b/features/policy-mgt/org.wso2.carbon.policy.mgt.server.feature/pom.xml @@ -23,14 +23,14 @@ org.wso2.carbon.devicemgt policy-mgt-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.policy.mgt.server.feature pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - Policy Management Server Feature http://wso2.org This feature contains the core bundles required for Back-end Device Management functionality diff --git a/features/policy-mgt/pom.xml b/features/policy-mgt/pom.xml index 79e6a71471..cf75e5f0db 100644 --- a/features/policy-mgt/pom.xml +++ b/features/policy-mgt/pom.xml @@ -23,14 +23,14 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml 4.0.0 org.wso2.carbon.devicemgt policy-mgt-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT pom WSO2 Carbon - Policy Management Feature http://wso2.org diff --git a/features/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework.server.feature/pom.xml b/features/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework.server.feature/pom.xml index 54e9cb2949..9e6f805bbf 100644 --- a/features/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework.server.feature/pom.xml +++ b/features/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework.server.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt webapp-authenticator-framework-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.webapp.authenticator.framework.server.feature pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - Webapp Authenticator Framework Server Feature http://wso2.org This feature contains the core bundles required for Back-end Device Management functionality diff --git a/features/webapp-authenticator-framework/pom.xml b/features/webapp-authenticator-framework/pom.xml index 0be7a24120..9a18f9301a 100644 --- a/features/webapp-authenticator-framework/pom.xml +++ b/features/webapp-authenticator-framework/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT ../../pom.xml 4.0.0 org.wso2.carbon.devicemgt webapp-authenticator-framework-feature - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT pom WSO2 Carbon - Webapp Authenticator Framework Feature http://wso2.org diff --git a/pom.xml b/pom.xml index 04928303d0..c46e64bc48 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ org.wso2.carbon.devicemgt carbon-devicemgt pom - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT WSO2 Carbon - Device Management - Parent http://wso2.org WSO2 Connected Device Manager Components @@ -241,11 +241,6 @@ org.wso2.carbon.device.mgt.analytics.data.publisher ${carbon.device.mgt.version}
- - org.wso2.carbon.devicemgt - org.wso2.carbon.device.mgt.analytics.dashboard - ${carbon.device.mgt.version} - org.wso2.carbon.devicemgt org.wso2.carbon.device.mgt.server.feature @@ -402,6 +397,18 @@ + + org.wso2.carbon + org.wso2.carbon.securevault + ${carbon.kernel.version} + test + + + org.apache.sling + org.apache.sling.testing.osgi-mock + ${apache.osgi.mock.version} + test + org.wso2.carbon.governance org.wso2.carbon.governance.api @@ -1784,7 +1791,7 @@ 2.2.1 6.1.1 - 4.4.11 + 4.4.17 4.4.9 [4.4.0, 5.0.0) 1.5.4 @@ -1851,7 +1858,7 @@ 1.2.11.wso2v10 - 3.0.133-SNAPSHOT + 3.0.140-SNAPSHOT 4.4.8 @@ -1963,6 +1970,9 @@ 1.6.1 + + 2.3.2 + 2.1.7-wso2v7 1.5.11.wso2v15 diff --git a/pull_request_template.md b/pull_request_template.md new file mode 100644 index 0000000000..9b32185a46 --- /dev/null +++ b/pull_request_template.md @@ -0,0 +1,52 @@ +## Purpose +> Describe the problems, issues, or needs driving this feature/fix and include links to related issues in the following format: Resolves issue1, issue2, etc. + +## Goals +> Describe the solutions that this feature/fix will introduce to resolve the problems described above + +## Approach +> Describe how you are implementing the solutions. Include an animated GIF or screenshot if the change affects the UI (email documentation@wso2.com to review all UI text). Include a link to a Markdown file or Google doc if the feature write-up is too long to paste here. + +## User stories +> Summary of user stories addressed by this change> + +## Release note +> Brief description of the new feature or bug fix as it will appear in the release notes + +## Documentation +> Link(s) to product documentation that addresses the changes of this PR. If no doc impact, enter “N/A” plus brief explanation of why there’s no doc impact + +## Training +> Link to the PR for changes to the training content in https://github.com/wso2/WSO2-Training, if applicable + +## Certification +> Type “Sent” when you have provided new/updated certification questions, plus four answers for each question (correct answer highlighted in bold), based on this change. Certification questions/answers should be sent to certification@wso2.com and NOT pasted in this PR. If there is no impact on certification exams, type “N/A” and explain why. + +## Marketing +> Link to drafts of marketing content that will describe and promote this feature, including product page changes, technical articles, blog posts, videos, etc., if applicable + +## Automation tests + - Unit tests + > Code coverage information + - Integration tests + > Details about the test cases and coverage + +## Security checks + - Followed secure coding standards in http://wso2.com/technical-reports/wso2-secure-engineering-guidelines? yes/no + - Ran FindSecurityBugs plugin and verified report? yes/no + - Confirmed that this PR doesn't commit any keys, passwords, tokens, usernames, or other secrets? yes/no + +## Samples +> Provide high-level details about the samples related to this feature + +## Related PRs +> List any other related PRs + +## Migrations (if applicable) +> Describe migration steps and platforms on which migration has been tested + +## Test environment +> List all JDK versions, operating systems, databases, and browser/versions on which this feature/fix was tested + +## Learning +> Describe the research phase and any blog posts, patterns, libraries, or add-ons you used to solve the problem. \ No newline at end of file