diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/metadata/mgt/DeviceStatusManagementServiceImpl.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/metadata/mgt/DeviceStatusManagementServiceImpl.java index 761d2b98fc..3d4d557a79 100644 --- a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/metadata/mgt/DeviceStatusManagementServiceImpl.java +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/metadata/mgt/DeviceStatusManagementServiceImpl.java @@ -34,11 +34,11 @@ import io.entgra.device.mgt.core.device.mgt.core.metadata.mgt.dao.MetadataDAO; import io.entgra.device.mgt.core.device.mgt.core.metadata.mgt.dao.MetadataManagementDAOException; import io.entgra.device.mgt.core.device.mgt.core.metadata.mgt.dao.MetadataManagementDAOFactory; import io.entgra.device.mgt.core.device.mgt.core.metadata.mgt.dao.util.MetadataConstants; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.lang.reflect.Type; -import java.sql.SQLException; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -83,6 +83,12 @@ public class DeviceStatusManagementServiceImpl implements DeviceStatusManagement } } + /** + * Adds default device status filters for a given tenant. + * + * @param tenantId the tenant ID for which to add the device status filters. + * @throws MetadataManagementException if an error occurs while adding the metadata or managing the transaction. + */ private void addDefaultDeviceStatusFilters(int tenantId) throws MetadataManagementException { try { MetadataManagementDAOFactory.beginTransaction(); @@ -106,6 +112,12 @@ public class DeviceStatusManagementServiceImpl implements DeviceStatusManagement } } + /** + * Adds default device status filter enable or not for a given tenant. + * + * @param tenantId the tenant ID for which to add the device status filters. + * @throws MetadataManagementException if an error occurs while adding the metadata or managing the transaction. + */ private void addDefaultDeviceStatusCheck(int tenantId) throws MetadataManagementException { try { MetadataManagementDAOFactory.beginTransaction(); @@ -137,6 +149,9 @@ public class DeviceStatusManagementServiceImpl implements DeviceStatusManagement @Override public void updateDefaultDeviceStatusFilters(int tenantId, String deviceType, List deviceStatus) throws MetadataManagementException { try { + if (StringUtils.isEmpty(deviceType)) { + throw new IllegalArgumentException("Device type must not be empty or null"); + } MetadataManagementDAOFactory.beginTransaction(); // Retrieve the current device status metadata Metadata metadata = metadataDAO.getMetadata(tenantId, MetadataConstants.ALLOWED_DEVICE_STATUS_META_KEY); @@ -147,7 +162,7 @@ public class DeviceStatusManagementServiceImpl implements DeviceStatusManagement // Find the status for the specified deviceType for (AllowedDeviceStatus status : currentStatusList) { - if (status.getType().equalsIgnoreCase(deviceType)) { + if (deviceType.equalsIgnoreCase(status.getType())) { // Update the status list for the specified deviceType status.setStatus(deviceStatus); break; @@ -206,7 +221,7 @@ public class DeviceStatusManagementServiceImpl implements DeviceStatusManagement public List getDeviceStatusFilters(String deviceType, int tenantId) throws MetadataManagementException { List statusList = retrieveAndParseMetadata(tenantId); for (AllowedDeviceStatus status : statusList) { - if (status.getType().equalsIgnoreCase(deviceType)) { + if (deviceType.equalsIgnoreCase(status.getType())) { return status.getStatus(); } } @@ -214,6 +229,12 @@ public class DeviceStatusManagementServiceImpl implements DeviceStatusManagement return Collections.emptyList(); } + /** + * Retrieves and parses the allowed device status metadata for the specified tenant. + * @param tenantId the tenant ID for which to retrieve and parse the metadata. + * @return a list of {@link AllowedDeviceStatus} objects parsed from the metadata. + * @throws MetadataManagementException if an error occurs while retrieving or parsing the metadata. + */ private List retrieveAndParseMetadata(int tenantId) throws MetadataManagementException { MetadataManagementService metadataManagementService = new MetadataManagementServiceImpl(); Metadata metadata = metadataManagementService.retrieveMetadata(MetadataConstants.ALLOWED_DEVICE_STATUS_META_KEY); @@ -245,6 +266,9 @@ public class DeviceStatusManagementServiceImpl implements DeviceStatusManagement @Override public boolean isDeviceStatusValid(String deviceType, String deviceStatus, int tenantId) throws MetadataManagementException { + if (StringUtils.isEmpty(deviceType)) { + throw new IllegalArgumentException("Device type must not be empty or null"); + } MetadataManagementService metadataManagementService = new MetadataManagementServiceImpl(); Metadata metadata = metadataManagementService.retrieveMetadata(MetadataConstants.ALLOWED_DEVICE_STATUS_META_KEY); String metaValue; @@ -260,7 +284,7 @@ public class DeviceStatusManagementServiceImpl implements DeviceStatusManagement List statusList = gson.fromJson(metaValue, listType); for (AllowedDeviceStatus status : statusList) { - if (status.getType().equalsIgnoreCase(deviceType)) { + if (deviceType.equalsIgnoreCase(status.getType())) { List allowedStatus = status.getStatus(); return allowedStatus.contains(deviceStatus); } @@ -290,7 +314,6 @@ public class DeviceStatusManagementServiceImpl implements DeviceStatusManagement Metadata metadata = new Metadata(); metadata.setMetaKey(MetadataConstants.ALLOWED_DEVICE_STATUS_META_KEY); metadata.setMetaValue(deviceStatusItemsJsonString); - return metadata; } @@ -300,7 +323,6 @@ public class DeviceStatusManagementServiceImpl implements DeviceStatusManagement Metadata metadata = new Metadata(); metadata.setMetaKey(MetadataConstants.IS_DEVICE_STATUS_CHECK_META_KEY); metadata.setMetaValue(String.valueOf(deviceStatusCheck)); - return metadata; } @@ -316,7 +338,6 @@ public class DeviceStatusManagementServiceImpl implements DeviceStatusManagement log.debug("DeviceStatusConfigurations is null."); } } - return deviceStatusItems; }