Introducing more detailed exceptions, controlled filter-sets to dashboard analytics feature

revert-70aa11f8
dilanua 8 years ago
parent 8c4752ede3
commit 47e17e4a51

@ -18,11 +18,11 @@
package org.wso2.carbon.device.mgt.analytics.dashboard; package org.wso2.carbon.device.mgt.analytics.dashboard;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DetailedDeviceEntry; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.BasicFilterSet;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroupEntry; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.ExtendedFilterSet;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.FilterSet; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroup;
import org.wso2.carbon.device.mgt.analytics.dashboard.exception.DataAccessLayerException; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceWithDetails;
import org.wso2.carbon.device.mgt.analytics.dashboard.exception.InvalidParameterValueException; import org.wso2.carbon.device.mgt.analytics.dashboard.exception.*;
import org.wso2.carbon.device.mgt.common.PaginationResult; import org.wso2.carbon.device.mgt.common.PaginationResult;
import java.util.List; import java.util.List;
@ -35,222 +35,225 @@ public interface GadgetDataService {
/** /**
* This method is used to get a count of devices based on a defined filter set. * This method is used to get a count of devices based on a defined filter set.
* @param filterSet An abstract representation of possible filtering options. * @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, * if this value is simply "null" or no values are set for the defined filtering
* this method would return total device count in the system * options, this method would return total device count in the system
* wrapped with in the defined return format. * wrapped by the defined return format.
* @return An object of type DeviceCountByGroupEntry. * @return An object of type DeviceCountByGroup.
* @throws InvalidParameterValueException This can occur if and only if potentialVulnerability value of filterSet * @throws InvalidPotentialVulnerabilityValueException This can occur if potentialVulnerability
* is set with some value other than "NON_COMPLIANT" or "UNMONITORED". * 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, * @throws DataAccessLayerException This can occur due to errors connecting to database,
* executing SQL query and retrieving data. * executing SQL query and retrieving data.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
DeviceCountByGroupEntry getDeviceCount(FilterSet filterSet) DeviceCountByGroup getDeviceCount(ExtendedFilterSet extendedFilterSet)
throws InvalidParameterValueException, DataAccessLayerException; throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException;
/** /**
* This method is used to get a count of devices non-compliant upon on a particular feature * This method is used to get a count of devices non-compliant upon on a particular feature
* and a defined filter set. * and a defined filter set.
* @param nonCompliantFeatureCode Code name of the non-compliant feature. * @param featureCode Code name of the non-compliant feature.
* @param filterSet An abstract representation of possible filtering options. * @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, * if this value is simply "null" or no values are set for the defined filtering
* this method would return total device count in the system * options, this method would return total non-compliant device count in the system
* wrapped with in the defined return format. * for the given feature-code, wrapped by the defined return format.
* @return An object of type DeviceCountByGroupEntry. * @return An object of type DeviceCountByGroup.
* @throws InvalidParameterValueException This can occur if nonCompliantFeatureCode is set to null or empty. * @throws InvalidFeatureCodeValueException This can occur if featureCode is set to null or empty.
* This can also occur if potentialVulnerability value of filterSet
* is set with some value other than "NON_COMPLIANT" or "UNMONITORED".
* @throws DataAccessLayerException This can occur due to errors connecting to database, * @throws DataAccessLayerException This can occur due to errors connecting to database,
* executing SQL query and retrieving data. * executing SQL query and retrieving data.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
DeviceCountByGroupEntry getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, DeviceCountByGroup getFeatureNonCompliantDeviceCount(String featureCode, BasicFilterSet basicFilterSet)
FilterSet filterSet) throws InvalidParameterValueException, DataAccessLayerException; throws InvalidFeatureCodeValueException, DataAccessLayerException;
/** /**
* This method is used to get total count of devices currently enrolled under a particular tenant. * This method is used to get total count of devices currently enrolled under a particular tenant.
* @return An object of type DeviceCountByGroupEntry. * @return An object of type DeviceCountByGroup.
* @throws DataAccessLayerException This can occur due to errors connecting to database, * @throws DataAccessLayerException This can occur due to errors connecting to database,
* executing SQL query and retrieving data. * executing SQL query and retrieving data.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
DeviceCountByGroupEntry getTotalDeviceCount() throws DataAccessLayerException; DeviceCountByGroup getTotalDeviceCount() throws DataAccessLayerException;
/** /**
* This method is used to get device counts classified by connectivity statuses. * This method is used to get device counts classified by connectivity statuses.
* @return A list of objects of type DeviceCountByGroupEntry. * @return A list of objects of type DeviceCountByGroup.
* @throws DataAccessLayerException This can occur due to errors connecting to database, * @throws DataAccessLayerException This can occur due to errors connecting to database,
* executing SQL query and retrieving data. * executing SQL query and retrieving data.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
List<DeviceCountByGroupEntry> getDeviceCountsByConnectivityStatuses() throws DataAccessLayerException; List<DeviceCountByGroup> getDeviceCountsByConnectivityStatuses() throws DataAccessLayerException;
/** /**
* This method is used to get device counts classified by potential vulnerabilities. * This method is used to get device counts classified by potential vulnerabilities.
* @return A list of objects of type DeviceCountByGroupEntry. * @return A list of objects of type DeviceCountByGroup.
* @throws DataAccessLayerException This can occur due to errors connecting to database, * @throws DataAccessLayerException This can occur due to errors connecting to database,
* executing SQL query and retrieving data. * executing SQL query and retrieving data.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
List<DeviceCountByGroupEntry> getDeviceCountsByPotentialVulnerabilities() throws DataAccessLayerException; List<DeviceCountByGroup> getDeviceCountsByPotentialVulnerabilities() throws DataAccessLayerException;
/** /**
* This method is used to get non-compliant device counts classified by individual features. * 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 startIndex Starting index of the data set to be retrieved.
* @param resultCount Total count of the result set retrieved. * @param resultCount Total count of the result set retrieved.
* @return An object of type PaginationResult. * @return An object of type PaginationResult.
* @throws InvalidParameterValueException This can occur if startIndex or resultCount is set to values * @throws InvalidStartIndexValueException This can occur if startIndex value is lesser than its minimum.
* lesser than their minimums. * @throws InvalidResultCountValueException This can occur if resultCount value is lesser than its minimum.
* @throws DataAccessLayerException This can occur due to errors connecting to database, * @throws DataAccessLayerException This can occur due to errors connecting to database,
* executing SQL query and retrieving data. * executing SQL query and retrieving data.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) throws
throws InvalidParameterValueException, DataAccessLayerException; InvalidStartIndexValueException, InvalidResultCountValueException, DataAccessLayerException;
/** /**
* This method is used to get device counts classified by platforms. * This method is used to get device counts classified by platforms.
* @param filterSet An abstract representation of possible filtering options. * @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, * if this value is simply "null" or no values are set for the defined filtering
* this method would return total device count in the system * options, this method would return total device counts per each platform in
* wrapped with in the defined return format. * the system, wrapped by the defined return format.
* @return An object of type DeviceCountByGroupEntry. * @return An object of type DeviceCountByGroup.
* @throws InvalidParameterValueException This can occur if startIndex or resultCount is set to values * @throws InvalidPotentialVulnerabilityValueException This can occur if potentialVulnerability
* lesser than their minimums. * 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, * @throws DataAccessLayerException This can occur due to errors connecting to database,
* executing SQL query and retrieving data. * executing SQL query and retrieving data.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
List<DeviceCountByGroupEntry> getDeviceCountsByPlatforms(FilterSet filterSet) List<DeviceCountByGroup> getDeviceCountsByPlatforms(ExtendedFilterSet extendedFilterSet)
throws InvalidParameterValueException, DataAccessLayerException; throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException;
/** /**
* This method is used to get device counts non-compliant upon a particular feature classified by platforms. * This method is used to get device counts non-compliant upon a particular feature classified by platforms.
* @param nonCompliantFeatureCode Code name of the non-compliant feature. * @param featureCode Code name of the non-compliant feature.
* @param filterSet An abstract representation of possible filtering options. * @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, * if this value is simply "null" or no values are set for the defined filtering
* this method would return total device count in the system * options, this method would return total non-compliant device counts per each platform
* wrapped with in the defined return format. * in the system, wrapped by the defined return format.
* @return A list of objects of type DeviceCountByGroupEntry. * @return A list of objects of type DeviceCountByGroup.
* @throws InvalidParameterValueException This can occur if and only if potentialVulnerability value of filterSet * @throws InvalidFeatureCodeValueException This can occur if featureCode is set to null or empty.
* is set with some value other than "NON_COMPLIANT" or "UNMONITORED".
* @throws DataAccessLayerException This can occur due to errors connecting to database, * @throws DataAccessLayerException This can occur due to errors connecting to database,
* executing SQL query and retrieving data. * executing SQL query and retrieving data.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
List<DeviceCountByGroupEntry> getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode, List<DeviceCountByGroup> getFeatureNonCompliantDeviceCountsByPlatforms(String featureCode,
FilterSet filterSet) throws InvalidParameterValueException, DataAccessLayerException; BasicFilterSet basicFilterSet) throws InvalidFeatureCodeValueException,
DataAccessLayerException;
/** /**
* This method is used to get device counts classified by ownership types. * This method is used to get device counts classified by ownership types.
* @param filterSet An abstract representation of possible filtering options. * @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, * if this value is simply "null" or no values are set for the defined filtering
* this method would return total device count in the system * options, this method would return total device counts per each ownership type in
* wrapped with in the defined return format. * the system, wrapped by the defined return format.
* @return A list of objects of type DeviceCountByGroupEntry. * @return A list of objects of type DeviceCountByGroup.
* @throws InvalidParameterValueException This can occur if nonCompliantFeatureCode is set to null or empty. * @throws InvalidPotentialVulnerabilityValueException This can occur if potentialVulnerability
* This can also occur if potentialVulnerability value of filterSet * value of extendedFilterSet is set with some
* is set with some value other than "NON_COMPLIANT" or "UNMONITORED". * value other than "NON_COMPLIANT" or "UNMONITORED".
* @throws DataAccessLayerException This can occur due to errors connecting to database, * @throws DataAccessLayerException This can occur due to errors connecting to database,
* executing SQL query and retrieving data. * executing SQL query and retrieving data.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
List<DeviceCountByGroupEntry> getDeviceCountsByOwnershipTypes(FilterSet filterSet) List<DeviceCountByGroup> getDeviceCountsByOwnershipTypes(ExtendedFilterSet extendedFilterSet)
throws InvalidParameterValueException, DataAccessLayerException; throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException;
/** /**
* This method is used to get device counts non-compliant upon a particular feature classified by ownership types. * This method is used to get device counts non-compliant upon a particular feature classified by ownership types.
* @param nonCompliantFeatureCode Code name of the non-compliant feature. * @param featureCode Code name of the non-compliant feature.
* @param filterSet An abstract representation of possible filtering options. * @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, * if this value is simply "null" or no values are set for the defined filtering
* this method would return total device count in the system * options, this method would return total non-compliant device counts per each
* wrapped with in the defined return format. * ownership type in the system, wrapped by the defined return format.
* @return A list of objects of type DeviceCountByGroupEntry. * @return A list of objects of type DeviceCountByGroup.
* @throws InvalidParameterValueException This can occur if and only if potentialVulnerability value of filterSet * @throws InvalidFeatureCodeValueException This can occur if featureCode is set to null or empty.
* is set with some value other than "NON_COMPLIANT" or "UNMONITORED".
* @throws DataAccessLayerException This can occur due to errors connecting to database, * @throws DataAccessLayerException This can occur due to errors connecting to database,
* executing SQL query and retrieving data. * executing SQL query and retrieving data.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
List<DeviceCountByGroupEntry> getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode, List<DeviceCountByGroup> getFeatureNonCompliantDeviceCountsByOwnershipTypes(String featureCode,
FilterSet filterSet) throws InvalidParameterValueException, DataAccessLayerException; BasicFilterSet basicFilterSet) throws InvalidFeatureCodeValueException,
DataAccessLayerException;
/** /**
* This method is used to get a paginated list of devices with details, based on a defined filter set. * This method is used to get a paginated list of devices with details, based on a defined filter set.
* @param filterSet An abstract representation of possible filtering options. * @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, * if this value is simply "null" or no values are set for the defined
* this method would return total device count in the system * filtering options, this method would return a paginated device list in the
* wrapped with in the defined return format. * 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 startIndex Starting index of the data set to be retrieved.
* @param resultCount Total count of the result set retrieved. * @param resultCount Total count of the result set retrieved.
* @return An object of type PaginationResult. * @return An object of type PaginationResult.
* @throws InvalidParameterValueException This can occur if nonCompliantFeatureCode is set to null or empty. * @throws InvalidPotentialVulnerabilityValueException This can occur if potentialVulnerability
* This can also occur if potentialVulnerability value of filterSet * value of extendedFilterSet is set with some
* is set with some value other than "NON_COMPLIANT" or "UNMONITORED". * value other than "NON_COMPLIANT" or "UNMONITORED".
* @throws DataAccessLayerException This can occur due to errors connecting to database, * @throws DataAccessLayerException This can occur due to errors connecting to database,
* executing SQL query and retrieving data. * executing SQL query and retrieving data.
* @throws InvalidStartIndexValueException This can occur if startIndex value is lesser than its minimum.
* @throws InvalidResultCountValueException This can occur if resultCount value is lesser than its minimum.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
PaginationResult getDevicesWithDetails(FilterSet filterSet, int startIndex, int resultCount) PaginationResult getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, int startIndex, int resultCount)
throws InvalidParameterValueException, DataAccessLayerException; throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException,
InvalidStartIndexValueException, InvalidResultCountValueException;
/** /**
* This method is used to get a paginated list of non-compliant devices with details, upon a particular feature. * This method is used to get a paginated list of non-compliant devices with details, upon a particular feature.
* @param nonCompliantFeatureCode Code name of the non-compliant feature. * @param featureCode Code name of the non-compliant feature.
* @param filterSet An abstract representation of possible filtering options. * @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, * if this value is simply "null" or no values are set for the defined filtering
* this method would return total device count in the system * options, this method would return a paginated device list in the system,
* wrapped with in the defined return format. * 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 startIndex Starting index of the data set to be retrieved.
* @param resultCount Total count of the result set retrieved. * @param resultCount Total count of the result set retrieved.
* @return An object of type PaginationResult. * @return An object of type PaginationResult.
* @throws InvalidParameterValueException This can occur if potentialVulnerability value of filterSet * @throws InvalidFeatureCodeValueException This can occur if featureCode is set to null or empty.
* is set with some value other than "NON_COMPLIANT" or "UNMONITORED".
* This can also occur if startIndex or resultCount is set to values
* lesser than their minimums.
* @throws DataAccessLayerException This can occur due to errors connecting to database, * @throws DataAccessLayerException This can occur due to errors connecting to database,
* executing SQL query and retrieving data. * executing SQL query and retrieving data.
* @throws InvalidStartIndexValueException This can occur if startIndex value is lesser than its minimum.
* @throws InvalidResultCountValueException This can occur if resultCount value is lesser than its minimum.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
PaginationResult getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, PaginationResult getFeatureNonCompliantDevicesWithDetails(String featureCode, BasicFilterSet basicFilterSet,
FilterSet filterSet, int startIndex, int resultCount) int startIndex, int resultCount) throws InvalidFeatureCodeValueException,
throws InvalidParameterValueException, DataAccessLayerException; DataAccessLayerException, InvalidStartIndexValueException,
InvalidResultCountValueException;
/** /**
* This method is used to get a list of devices with details, based on a defined filter set. * This method is used to get a list of devices with details, based on a defined filter set.
* @param filterSet An abstract representation of possible filtering options. * @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, * if this value is simply "null" or no values are set for the defined filtering
* this method would return total device count in the system * options, this method would return total device list in the system
* wrapped with in the defined return format. * wrapped by the defined return format.
* @return A list of objects of type DetailedDeviceEntry. * @return A list of objects of type DeviceWithDetails.
* @throws InvalidParameterValueException This can occur if nonCompliantFeatureCode is set to null or empty. * @throws InvalidPotentialVulnerabilityValueException This can occur if potentialVulnerability
* This can occur if potentialVulnerability value of filterSet * value of extendedFilterSet is set with some
* is set with some value other than "NON_COMPLIANT" or "UNMONITORED". * value other than "NON_COMPLIANT" or "UNMONITORED".
* This can also occur if startIndex or resultCount is set to values
* lesser than their minimums.
* @throws DataAccessLayerException This can occur due to errors connecting to database, * @throws DataAccessLayerException This can occur due to errors connecting to database,
* executing SQL query and retrieving data. * executing SQL query and retrieving data.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
List<DetailedDeviceEntry> getDevicesWithDetails(FilterSet filterSet) List<DeviceWithDetails> getDevicesWithDetails(ExtendedFilterSet extendedFilterSet)
throws InvalidParameterValueException, DataAccessLayerException; throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException;
/** /**
* This method is used to get a list of non-compliant devices with details, upon a particular feature. * This method is used to get a list of non-compliant devices with details, upon a particular feature.
* @param nonCompliantFeatureCode Code name of the non-compliant feature. * @param featureCode Code name of the non-compliant feature.
* @param filterSet An abstract representation of possible filtering options. * @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, * if this value is simply "null" or no values are set for the defined filtering
* this method would return total device count in the system * options, this method would return total set of non-compliant devices in the
* wrapped with in the defined return format. * system upon given feature-code, wrapped by the defined return format.
* @return A list of objects of type DetailedDeviceEntry. * @return A list of objects of type DeviceWithDetails.
* @throws InvalidParameterValueException This can occur if and only if potentialVulnerability value of filterSet * @throws InvalidFeatureCodeValueException This can occur if featureCode is set to null or empty.
* is set with some value other than "NON_COMPLIANT" or "UNMONITORED".
* @throws DataAccessLayerException This can occur due to errors connecting to database, * @throws DataAccessLayerException This can occur due to errors connecting to database,
* executing SQL query and retrieving data. * executing SQL query and retrieving data.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
List<DetailedDeviceEntry> getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, List<DeviceWithDetails> getFeatureNonCompliantDevicesWithDetails(String featureCode,
FilterSet filterSet) throws InvalidParameterValueException, DataAccessLayerException; BasicFilterSet basicFilterSet) throws InvalidFeatureCodeValueException,
DataAccessLayerException;
} }

@ -18,10 +18,9 @@
package org.wso2.carbon.device.mgt.analytics.dashboard.bean; package org.wso2.carbon.device.mgt.analytics.dashboard.bean;
public class FilterSet { public class BasicFilterSet {
private String connectivityStatus; private String connectivityStatus;
private String potentialVulnerability;
private String platform; private String platform;
private String ownership; private String ownership;
@ -33,14 +32,6 @@ public class FilterSet {
this.connectivityStatus = connectivityStatus; this.connectivityStatus = connectivityStatus;
} }
public String getPotentialVulnerability() {
return potentialVulnerability;
}
public void setPotentialVulnerability(String potentialVulnerability) {
this.potentialVulnerability = potentialVulnerability;
}
public String getPlatform() { public String getPlatform() {
return platform; return platform;
} }

@ -18,7 +18,7 @@
package org.wso2.carbon.device.mgt.analytics.dashboard.bean; package org.wso2.carbon.device.mgt.analytics.dashboard.bean;
public class DeviceCountByGroupEntry { public class DeviceCountByGroup {
private String group; private String group;
private String displayNameForGroup; private String displayNameForGroup;

@ -18,7 +18,7 @@
package org.wso2.carbon.device.mgt.analytics.dashboard.bean; package org.wso2.carbon.device.mgt.analytics.dashboard.bean;
public class DetailedDeviceEntry { public class DeviceWithDetails {
private int deviceId; private int deviceId;
private String deviceIdentification; private String deviceIdentification;

@ -0,0 +1,37 @@
/*
* 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;
}
}

@ -19,10 +19,12 @@
package org.wso2.carbon.device.mgt.analytics.dashboard.dao; package org.wso2.carbon.device.mgt.analytics.dashboard.dao;
import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DetailedDeviceEntry; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.BasicFilterSet;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroupEntry; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceWithDetails;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.FilterSet; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroup;
import org.wso2.carbon.device.mgt.analytics.dashboard.exception.InvalidParameterValueException; 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.core.dao.util.DeviceManagementDAOUtil; import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
import java.sql.Connection; import java.sql.Connection;
@ -37,40 +39,40 @@ import java.util.Map;
public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceDAO { public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceDAO {
@Override @Override
public DeviceCountByGroupEntry getTotalDeviceCount() throws SQLException { public DeviceCountByGroup getTotalDeviceCount() throws SQLException {
int totalDeviceCount; int totalDeviceCount;
try { try {
totalDeviceCount = this.getFilteredDeviceCount(null); totalDeviceCount = this.getFilteredDeviceCount(null);
} catch (InvalidParameterValueException e) { } catch (InvalidPotentialVulnerabilityValueException e) {
throw new AssertionError(e); throw new AssertionError(e);
} }
DeviceCountByGroupEntry deviceCountByGroupEntry = new DeviceCountByGroupEntry(); DeviceCountByGroup deviceCountByGroup = new DeviceCountByGroup();
deviceCountByGroupEntry.setGroup("total"); deviceCountByGroup.setGroup("total");
deviceCountByGroupEntry.setDisplayNameForGroup("Total"); deviceCountByGroup.setDisplayNameForGroup("Total");
deviceCountByGroupEntry.setDeviceCount(totalDeviceCount); deviceCountByGroup.setDeviceCount(totalDeviceCount);
return deviceCountByGroupEntry; return deviceCountByGroup;
} }
@Override @Override
public DeviceCountByGroupEntry getDeviceCount(FilterSet filterSet) public DeviceCountByGroup getDeviceCount(ExtendedFilterSet extendedFilterSet)
throws InvalidParameterValueException, SQLException { throws InvalidPotentialVulnerabilityValueException, SQLException {
int filteredDeviceCount = this.getFilteredDeviceCount(filterSet); int filteredDeviceCount = this.getFilteredDeviceCount(extendedFilterSet);
DeviceCountByGroupEntry deviceCountByGroupEntry = new DeviceCountByGroupEntry(); DeviceCountByGroup deviceCountByGroup = new DeviceCountByGroup();
deviceCountByGroupEntry.setGroup("filtered"); deviceCountByGroup.setGroup("filtered");
deviceCountByGroupEntry.setDisplayNameForGroup("Filtered"); deviceCountByGroup.setDisplayNameForGroup("Filtered");
deviceCountByGroupEntry.setDeviceCount(filteredDeviceCount); deviceCountByGroup.setDeviceCount(filteredDeviceCount);
return deviceCountByGroupEntry; return deviceCountByGroup;
} }
private int getFilteredDeviceCount(FilterSet filterSet) private int getFilteredDeviceCount(ExtendedFilterSet extendedFilterSet)
throws InvalidParameterValueException, SQLException { throws InvalidPotentialVulnerabilityValueException, SQLException {
Map<String, Object> filters = this.extractDatabaseFiltersFromBean(filterSet); Map<String, Object> filters = this.extractDatabaseFiltersFromBean(extendedFilterSet);
Connection con; Connection con;
PreparedStatement stmt = null; PreparedStatement stmt = null;
@ -115,14 +117,14 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
} }
@Override @Override
public DeviceCountByGroupEntry getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, public DeviceCountByGroup getFeatureNonCompliantDeviceCount(String featureCode,
FilterSet filterSet) throws InvalidParameterValueException, SQLException { BasicFilterSet basicFilterSet) throws InvalidFeatureCodeValueException, SQLException {
if (nonCompliantFeatureCode == null || nonCompliantFeatureCode.isEmpty()) { if (featureCode == null || featureCode.isEmpty()) {
throw new InvalidParameterValueException("Non-compliant feature code should not be either null or empty."); throw new InvalidFeatureCodeValueException("Feature code should not be either null or empty.");
} }
Map<String, Object> filters = this.extractDatabaseFiltersFromBean(filterSet); Map<String, Object> filters = this.extractDatabaseFiltersFromBean(basicFilterSet);
Connection con; Connection con;
PreparedStatement stmt = null; PreparedStatement stmt = null;
@ -143,7 +145,7 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
stmt = con.prepareStatement(sql); stmt = con.prepareStatement(sql);
// [2] appending filter column values, if exist // [2] appending filter column values, if exist
stmt.setInt(1, tenantId); stmt.setInt(1, tenantId);
stmt.setString(2, nonCompliantFeatureCode); stmt.setString(2, featureCode);
if (filters != null && filters.values().size() > 0) { if (filters != null && filters.values().size() > 0) {
int i = 3; int i = 3;
for (Object value : filters.values()) { for (Object value : filters.values()) {
@ -165,21 +167,21 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
DeviceManagementDAOUtil.cleanupResources(stmt, rs); DeviceManagementDAOUtil.cleanupResources(stmt, rs);
} }
DeviceCountByGroupEntry deviceCountByGroupEntry = new DeviceCountByGroupEntry(); DeviceCountByGroup deviceCountByGroup = new DeviceCountByGroup();
deviceCountByGroupEntry.setGroup("feature-non-compliant-and-filtered"); deviceCountByGroup.setGroup("feature-non-compliant-and-filtered");
deviceCountByGroupEntry.setDisplayNameForGroup("Feature-non-compliant-and-filtered"); deviceCountByGroup.setDisplayNameForGroup("Feature-non-compliant-and-filtered");
deviceCountByGroupEntry.setDeviceCount(filteredDeviceCount); deviceCountByGroup.setDeviceCount(filteredDeviceCount);
return deviceCountByGroupEntry; return deviceCountByGroup;
} }
@Override @Override
public List<DeviceCountByGroupEntry> getDeviceCountsByConnectivityStatuses() throws SQLException { public List<DeviceCountByGroup> getDeviceCountsByConnectivityStatuses() throws SQLException {
Connection con; Connection con;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DeviceCountByGroupEntry> deviceCountsByConnectivityStatuses = new ArrayList<>(); List<DeviceCountByGroup> deviceCountsByConnectivityStatuses = new ArrayList<>();
try { try {
con = this.getConnection(); con = this.getConnection();
String sql = "SELECT CONNECTIVITY_STATUS, COUNT(DEVICE_ID) AS DEVICE_COUNT FROM " + String sql = "SELECT CONNECTIVITY_STATUS, COUNT(DEVICE_ID) AS DEVICE_COUNT FROM " +
@ -191,9 +193,9 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DeviceCountByGroupEntry deviceCountByConnectivityStatus; DeviceCountByGroup deviceCountByConnectivityStatus;
while (rs.next()) { while (rs.next()) {
deviceCountByConnectivityStatus = new DeviceCountByGroupEntry(); deviceCountByConnectivityStatus = new DeviceCountByGroup();
deviceCountByConnectivityStatus.setGroup(rs.getString("CONNECTIVITY_STATUS")); deviceCountByConnectivityStatus.setGroup(rs.getString("CONNECTIVITY_STATUS"));
deviceCountByConnectivityStatus.setDisplayNameForGroup(rs.getString("CONNECTIVITY_STATUS")); deviceCountByConnectivityStatus.setDisplayNameForGroup(rs.getString("CONNECTIVITY_STATUS"));
deviceCountByConnectivityStatus.setDeviceCount(rs.getInt("DEVICE_COUNT")); deviceCountByConnectivityStatus.setDeviceCount(rs.getInt("DEVICE_COUNT"));
@ -206,20 +208,20 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
} }
@Override @Override
public List<DeviceCountByGroupEntry> getDeviceCountsByPotentialVulnerabilities() throws SQLException { public List<DeviceCountByGroup> getDeviceCountsByPotentialVulnerabilities() throws SQLException {
// getting non-compliant device count // getting non-compliant device count
DeviceCountByGroupEntry nonCompliantDeviceCount = new DeviceCountByGroupEntry(); DeviceCountByGroup nonCompliantDeviceCount = new DeviceCountByGroup();
nonCompliantDeviceCount.setGroup(GadgetDataServiceDAOConstants.PotentialVulnerability.NON_COMPLIANT); nonCompliantDeviceCount.setGroup(GadgetDataServiceDAOConstants.PotentialVulnerability.NON_COMPLIANT);
nonCompliantDeviceCount.setDisplayNameForGroup("Non-compliant"); nonCompliantDeviceCount.setDisplayNameForGroup("Non-compliant");
nonCompliantDeviceCount.setDeviceCount(getNonCompliantDeviceCount()); nonCompliantDeviceCount.setDeviceCount(getNonCompliantDeviceCount());
// getting unmonitored device count // getting unmonitored device count
DeviceCountByGroupEntry unmonitoredDeviceCount = new DeviceCountByGroupEntry(); DeviceCountByGroup unmonitoredDeviceCount = new DeviceCountByGroup();
unmonitoredDeviceCount.setGroup(GadgetDataServiceDAOConstants.PotentialVulnerability.UNMONITORED); unmonitoredDeviceCount.setGroup(GadgetDataServiceDAOConstants.PotentialVulnerability.UNMONITORED);
unmonitoredDeviceCount.setDisplayNameForGroup("Unmonitored"); unmonitoredDeviceCount.setDisplayNameForGroup("Unmonitored");
unmonitoredDeviceCount.setDeviceCount(getUnmonitoredDeviceCount()); unmonitoredDeviceCount.setDeviceCount(getUnmonitoredDeviceCount());
List<DeviceCountByGroupEntry> deviceCountsByPotentialVulnerabilities = new ArrayList<>(); List<DeviceCountByGroup> deviceCountsByPotentialVulnerabilities = new ArrayList<>();
deviceCountsByPotentialVulnerabilities.add(nonCompliantDeviceCount); deviceCountsByPotentialVulnerabilities.add(nonCompliantDeviceCount);
deviceCountsByPotentialVulnerabilities.add(unmonitoredDeviceCount); deviceCountsByPotentialVulnerabilities.add(unmonitoredDeviceCount);
@ -227,36 +229,38 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
} }
private int getNonCompliantDeviceCount() throws SQLException { private int getNonCompliantDeviceCount() throws SQLException {
FilterSet filterSet = new FilterSet(); ExtendedFilterSet extendedFilterSet = new ExtendedFilterSet();
filterSet.setPotentialVulnerability(GadgetDataServiceDAOConstants.PotentialVulnerability.NON_COMPLIANT); extendedFilterSet.setPotentialVulnerability(GadgetDataServiceDAOConstants.
PotentialVulnerability.NON_COMPLIANT);
try { try {
return this.getFilteredDeviceCount(filterSet); return this.getFilteredDeviceCount(extendedFilterSet);
} catch (InvalidParameterValueException e) { } catch (InvalidPotentialVulnerabilityValueException e) {
throw new AssertionError(e); throw new AssertionError(e);
} }
} }
private int getUnmonitoredDeviceCount() throws SQLException { private int getUnmonitoredDeviceCount() throws SQLException {
FilterSet filterSet = new FilterSet(); ExtendedFilterSet extendedFilterSet = new ExtendedFilterSet();
filterSet.setPotentialVulnerability(GadgetDataServiceDAOConstants.PotentialVulnerability.UNMONITORED); extendedFilterSet.setPotentialVulnerability(GadgetDataServiceDAOConstants.
PotentialVulnerability.UNMONITORED);
try { try {
return this.getFilteredDeviceCount(filterSet); return this.getFilteredDeviceCount(extendedFilterSet);
} catch (InvalidParameterValueException e) { } catch (InvalidPotentialVulnerabilityValueException e) {
throw new AssertionError(e); throw new AssertionError(e);
} }
} }
@Override @Override
public List<DeviceCountByGroupEntry> getDeviceCountsByPlatforms(FilterSet filterSet) public List<DeviceCountByGroup> getDeviceCountsByPlatforms(ExtendedFilterSet extendedFilterSet)
throws InvalidParameterValueException, SQLException { throws InvalidPotentialVulnerabilityValueException, SQLException {
Map<String, Object> filters = this.extractDatabaseFiltersFromBean(filterSet); Map<String, Object> filters = this.extractDatabaseFiltersFromBean(extendedFilterSet);
Connection con; Connection con;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DeviceCountByGroupEntry> filteredDeviceCountsByPlatforms = new ArrayList<>(); List<DeviceCountByGroup> filteredDeviceCountsByPlatforms = new ArrayList<>();
try { try {
con = this.getConnection(); con = this.getConnection();
String sql, advancedSqlFiltering = ""; String sql, advancedSqlFiltering = "";
@ -286,9 +290,9 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DeviceCountByGroupEntry filteredDeviceCountByPlatform; DeviceCountByGroup filteredDeviceCountByPlatform;
while (rs.next()) { while (rs.next()) {
filteredDeviceCountByPlatform = new DeviceCountByGroupEntry(); filteredDeviceCountByPlatform = new DeviceCountByGroup();
filteredDeviceCountByPlatform.setGroup(rs.getString("PLATFORM")); filteredDeviceCountByPlatform.setGroup(rs.getString("PLATFORM"));
filteredDeviceCountByPlatform.setDisplayNameForGroup(rs.getString("PLATFORM").toUpperCase()); filteredDeviceCountByPlatform.setDisplayNameForGroup(rs.getString("PLATFORM").toUpperCase());
filteredDeviceCountByPlatform.setDeviceCount(rs.getInt("DEVICE_COUNT")); filteredDeviceCountByPlatform.setDeviceCount(rs.getInt("DEVICE_COUNT"));
@ -301,21 +305,21 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
} }
@Override @Override
public List<DeviceCountByGroupEntry> public List<DeviceCountByGroup>
getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode, getFeatureNonCompliantDeviceCountsByPlatforms(String featureCode,
FilterSet filterSet) throws InvalidParameterValueException, SQLException { BasicFilterSet basicFilterSet) throws InvalidFeatureCodeValueException, SQLException {
if (nonCompliantFeatureCode == null || nonCompliantFeatureCode.isEmpty()) { if (featureCode == null || featureCode.isEmpty()) {
throw new InvalidParameterValueException("Non-compliant feature code should not be either null or empty."); throw new InvalidFeatureCodeValueException("Feature code should not be either null or empty.");
} }
Map<String, Object> filters = this.extractDatabaseFiltersFromBean(filterSet); Map<String, Object> filters = this.extractDatabaseFiltersFromBean(basicFilterSet);
Connection con; Connection con;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DeviceCountByGroupEntry> filteredDeviceCountsByPlatforms = new ArrayList<>(); List<DeviceCountByGroup> filteredDeviceCountsByPlatforms = new ArrayList<>();
try { try {
con = this.getConnection(); con = this.getConnection();
String sql, advancedSqlFiltering = ""; String sql, advancedSqlFiltering = "";
@ -332,7 +336,7 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
stmt = con.prepareStatement(sql); stmt = con.prepareStatement(sql);
// [2] appending filter column values, if exist // [2] appending filter column values, if exist
stmt.setInt(1, tenantId); stmt.setInt(1, tenantId);
stmt.setString(2, nonCompliantFeatureCode); stmt.setString(2, featureCode);
if (filters != null && filters.values().size() > 0) { if (filters != null && filters.values().size() > 0) {
int i = 3; int i = 3;
for (Object value : filters.values()) { for (Object value : filters.values()) {
@ -347,9 +351,9 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DeviceCountByGroupEntry filteredDeviceCountByPlatform; DeviceCountByGroup filteredDeviceCountByPlatform;
while (rs.next()) { while (rs.next()) {
filteredDeviceCountByPlatform = new DeviceCountByGroupEntry(); filteredDeviceCountByPlatform = new DeviceCountByGroup();
filteredDeviceCountByPlatform.setGroup(rs.getString("PLATFORM")); filteredDeviceCountByPlatform.setGroup(rs.getString("PLATFORM"));
filteredDeviceCountByPlatform.setDisplayNameForGroup(rs.getString("PLATFORM").toUpperCase()); filteredDeviceCountByPlatform.setDisplayNameForGroup(rs.getString("PLATFORM").toUpperCase());
filteredDeviceCountByPlatform.setDeviceCount(rs.getInt("DEVICE_COUNT")); filteredDeviceCountByPlatform.setDeviceCount(rs.getInt("DEVICE_COUNT"));
@ -362,16 +366,16 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
} }
@Override @Override
public List<DeviceCountByGroupEntry> getDeviceCountsByOwnershipTypes(FilterSet filterSet) public List<DeviceCountByGroup> getDeviceCountsByOwnershipTypes(ExtendedFilterSet extendedFilterSet)
throws InvalidParameterValueException, SQLException { throws InvalidPotentialVulnerabilityValueException, SQLException {
Map<String, Object> filters = this.extractDatabaseFiltersFromBean(filterSet); Map<String, Object> filters = this.extractDatabaseFiltersFromBean(extendedFilterSet);
Connection con; Connection con;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DeviceCountByGroupEntry> filteredDeviceCountsByOwnershipTypes = new ArrayList<>(); List<DeviceCountByGroup> filteredDeviceCountsByOwnershipTypes = new ArrayList<>();
try { try {
con = this.getConnection(); con = this.getConnection();
String sql, advancedSqlFiltering = ""; String sql, advancedSqlFiltering = "";
@ -402,9 +406,9 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DeviceCountByGroupEntry filteredDeviceCountByOwnershipType; DeviceCountByGroup filteredDeviceCountByOwnershipType;
while (rs.next()) { while (rs.next()) {
filteredDeviceCountByOwnershipType = new DeviceCountByGroupEntry(); filteredDeviceCountByOwnershipType = new DeviceCountByGroup();
filteredDeviceCountByOwnershipType.setGroup(rs.getString("OWNERSHIP")); filteredDeviceCountByOwnershipType.setGroup(rs.getString("OWNERSHIP"));
filteredDeviceCountByOwnershipType.setDisplayNameForGroup(rs.getString("OWNERSHIP")); filteredDeviceCountByOwnershipType.setDisplayNameForGroup(rs.getString("OWNERSHIP"));
filteredDeviceCountByOwnershipType.setDeviceCount(rs.getInt("DEVICE_COUNT")); filteredDeviceCountByOwnershipType.setDeviceCount(rs.getInt("DEVICE_COUNT"));
@ -417,21 +421,21 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
} }
@Override @Override
public List<DeviceCountByGroupEntry> public List<DeviceCountByGroup>
getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode, getFeatureNonCompliantDeviceCountsByOwnershipTypes(String featureCode,
FilterSet filterSet) throws InvalidParameterValueException, SQLException { BasicFilterSet basicFilterSet) throws InvalidFeatureCodeValueException, SQLException {
if (nonCompliantFeatureCode == null || nonCompliantFeatureCode.isEmpty()) { if (featureCode == null || featureCode.isEmpty()) {
throw new InvalidParameterValueException("Non-compliant feature code should not be either null or empty."); throw new InvalidFeatureCodeValueException("Feature code should not be either null or empty.");
} }
Map<String, Object> filters = this.extractDatabaseFiltersFromBean(filterSet); Map<String, Object> filters = this.extractDatabaseFiltersFromBean(basicFilterSet);
Connection con; Connection con;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DeviceCountByGroupEntry> filteredDeviceCountsByOwnershipTypes = new ArrayList<>(); List<DeviceCountByGroup> filteredDeviceCountsByOwnershipTypes = new ArrayList<>();
try { try {
con = this.getConnection(); con = this.getConnection();
String sql, advancedSqlFiltering = ""; String sql, advancedSqlFiltering = "";
@ -448,7 +452,7 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
stmt = con.prepareStatement(sql); stmt = con.prepareStatement(sql);
// [2] appending filter column values, if exist // [2] appending filter column values, if exist
stmt.setInt(1, tenantId); stmt.setInt(1, tenantId);
stmt.setString(2, nonCompliantFeatureCode); stmt.setString(2, featureCode);
if (filters != null && filters.values().size() > 0) { if (filters != null && filters.values().size() > 0) {
int i = 3; int i = 3;
for (Object value : filters.values()) { for (Object value : filters.values()) {
@ -463,9 +467,9 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DeviceCountByGroupEntry filteredDeviceCountByOwnershipType; DeviceCountByGroup filteredDeviceCountByOwnershipType;
while (rs.next()) { while (rs.next()) {
filteredDeviceCountByOwnershipType = new DeviceCountByGroupEntry(); filteredDeviceCountByOwnershipType = new DeviceCountByGroup();
filteredDeviceCountByOwnershipType.setGroup(rs.getString("OWNERSHIP")); filteredDeviceCountByOwnershipType.setGroup(rs.getString("OWNERSHIP"));
filteredDeviceCountByOwnershipType.setDisplayNameForGroup(rs.getString("OWNERSHIP")); filteredDeviceCountByOwnershipType.setDisplayNameForGroup(rs.getString("OWNERSHIP"));
filteredDeviceCountByOwnershipType.setDeviceCount(rs.getInt("DEVICE_COUNT")); filteredDeviceCountByOwnershipType.setDeviceCount(rs.getInt("DEVICE_COUNT"));
@ -478,16 +482,16 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
} }
@Override @Override
public List<DetailedDeviceEntry> getDevicesWithDetails(FilterSet filterSet) public List<DeviceWithDetails> getDevicesWithDetails(ExtendedFilterSet extendedFilterSet)
throws InvalidParameterValueException, SQLException { throws InvalidPotentialVulnerabilityValueException, SQLException {
Map<String, Object> filters = this.extractDatabaseFiltersFromBean(filterSet); Map<String, Object> filters = this.extractDatabaseFiltersFromBean(extendedFilterSet);
Connection con; Connection con;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DetailedDeviceEntry> filteredDevicesWithDetails = new ArrayList<>(); List<DeviceWithDetails> filteredDevicesWithDetails = new ArrayList<>();
try { try {
con = this.getConnection(); con = this.getConnection();
String sql; String sql;
@ -517,9 +521,9 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DetailedDeviceEntry filteredDeviceWithDetails; DeviceWithDetails filteredDeviceWithDetails;
while (rs.next()) { while (rs.next()) {
filteredDeviceWithDetails = new DetailedDeviceEntry(); filteredDeviceWithDetails = new DeviceWithDetails();
filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID"));
filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION"));
filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM"));
@ -534,20 +538,20 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
} }
@Override @Override
public List<DetailedDeviceEntry> getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, public List<DeviceWithDetails> getFeatureNonCompliantDevicesWithDetails(String featureCode,
FilterSet filterSet) throws InvalidParameterValueException, SQLException { BasicFilterSet basicFilterSet) throws InvalidFeatureCodeValueException, SQLException {
if (nonCompliantFeatureCode == null || nonCompliantFeatureCode.isEmpty()) { if (featureCode == null || featureCode.isEmpty()) {
throw new InvalidParameterValueException("Non-compliant feature code should not be either null or empty."); throw new InvalidFeatureCodeValueException("Feature code should not be either null or empty.");
} }
Map<String, Object> filters = this.extractDatabaseFiltersFromBean(filterSet); Map<String, Object> filters = this.extractDatabaseFiltersFromBean(basicFilterSet);
Connection con; Connection con;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DetailedDeviceEntry> filteredDevicesWithDetails = new ArrayList<>(); List<DeviceWithDetails> filteredDevicesWithDetails = new ArrayList<>();
try { try {
con = this.getConnection(); con = this.getConnection();
String sql; String sql;
@ -564,7 +568,7 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
stmt = con.prepareStatement(sql); stmt = con.prepareStatement(sql);
// [2] appending filter column values, if exist // [2] appending filter column values, if exist
stmt.setInt(1, tenantId); stmt.setInt(1, tenantId);
stmt.setString(2, nonCompliantFeatureCode); stmt.setString(2, featureCode);
if (filters != null && filters.values().size() > 0) { if (filters != null && filters.values().size() > 0) {
int i = 3; int i = 3;
for (Object value : filters.values()) { for (Object value : filters.values()) {
@ -579,9 +583,9 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DetailedDeviceEntry filteredDeviceWithDetails; DeviceWithDetails filteredDeviceWithDetails;
while (rs.next()) { while (rs.next()) {
filteredDeviceWithDetails = new DetailedDeviceEntry(); filteredDeviceWithDetails = new DeviceWithDetails();
filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID"));
filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION"));
filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM"));
@ -595,46 +599,56 @@ public abstract class AbstractGadgetDataServiceDAO implements GadgetDataServiceD
return filteredDevicesWithDetails; return filteredDevicesWithDetails;
} }
protected Map<String, Object> extractDatabaseFiltersFromBean(FilterSet filterSet) protected Map<String, Object> extractDatabaseFiltersFromBean(BasicFilterSet basicFilterSet) {
throws InvalidParameterValueException { if (basicFilterSet == null) {
if (filterSet == null) {
return null; return null;
} }
Map<String, Object> filters = new LinkedHashMap<>(); Map<String, Object> filters = new LinkedHashMap<>();
String connectivityStatus = filterSet.getConnectivityStatus(); String connectivityStatus = basicFilterSet.getConnectivityStatus();
if (connectivityStatus != null) { if (connectivityStatus != null && !connectivityStatus.isEmpty()) {
filters.put("CONNECTIVITY_STATUS", connectivityStatus); filters.put("CONNECTIVITY_STATUS", connectivityStatus);
} }
String potentialVulnerability = filterSet.getPotentialVulnerability(); String platform = basicFilterSet.getPlatform();
if (potentialVulnerability != null) { 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<String, Object> extractDatabaseFiltersFromBean(ExtendedFilterSet extendedFilterSet)
throws InvalidPotentialVulnerabilityValueException {
if (extendedFilterSet == null) {
return null;
}
Map<String, Object> filters = this.extractDatabaseFiltersFromBean((BasicFilterSet) extendedFilterSet);
String potentialVulnerability = extendedFilterSet.getPotentialVulnerability();
if (potentialVulnerability != null && !potentialVulnerability.isEmpty()) {
if (GadgetDataServiceDAOConstants.PotentialVulnerability.NON_COMPLIANT.equals(potentialVulnerability) || if (GadgetDataServiceDAOConstants.PotentialVulnerability.NON_COMPLIANT.equals(potentialVulnerability) ||
GadgetDataServiceDAOConstants.PotentialVulnerability.UNMONITORED.equals(potentialVulnerability)) { GadgetDataServiceDAOConstants.PotentialVulnerability.UNMONITORED.equals(potentialVulnerability)) {
if (GadgetDataServiceDAOConstants.PotentialVulnerability.NON_COMPLIANT.equals(potentialVulnerability)) { if (GadgetDataServiceDAOConstants.PotentialVulnerability.NON_COMPLIANT.equals(potentialVulnerability)) {
filters.put("IS_COMPLIANT", 0); filters.put("IS_COMPLIANT", 0);
} else { } else {
filters.put("POLICY_ID", -1); filters.put("POLICY_ID", -1);
} }
} else { } else {
throw new InvalidParameterValueException("Invalid use of value for potential vulnerability. " + throw new InvalidPotentialVulnerabilityValueException("Invalid use of value for potential " +
"Value of potential vulnerability could only be either " + "vulnerability. Value of potential vulnerability could only be either " +
GadgetDataServiceDAOConstants.PotentialVulnerability.NON_COMPLIANT + " or " + GadgetDataServiceDAOConstants.PotentialVulnerability.NON_COMPLIANT + " or " +
GadgetDataServiceDAOConstants.PotentialVulnerability.UNMONITORED + "."); GadgetDataServiceDAOConstants.PotentialVulnerability.UNMONITORED + ".");
} }
} }
String platform = filterSet.getPlatform();
if (platform != null) {
filters.put("PLATFORM", platform);
}
String ownership = filterSet.getOwnership();
if (ownership != null) {
filters.put("OWNERSHIP", ownership);
}
return filters; return filters;
} }

@ -18,10 +18,11 @@
package org.wso2.carbon.device.mgt.analytics.dashboard.dao; package org.wso2.carbon.device.mgt.analytics.dashboard.dao;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DetailedDeviceEntry; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceWithDetails;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroupEntry; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroup;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.FilterSet; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.BasicFilterSet;
import org.wso2.carbon.device.mgt.analytics.dashboard.exception.InvalidParameterValueException; 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 org.wso2.carbon.device.mgt.common.PaginationResult;
import java.sql.SQLException; import java.sql.SQLException;
@ -29,44 +30,45 @@ import java.util.List;
public interface GadgetDataServiceDAO { public interface GadgetDataServiceDAO {
DeviceCountByGroupEntry getDeviceCount(FilterSet filterSet) DeviceCountByGroup getDeviceCount(ExtendedFilterSet extendedFilterSet)
throws InvalidParameterValueException, SQLException; throws InvalidPotentialVulnerabilityValueException, SQLException;
DeviceCountByGroupEntry getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, FilterSet filterSet) DeviceCountByGroup getFeatureNonCompliantDeviceCount(String featureCode, BasicFilterSet basicFilterSet)
throws InvalidParameterValueException, SQLException; throws InvalidFeatureCodeValueException, SQLException;
DeviceCountByGroupEntry getTotalDeviceCount() throws SQLException; DeviceCountByGroup getTotalDeviceCount() throws SQLException;
List<DeviceCountByGroupEntry> getDeviceCountsByConnectivityStatuses() throws SQLException; List<DeviceCountByGroup> getDeviceCountsByConnectivityStatuses() throws SQLException;
List<DeviceCountByGroupEntry> getDeviceCountsByPotentialVulnerabilities() throws SQLException; List<DeviceCountByGroup> getDeviceCountsByPotentialVulnerabilities() throws SQLException;
PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) throws
throws InvalidParameterValueException, SQLException; InvalidStartIndexValueException, InvalidResultCountValueException, SQLException;
List<DeviceCountByGroupEntry> getDeviceCountsByPlatforms(FilterSet filterSet) List<DeviceCountByGroup> getDeviceCountsByPlatforms(ExtendedFilterSet extendedFilterSet)
throws InvalidParameterValueException, SQLException; throws InvalidPotentialVulnerabilityValueException, SQLException;
List<DeviceCountByGroupEntry> getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode, List<DeviceCountByGroup> getFeatureNonCompliantDeviceCountsByPlatforms(String featureCode,
FilterSet filterSet) throws InvalidParameterValueException, SQLException; BasicFilterSet basicFilterSet) throws InvalidFeatureCodeValueException, SQLException;
List<DeviceCountByGroupEntry> getDeviceCountsByOwnershipTypes(FilterSet filterSet) List<DeviceCountByGroup> getDeviceCountsByOwnershipTypes(ExtendedFilterSet extendedFilterSet)
throws InvalidParameterValueException, SQLException; throws InvalidPotentialVulnerabilityValueException, SQLException;
List<DeviceCountByGroupEntry> getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode, List<DeviceCountByGroup> getFeatureNonCompliantDeviceCountsByOwnershipTypes(String featureCode,
FilterSet filterSet) throws InvalidParameterValueException, SQLException; BasicFilterSet basicFilterSet) throws InvalidFeatureCodeValueException, SQLException;
PaginationResult getDevicesWithDetails(FilterSet filterSet, int startIndex, int resultCount) PaginationResult getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, int startIndex, int resultCount)
throws InvalidParameterValueException, SQLException; throws InvalidPotentialVulnerabilityValueException,
InvalidStartIndexValueException, InvalidResultCountValueException, SQLException;
PaginationResult getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, PaginationResult getFeatureNonCompliantDevicesWithDetails(String featureCode, BasicFilterSet basicFilterSet,
FilterSet filterSet, int startIndex, int resultCount) int startIndex, int resultCount) throws InvalidFeatureCodeValueException,
throws InvalidParameterValueException, SQLException; InvalidStartIndexValueException, InvalidResultCountValueException, SQLException;
List<DetailedDeviceEntry> getDevicesWithDetails(FilterSet filterSet) List<DeviceWithDetails> getDevicesWithDetails(ExtendedFilterSet extendedFilterSet)
throws InvalidParameterValueException, SQLException; throws InvalidPotentialVulnerabilityValueException, SQLException;
List<DetailedDeviceEntry> getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, List<DeviceWithDetails> getFeatureNonCompliantDevicesWithDetails(String featureCode,
FilterSet filterSet) throws InvalidParameterValueException, SQLException; BasicFilterSet basicFilterSet) throws InvalidFeatureCodeValueException, SQLException;
} }

@ -19,12 +19,13 @@
package org.wso2.carbon.device.mgt.analytics.dashboard.dao.impl; package org.wso2.carbon.device.mgt.analytics.dashboard.dao.impl;
import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DetailedDeviceEntry; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceWithDetails;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroupEntry; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroup;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.FilterSet; 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.AbstractGadgetDataServiceDAO;
import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOConstants; import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOConstants;
import org.wso2.carbon.device.mgt.analytics.dashboard.exception.InvalidParameterValueException; import org.wso2.carbon.device.mgt.analytics.dashboard.exception.*;
import org.wso2.carbon.device.mgt.common.PaginationResult; import org.wso2.carbon.device.mgt.common.PaginationResult;
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil; import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
@ -40,15 +41,15 @@ public class GenericGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDA
@Override @Override
public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount)
throws InvalidParameterValueException, SQLException { throws InvalidStartIndexValueException, InvalidResultCountValueException, SQLException {
if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) {
throw new InvalidParameterValueException("Start index should be equal to " + throw new InvalidStartIndexValueException("Start index should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that.");
} }
if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) {
throw new InvalidParameterValueException("Result count should be equal to " + throw new InvalidResultCountValueException("Result count should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that.");
} }
@ -56,7 +57,7 @@ public class GenericGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDA
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DeviceCountByGroupEntry> filteredNonCompliantDeviceCountsByFeatures = new ArrayList<>(); List<DeviceCountByGroup> filteredNonCompliantDeviceCountsByFeatures = new ArrayList<>();
int totalRecordsCount = 0; int totalRecordsCount = 0;
try { try {
con = this.getConnection(); con = this.getConnection();
@ -71,9 +72,9 @@ public class GenericGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDA
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DeviceCountByGroupEntry filteredNonCompliantDeviceCountByFeature; DeviceCountByGroup filteredNonCompliantDeviceCountByFeature;
while (rs.next()) { while (rs.next()) {
filteredNonCompliantDeviceCountByFeature = new DeviceCountByGroupEntry(); filteredNonCompliantDeviceCountByFeature = new DeviceCountByGroup();
filteredNonCompliantDeviceCountByFeature.setGroup(rs.getString("FEATURE_CODE")); filteredNonCompliantDeviceCountByFeature.setGroup(rs.getString("FEATURE_CODE"));
filteredNonCompliantDeviceCountByFeature.setDisplayNameForGroup(rs.getString("FEATURE_CODE")); filteredNonCompliantDeviceCountByFeature.setDisplayNameForGroup(rs.getString("FEATURE_CODE"));
filteredNonCompliantDeviceCountByFeature.setDeviceCount(rs.getInt("DEVICE_COUNT")); filteredNonCompliantDeviceCountByFeature.setDeviceCount(rs.getInt("DEVICE_COUNT"));
@ -103,26 +104,27 @@ public class GenericGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDA
} }
@Override @Override
public PaginationResult getDevicesWithDetails(FilterSet filterSet, int startIndex, int resultCount) public PaginationResult getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, int startIndex,
throws InvalidParameterValueException, SQLException { int resultCount) throws InvalidPotentialVulnerabilityValueException,
InvalidStartIndexValueException, InvalidResultCountValueException, SQLException {
if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) {
throw new InvalidParameterValueException("Start index should be equal to " + throw new InvalidStartIndexValueException("Start index should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that.");
} }
if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) {
throw new InvalidParameterValueException("Result count should be equal to " + throw new InvalidResultCountValueException("Result count should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that.");
} }
Map<String, Object> filters = this.extractDatabaseFiltersFromBean(filterSet); Map<String, Object> filters = this.extractDatabaseFiltersFromBean(extendedFilterSet);
Connection con; Connection con;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DetailedDeviceEntry> filteredDevicesWithDetails = new ArrayList<>(); List<DeviceWithDetails> filteredDevicesWithDetails = new ArrayList<>();
int totalRecordsCount = 0; int totalRecordsCount = 0;
try { try {
con = this.getConnection(); con = this.getConnection();
@ -159,9 +161,9 @@ public class GenericGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDA
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DetailedDeviceEntry filteredDeviceWithDetails; DeviceWithDetails filteredDeviceWithDetails;
while (rs.next()) { while (rs.next()) {
filteredDeviceWithDetails = new DetailedDeviceEntry(); filteredDeviceWithDetails = new DeviceWithDetails();
filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID"));
filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION"));
filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM"));
@ -193,31 +195,32 @@ public class GenericGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDA
} }
@Override @Override
public PaginationResult getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, public PaginationResult getFeatureNonCompliantDevicesWithDetails(String featureCode,
FilterSet filterSet, int startIndex, int resultCount) BasicFilterSet basicFilterSet, int startIndex, int resultCount)
throws InvalidParameterValueException, SQLException { throws InvalidFeatureCodeValueException, InvalidStartIndexValueException,
InvalidResultCountValueException, SQLException {
if (nonCompliantFeatureCode == null || nonCompliantFeatureCode.isEmpty()) { if (featureCode == null || featureCode.isEmpty()) {
throw new InvalidParameterValueException("Non-compliant feature code should not be either null or empty."); throw new InvalidFeatureCodeValueException("Feature code should not be either null or empty.");
} }
if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) {
throw new InvalidParameterValueException("Start index should be equal to " + throw new InvalidStartIndexValueException("Start index should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that.");
} }
if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) {
throw new InvalidParameterValueException("Result count should be equal to " + throw new InvalidResultCountValueException("Result count should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that.");
} }
Map<String, Object> filters = this.extractDatabaseFiltersFromBean(filterSet); Map<String, Object> filters = this.extractDatabaseFiltersFromBean(basicFilterSet);
Connection con; Connection con;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DetailedDeviceEntry> filteredDevicesWithDetails = new ArrayList<>(); List<DeviceWithDetails> filteredDevicesWithDetails = new ArrayList<>();
int totalRecordsCount = 0; int totalRecordsCount = 0;
try { try {
con = this.getConnection(); con = this.getConnection();
@ -236,7 +239,7 @@ public class GenericGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDA
stmt = con.prepareStatement(sql); stmt = con.prepareStatement(sql);
// [2] appending filter column values, if exist // [2] appending filter column values, if exist
stmt.setInt(1, tenantId); stmt.setInt(1, tenantId);
stmt.setString(2, nonCompliantFeatureCode); stmt.setString(2, featureCode);
if (filters != null && filters.values().size() > 0) { if (filters != null && filters.values().size() > 0) {
int i = 3; int i = 3;
for (Object value : filters.values()) { for (Object value : filters.values()) {
@ -256,9 +259,9 @@ public class GenericGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDA
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DetailedDeviceEntry filteredDeviceWithDetails; DeviceWithDetails filteredDeviceWithDetails;
while (rs.next()) { while (rs.next()) {
filteredDeviceWithDetails = new DetailedDeviceEntry(); filteredDeviceWithDetails = new DeviceWithDetails();
filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID"));
filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION"));
filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM"));
@ -273,7 +276,7 @@ public class GenericGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDA
stmt = con.prepareStatement(sql); stmt = con.prepareStatement(sql);
stmt.setInt(1, tenantId); stmt.setInt(1, tenantId);
stmt.setString(2, nonCompliantFeatureCode); stmt.setString(2, featureCode);
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();

@ -19,12 +19,13 @@
package org.wso2.carbon.device.mgt.analytics.dashboard.dao.impl; package org.wso2.carbon.device.mgt.analytics.dashboard.dao.impl;
import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DetailedDeviceEntry; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceWithDetails;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroupEntry; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroup;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.FilterSet; 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.AbstractGadgetDataServiceDAO;
import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOConstants; import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOConstants;
import org.wso2.carbon.device.mgt.analytics.dashboard.exception.InvalidParameterValueException; import org.wso2.carbon.device.mgt.analytics.dashboard.exception.*;
import org.wso2.carbon.device.mgt.common.PaginationResult; import org.wso2.carbon.device.mgt.common.PaginationResult;
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil; import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
@ -40,15 +41,15 @@ public class MSSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
@Override @Override
public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount)
throws InvalidParameterValueException, SQLException { throws InvalidStartIndexValueException, InvalidResultCountValueException, SQLException {
if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) {
throw new InvalidParameterValueException("Start index should be equal to " + throw new InvalidStartIndexValueException("Start index should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that.");
} }
if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) {
throw new InvalidParameterValueException("Result count should be equal to " + throw new InvalidResultCountValueException("Result count should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that.");
} }
@ -56,7 +57,7 @@ public class MSSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DeviceCountByGroupEntry> filteredNonCompliantDeviceCountsByFeatures = new ArrayList<>(); List<DeviceCountByGroup> filteredNonCompliantDeviceCountsByFeatures = new ArrayList<>();
int totalRecordsCount = 0; int totalRecordsCount = 0;
try { try {
con = this.getConnection(); con = this.getConnection();
@ -71,9 +72,9 @@ public class MSSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DeviceCountByGroupEntry filteredNonCompliantDeviceCountByFeature; DeviceCountByGroup filteredNonCompliantDeviceCountByFeature;
while (rs.next()) { while (rs.next()) {
filteredNonCompliantDeviceCountByFeature = new DeviceCountByGroupEntry(); filteredNonCompliantDeviceCountByFeature = new DeviceCountByGroup();
filteredNonCompliantDeviceCountByFeature.setGroup(rs.getString("FEATURE_CODE")); filteredNonCompliantDeviceCountByFeature.setGroup(rs.getString("FEATURE_CODE"));
filteredNonCompliantDeviceCountByFeature.setDisplayNameForGroup(rs.getString("FEATURE_CODE")); filteredNonCompliantDeviceCountByFeature.setDisplayNameForGroup(rs.getString("FEATURE_CODE"));
filteredNonCompliantDeviceCountByFeature.setDeviceCount(rs.getInt("DEVICE_COUNT")); filteredNonCompliantDeviceCountByFeature.setDeviceCount(rs.getInt("DEVICE_COUNT"));
@ -103,26 +104,29 @@ public class MSSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
} }
@Override @Override
public PaginationResult getDevicesWithDetails(FilterSet filterSet, int startIndex, int resultCount) public PaginationResult getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, int startIndex, int resultCount)
throws InvalidParameterValueException, SQLException { throws InvalidPotentialVulnerabilityValueException,
InvalidStartIndexValueException,
InvalidResultCountValueException,
SQLException {
if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) {
throw new InvalidParameterValueException("Start index should be equal to " + throw new InvalidStartIndexValueException("Start index should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that.");
} }
if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) {
throw new InvalidParameterValueException("Result count should be equal to " + throw new InvalidResultCountValueException("Result count should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that.");
} }
Map<String, Object> filters = this.extractDatabaseFiltersFromBean(filterSet); Map<String, Object> filters = this.extractDatabaseFiltersFromBean(extendedFilterSet);
Connection con; Connection con;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DetailedDeviceEntry> filteredDevicesWithDetails = new ArrayList<>(); List<DeviceWithDetails> filteredDevicesWithDetails = new ArrayList<>();
int totalRecordsCount = 0; int totalRecordsCount = 0;
try { try {
con = this.getConnection(); con = this.getConnection();
@ -159,9 +163,9 @@ public class MSSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DetailedDeviceEntry filteredDeviceWithDetails; DeviceWithDetails filteredDeviceWithDetails;
while (rs.next()) { while (rs.next()) {
filteredDeviceWithDetails = new DetailedDeviceEntry(); filteredDeviceWithDetails = new DeviceWithDetails();
filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID"));
filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION"));
filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM"));
@ -193,31 +197,32 @@ public class MSSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
} }
@Override @Override
public PaginationResult getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, public PaginationResult getFeatureNonCompliantDevicesWithDetails(String featureCode,
FilterSet filterSet, int startIndex, int resultCount) BasicFilterSet basicFilterSet, int startIndex, int resultCount)
throws InvalidParameterValueException, SQLException { throws InvalidFeatureCodeValueException, InvalidStartIndexValueException,
InvalidResultCountValueException, SQLException {
if (nonCompliantFeatureCode == null || nonCompliantFeatureCode.isEmpty()) { if (featureCode == null || featureCode.isEmpty()) {
throw new InvalidParameterValueException("Non-compliant feature code should not be either null or empty."); throw new InvalidFeatureCodeValueException("Feature code should not be either null or empty.");
} }
if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) {
throw new InvalidParameterValueException("Start index should be equal to " + throw new InvalidStartIndexValueException("Start index should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that.");
} }
if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) {
throw new InvalidParameterValueException("Result count should be equal to " + throw new InvalidResultCountValueException("Result count should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that.");
} }
Map<String, Object> filters = this.extractDatabaseFiltersFromBean(filterSet); Map<String, Object> filters = this.extractDatabaseFiltersFromBean(basicFilterSet);
Connection con; Connection con;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DetailedDeviceEntry> filteredDevicesWithDetails = new ArrayList<>(); List<DeviceWithDetails> filteredDevicesWithDetails = new ArrayList<>();
int totalRecordsCount = 0; int totalRecordsCount = 0;
try { try {
con = this.getConnection(); con = this.getConnection();
@ -236,7 +241,7 @@ public class MSSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
stmt = con.prepareStatement(sql); stmt = con.prepareStatement(sql);
// [2] appending filter column values, if exist // [2] appending filter column values, if exist
stmt.setInt(1, tenantId); stmt.setInt(1, tenantId);
stmt.setString(2, nonCompliantFeatureCode); stmt.setString(2, featureCode);
if (filters != null && filters.values().size() > 0) { if (filters != null && filters.values().size() > 0) {
int i = 3; int i = 3;
for (Object value : filters.values()) { for (Object value : filters.values()) {
@ -256,9 +261,9 @@ public class MSSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DetailedDeviceEntry filteredDeviceWithDetails; DeviceWithDetails filteredDeviceWithDetails;
while (rs.next()) { while (rs.next()) {
filteredDeviceWithDetails = new DetailedDeviceEntry(); filteredDeviceWithDetails = new DeviceWithDetails();
filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID"));
filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION"));
filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM"));
@ -273,7 +278,7 @@ public class MSSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
stmt = con.prepareStatement(sql); stmt = con.prepareStatement(sql);
stmt.setInt(1, tenantId); stmt.setInt(1, tenantId);
stmt.setString(2, nonCompliantFeatureCode); stmt.setString(2, featureCode);
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();

@ -19,12 +19,13 @@
package org.wso2.carbon.device.mgt.analytics.dashboard.dao.impl; package org.wso2.carbon.device.mgt.analytics.dashboard.dao.impl;
import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DetailedDeviceEntry; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceWithDetails;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroupEntry; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroup;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.FilterSet; 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.AbstractGadgetDataServiceDAO;
import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOConstants; import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOConstants;
import org.wso2.carbon.device.mgt.analytics.dashboard.exception.InvalidParameterValueException; import org.wso2.carbon.device.mgt.analytics.dashboard.exception.*;
import org.wso2.carbon.device.mgt.common.PaginationResult; import org.wso2.carbon.device.mgt.common.PaginationResult;
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil; import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
@ -40,15 +41,15 @@ public class OracleGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
@Override @Override
public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount)
throws InvalidParameterValueException, SQLException { throws InvalidStartIndexValueException, InvalidResultCountValueException, SQLException {
if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) {
throw new InvalidParameterValueException("Start index should be equal to " + throw new InvalidStartIndexValueException("Start index should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that.");
} }
if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) {
throw new InvalidParameterValueException("Result count should be equal to " + throw new InvalidResultCountValueException("Result count should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that.");
} }
@ -56,7 +57,7 @@ public class OracleGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DeviceCountByGroupEntry> filteredNonCompliantDeviceCountsByFeatures = new ArrayList<>(); List<DeviceCountByGroup> filteredNonCompliantDeviceCountsByFeatures = new ArrayList<>();
int totalRecordsCount = 0; int totalRecordsCount = 0;
try { try {
con = this.getConnection(); con = this.getConnection();
@ -73,9 +74,9 @@ public class OracleGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DeviceCountByGroupEntry filteredNonCompliantDeviceCountByFeature; DeviceCountByGroup filteredNonCompliantDeviceCountByFeature;
while (rs.next()) { while (rs.next()) {
filteredNonCompliantDeviceCountByFeature = new DeviceCountByGroupEntry(); filteredNonCompliantDeviceCountByFeature = new DeviceCountByGroup();
filteredNonCompliantDeviceCountByFeature.setGroup(rs.getString("FEATURE_CODE")); filteredNonCompliantDeviceCountByFeature.setGroup(rs.getString("FEATURE_CODE"));
filteredNonCompliantDeviceCountByFeature.setDisplayNameForGroup(rs.getString("FEATURE_CODE")); filteredNonCompliantDeviceCountByFeature.setDisplayNameForGroup(rs.getString("FEATURE_CODE"));
filteredNonCompliantDeviceCountByFeature.setDeviceCount(rs.getInt("DEVICE_COUNT")); filteredNonCompliantDeviceCountByFeature.setDeviceCount(rs.getInt("DEVICE_COUNT"));
@ -105,26 +106,27 @@ public class OracleGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
} }
@Override @Override
public PaginationResult getDevicesWithDetails(FilterSet filterSet, int startIndex, int resultCount) public PaginationResult getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, int startIndex, int resultCount)
throws InvalidParameterValueException, SQLException { throws InvalidPotentialVulnerabilityValueException, InvalidStartIndexValueException,
InvalidResultCountValueException, SQLException {
if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) {
throw new InvalidParameterValueException("Start index should be equal to " + throw new InvalidStartIndexValueException("Start index should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that.");
} }
if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) {
throw new InvalidParameterValueException("Result count should be equal to " + throw new InvalidResultCountValueException("Result count should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that.");
} }
Map<String, Object> filters = this.extractDatabaseFiltersFromBean(filterSet); Map<String, Object> filters = this.extractDatabaseFiltersFromBean(extendedFilterSet);
Connection con; Connection con;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DetailedDeviceEntry> filteredDevicesWithDetails = new ArrayList<>(); List<DeviceWithDetails> filteredDevicesWithDetails = new ArrayList<>();
int totalRecordsCount = 0; int totalRecordsCount = 0;
try { try {
con = this.getConnection(); con = this.getConnection();
@ -163,9 +165,9 @@ public class OracleGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DetailedDeviceEntry filteredDeviceWithDetails; DeviceWithDetails filteredDeviceWithDetails;
while (rs.next()) { while (rs.next()) {
filteredDeviceWithDetails = new DetailedDeviceEntry(); filteredDeviceWithDetails = new DeviceWithDetails();
filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID"));
filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION"));
filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM"));
@ -197,31 +199,31 @@ public class OracleGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
} }
@Override @Override
public PaginationResult getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, public PaginationResult getFeatureNonCompliantDevicesWithDetails(String featureCode, BasicFilterSet basicFilterSet,
FilterSet filterSet, int startIndex, int resultCount) int startIndex, int resultCount) throws InvalidFeatureCodeValueException,
throws InvalidParameterValueException, SQLException { InvalidStartIndexValueException, InvalidResultCountValueException, SQLException {
if (nonCompliantFeatureCode == null || nonCompliantFeatureCode.isEmpty()) { if (featureCode == null || featureCode.isEmpty()) {
throw new InvalidParameterValueException("Non-compliant feature code should not be either null or empty."); throw new InvalidFeatureCodeValueException("Feature code should not be either null or empty.");
} }
if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) {
throw new InvalidParameterValueException("Start index should be equal to " + throw new InvalidStartIndexValueException("Start index should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that.");
} }
if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) {
throw new InvalidParameterValueException("Result count should be equal to " + throw new InvalidResultCountValueException("Result count should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that.");
} }
Map<String, Object> filters = this.extractDatabaseFiltersFromBean(filterSet); Map<String, Object> filters = this.extractDatabaseFiltersFromBean(basicFilterSet);
Connection con; Connection con;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DetailedDeviceEntry> filteredDevicesWithDetails = new ArrayList<>(); List<DeviceWithDetails> filteredDevicesWithDetails = new ArrayList<>();
int totalRecordsCount = 0; int totalRecordsCount = 0;
try { try {
con = this.getConnection(); con = this.getConnection();
@ -240,7 +242,7 @@ public class OracleGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
stmt = con.prepareStatement(sql); stmt = con.prepareStatement(sql);
// [2] appending filter column values, if exist // [2] appending filter column values, if exist
stmt.setInt(1, tenantId); stmt.setInt(1, tenantId);
stmt.setString(2, nonCompliantFeatureCode); stmt.setString(2, featureCode);
if (filters != null && filters.values().size() > 0) { if (filters != null && filters.values().size() > 0) {
int i = 3; int i = 3;
for (Object value : filters.values()) { for (Object value : filters.values()) {
@ -260,9 +262,9 @@ public class OracleGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DetailedDeviceEntry filteredDeviceWithDetails; DeviceWithDetails filteredDeviceWithDetails;
while (rs.next()) { while (rs.next()) {
filteredDeviceWithDetails = new DetailedDeviceEntry(); filteredDeviceWithDetails = new DeviceWithDetails();
filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID"));
filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION"));
filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM"));
@ -277,7 +279,7 @@ public class OracleGadgetDataServiceDAOImpl extends AbstractGadgetDataServiceDAO
stmt = con.prepareStatement(sql); stmt = con.prepareStatement(sql);
stmt.setInt(1, tenantId); stmt.setInt(1, tenantId);
stmt.setString(2, nonCompliantFeatureCode); stmt.setString(2, featureCode);
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();

@ -19,12 +19,13 @@
package org.wso2.carbon.device.mgt.analytics.dashboard.dao.impl; package org.wso2.carbon.device.mgt.analytics.dashboard.dao.impl;
import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DetailedDeviceEntry; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceWithDetails;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroupEntry; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroup;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.FilterSet; 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.AbstractGadgetDataServiceDAO;
import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOConstants; import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOConstants;
import org.wso2.carbon.device.mgt.analytics.dashboard.exception.InvalidParameterValueException; import org.wso2.carbon.device.mgt.analytics.dashboard.exception.*;
import org.wso2.carbon.device.mgt.common.PaginationResult; import org.wso2.carbon.device.mgt.common.PaginationResult;
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil; import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
@ -40,15 +41,15 @@ public class PostgreSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServic
@Override @Override
public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount)
throws InvalidParameterValueException, SQLException { throws InvalidStartIndexValueException, InvalidResultCountValueException, SQLException {
if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) {
throw new InvalidParameterValueException("Start index should be equal to " + throw new InvalidStartIndexValueException("Start index should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that.");
} }
if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) {
throw new InvalidParameterValueException("Result count should be equal to " + throw new InvalidResultCountValueException("Result count should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that.");
} }
@ -56,7 +57,7 @@ public class PostgreSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServic
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DeviceCountByGroupEntry> filteredNonCompliantDeviceCountsByFeatures = new ArrayList<>(); List<DeviceCountByGroup> filteredNonCompliantDeviceCountsByFeatures = new ArrayList<>();
int totalRecordsCount = 0; int totalRecordsCount = 0;
try { try {
con = this.getConnection(); con = this.getConnection();
@ -72,9 +73,9 @@ public class PostgreSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServic
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DeviceCountByGroupEntry filteredNonCompliantDeviceCountByFeature; DeviceCountByGroup filteredNonCompliantDeviceCountByFeature;
while (rs.next()) { while (rs.next()) {
filteredNonCompliantDeviceCountByFeature = new DeviceCountByGroupEntry(); filteredNonCompliantDeviceCountByFeature = new DeviceCountByGroup();
filteredNonCompliantDeviceCountByFeature.setGroup(rs.getString("FEATURE_CODE")); filteredNonCompliantDeviceCountByFeature.setGroup(rs.getString("FEATURE_CODE"));
filteredNonCompliantDeviceCountByFeature.setDisplayNameForGroup(rs.getString("FEATURE_CODE")); filteredNonCompliantDeviceCountByFeature.setDisplayNameForGroup(rs.getString("FEATURE_CODE"));
filteredNonCompliantDeviceCountByFeature.setDeviceCount(rs.getInt("DEVICE_COUNT")); filteredNonCompliantDeviceCountByFeature.setDeviceCount(rs.getInt("DEVICE_COUNT"));
@ -104,26 +105,27 @@ public class PostgreSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServic
} }
@Override @Override
public PaginationResult getDevicesWithDetails(FilterSet filterSet, int startIndex, int resultCount) public PaginationResult getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, int startIndex, int resultCount)
throws InvalidParameterValueException, SQLException { throws InvalidPotentialVulnerabilityValueException, InvalidStartIndexValueException,
InvalidResultCountValueException, SQLException {
if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) {
throw new InvalidParameterValueException("Start index should be equal to " + throw new InvalidStartIndexValueException("Start index should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that.");
} }
if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) {
throw new InvalidParameterValueException("Result count should be equal to " + throw new InvalidResultCountValueException("Result count should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that.");
} }
Map<String, Object> filters = this.extractDatabaseFiltersFromBean(filterSet); Map<String, Object> filters = this.extractDatabaseFiltersFromBean(extendedFilterSet);
Connection con; Connection con;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DetailedDeviceEntry> filteredDevicesWithDetails = new ArrayList<>(); List<DeviceWithDetails> filteredDevicesWithDetails = new ArrayList<>();
int totalRecordsCount = 0; int totalRecordsCount = 0;
try { try {
con = this.getConnection(); con = this.getConnection();
@ -161,9 +163,9 @@ public class PostgreSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServic
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DetailedDeviceEntry filteredDeviceWithDetails; DeviceWithDetails filteredDeviceWithDetails;
while (rs.next()) { while (rs.next()) {
filteredDeviceWithDetails = new DetailedDeviceEntry(); filteredDeviceWithDetails = new DeviceWithDetails();
filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID"));
filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION"));
filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM"));
@ -195,31 +197,31 @@ public class PostgreSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServic
} }
@Override @Override
public PaginationResult getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, public PaginationResult getFeatureNonCompliantDevicesWithDetails(String featureCode, BasicFilterSet basicFilterSet,
FilterSet filterSet, int startIndex, int resultCount) int startIndex, int resultCount) throws InvalidFeatureCodeValueException,
throws InvalidParameterValueException, SQLException { InvalidStartIndexValueException, InvalidResultCountValueException, SQLException {
if (nonCompliantFeatureCode == null || nonCompliantFeatureCode.isEmpty()) { if (featureCode == null || featureCode.isEmpty()) {
throw new InvalidParameterValueException("Non-compliant feature code should not be either null or empty."); throw new InvalidFeatureCodeValueException("Feature code should not be either null or empty.");
} }
if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) { if (startIndex < GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX) {
throw new InvalidParameterValueException("Start index should be equal to " + throw new InvalidStartIndexValueException("Start index should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_START_INDEX + " or greater than that.");
} }
if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) { if (resultCount < GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT) {
throw new InvalidParameterValueException("Result count should be equal to " + throw new InvalidResultCountValueException("Result count should be equal to " +
GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that."); GadgetDataServiceDAOConstants.Pagination.MIN_RESULT_COUNT + " or greater than that.");
} }
Map<String, Object> filters = this.extractDatabaseFiltersFromBean(filterSet); Map<String, Object> filters = this.extractDatabaseFiltersFromBean(basicFilterSet);
Connection con; Connection con;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
List<DetailedDeviceEntry> filteredDevicesWithDetails = new ArrayList<>(); List<DeviceWithDetails> filteredDevicesWithDetails = new ArrayList<>();
int totalRecordsCount = 0; int totalRecordsCount = 0;
try { try {
con = this.getConnection(); con = this.getConnection();
@ -238,7 +240,7 @@ public class PostgreSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServic
stmt = con.prepareStatement(sql); stmt = con.prepareStatement(sql);
// [2] appending filter column values, if exist // [2] appending filter column values, if exist
stmt.setInt(1, tenantId); stmt.setInt(1, tenantId);
stmt.setString(2, nonCompliantFeatureCode); stmt.setString(2, featureCode);
if (filters != null && filters.values().size() > 0) { if (filters != null && filters.values().size() > 0) {
int i = 3; int i = 3;
for (Object value : filters.values()) { for (Object value : filters.values()) {
@ -258,9 +260,9 @@ public class PostgreSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServic
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();
// fetching query results // fetching query results
DetailedDeviceEntry filteredDeviceWithDetails; DeviceWithDetails filteredDeviceWithDetails;
while (rs.next()) { while (rs.next()) {
filteredDeviceWithDetails = new DetailedDeviceEntry(); filteredDeviceWithDetails = new DeviceWithDetails();
filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID")); filteredDeviceWithDetails.setDeviceId(rs.getInt("DEVICE_ID"));
filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION")); filteredDeviceWithDetails.setDeviceIdentification(rs.getString("DEVICE_IDENTIFICATION"));
filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM")); filteredDeviceWithDetails.setPlatform(rs.getString("PLATFORM"));
@ -275,7 +277,7 @@ public class PostgreSQLGadgetDataServiceDAOImpl extends AbstractGadgetDataServic
stmt = con.prepareStatement(sql); stmt = con.prepareStatement(sql);
stmt.setInt(1, tenantId); stmt.setInt(1, tenantId);
stmt.setString(2, nonCompliantFeatureCode); stmt.setString(2, featureCode);
// executing query // executing query
rs = stmt.executeQuery(); rs = stmt.executeQuery();

@ -0,0 +1,80 @@
/*
* 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;
}
}

@ -0,0 +1,79 @@
/*
* 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;
}
}

@ -0,0 +1,80 @@
/*
* 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;
}
}

@ -19,10 +19,10 @@
package org.wso2.carbon.device.mgt.analytics.dashboard.exception; package org.wso2.carbon.device.mgt.analytics.dashboard.exception;
/** /**
* Custom exception class for catching invalid parameter issues, * Custom exception class for catching invalid parameter values,
* relevant to Gadget Data Service DAO layer. * relevant to Gadget Data Service DAO layer.
*/ */
public class InvalidParameterValueException extends Exception { public class InvalidStartIndexValueException extends Exception {
private String errorMessage; private String errorMessage;
private static final long serialVersionUID = 2021891706072918864L; private static final long serialVersionUID = 2021891706072918864L;
@ -33,7 +33,7 @@ public class InvalidParameterValueException extends Exception {
* @param nestedException Nested exception. * @param nestedException Nested exception.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
public InvalidParameterValueException(String errorMessage, Exception nestedException) { public InvalidStartIndexValueException(String errorMessage, Exception nestedException) {
super(errorMessage, nestedException); super(errorMessage, nestedException);
setErrorMessage(errorMessage); setErrorMessage(errorMessage);
} }
@ -44,7 +44,7 @@ public class InvalidParameterValueException extends Exception {
* @param cause Cause of this exception. * @param cause Cause of this exception.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
public InvalidParameterValueException(String errorMessage, Throwable cause) { public InvalidStartIndexValueException(String errorMessage, Throwable cause) {
super(errorMessage, cause); super(errorMessage, cause);
setErrorMessage(errorMessage); setErrorMessage(errorMessage);
} }
@ -53,7 +53,7 @@ public class InvalidParameterValueException extends Exception {
* Constructs a new exception with the specific error message. * Constructs a new exception with the specific error message.
* @param errorMessage Specific error message. * @param errorMessage Specific error message.
*/ */
public InvalidParameterValueException(String errorMessage) { public InvalidStartIndexValueException(String errorMessage) {
super(errorMessage); super(errorMessage);
setErrorMessage(errorMessage); setErrorMessage(errorMessage);
} }
@ -63,7 +63,7 @@ public class InvalidParameterValueException extends Exception {
* @param cause Cause of this exception. * @param cause Cause of this exception.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
public InvalidParameterValueException(Throwable cause) { public InvalidStartIndexValueException(Throwable cause) {
super(cause); super(cause);
} }
@ -77,3 +77,4 @@ public class InvalidParameterValueException extends Exception {
} }
} }

@ -19,12 +19,12 @@
package org.wso2.carbon.device.mgt.analytics.dashboard.impl; 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.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.dao.GadgetDataServiceDAOFactory;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DetailedDeviceEntry; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.BasicFilterSet;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroupEntry; import org.wso2.carbon.device.mgt.analytics.dashboard.exception.*;
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.FilterSet;
import org.wso2.carbon.device.mgt.analytics.dashboard.exception.DataAccessLayerException;
import org.wso2.carbon.device.mgt.analytics.dashboard.exception.InvalidParameterValueException;
import org.wso2.carbon.device.mgt.common.PaginationResult; import org.wso2.carbon.device.mgt.common.PaginationResult;
import java.sql.SQLException; import java.sql.SQLException;
@ -36,12 +36,13 @@ import java.util.List;
public class GadgetDataServiceImpl implements GadgetDataService { public class GadgetDataServiceImpl implements GadgetDataService {
@Override @Override
public DeviceCountByGroupEntry getDeviceCount(FilterSet filterSet) public DeviceCountByGroup getDeviceCount(ExtendedFilterSet extendedFilterSet)
throws InvalidParameterValueException, DataAccessLayerException { throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException {
DeviceCountByGroupEntry filteredDeviceCount; DeviceCountByGroup filteredDeviceCount;
try { try {
GadgetDataServiceDAOFactory.openConnection(); GadgetDataServiceDAOFactory.openConnection();
filteredDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getDeviceCount(filterSet); filteredDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().
getDeviceCount(extendedFilterSet);
} catch (SQLException e) { } catch (SQLException e) {
throw new DataAccessLayerException("Error in either opening a database connection or " + throw new DataAccessLayerException("Error in either opening a database connection or " +
"accessing the database to fetch corresponding results.", e); "accessing the database to fetch corresponding results.", e);
@ -52,13 +53,13 @@ public class GadgetDataServiceImpl implements GadgetDataService {
} }
@Override @Override
public DeviceCountByGroupEntry getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, public DeviceCountByGroup getFeatureNonCompliantDeviceCount(String featureCode, BasicFilterSet basicFilterSet)
FilterSet filterSet) throws InvalidParameterValueException, DataAccessLayerException { throws InvalidFeatureCodeValueException, DataAccessLayerException {
DeviceCountByGroupEntry featureNonCompliantDeviceCount; DeviceCountByGroup featureNonCompliantDeviceCount;
try { try {
GadgetDataServiceDAOFactory.openConnection(); GadgetDataServiceDAOFactory.openConnection();
featureNonCompliantDeviceCount = GadgetDataServiceDAOFactory. featureNonCompliantDeviceCount = GadgetDataServiceDAOFactory.
getGadgetDataServiceDAO().getFeatureNonCompliantDeviceCount(nonCompliantFeatureCode, filterSet); getGadgetDataServiceDAO().getFeatureNonCompliantDeviceCount(featureCode, basicFilterSet);
} catch (SQLException e) { } catch (SQLException e) {
throw new DataAccessLayerException("Error in either opening a database connection or " + throw new DataAccessLayerException("Error in either opening a database connection or " +
"accessing the database to fetch corresponding results.", e); "accessing the database to fetch corresponding results.", e);
@ -69,8 +70,8 @@ public class GadgetDataServiceImpl implements GadgetDataService {
} }
@Override @Override
public DeviceCountByGroupEntry getTotalDeviceCount() throws DataAccessLayerException { public DeviceCountByGroup getTotalDeviceCount() throws DataAccessLayerException {
DeviceCountByGroupEntry totalDeviceCount; DeviceCountByGroup totalDeviceCount;
try { try {
GadgetDataServiceDAOFactory.openConnection(); GadgetDataServiceDAOFactory.openConnection();
totalDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getTotalDeviceCount(); totalDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getTotalDeviceCount();
@ -84,8 +85,8 @@ public class GadgetDataServiceImpl implements GadgetDataService {
} }
@Override @Override
public List<DeviceCountByGroupEntry> getDeviceCountsByConnectivityStatuses() throws DataAccessLayerException { public List<DeviceCountByGroup> getDeviceCountsByConnectivityStatuses() throws DataAccessLayerException {
List<DeviceCountByGroupEntry> deviceCountsByConnectivityStatuses; List<DeviceCountByGroup> deviceCountsByConnectivityStatuses;
try { try {
GadgetDataServiceDAOFactory.openConnection(); GadgetDataServiceDAOFactory.openConnection();
deviceCountsByConnectivityStatuses = GadgetDataServiceDAOFactory. deviceCountsByConnectivityStatuses = GadgetDataServiceDAOFactory.
@ -100,8 +101,8 @@ public class GadgetDataServiceImpl implements GadgetDataService {
} }
@Override @Override
public List<DeviceCountByGroupEntry> getDeviceCountsByPotentialVulnerabilities() throws DataAccessLayerException { public List<DeviceCountByGroup> getDeviceCountsByPotentialVulnerabilities() throws DataAccessLayerException {
List<DeviceCountByGroupEntry> deviceCountsByPotentialVulnerabilities; List<DeviceCountByGroup> deviceCountsByPotentialVulnerabilities;
try { try {
GadgetDataServiceDAOFactory.openConnection(); GadgetDataServiceDAOFactory.openConnection();
deviceCountsByPotentialVulnerabilities = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). deviceCountsByPotentialVulnerabilities = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().
@ -117,7 +118,8 @@ public class GadgetDataServiceImpl implements GadgetDataService {
@Override @Override
public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount) public PaginationResult getNonCompliantDeviceCountsByFeatures(int startIndex, int resultCount)
throws InvalidParameterValueException, DataAccessLayerException { throws InvalidStartIndexValueException, InvalidResultCountValueException,
DataAccessLayerException {
PaginationResult paginationResult; PaginationResult paginationResult;
try { try {
GadgetDataServiceDAOFactory.openConnection(); GadgetDataServiceDAOFactory.openConnection();
@ -133,13 +135,13 @@ public class GadgetDataServiceImpl implements GadgetDataService {
} }
@Override @Override
public List<DeviceCountByGroupEntry> getDeviceCountsByPlatforms(FilterSet filterSet) public List<DeviceCountByGroup> getDeviceCountsByPlatforms(ExtendedFilterSet extendedFilterSet)
throws InvalidParameterValueException, DataAccessLayerException { throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException {
List<DeviceCountByGroupEntry> deviceCountsByPlatforms; List<DeviceCountByGroup> deviceCountsByPlatforms;
try { try {
GadgetDataServiceDAOFactory.openConnection(); GadgetDataServiceDAOFactory.openConnection();
deviceCountsByPlatforms = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). deviceCountsByPlatforms = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().
getDeviceCountsByPlatforms(filterSet); getDeviceCountsByPlatforms(extendedFilterSet);
} catch (SQLException e) { } catch (SQLException e) {
throw new DataAccessLayerException("Error in either opening a database connection or " + throw new DataAccessLayerException("Error in either opening a database connection or " +
"accessing the database to fetch corresponding results.", e); "accessing the database to fetch corresponding results.", e);
@ -150,13 +152,14 @@ public class GadgetDataServiceImpl implements GadgetDataService {
} }
@Override @Override
public List<DeviceCountByGroupEntry> getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode, public List<DeviceCountByGroup> getFeatureNonCompliantDeviceCountsByPlatforms(String featureCode,
FilterSet filterSet) throws InvalidParameterValueException, DataAccessLayerException { BasicFilterSet basicFilterSet) throws InvalidFeatureCodeValueException,
List<DeviceCountByGroupEntry> featureNonCompliantDeviceCountsByPlatforms; DataAccessLayerException {
List<DeviceCountByGroup> featureNonCompliantDeviceCountsByPlatforms;
try { try {
GadgetDataServiceDAOFactory.openConnection(); GadgetDataServiceDAOFactory.openConnection();
featureNonCompliantDeviceCountsByPlatforms = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). featureNonCompliantDeviceCountsByPlatforms = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().
getFeatureNonCompliantDeviceCountsByPlatforms(nonCompliantFeatureCode, filterSet); getFeatureNonCompliantDeviceCountsByPlatforms(featureCode, basicFilterSet);
} catch (SQLException e) { } catch (SQLException e) {
throw new DataAccessLayerException("Error in either opening a database connection or " + throw new DataAccessLayerException("Error in either opening a database connection or " +
"accessing the database to fetch corresponding results.", e); "accessing the database to fetch corresponding results.", e);
@ -167,13 +170,14 @@ public class GadgetDataServiceImpl implements GadgetDataService {
} }
@Override @Override
public List<DeviceCountByGroupEntry> getDeviceCountsByOwnershipTypes(FilterSet filterSet) public List<DeviceCountByGroup> getDeviceCountsByOwnershipTypes(ExtendedFilterSet extendedFilterSet)
throws InvalidParameterValueException, DataAccessLayerException { throws InvalidPotentialVulnerabilityValueException,
List<DeviceCountByGroupEntry> deviceCountsByOwnershipTypes; DataAccessLayerException {
List<DeviceCountByGroup> deviceCountsByOwnershipTypes;
try { try {
GadgetDataServiceDAOFactory.openConnection(); GadgetDataServiceDAOFactory.openConnection();
deviceCountsByOwnershipTypes = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). deviceCountsByOwnershipTypes = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().
getDeviceCountsByOwnershipTypes(filterSet); getDeviceCountsByOwnershipTypes(extendedFilterSet);
} catch (SQLException e) { } catch (SQLException e) {
throw new DataAccessLayerException("Error in either opening a database connection or " + throw new DataAccessLayerException("Error in either opening a database connection or " +
"accessing the database to fetch corresponding results.", e); "accessing the database to fetch corresponding results.", e);
@ -184,14 +188,14 @@ public class GadgetDataServiceImpl implements GadgetDataService {
} }
@Override @Override
public List<DeviceCountByGroupEntry> public List<DeviceCountByGroup>
getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode, getFeatureNonCompliantDeviceCountsByOwnershipTypes(String featureCode, BasicFilterSet basicFilterSet)
FilterSet filterSet) throws InvalidParameterValueException, DataAccessLayerException { throws InvalidFeatureCodeValueException, DataAccessLayerException {
List<DeviceCountByGroupEntry> featureNonCompliantDeviceCountsByOwnershipTypes; List<DeviceCountByGroup> featureNonCompliantDeviceCountsByOwnershipTypes;
try { try {
GadgetDataServiceDAOFactory.openConnection(); GadgetDataServiceDAOFactory.openConnection();
featureNonCompliantDeviceCountsByOwnershipTypes = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). featureNonCompliantDeviceCountsByOwnershipTypes = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().
getFeatureNonCompliantDeviceCountsByOwnershipTypes(nonCompliantFeatureCode, filterSet); getFeatureNonCompliantDeviceCountsByOwnershipTypes(featureCode, basicFilterSet);
} catch (SQLException e) { } catch (SQLException e) {
throw new DataAccessLayerException("Error in either opening a database connection or " + throw new DataAccessLayerException("Error in either opening a database connection or " +
"accessing the database to fetch corresponding results.", e); "accessing the database to fetch corresponding results.", e);
@ -202,13 +206,14 @@ public class GadgetDataServiceImpl implements GadgetDataService {
} }
@Override @Override
public PaginationResult getDevicesWithDetails(FilterSet filterSet, public PaginationResult getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, int startIndex, int resultCount)
int startIndex, int resultCount) throws InvalidParameterValueException, DataAccessLayerException { throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException,
InvalidStartIndexValueException, InvalidResultCountValueException {
PaginationResult paginationResult; PaginationResult paginationResult;
try { try {
GadgetDataServiceDAOFactory.openConnection(); GadgetDataServiceDAOFactory.openConnection();
paginationResult = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). paginationResult = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().
getDevicesWithDetails(filterSet, startIndex, resultCount); getDevicesWithDetails(extendedFilterSet, startIndex, resultCount);
} catch (SQLException e) { } catch (SQLException e) {
throw new DataAccessLayerException("Error in either opening a database connection or " + throw new DataAccessLayerException("Error in either opening a database connection or " +
"accessing the database to fetch corresponding results.", e); "accessing the database to fetch corresponding results.", e);
@ -219,14 +224,15 @@ public class GadgetDataServiceImpl implements GadgetDataService {
} }
@Override @Override
public PaginationResult getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, public PaginationResult getFeatureNonCompliantDevicesWithDetails(String featureCode, BasicFilterSet basicFilterSet,
FilterSet filterSet, int startIndex, int resultCount) int startIndex, int resultCount) throws InvalidFeatureCodeValueException,
throws InvalidParameterValueException, DataAccessLayerException { DataAccessLayerException, InvalidStartIndexValueException,
InvalidResultCountValueException {
PaginationResult paginationResult; PaginationResult paginationResult;
try { try {
GadgetDataServiceDAOFactory.openConnection(); GadgetDataServiceDAOFactory.openConnection();
paginationResult = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). paginationResult = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().
getFeatureNonCompliantDevicesWithDetails(nonCompliantFeatureCode, filterSet, startIndex, resultCount); getFeatureNonCompliantDevicesWithDetails(featureCode, basicFilterSet, startIndex, resultCount);
} catch (SQLException e) { } catch (SQLException e) {
throw new DataAccessLayerException("Error in either opening a database connection or " + throw new DataAccessLayerException("Error in either opening a database connection or " +
"accessing the database to fetch corresponding results.", e); "accessing the database to fetch corresponding results.", e);
@ -237,13 +243,13 @@ public class GadgetDataServiceImpl implements GadgetDataService {
} }
@Override @Override
public List<DetailedDeviceEntry> getDevicesWithDetails(FilterSet filterSet) public List<DeviceWithDetails> getDevicesWithDetails(ExtendedFilterSet extendedFilterSet)
throws InvalidParameterValueException, DataAccessLayerException { throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException {
List<DetailedDeviceEntry> devicesWithDetails; List<DeviceWithDetails> devicesWithDetails;
try { try {
GadgetDataServiceDAOFactory.openConnection(); GadgetDataServiceDAOFactory.openConnection();
devicesWithDetails = GadgetDataServiceDAOFactory. devicesWithDetails = GadgetDataServiceDAOFactory.
getGadgetDataServiceDAO().getDevicesWithDetails(filterSet); getGadgetDataServiceDAO().getDevicesWithDetails(extendedFilterSet);
} catch (SQLException e) { } catch (SQLException e) {
throw new DataAccessLayerException("Error in either opening a database connection or " + throw new DataAccessLayerException("Error in either opening a database connection or " +
"accessing the database to fetch corresponding results.", e); "accessing the database to fetch corresponding results.", e);
@ -254,13 +260,14 @@ public class GadgetDataServiceImpl implements GadgetDataService {
} }
@Override @Override
public List<DetailedDeviceEntry> getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, public List<DeviceWithDetails> getFeatureNonCompliantDevicesWithDetails(String featureCode,
FilterSet filterSet) throws InvalidParameterValueException, DataAccessLayerException { BasicFilterSet basicFilterSet) throws InvalidFeatureCodeValueException,
List<DetailedDeviceEntry> featureNonCompliantDevicesWithDetails; DataAccessLayerException {
List<DeviceWithDetails> featureNonCompliantDevicesWithDetails;
try { try {
GadgetDataServiceDAOFactory.openConnection(); GadgetDataServiceDAOFactory.openConnection();
featureNonCompliantDevicesWithDetails = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO(). featureNonCompliantDevicesWithDetails = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().
getFeatureNonCompliantDevicesWithDetails(nonCompliantFeatureCode, filterSet); getFeatureNonCompliantDevicesWithDetails(featureCode, basicFilterSet);
} catch (SQLException e) { } catch (SQLException e) {
throw new DataAccessLayerException("Error in either opening a database connection or " + throw new DataAccessLayerException("Error in either opening a database connection or " +
"accessing the database to fetch corresponding results.", e); "accessing the database to fetch corresponding results.", e);

Loading…
Cancel
Save