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 9ca2f2cbfe..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.136-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