diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/Dashboard.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/Dashboard.java index c910074006..0c4fd54ea2 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/Dashboard.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/Dashboard.java @@ -1,81 +1,118 @@ +/* + * 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.jaxrs.service.api; import io.swagger.annotations.Api; +import org.wso2.carbon.apimgt.annotations.api.API; +import org.wso2.carbon.apimgt.annotations.api.Permission; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.QueryParam; +import javax.ws.rs.*; +import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -//@Path("/dashboard") -//@Api(value = "Dashboard", description = "Dashboard related operations are described here.") +/** + * Device Analytics Dashboard related REST-APIs. This can be used to obtain device related analytics. + */ +@API(name = "Device Analytics Dashboard", + version = "1.0.0", context = "/api/device-mgt/v1.0/dashboard", tags = {"devicemgt_admin"}) + +@Path("/dashboard") +@Api(value = "Device Analytics Dashboard", + description = "Device Analytics Dashboard related information APIs are described here.") +@Produces(MediaType.APPLICATION_JSON) @SuppressWarnings("NonJaxWsWebServices") public interface Dashboard { -// String CONNECTIVITY_STATUS = "connectivity-status"; -// String POTENTIAL_VULNERABILITY = "potential-vulnerability"; -// String NON_COMPLIANT_FEATURE_CODE = "non-compliant-feature-code"; -// String PLATFORM = "platform"; -// String OWNERSHIP = "ownership"; -// // Constants related to pagination -// String PAGINATION_ENABLED = "pagination-enabled"; -// String START_INDEX = "start"; -// String RESULT_COUNT = "length"; -// -// @GET -// @Path("device-count-overview") -// Response getOverviewDeviceCounts(); -// -// @GET -// @Path("device-counts-by-potential-vulnerabilities") -// Response getDeviceCountsByPotentialVulnerabilities(); -// -// @GET -// @Path("non-compliant-device-counts-by-features") -// Response getNonCompliantDeviceCountsByFeatures(@QueryParam(START_INDEX) int startIndex, -// @QueryParam(RESULT_COUNT) int resultCount); -// -// @GET -// @Path("device-counts-by-groups") -// Response getDeviceCountsByGroups(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus, -// @QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability, -// @QueryParam(PLATFORM) String platform, -// @QueryParam(OWNERSHIP) String ownership); -// -// @GET -// @Path("feature-non-compliant-device-counts-by-groups") -// Response getFeatureNonCompliantDeviceCountsByGroups(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode, -// @QueryParam(PLATFORM) String platform, -// @QueryParam(OWNERSHIP) String ownership); -// @GET -// @Path("filtered-device-count-over-total") -// Response getFilteredDeviceCountOverTotal(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus, -// @QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability, -// @QueryParam(PLATFORM) String platform, -// @QueryParam(OWNERSHIP) String ownership); -// -// @GET -// @Path("feature-non-compliant-device-count-over-total") -// Response getFeatureNonCompliantDeviceCountOverTotal(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode, -// @QueryParam(PLATFORM) String platform, -// @QueryParam(OWNERSHIP) String ownership); -// -// @GET -// @Path("devices-with-details") -// Response getDevicesWithDetails(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus, -// @QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability, -// @QueryParam(PLATFORM) String platform, -// @QueryParam(OWNERSHIP) String ownership, -// @QueryParam(PAGINATION_ENABLED) String paginationEnabled, -// @QueryParam(START_INDEX) int startIndex, -// @QueryParam(RESULT_COUNT) int resultCount); -// -// @GET -// @Path("feature-non-compliant-devices-with-details") -// Response getFeatureNonCompliantDevicesWithDetails(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode, -// @QueryParam(PLATFORM) String platform, -// @QueryParam(OWNERSHIP) String ownership, -// @QueryParam(PAGINATION_ENABLED) String paginationEnabled, -// @QueryParam(START_INDEX) int startIndex, -// @QueryParam(RESULT_COUNT) int resultCount); + String CONNECTIVITY_STATUS = "connectivity-status"; + String POTENTIAL_VULNERABILITY = "potential-vulnerability"; + String NON_COMPLIANT_FEATURE_CODE = "non-compliant-feature-code"; + String PLATFORM = "platform"; + String OWNERSHIP = "ownership"; + // Constants related to pagination + String PAGINATION_ENABLED = "pagination-enabled"; + String START_INDEX = "start"; + String RESULT_COUNT = "length"; + + @GET + @Path("device-count-overview") + @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") + Response getOverviewDeviceCounts(); + + @GET + @Path("device-counts-by-potential-vulnerabilities") + @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") + Response getDeviceCountsByPotentialVulnerabilities(); + + @GET + @Path("non-compliant-device-counts-by-features") + @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") + Response getNonCompliantDeviceCountsByFeatures(@QueryParam(START_INDEX) int startIndex, + @QueryParam(RESULT_COUNT) int resultCount); + + @GET + @Path("device-counts-by-groups") + @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") + Response getDeviceCountsByGroups(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus, + @QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability, + @QueryParam(PLATFORM) String platform, + @QueryParam(OWNERSHIP) String ownership); + + @GET + @Path("feature-non-compliant-device-counts-by-groups") + @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") + Response getFeatureNonCompliantDeviceCountsByGroups(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode, + @QueryParam(PLATFORM) String platform, + @QueryParam(OWNERSHIP) String ownership); + @GET + @Path("filtered-device-count-over-total") + @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") + Response getFilteredDeviceCountOverTotal(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus, + @QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability, + @QueryParam(PLATFORM) String platform, + @QueryParam(OWNERSHIP) String ownership); + + @GET + @Path("feature-non-compliant-device-count-over-total") + @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") + Response getFeatureNonCompliantDeviceCountOverTotal(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode, + @QueryParam(PLATFORM) String platform, + @QueryParam(OWNERSHIP) String ownership); + + @GET + @Path("devices-with-details") + @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") + Response getDevicesWithDetails(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus, + @QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability, + @QueryParam(PLATFORM) String platform, + @QueryParam(OWNERSHIP) String ownership, + @QueryParam(PAGINATION_ENABLED) String paginationEnabled, + @QueryParam(START_INDEX) int startIndex, + @QueryParam(RESULT_COUNT) int resultCount); + + @GET + @Path("feature-non-compliant-devices-with-details") + @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") + Response getFeatureNonCompliantDevicesWithDetails(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode, + @QueryParam(PLATFORM) String platform, + @QueryParam(OWNERSHIP) String ownership, + @QueryParam(PAGINATION_ENABLED) String paginationEnabled, + @QueryParam(START_INDEX) int startIndex, + @QueryParam(RESULT_COUNT) int resultCount); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DashboardImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DashboardImpl.java index 3bf8332bdb..ba5e00d0d8 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DashboardImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DashboardImpl.java @@ -46,643 +46,643 @@ import java.util.List; * [3] Non-compliant Devices by Features, * [4] Device Groupings and etc. */ -// -//@Consumes({"application/json"}) -//@Produces({"application/json"}) + +@Consumes({"application/json"}) +@Produces({"application/json"}) @SuppressWarnings("NonJaxWsWebServices") public class DashboardImpl implements Dashboard { -// private static Log log = LogFactory.getLog(DashboardImpl.class); -// -// private static final String FLAG_TRUE = "true"; -// private static final String FLAG_FALSE = "false"; -// // Constants related to common error-response messages -// private static final String INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY = "Received an invalid value for " + -// "query parameter : " + POTENTIAL_VULNERABILITY + ", Should be either NON_COMPLIANT or UNMONITORED."; -// private static final String INVALID_QUERY_PARAM_VALUE_START_INDEX = "Received an invalid value for " + -// "query parameter : " + START_INDEX + ", Should not be lesser than 0."; -// private static final String INVALID_QUERY_PARAM_VALUE_RESULT_COUNT = "Received an invalid value for " + -// "query parameter : " + RESULT_COUNT + ", Should not be lesser than 5."; -// private static final String INVALID_QUERY_PARAM_VALUE_PAGINATION_ENABLED = "Received an invalid value for " + -// "query parameter : " + PAGINATION_ENABLED + ", Should be either true or false."; -// private static final String REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE = "Missing required query " + -// "parameter : " + NON_COMPLIANT_FEATURE_CODE; -// private static final String REQUIRED_QUERY_PARAM_VALUE_PAGINATION_ENABLED = "Missing required query " + -// "parameter : " + PAGINATION_ENABLED; -// private static final String ERROR_IN_RETRIEVING_REQUESTED_DATA = "ErrorResponse in retrieving requested data."; -// -// @GET -// @Path("device-count-overview") -// public Response getOverviewDeviceCounts() { -// GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); -// -// DashboardGadgetDataWrapper dashboardGadgetDataWrapper1 = new DashboardGadgetDataWrapper(); -// -// // getting total device count -// DeviceCountByGroup totalDeviceCount; -// try { -// totalDeviceCount = gadgetDataService.getTotalDeviceCount(); -// } catch (DataAccessLayerException e) { -// log.error("An internal error occurred while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve total device count.", e); -// return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). -// entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); -// } -// -// List totalDeviceCountInListEntry = new ArrayList<>(); -// totalDeviceCountInListEntry.add(totalDeviceCount); -// -// dashboardGadgetDataWrapper1.setContext("Total-device-count"); -// dashboardGadgetDataWrapper1.setGroupingAttribute(null); -// dashboardGadgetDataWrapper1.setData(totalDeviceCountInListEntry); -// -// // getting device counts by connectivity statuses -// List deviceCountsByConnectivityStatuses; -// try { -// deviceCountsByConnectivityStatuses = gadgetDataService.getDeviceCountsByConnectivityStatuses(); -// } catch (DataAccessLayerException e) { -// log.error("An internal error occurred while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve device counts by connectivity statuses.", e); -// return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). -// entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); -// } -// -// DashboardGadgetDataWrapper dashboardGadgetDataWrapper2 = new DashboardGadgetDataWrapper(); -// -// dashboardGadgetDataWrapper2.setContext("Device-counts-by-connectivity-statuses"); -// dashboardGadgetDataWrapper2.setGroupingAttribute(CONNECTIVITY_STATUS); -// dashboardGadgetDataWrapper2.setData(deviceCountsByConnectivityStatuses); -// -// List responsePayload = new ArrayList<>(); -// responsePayload.add(dashboardGadgetDataWrapper1); -// responsePayload.add(dashboardGadgetDataWrapper2); -// -// return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); -// } -// -// @GET -// @Path("device-counts-by-potential-vulnerabilities") -// public Response getDeviceCountsByPotentialVulnerabilities() { -// GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); -// -// List deviceCountsByPotentialVulnerabilities; -// try { -// deviceCountsByPotentialVulnerabilities = gadgetDataService.getDeviceCountsByPotentialVulnerabilities(); -// } catch (DataAccessLayerException e) { -// log.error("An internal error occurred while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve device counts by potential vulnerabilities.", e); -// return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). -// entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); -// } -// -// DashboardGadgetDataWrapper dashboardGadgetDataWrapper = new DashboardGadgetDataWrapper(); -// dashboardGadgetDataWrapper.setContext("Device-counts-by-potential-vulnerabilities"); -// dashboardGadgetDataWrapper.setGroupingAttribute(POTENTIAL_VULNERABILITY); -// dashboardGadgetDataWrapper.setData(deviceCountsByPotentialVulnerabilities); -// -// List responsePayload = new ArrayList<>(); -// responsePayload.add(dashboardGadgetDataWrapper); -// -// return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); -// } -// -// @GET -// @Path("non-compliant-device-counts-by-features") -// public Response getNonCompliantDeviceCountsByFeatures(@QueryParam(START_INDEX) int startIndex, -// @QueryParam(RESULT_COUNT) int resultCount) { -// -// GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); -// DashboardPaginationGadgetDataWrapper -// dashboardPaginationGadgetDataWrapper = new DashboardPaginationGadgetDataWrapper(); -// -// PaginationResult paginationResult; -// try { -// paginationResult = gadgetDataService. -// getNonCompliantDeviceCountsByFeatures(startIndex, resultCount); -// } catch (InvalidStartIndexValueException e) { -// log.error("Bad request and error occurred @ Gadget Data Service layer due to " + -// "invalid (query) parameter value. This was while trying to execute relevant data service " + -// "function @ Dashboard API layer to retrieve a non-compliant set " + -// "of device counts by features.", e); -// return Response.status(HttpStatus.SC_BAD_REQUEST).entity(INVALID_QUERY_PARAM_VALUE_START_INDEX).build(); -// } catch (InvalidResultCountValueException e) { -// log.error("Bad request and error occurred @ Gadget Data Service layer due to " + -// "invalid (query) parameter value. This was while trying to execute relevant data service " + -// "function @ Dashboard API layer to retrieve a non-compliant set " + -// "of device counts by features.", e); -// return Response.status(HttpStatus.SC_BAD_REQUEST).entity(INVALID_QUERY_PARAM_VALUE_RESULT_COUNT).build(); -// } catch (DataAccessLayerException e) { -// log.error("An internal error occurred while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve a non-compliant set of device counts by features.", e); -// return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). -// entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); -// } -// -// dashboardPaginationGadgetDataWrapper.setContext("Non-compliant-device-counts-by-features"); -// dashboardPaginationGadgetDataWrapper.setGroupingAttribute(NON_COMPLIANT_FEATURE_CODE); -// dashboardPaginationGadgetDataWrapper.setData(paginationResult.getData()); -// dashboardPaginationGadgetDataWrapper.setTotalRecordCount(paginationResult.getRecordsTotal()); -// -// List responsePayload = new ArrayList<>(); -// responsePayload.add(dashboardPaginationGadgetDataWrapper); -// -// return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); -// } -// -// @GET -// @Path("device-counts-by-groups") -// public Response getDeviceCountsByGroups(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus, -// @QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability, -// @QueryParam(PLATFORM) String platform, -// @QueryParam(OWNERSHIP) String ownership) { -// -// // getting gadget data service -// GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); -// -// // constructing filter set -// ExtendedFilterSet filterSet = new ExtendedFilterSet(); -// filterSet.setConnectivityStatus(connectivityStatus); -// filterSet.setPotentialVulnerability(potentialVulnerability); -// filterSet.setPlatform(platform); -// filterSet.setOwnership(ownership); -// -// // creating device-Counts-by-platforms Data Wrapper -// List deviceCountsByPlatforms; -// try { -// deviceCountsByPlatforms = gadgetDataService.getDeviceCountsByPlatforms(filterSet); -// } catch (InvalidPotentialVulnerabilityValueException e) { -// log.error("Bad request and error occurred @ Gadget Data Service layer due to " + -// "invalid (query) parameter value. This was while trying to execute relevant data service " + -// "function @ Dashboard API layer to retrieve a filtered set of device counts by platforms.", e); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY).build(); -// } catch (DataAccessLayerException e) { -// log.error("An internal error occurred while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve a filtered set of device counts by platforms.", e); -// return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). -// entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); -// } -// -// DashboardGadgetDataWrapper dashboardGadgetDataWrapper1 = new DashboardGadgetDataWrapper(); -// dashboardGadgetDataWrapper1.setContext("Device-counts-by-platforms"); -// dashboardGadgetDataWrapper1.setGroupingAttribute(PLATFORM); -// dashboardGadgetDataWrapper1.setData(deviceCountsByPlatforms); -// -// // creating device-Counts-by-ownership-types Data Wrapper -// List deviceCountsByOwnerships; -// try { -// deviceCountsByOwnerships = gadgetDataService.getDeviceCountsByOwnershipTypes(filterSet); -// } catch (InvalidPotentialVulnerabilityValueException e) { -// log.error("Bad request and error occurred @ Gadget Data Service layer due to " + -// "invalid (query) parameter value. This was while trying to execute relevant data service " + -// "function @ Dashboard API layer to retrieve a filtered set of device counts by ownerships.", e); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY).build(); -// } catch (DataAccessLayerException e) { -// log.error("An internal error occurred while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve a filtered set of device counts by ownerships.", e); -// return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). -// entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); -// } -// -// DashboardGadgetDataWrapper dashboardGadgetDataWrapper2 = new DashboardGadgetDataWrapper(); -// dashboardGadgetDataWrapper2.setContext("Device-counts-by-ownerships"); -// dashboardGadgetDataWrapper2.setGroupingAttribute(OWNERSHIP); -// dashboardGadgetDataWrapper2.setData(deviceCountsByOwnerships); -// -// List responsePayload = new ArrayList<>(); -// responsePayload.add(dashboardGadgetDataWrapper1); -// responsePayload.add(dashboardGadgetDataWrapper2); -// -// return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); -// } -// -// @GET -// @Path("feature-non-compliant-device-counts-by-groups") -// public Response getFeatureNonCompliantDeviceCountsByGroups(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode, -// @QueryParam(PLATFORM) String platform, -// @QueryParam(OWNERSHIP) String ownership) { -// // getting gadget data service -// GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); -// -// // constructing filter set -// BasicFilterSet filterSet = new BasicFilterSet(); -// filterSet.setPlatform(platform); -// filterSet.setOwnership(ownership); -// -// // creating feature-non-compliant-device-Counts-by-platforms Data Wrapper -// List featureNonCompliantDeviceCountsByPlatforms; -// try { -// featureNonCompliantDeviceCountsByPlatforms = gadgetDataService. -// getFeatureNonCompliantDeviceCountsByPlatforms(nonCompliantFeatureCode, filterSet); -// } catch (InvalidFeatureCodeValueException e) { -// log.error("Bad request and error occurred @ Gadget Data Service layer due to " + -// "invalid (query) parameter value. This was while trying to execute relevant data service " + -// "function @ Dashboard API layer to retrieve a filtered set of feature " + -// "non-compliant device counts by platforms.", e); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE).build(); -// } catch (DataAccessLayerException e) { -// log.error("An internal error occurred while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve a filtered set of feature non-compliant " + -// "device counts by platforms.", e); -// return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). -// entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); -// } -// -// DashboardGadgetDataWrapper dashboardGadgetDataWrapper1 = new DashboardGadgetDataWrapper(); -// dashboardGadgetDataWrapper1.setContext("Feature-non-compliant-device-counts-by-platforms"); -// dashboardGadgetDataWrapper1.setGroupingAttribute(PLATFORM); -// dashboardGadgetDataWrapper1.setData(featureNonCompliantDeviceCountsByPlatforms); -// -// // creating feature-non-compliant-device-Counts-by-ownership-types Data Wrapper -// List featureNonCompliantDeviceCountsByOwnerships; -// try { -// featureNonCompliantDeviceCountsByOwnerships = gadgetDataService. -// getFeatureNonCompliantDeviceCountsByOwnershipTypes(nonCompliantFeatureCode, filterSet); -// } catch (InvalidFeatureCodeValueException e) { -// log.error("Bad request and error occurred @ Gadget Data Service layer due to " + -// "invalid (query) parameter value. This was while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve a filtered set of feature " + -// "non-compliant device counts by ownerships.", e); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE).build(); -// } catch (DataAccessLayerException e) { -// log.error("An internal error occurred while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve a filtered set of feature non-compliant " + -// "device counts by ownerships.", e); -// return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). -// entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); -// } -// -// DashboardGadgetDataWrapper dashboardGadgetDataWrapper2 = new DashboardGadgetDataWrapper(); -// dashboardGadgetDataWrapper2.setContext("Feature-non-compliant-device-counts-by-ownerships"); -// dashboardGadgetDataWrapper2.setGroupingAttribute(OWNERSHIP); -// dashboardGadgetDataWrapper2.setData(featureNonCompliantDeviceCountsByOwnerships); -// -// List responsePayload = new ArrayList<>(); -// responsePayload.add(dashboardGadgetDataWrapper1); -// responsePayload.add(dashboardGadgetDataWrapper2); -// -// return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); -// } -// -// @GET -// @Path("filtered-device-count-over-total") -// public Response getFilteredDeviceCountOverTotal(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus, -// @QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability, -// @QueryParam(PLATFORM) String platform, -// @QueryParam(OWNERSHIP) String ownership) { -// -// // getting gadget data service -// GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); -// -// // constructing filter set -// ExtendedFilterSet filterSet = new ExtendedFilterSet(); -// filterSet.setConnectivityStatus(connectivityStatus); -// filterSet.setPotentialVulnerability(potentialVulnerability); -// filterSet.setPlatform(platform); -// filterSet.setOwnership(ownership); -// -// // creating filteredDeviceCount Data Wrapper -// DeviceCountByGroup filteredDeviceCount; -// try { -// filteredDeviceCount = gadgetDataService.getDeviceCount(filterSet); -// } catch (InvalidPotentialVulnerabilityValueException e) { -// log.error("Bad request and error occurred @ Gadget Data Service layer due to " + -// "invalid (query) parameter value. This was while trying to execute relevant data service " + -// "function @ Dashboard API layer to retrieve a filtered device count over the total.", e); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY).build(); -// } catch (DataAccessLayerException e) { -// log.error("An internal error occurred while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve a filtered device count over the total.", e); -// return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). -// entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); -// } -// -// // creating TotalDeviceCount Data Wrapper -// DeviceCountByGroup totalDeviceCount; -// try { -// totalDeviceCount = gadgetDataService.getTotalDeviceCount(); -// } catch (DataAccessLayerException e) { -// log.error("An internal error occurred while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve the total device count over filtered.", e); -// return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). -// entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); -// } -// -// List filteredDeviceCountOverTotalDataWrapper = new ArrayList<>(); -// filteredDeviceCountOverTotalDataWrapper.add(filteredDeviceCount); -// filteredDeviceCountOverTotalDataWrapper.add(totalDeviceCount); -// -// DashboardGadgetDataWrapper dashboardGadgetDataWrapper = new DashboardGadgetDataWrapper(); -// dashboardGadgetDataWrapper.setContext("Filtered-device-count-over-total"); -// dashboardGadgetDataWrapper.setGroupingAttribute(null); -// dashboardGadgetDataWrapper.setData(filteredDeviceCountOverTotalDataWrapper); -// -// List responsePayload = new ArrayList<>(); -// responsePayload.add(dashboardGadgetDataWrapper); -// -// return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); -// } -// -// @GET -// @Path("feature-non-compliant-device-count-over-total") -// public Response getFeatureNonCompliantDeviceCountOverTotal(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode, -// @QueryParam(PLATFORM) String platform, -// @QueryParam(OWNERSHIP) String ownership) { -// -// // getting gadget data service -// GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); -// -// // constructing filter set -// BasicFilterSet filterSet = new BasicFilterSet(); -// filterSet.setPlatform(platform); -// filterSet.setOwnership(ownership); -// -// // creating featureNonCompliantDeviceCount Data Wrapper -// DeviceCountByGroup featureNonCompliantDeviceCount; -// try { -// featureNonCompliantDeviceCount = gadgetDataService. -// getFeatureNonCompliantDeviceCount(nonCompliantFeatureCode, filterSet); -// } catch (InvalidFeatureCodeValueException e) { -// log.error("Bad request and error occurred @ Gadget Data Service layer due to " + -// "invalid (query) parameter value. This was while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve a feature non-compliant device count over the total.", e); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE).build(); -// } catch (DataAccessLayerException e) { -// log.error("An internal error occurred while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve a feature non-compliant device count over the total.", e); -// return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). -// entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); -// } -// -// // creating TotalDeviceCount Data Wrapper -// DeviceCountByGroup totalDeviceCount; -// try { -// totalDeviceCount = gadgetDataService.getTotalDeviceCount(); -// } catch (DataAccessLayerException e) { -// log.error("An internal error occurred while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve the total device count over filtered feature non-compliant.", e); -// return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). -// entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); -// } -// -// List featureNonCompliantDeviceCountOverTotalDataWrapper = new ArrayList<>(); -// featureNonCompliantDeviceCountOverTotalDataWrapper.add(featureNonCompliantDeviceCount); -// featureNonCompliantDeviceCountOverTotalDataWrapper.add(totalDeviceCount); -// -// DashboardGadgetDataWrapper dashboardGadgetDataWrapper = new DashboardGadgetDataWrapper(); -// dashboardGadgetDataWrapper.setContext("Feature-non-compliant-device-count-over-total"); -// dashboardGadgetDataWrapper.setGroupingAttribute(null); -// dashboardGadgetDataWrapper.setData(featureNonCompliantDeviceCountOverTotalDataWrapper); -// -// List responsePayload = new ArrayList<>(); -// responsePayload.add(dashboardGadgetDataWrapper); -// -// return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); -// } -// -// @GET -// @Path("devices-with-details") -// public Response getDevicesWithDetails(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus, -// @QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability, -// @QueryParam(PLATFORM) String platform, -// @QueryParam(OWNERSHIP) String ownership, -// @QueryParam(PAGINATION_ENABLED) String paginationEnabled, -// @QueryParam(START_INDEX) int startIndex, -// @QueryParam(RESULT_COUNT) int resultCount) { -// -// if (paginationEnabled == null) { -// -// log.error("Bad request on retrieving a filtered set of devices with details @ " + -// "Dashboard API layer. " + REQUIRED_QUERY_PARAM_VALUE_PAGINATION_ENABLED); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(REQUIRED_QUERY_PARAM_VALUE_PAGINATION_ENABLED).build(); -// -// } else if (FLAG_TRUE.equals(paginationEnabled)) { -// -// // getting gadget data service -// GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); -// -// // constructing filter set -// ExtendedFilterSet filterSet = new ExtendedFilterSet(); -// filterSet.setConnectivityStatus(connectivityStatus); -// filterSet.setPotentialVulnerability(potentialVulnerability); -// filterSet.setPlatform(platform); -// filterSet.setOwnership(ownership); -// -// PaginationResult paginationResult; -// try { -// paginationResult = gadgetDataService. -// getDevicesWithDetails(filterSet, startIndex, resultCount); -// } catch (InvalidPotentialVulnerabilityValueException e) { -// log.error("Bad request and error occurred @ Gadget Data Service layer due to " + -// "invalid (query) parameter value. This was while trying to execute relevant data service " + -// "function @ Dashboard API layer to retrieve a filtered set of devices with details.", e); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY).build(); -// } catch (InvalidStartIndexValueException e) { -// log.error("Bad request and error occurred @ Gadget Data Service layer due to " + -// "invalid (query) parameter value. This was while trying to execute relevant data service " + -// "function @ Dashboard API layer to retrieve a filtered set of devices with details.", e); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(INVALID_QUERY_PARAM_VALUE_START_INDEX).build(); -// } catch (InvalidResultCountValueException e) { -// log.error("Bad request and error occurred @ Gadget Data Service layer due to " + -// "invalid (query) parameter value. This was while trying to execute relevant data service " + -// "function @ Dashboard API layer to retrieve a filtered set of devices with details.", e); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(INVALID_QUERY_PARAM_VALUE_RESULT_COUNT).build(); -// } catch (DataAccessLayerException e) { -// log.error("An internal error occurred while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve a filtered set of devices with details.", e); -// return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). -// entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); -// } -// -// DashboardPaginationGadgetDataWrapper -// dashboardPaginationGadgetDataWrapper = new DashboardPaginationGadgetDataWrapper(); -// dashboardPaginationGadgetDataWrapper.setContext("Filtered-and-paginated-devices-with-details"); -// dashboardPaginationGadgetDataWrapper.setGroupingAttribute(null); -// dashboardPaginationGadgetDataWrapper.setData(paginationResult.getData()); -// dashboardPaginationGadgetDataWrapper.setTotalRecordCount(paginationResult.getRecordsTotal()); -// -// List responsePayload = new ArrayList<>(); -// responsePayload.add(dashboardPaginationGadgetDataWrapper); -// -// return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); -// -// } else if (FLAG_FALSE.equals(paginationEnabled)) { -// -// // getting gadget data service -// GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); -// -// // constructing filter set -// ExtendedFilterSet filterSet = new ExtendedFilterSet(); -// filterSet.setConnectivityStatus(connectivityStatus); -// filterSet.setPotentialVulnerability(potentialVulnerability); -// filterSet.setPlatform(platform); -// filterSet.setOwnership(ownership); -// -// List devicesWithDetails; -// try { -// devicesWithDetails = gadgetDataService.getDevicesWithDetails(filterSet); -// } catch (InvalidPotentialVulnerabilityValueException e) { -// log.error("Bad request and error occurred @ Gadget Data Service layer due to " + -// "invalid (query) parameter value. This was while trying to execute relevant data service " + -// "function @ Dashboard API layer to retrieve a filtered set of devices with details.", e); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY).build(); -// } catch (DataAccessLayerException e) { -// log.error("An internal error occurred while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve a filtered set of devices with details.", e); -// return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). -// entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); -// } -// -// DashboardGadgetDataWrapper dashboardGadgetDataWrapper = new DashboardGadgetDataWrapper(); -// dashboardGadgetDataWrapper.setContext("Filtered-devices-with-details"); -// dashboardGadgetDataWrapper.setGroupingAttribute(null); -// dashboardGadgetDataWrapper.setData(devicesWithDetails); -// -// List responsePayload = new ArrayList<>(); -// responsePayload.add(dashboardGadgetDataWrapper); -// -// return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); -// -// } else { -// -// log.error("Bad request on retrieving a filtered set of devices with details @ " + -// "Dashboard API layer. " + INVALID_QUERY_PARAM_VALUE_PAGINATION_ENABLED); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(INVALID_QUERY_PARAM_VALUE_PAGINATION_ENABLED).build(); -// -// } -// } -// -// @GET -// @Path("feature-non-compliant-devices-with-details") -// public Response getFeatureNonCompliantDevicesWithDetails(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode, -// @QueryParam(PLATFORM) String platform, -// @QueryParam(OWNERSHIP) String ownership, -// @QueryParam(PAGINATION_ENABLED) String paginationEnabled, -// @QueryParam(START_INDEX) int startIndex, -// @QueryParam(RESULT_COUNT) int resultCount) { -// if (paginationEnabled == null) { -// -// log.error("Bad request on retrieving a filtered set of feature non-compliant devices with " + -// "details @ Dashboard API layer. " + REQUIRED_QUERY_PARAM_VALUE_PAGINATION_ENABLED); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(REQUIRED_QUERY_PARAM_VALUE_PAGINATION_ENABLED).build(); -// -// } else if (FLAG_TRUE.equals(paginationEnabled)) { -// -// // getting gadget data service -// GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); -// -// // constructing filter set -// BasicFilterSet filterSet = new BasicFilterSet(); -// filterSet.setPlatform(platform); -// filterSet.setOwnership(ownership); -// -// PaginationResult paginationResult; -// try { -// paginationResult = gadgetDataService. -// getFeatureNonCompliantDevicesWithDetails(nonCompliantFeatureCode, -// filterSet, startIndex, resultCount); -// } catch (InvalidFeatureCodeValueException e) { -// log.error("Bad request and error occurred @ Gadget Data Service layer due to " + -// "invalid (query) parameter value. This was while trying to execute relevant data service " + -// "function @ Dashboard API layer to retrieve a filtered set of " + -// "feature non-compliant devices with details.", e); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE).build(); -// } catch (InvalidStartIndexValueException e) { -// log.error("Bad request and error occurred @ Gadget Data Service layer due to " + -// "invalid (query) parameter value. This was while trying to execute relevant data service " + -// "function @ Dashboard API layer to retrieve a filtered set of " + -// "feature non-compliant devices with details.", e); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(INVALID_QUERY_PARAM_VALUE_START_INDEX).build(); -// } catch (InvalidResultCountValueException e) { -// log.error("Bad request and error occurred @ Gadget Data Service layer due to " + -// "invalid (query) parameter value. This was while trying to execute relevant data service " + -// "function @ Dashboard API layer to retrieve a filtered set of " + -// "feature non-compliant devices with details.", e); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(INVALID_QUERY_PARAM_VALUE_RESULT_COUNT).build(); -// } catch (DataAccessLayerException e) { -// log.error("An internal error occurred while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve a filtered set of feature " + -// "non-compliant devices with details.", e); -// return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). -// entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); -// } -// -// DashboardPaginationGadgetDataWrapper -// dashboardPaginationGadgetDataWrapper = new DashboardPaginationGadgetDataWrapper(); -// dashboardPaginationGadgetDataWrapper. -// setContext("Filtered-and-paginated-feature-non-compliant-devices-with-details"); -// dashboardPaginationGadgetDataWrapper.setGroupingAttribute(null); -// dashboardPaginationGadgetDataWrapper.setData(paginationResult.getData()); -// dashboardPaginationGadgetDataWrapper.setTotalRecordCount(paginationResult.getRecordsTotal()); -// -// List responsePayload = new ArrayList<>(); -// responsePayload.add(dashboardPaginationGadgetDataWrapper); -// -// return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); -// -// } else if (FLAG_FALSE.equals(paginationEnabled)) { -// -// // getting gadget data service -// GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); -// -// // constructing filter set -// BasicFilterSet filterSet = new BasicFilterSet(); -// filterSet.setPlatform(platform); -// filterSet.setOwnership(ownership); -// -// List featureNonCompliantDevicesWithDetails; -// try { -// featureNonCompliantDevicesWithDetails = gadgetDataService. -// getFeatureNonCompliantDevicesWithDetails(nonCompliantFeatureCode, filterSet); -// } catch (InvalidFeatureCodeValueException e) { -// log.error("Bad request and error occurred @ Gadget Data Service layer due to " + -// "invalid (query) parameter value. This was while trying to execute relevant data service " + -// "function @ Dashboard API layer to retrieve a filtered set of " + -// "feature non-compliant devices with details.", e); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE).build(); -// } catch (DataAccessLayerException e) { -// log.error("An internal error occurred while trying to execute relevant data service function " + -// "@ Dashboard API layer to retrieve a filtered set of feature " + -// "non-compliant devices with details.", e); -// return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). -// entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); -// } -// -// DashboardGadgetDataWrapper dashboardGadgetDataWrapper = new DashboardGadgetDataWrapper(); -// dashboardGadgetDataWrapper.setContext("Filtered-feature-non-compliant-devices-with-details"); -// dashboardGadgetDataWrapper.setGroupingAttribute(null); -// dashboardGadgetDataWrapper.setData(featureNonCompliantDevicesWithDetails); -// -// List responsePayload = new ArrayList<>(); -// responsePayload.add(dashboardGadgetDataWrapper); -// -// return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); -// -// } else { -// -// log.error("Bad request on retrieving a filtered set of feature non-compliant devices with " + -// "details @ Dashboard API layer. " + INVALID_QUERY_PARAM_VALUE_PAGINATION_ENABLED); -// return Response.status(HttpStatus.SC_BAD_REQUEST). -// entity(INVALID_QUERY_PARAM_VALUE_PAGINATION_ENABLED).build(); -// -// } -// } + private static Log log = LogFactory.getLog(DashboardImpl.class); + + private static final String FLAG_TRUE = "true"; + private static final String FLAG_FALSE = "false"; + // Constants related to common error-response messages + private static final String INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY = "Received an invalid value for " + + "query parameter : " + POTENTIAL_VULNERABILITY + ", Should be either NON_COMPLIANT or UNMONITORED."; + private static final String INVALID_QUERY_PARAM_VALUE_START_INDEX = "Received an invalid value for " + + "query parameter : " + START_INDEX + ", Should not be lesser than 0."; + private static final String INVALID_QUERY_PARAM_VALUE_RESULT_COUNT = "Received an invalid value for " + + "query parameter : " + RESULT_COUNT + ", Should not be lesser than 5."; + private static final String INVALID_QUERY_PARAM_VALUE_PAGINATION_ENABLED = "Received an invalid value for " + + "query parameter : " + PAGINATION_ENABLED + ", Should be either true or false."; + private static final String REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE = "Missing required query " + + "parameter : " + NON_COMPLIANT_FEATURE_CODE; + private static final String REQUIRED_QUERY_PARAM_VALUE_PAGINATION_ENABLED = "Missing required query " + + "parameter : " + PAGINATION_ENABLED; + private static final String ERROR_IN_RETRIEVING_REQUESTED_DATA = "ErrorResponse in retrieving requested data."; + + @GET + @Path("device-count-overview") + public Response getOverviewDeviceCounts() { + GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); + + DashboardGadgetDataWrapper dashboardGadgetDataWrapper1 = new DashboardGadgetDataWrapper(); + + // getting total device count + DeviceCountByGroup totalDeviceCount; + try { + totalDeviceCount = gadgetDataService.getTotalDeviceCount(); + } catch (DataAccessLayerException e) { + log.error("An internal error occurred while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve total device count.", e); + return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). + entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); + } + + List totalDeviceCountInListEntry = new ArrayList<>(); + totalDeviceCountInListEntry.add(totalDeviceCount); + + dashboardGadgetDataWrapper1.setContext("Total-device-count"); + dashboardGadgetDataWrapper1.setGroupingAttribute(null); + dashboardGadgetDataWrapper1.setData(totalDeviceCountInListEntry); + + // getting device counts by connectivity statuses + List deviceCountsByConnectivityStatuses; + try { + deviceCountsByConnectivityStatuses = gadgetDataService.getDeviceCountsByConnectivityStatuses(); + } catch (DataAccessLayerException e) { + log.error("An internal error occurred while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve device counts by connectivity statuses.", e); + return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). + entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); + } + + DashboardGadgetDataWrapper dashboardGadgetDataWrapper2 = new DashboardGadgetDataWrapper(); + + dashboardGadgetDataWrapper2.setContext("Device-counts-by-connectivity-statuses"); + dashboardGadgetDataWrapper2.setGroupingAttribute(CONNECTIVITY_STATUS); + dashboardGadgetDataWrapper2.setData(deviceCountsByConnectivityStatuses); + + List responsePayload = new ArrayList<>(); + responsePayload.add(dashboardGadgetDataWrapper1); + responsePayload.add(dashboardGadgetDataWrapper2); + + return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + } + + @GET + @Path("device-counts-by-potential-vulnerabilities") + public Response getDeviceCountsByPotentialVulnerabilities() { + GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); + + List deviceCountsByPotentialVulnerabilities; + try { + deviceCountsByPotentialVulnerabilities = gadgetDataService.getDeviceCountsByPotentialVulnerabilities(); + } catch (DataAccessLayerException e) { + log.error("An internal error occurred while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve device counts by potential vulnerabilities.", e); + return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). + entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); + } + + DashboardGadgetDataWrapper dashboardGadgetDataWrapper = new DashboardGadgetDataWrapper(); + dashboardGadgetDataWrapper.setContext("Device-counts-by-potential-vulnerabilities"); + dashboardGadgetDataWrapper.setGroupingAttribute(POTENTIAL_VULNERABILITY); + dashboardGadgetDataWrapper.setData(deviceCountsByPotentialVulnerabilities); + + List responsePayload = new ArrayList<>(); + responsePayload.add(dashboardGadgetDataWrapper); + + return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + } + + @GET + @Path("non-compliant-device-counts-by-features") + public Response getNonCompliantDeviceCountsByFeatures(@QueryParam(START_INDEX) int startIndex, + @QueryParam(RESULT_COUNT) int resultCount) { + + GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); + DashboardPaginationGadgetDataWrapper + dashboardPaginationGadgetDataWrapper = new DashboardPaginationGadgetDataWrapper(); + + PaginationResult paginationResult; + try { + paginationResult = gadgetDataService. + getNonCompliantDeviceCountsByFeatures(startIndex, resultCount); + } catch (InvalidStartIndexValueException e) { + log.error("Bad request and error occurred @ Gadget Data Service layer due to " + + "invalid (query) parameter value. This was while trying to execute relevant data service " + + "function @ Dashboard API layer to retrieve a non-compliant set " + + "of device counts by features.", e); + return Response.status(HttpStatus.SC_BAD_REQUEST).entity(INVALID_QUERY_PARAM_VALUE_START_INDEX).build(); + } catch (InvalidResultCountValueException e) { + log.error("Bad request and error occurred @ Gadget Data Service layer due to " + + "invalid (query) parameter value. This was while trying to execute relevant data service " + + "function @ Dashboard API layer to retrieve a non-compliant set " + + "of device counts by features.", e); + return Response.status(HttpStatus.SC_BAD_REQUEST).entity(INVALID_QUERY_PARAM_VALUE_RESULT_COUNT).build(); + } catch (DataAccessLayerException e) { + log.error("An internal error occurred while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve a non-compliant set of device counts by features.", e); + return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). + entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); + } + + dashboardPaginationGadgetDataWrapper.setContext("Non-compliant-device-counts-by-features"); + dashboardPaginationGadgetDataWrapper.setGroupingAttribute(NON_COMPLIANT_FEATURE_CODE); + dashboardPaginationGadgetDataWrapper.setData(paginationResult.getData()); + dashboardPaginationGadgetDataWrapper.setTotalRecordCount(paginationResult.getRecordsTotal()); + + List responsePayload = new ArrayList<>(); + responsePayload.add(dashboardPaginationGadgetDataWrapper); + + return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + } + + @GET + @Path("device-counts-by-groups") + public Response getDeviceCountsByGroups(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus, + @QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability, + @QueryParam(PLATFORM) String platform, + @QueryParam(OWNERSHIP) String ownership) { + + // getting gadget data service + GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); + + // constructing filter set + ExtendedFilterSet filterSet = new ExtendedFilterSet(); + filterSet.setConnectivityStatus(connectivityStatus); + filterSet.setPotentialVulnerability(potentialVulnerability); + filterSet.setPlatform(platform); + filterSet.setOwnership(ownership); + + // creating device-Counts-by-platforms Data Wrapper + List deviceCountsByPlatforms; + try { + deviceCountsByPlatforms = gadgetDataService.getDeviceCountsByPlatforms(filterSet); + } catch (InvalidPotentialVulnerabilityValueException e) { + log.error("Bad request and error occurred @ Gadget Data Service layer due to " + + "invalid (query) parameter value. This was while trying to execute relevant data service " + + "function @ Dashboard API layer to retrieve a filtered set of device counts by platforms.", e); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY).build(); + } catch (DataAccessLayerException e) { + log.error("An internal error occurred while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve a filtered set of device counts by platforms.", e); + return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). + entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); + } + + DashboardGadgetDataWrapper dashboardGadgetDataWrapper1 = new DashboardGadgetDataWrapper(); + dashboardGadgetDataWrapper1.setContext("Device-counts-by-platforms"); + dashboardGadgetDataWrapper1.setGroupingAttribute(PLATFORM); + dashboardGadgetDataWrapper1.setData(deviceCountsByPlatforms); + + // creating device-Counts-by-ownership-types Data Wrapper + List deviceCountsByOwnerships; + try { + deviceCountsByOwnerships = gadgetDataService.getDeviceCountsByOwnershipTypes(filterSet); + } catch (InvalidPotentialVulnerabilityValueException e) { + log.error("Bad request and error occurred @ Gadget Data Service layer due to " + + "invalid (query) parameter value. This was while trying to execute relevant data service " + + "function @ Dashboard API layer to retrieve a filtered set of device counts by ownerships.", e); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY).build(); + } catch (DataAccessLayerException e) { + log.error("An internal error occurred while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve a filtered set of device counts by ownerships.", e); + return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). + entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); + } + + DashboardGadgetDataWrapper dashboardGadgetDataWrapper2 = new DashboardGadgetDataWrapper(); + dashboardGadgetDataWrapper2.setContext("Device-counts-by-ownerships"); + dashboardGadgetDataWrapper2.setGroupingAttribute(OWNERSHIP); + dashboardGadgetDataWrapper2.setData(deviceCountsByOwnerships); + + List responsePayload = new ArrayList<>(); + responsePayload.add(dashboardGadgetDataWrapper1); + responsePayload.add(dashboardGadgetDataWrapper2); + + return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + } + + @GET + @Path("feature-non-compliant-device-counts-by-groups") + public Response getFeatureNonCompliantDeviceCountsByGroups(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode, + @QueryParam(PLATFORM) String platform, + @QueryParam(OWNERSHIP) String ownership) { + // getting gadget data service + GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); + + // constructing filter set + BasicFilterSet filterSet = new BasicFilterSet(); + filterSet.setPlatform(platform); + filterSet.setOwnership(ownership); + + // creating feature-non-compliant-device-Counts-by-platforms Data Wrapper + List featureNonCompliantDeviceCountsByPlatforms; + try { + featureNonCompliantDeviceCountsByPlatforms = gadgetDataService. + getFeatureNonCompliantDeviceCountsByPlatforms(nonCompliantFeatureCode, filterSet); + } catch (InvalidFeatureCodeValueException e) { + log.error("Bad request and error occurred @ Gadget Data Service layer due to " + + "invalid (query) parameter value. This was while trying to execute relevant data service " + + "function @ Dashboard API layer to retrieve a filtered set of feature " + + "non-compliant device counts by platforms.", e); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE).build(); + } catch (DataAccessLayerException e) { + log.error("An internal error occurred while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve a filtered set of feature non-compliant " + + "device counts by platforms.", e); + return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). + entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); + } + + DashboardGadgetDataWrapper dashboardGadgetDataWrapper1 = new DashboardGadgetDataWrapper(); + dashboardGadgetDataWrapper1.setContext("Feature-non-compliant-device-counts-by-platforms"); + dashboardGadgetDataWrapper1.setGroupingAttribute(PLATFORM); + dashboardGadgetDataWrapper1.setData(featureNonCompliantDeviceCountsByPlatforms); + + // creating feature-non-compliant-device-Counts-by-ownership-types Data Wrapper + List featureNonCompliantDeviceCountsByOwnerships; + try { + featureNonCompliantDeviceCountsByOwnerships = gadgetDataService. + getFeatureNonCompliantDeviceCountsByOwnershipTypes(nonCompliantFeatureCode, filterSet); + } catch (InvalidFeatureCodeValueException e) { + log.error("Bad request and error occurred @ Gadget Data Service layer due to " + + "invalid (query) parameter value. This was while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve a filtered set of feature " + + "non-compliant device counts by ownerships.", e); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE).build(); + } catch (DataAccessLayerException e) { + log.error("An internal error occurred while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve a filtered set of feature non-compliant " + + "device counts by ownerships.", e); + return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). + entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); + } + + DashboardGadgetDataWrapper dashboardGadgetDataWrapper2 = new DashboardGadgetDataWrapper(); + dashboardGadgetDataWrapper2.setContext("Feature-non-compliant-device-counts-by-ownerships"); + dashboardGadgetDataWrapper2.setGroupingAttribute(OWNERSHIP); + dashboardGadgetDataWrapper2.setData(featureNonCompliantDeviceCountsByOwnerships); + + List responsePayload = new ArrayList<>(); + responsePayload.add(dashboardGadgetDataWrapper1); + responsePayload.add(dashboardGadgetDataWrapper2); + + return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + } + + @GET + @Path("filtered-device-count-over-total") + public Response getFilteredDeviceCountOverTotal(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus, + @QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability, + @QueryParam(PLATFORM) String platform, + @QueryParam(OWNERSHIP) String ownership) { + + // getting gadget data service + GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); + + // constructing filter set + ExtendedFilterSet filterSet = new ExtendedFilterSet(); + filterSet.setConnectivityStatus(connectivityStatus); + filterSet.setPotentialVulnerability(potentialVulnerability); + filterSet.setPlatform(platform); + filterSet.setOwnership(ownership); + + // creating filteredDeviceCount Data Wrapper + DeviceCountByGroup filteredDeviceCount; + try { + filteredDeviceCount = gadgetDataService.getDeviceCount(filterSet); + } catch (InvalidPotentialVulnerabilityValueException e) { + log.error("Bad request and error occurred @ Gadget Data Service layer due to " + + "invalid (query) parameter value. This was while trying to execute relevant data service " + + "function @ Dashboard API layer to retrieve a filtered device count over the total.", e); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY).build(); + } catch (DataAccessLayerException e) { + log.error("An internal error occurred while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve a filtered device count over the total.", e); + return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). + entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); + } + + // creating TotalDeviceCount Data Wrapper + DeviceCountByGroup totalDeviceCount; + try { + totalDeviceCount = gadgetDataService.getTotalDeviceCount(); + } catch (DataAccessLayerException e) { + log.error("An internal error occurred while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve the total device count over filtered.", e); + return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). + entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); + } + + List filteredDeviceCountOverTotalDataWrapper = new ArrayList<>(); + filteredDeviceCountOverTotalDataWrapper.add(filteredDeviceCount); + filteredDeviceCountOverTotalDataWrapper.add(totalDeviceCount); + + DashboardGadgetDataWrapper dashboardGadgetDataWrapper = new DashboardGadgetDataWrapper(); + dashboardGadgetDataWrapper.setContext("Filtered-device-count-over-total"); + dashboardGadgetDataWrapper.setGroupingAttribute(null); + dashboardGadgetDataWrapper.setData(filteredDeviceCountOverTotalDataWrapper); + + List responsePayload = new ArrayList<>(); + responsePayload.add(dashboardGadgetDataWrapper); + + return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + } + + @GET + @Path("feature-non-compliant-device-count-over-total") + public Response getFeatureNonCompliantDeviceCountOverTotal(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode, + @QueryParam(PLATFORM) String platform, + @QueryParam(OWNERSHIP) String ownership) { + + // getting gadget data service + GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); + + // constructing filter set + BasicFilterSet filterSet = new BasicFilterSet(); + filterSet.setPlatform(platform); + filterSet.setOwnership(ownership); + + // creating featureNonCompliantDeviceCount Data Wrapper + DeviceCountByGroup featureNonCompliantDeviceCount; + try { + featureNonCompliantDeviceCount = gadgetDataService. + getFeatureNonCompliantDeviceCount(nonCompliantFeatureCode, filterSet); + } catch (InvalidFeatureCodeValueException e) { + log.error("Bad request and error occurred @ Gadget Data Service layer due to " + + "invalid (query) parameter value. This was while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve a feature non-compliant device count over the total.", e); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE).build(); + } catch (DataAccessLayerException e) { + log.error("An internal error occurred while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve a feature non-compliant device count over the total.", e); + return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). + entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); + } + + // creating TotalDeviceCount Data Wrapper + DeviceCountByGroup totalDeviceCount; + try { + totalDeviceCount = gadgetDataService.getTotalDeviceCount(); + } catch (DataAccessLayerException e) { + log.error("An internal error occurred while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve the total device count over filtered feature non-compliant.", e); + return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). + entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); + } + + List featureNonCompliantDeviceCountOverTotalDataWrapper = new ArrayList<>(); + featureNonCompliantDeviceCountOverTotalDataWrapper.add(featureNonCompliantDeviceCount); + featureNonCompliantDeviceCountOverTotalDataWrapper.add(totalDeviceCount); + + DashboardGadgetDataWrapper dashboardGadgetDataWrapper = new DashboardGadgetDataWrapper(); + dashboardGadgetDataWrapper.setContext("Feature-non-compliant-device-count-over-total"); + dashboardGadgetDataWrapper.setGroupingAttribute(null); + dashboardGadgetDataWrapper.setData(featureNonCompliantDeviceCountOverTotalDataWrapper); + + List responsePayload = new ArrayList<>(); + responsePayload.add(dashboardGadgetDataWrapper); + + return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + } + + @GET + @Path("devices-with-details") + public Response getDevicesWithDetails(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus, + @QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability, + @QueryParam(PLATFORM) String platform, + @QueryParam(OWNERSHIP) String ownership, + @QueryParam(PAGINATION_ENABLED) String paginationEnabled, + @QueryParam(START_INDEX) int startIndex, + @QueryParam(RESULT_COUNT) int resultCount) { + + if (paginationEnabled == null) { + + log.error("Bad request on retrieving a filtered set of devices with details @ " + + "Dashboard API layer. " + REQUIRED_QUERY_PARAM_VALUE_PAGINATION_ENABLED); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(REQUIRED_QUERY_PARAM_VALUE_PAGINATION_ENABLED).build(); + + } else if (FLAG_TRUE.equals(paginationEnabled)) { + + // getting gadget data service + GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); + + // constructing filter set + ExtendedFilterSet filterSet = new ExtendedFilterSet(); + filterSet.setConnectivityStatus(connectivityStatus); + filterSet.setPotentialVulnerability(potentialVulnerability); + filterSet.setPlatform(platform); + filterSet.setOwnership(ownership); + + PaginationResult paginationResult; + try { + paginationResult = gadgetDataService. + getDevicesWithDetails(filterSet, startIndex, resultCount); + } catch (InvalidPotentialVulnerabilityValueException e) { + log.error("Bad request and error occurred @ Gadget Data Service layer due to " + + "invalid (query) parameter value. This was while trying to execute relevant data service " + + "function @ Dashboard API layer to retrieve a filtered set of devices with details.", e); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY).build(); + } catch (InvalidStartIndexValueException e) { + log.error("Bad request and error occurred @ Gadget Data Service layer due to " + + "invalid (query) parameter value. This was while trying to execute relevant data service " + + "function @ Dashboard API layer to retrieve a filtered set of devices with details.", e); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(INVALID_QUERY_PARAM_VALUE_START_INDEX).build(); + } catch (InvalidResultCountValueException e) { + log.error("Bad request and error occurred @ Gadget Data Service layer due to " + + "invalid (query) parameter value. This was while trying to execute relevant data service " + + "function @ Dashboard API layer to retrieve a filtered set of devices with details.", e); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(INVALID_QUERY_PARAM_VALUE_RESULT_COUNT).build(); + } catch (DataAccessLayerException e) { + log.error("An internal error occurred while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve a filtered set of devices with details.", e); + return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). + entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); + } + + DashboardPaginationGadgetDataWrapper + dashboardPaginationGadgetDataWrapper = new DashboardPaginationGadgetDataWrapper(); + dashboardPaginationGadgetDataWrapper.setContext("Filtered-and-paginated-devices-with-details"); + dashboardPaginationGadgetDataWrapper.setGroupingAttribute(null); + dashboardPaginationGadgetDataWrapper.setData(paginationResult.getData()); + dashboardPaginationGadgetDataWrapper.setTotalRecordCount(paginationResult.getRecordsTotal()); + + List responsePayload = new ArrayList<>(); + responsePayload.add(dashboardPaginationGadgetDataWrapper); + + return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + + } else if (FLAG_FALSE.equals(paginationEnabled)) { + + // getting gadget data service + GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); + + // constructing filter set + ExtendedFilterSet filterSet = new ExtendedFilterSet(); + filterSet.setConnectivityStatus(connectivityStatus); + filterSet.setPotentialVulnerability(potentialVulnerability); + filterSet.setPlatform(platform); + filterSet.setOwnership(ownership); + + List devicesWithDetails; + try { + devicesWithDetails = gadgetDataService.getDevicesWithDetails(filterSet); + } catch (InvalidPotentialVulnerabilityValueException e) { + log.error("Bad request and error occurred @ Gadget Data Service layer due to " + + "invalid (query) parameter value. This was while trying to execute relevant data service " + + "function @ Dashboard API layer to retrieve a filtered set of devices with details.", e); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY).build(); + } catch (DataAccessLayerException e) { + log.error("An internal error occurred while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve a filtered set of devices with details.", e); + return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). + entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); + } + + DashboardGadgetDataWrapper dashboardGadgetDataWrapper = new DashboardGadgetDataWrapper(); + dashboardGadgetDataWrapper.setContext("Filtered-devices-with-details"); + dashboardGadgetDataWrapper.setGroupingAttribute(null); + dashboardGadgetDataWrapper.setData(devicesWithDetails); + + List responsePayload = new ArrayList<>(); + responsePayload.add(dashboardGadgetDataWrapper); + + return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + + } else { + + log.error("Bad request on retrieving a filtered set of devices with details @ " + + "Dashboard API layer. " + INVALID_QUERY_PARAM_VALUE_PAGINATION_ENABLED); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(INVALID_QUERY_PARAM_VALUE_PAGINATION_ENABLED).build(); + + } + } + + @GET + @Path("feature-non-compliant-devices-with-details") + public Response getFeatureNonCompliantDevicesWithDetails(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode, + @QueryParam(PLATFORM) String platform, + @QueryParam(OWNERSHIP) String ownership, + @QueryParam(PAGINATION_ENABLED) String paginationEnabled, + @QueryParam(START_INDEX) int startIndex, + @QueryParam(RESULT_COUNT) int resultCount) { + if (paginationEnabled == null) { + + log.error("Bad request on retrieving a filtered set of feature non-compliant devices with " + + "details @ Dashboard API layer. " + REQUIRED_QUERY_PARAM_VALUE_PAGINATION_ENABLED); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(REQUIRED_QUERY_PARAM_VALUE_PAGINATION_ENABLED).build(); + + } else if (FLAG_TRUE.equals(paginationEnabled)) { + + // getting gadget data service + GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); + + // constructing filter set + BasicFilterSet filterSet = new BasicFilterSet(); + filterSet.setPlatform(platform); + filterSet.setOwnership(ownership); + + PaginationResult paginationResult; + try { + paginationResult = gadgetDataService. + getFeatureNonCompliantDevicesWithDetails(nonCompliantFeatureCode, + filterSet, startIndex, resultCount); + } catch (InvalidFeatureCodeValueException e) { + log.error("Bad request and error occurred @ Gadget Data Service layer due to " + + "invalid (query) parameter value. This was while trying to execute relevant data service " + + "function @ Dashboard API layer to retrieve a filtered set of " + + "feature non-compliant devices with details.", e); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE).build(); + } catch (InvalidStartIndexValueException e) { + log.error("Bad request and error occurred @ Gadget Data Service layer due to " + + "invalid (query) parameter value. This was while trying to execute relevant data service " + + "function @ Dashboard API layer to retrieve a filtered set of " + + "feature non-compliant devices with details.", e); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(INVALID_QUERY_PARAM_VALUE_START_INDEX).build(); + } catch (InvalidResultCountValueException e) { + log.error("Bad request and error occurred @ Gadget Data Service layer due to " + + "invalid (query) parameter value. This was while trying to execute relevant data service " + + "function @ Dashboard API layer to retrieve a filtered set of " + + "feature non-compliant devices with details.", e); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(INVALID_QUERY_PARAM_VALUE_RESULT_COUNT).build(); + } catch (DataAccessLayerException e) { + log.error("An internal error occurred while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve a filtered set of feature " + + "non-compliant devices with details.", e); + return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). + entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); + } + + DashboardPaginationGadgetDataWrapper + dashboardPaginationGadgetDataWrapper = new DashboardPaginationGadgetDataWrapper(); + dashboardPaginationGadgetDataWrapper. + setContext("Filtered-and-paginated-feature-non-compliant-devices-with-details"); + dashboardPaginationGadgetDataWrapper.setGroupingAttribute(null); + dashboardPaginationGadgetDataWrapper.setData(paginationResult.getData()); + dashboardPaginationGadgetDataWrapper.setTotalRecordCount(paginationResult.getRecordsTotal()); + + List responsePayload = new ArrayList<>(); + responsePayload.add(dashboardPaginationGadgetDataWrapper); + + return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + + } else if (FLAG_FALSE.equals(paginationEnabled)) { + + // getting gadget data service + GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService(); + + // constructing filter set + BasicFilterSet filterSet = new BasicFilterSet(); + filterSet.setPlatform(platform); + filterSet.setOwnership(ownership); + + List featureNonCompliantDevicesWithDetails; + try { + featureNonCompliantDevicesWithDetails = gadgetDataService. + getFeatureNonCompliantDevicesWithDetails(nonCompliantFeatureCode, filterSet); + } catch (InvalidFeatureCodeValueException e) { + log.error("Bad request and error occurred @ Gadget Data Service layer due to " + + "invalid (query) parameter value. This was while trying to execute relevant data service " + + "function @ Dashboard API layer to retrieve a filtered set of " + + "feature non-compliant devices with details.", e); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE).build(); + } catch (DataAccessLayerException e) { + log.error("An internal error occurred while trying to execute relevant data service function " + + "@ Dashboard API layer to retrieve a filtered set of feature " + + "non-compliant devices with details.", e); + return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR). + entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build(); + } + + DashboardGadgetDataWrapper dashboardGadgetDataWrapper = new DashboardGadgetDataWrapper(); + dashboardGadgetDataWrapper.setContext("Filtered-feature-non-compliant-devices-with-details"); + dashboardGadgetDataWrapper.setGroupingAttribute(null); + dashboardGadgetDataWrapper.setData(featureNonCompliantDevicesWithDetails); + + List responsePayload = new ArrayList<>(); + responsePayload.add(dashboardGadgetDataWrapper); + + return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + + } else { + + log.error("Bad request on retrieving a filtered set of feature non-compliant devices with " + + "details @ Dashboard API layer. " + INVALID_QUERY_PARAM_VALUE_PAGINATION_ENABLED); + return Response.status(HttpStatus.SC_BAD_REQUEST). + entity(INVALID_QUERY_PARAM_VALUE_PAGINATION_ENABLED).build(); + + } + } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/api/operation-api.jag b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/api/operation-api.jag index 7465f21649..ac30769bb4 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/api/operation-api.jag +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/api/operation-api.jag @@ -51,7 +51,12 @@ if (uriMatcher.match("/{context}/api/operation/paginate")) { } else { response["status"] = restAPIResponse["status"]; if (restAPIResponse["responseText"]) { - response["content"] = parse(restAPIResponse["responseText"]); + var responseText = ""; + try { + response["content"] = parse(restAPIResponse["responseText"]); + } catch (e) { + responseText = restAPIResponse["responseText"]; + } } } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/oauth/token-protected-service-invokers.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/oauth/token-protected-service-invokers.js index 1600618775..b79e7c6a07 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/oauth/token-protected-service-invokers.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/oauth/token-protected-service-invokers.js @@ -45,12 +45,13 @@ var invokers = function () { * If the token pair is not set in the session, this will return null. */ privateMethods.getAccessToken = function () { - var tokenPair = session.get(constants["TOKEN_PAIR"]); - if (tokenPair) { - return parse(tokenPair)["accessToken"]; - } else { - return null; + if (session) { + var tokenPair = session.get(constants["TOKEN_PAIR"]); + if (tokenPair) { + return parse(tokenPair)["accessToken"]; + } } + return null; }; /** @@ -80,7 +81,7 @@ var invokers = function () { if (devicemgtProps["isOAuthEnabled"]) { var accessToken = privateMethods.getAccessToken(); - if (!accessToken) { + if (accessToken == null) { userModule.logout(function () { response.sendRedirect(devicemgtProps["appContext"] + "login"); }); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.platform.configuration/configuration.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.platform.configuration/configuration.hbs index e856208e3a..1fdef264e8 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.platform.configuration/configuration.hbs +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.platform.configuration/configuration.hbs @@ -35,16 +35,26 @@
- - - + + + + + + + + General Configurations {{#each deviceTypes}} - - - + + + + + + + + {{label}} Configurations {{/each}} @@ -79,9 +89,7 @@ placeholder="[ Required Field ]">
- +
@@ -107,12 +115,8 @@ "Exit" to complete the process and go back to the dashboard.
- + onclick="window.location.href='{{@app.context}}/platform-configuration'">Go back to configurations + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.theme/public/css/custom-common.css b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.theme/public/css/custom-common.css index 0fede3d552..a0e5807636 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.theme/public/css/custom-common.css +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.theme/public/css/custom-common.css @@ -16,10 +16,6 @@ * under the License. */ -.wr-content { - padding-left: 33px; - padding-right: 33px; -} .wr-input-control .helper { font-weight: 100; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.theme/public/css/custom-desktop.css b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.theme/public/css/custom-desktop.css index fe75cb54f0..6d253dcc0d 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.theme/public/css/custom-desktop.css +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.theme/public/css/custom-desktop.css @@ -167,7 +167,7 @@ pre { position: absolute; right: 0; height: 10000px; - width: 60px; + width: 20px; } body.inverse .fade-edge:after { @@ -181,7 +181,7 @@ body.inverse .fade-edge:after { position: absolute; right: 0; height: 10000px; - width: 60px; + width: 20px; } .visible-block { @@ -4552,6 +4552,15 @@ a.wr-side-panel-toggle-btn.selected { background: #f4f4f4; } +.wr-advance-operations .wr-hidden-operations-nav a.selected span span > i{ + color: #526A84; +} +.wr-advance-operations .wr-hidden-operations-nav a.selected span span > i.fw.fw-circle.fw-stack-2x{ + color: #fff; +} +.wr-advance-operations .wr-hidden-operations-nav a.selected span span > i.fw.fw-circle.fw-stack-2x.fw-stroke.fw-inverse{ + color: #526A84; +} .wr-advance-operations .wr-hidden-operations-nav a.selected, .wr-hidden-operations .wr-hidden-operations-nav a.selected:hover { color: #ffffff; background: #526A84; @@ -5515,7 +5524,7 @@ ul.listing li.grouped-input ul.grouped-child-input.disabled { position: absolute; right: 0; height: 10000px; - width: 60px; + width: 20px; } body.inverse .fade-edge:after { content: ""; @@ -5528,7 +5537,7 @@ body.inverse .fade-edge:after { position: absolute; right: 0; height: 10000px; - width: 60px; + width: 20px; } /* ======================================================================== @@ -5752,7 +5761,7 @@ body.inverse .fade-edge:after { position: absolute; right: 0; height: 10000px; - width: 60px; + width: 20px; } .table.table-selectable > tbody > tr:hover { cursor: pointer; @@ -6495,3 +6504,6 @@ select > option:hover { /*background:url('http://cdn-sg1.pgimgs.com/images/pg/close-button.png') no-repeat center center;*/ } +.label-bold{ + font-weight:400; +}