From 0f39b2f2536a4c65f15cedb9ac1f767c09ce656d Mon Sep 17 00:00:00 2001 From: Farheen Boosary Date: Mon, 29 Mar 2021 07:49:47 +0000 Subject: [PATCH] Handle execution of queries contain IN clause with empty array --- .../GenericApplicationDAOImpl.java | 14 ++++++-- .../GenericApplicationReleaseDAOImpl.java | 6 +++- .../dao/impl/review/GenericReviewDAOImpl.java | 14 +++++++- .../dao/impl/review/OracleReviewDAOImpl.java | 11 +++++- .../impl/review/SQLServerReviewDAOImpl.java | 11 +++++- .../GenericSubscriptionDAOImpl.java | 36 ++++++++++++++----- .../core/dao/impl/AbstractDeviceDAOImpl.java | 17 +++++++++ .../core/dao/impl/AbstractEventConfigDAO.java | 15 ++++++++ .../core/dao/impl/AbstractGroupDAOImpl.java | 3 ++ .../mgt/core/dao/impl/GeofenceDAOImpl.java | 6 ++++ .../dao/impl/device/GenericDeviceDAOImpl.java | 8 ++++- .../dao/impl/device/OracleDeviceDAOImpl.java | 8 ++++- .../impl/device/PostgreSQLDeviceDAOImpl.java | 8 ++++- .../impl/device/SQLServerDeviceDAOImpl.java | 8 ++++- 14 files changed, 146 insertions(+), 19 deletions(-) diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/GenericApplicationDAOImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/GenericApplicationDAOImpl.java index 845c4626d5..a4d9d4a87a 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/GenericApplicationDAOImpl.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/GenericApplicationDAOImpl.java @@ -24,6 +24,7 @@ import org.wso2.carbon.device.application.mgt.common.AppLifecycleState; import org.wso2.carbon.device.application.mgt.common.dto.ApplicationDTO; import org.wso2.carbon.device.application.mgt.common.dto.CategoryDTO; import org.wso2.carbon.device.application.mgt.common.Filter; +import org.wso2.carbon.device.application.mgt.common.dto.ReviewDTO; import org.wso2.carbon.device.application.mgt.common.dto.TagDTO; import org.wso2.carbon.device.application.mgt.common.exception.DBConnectionException; import org.wso2.carbon.device.application.mgt.core.dao.ApplicationDAO; @@ -491,6 +492,9 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic + " from the database"); } try { + if (packageNames.isEmpty()) { + return new ArrayList<>(); + } Connection conn = this.getDBConnection(); int index = 1; StringJoiner joiner = new StringJoiner(",", @@ -826,9 +830,12 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic log.debug("Request received in DAO Layer to get category ids for given category names"); } try { + List tagIds = new ArrayList<>(); + if (categoryNames.isEmpty()) { + return tagIds; + } Connection conn = this.getDBConnection(); int index = 1; - List tagIds = new ArrayList<>(); StringJoiner joiner = new StringJoiner(",", "SELECT AP_APP_CATEGORY.ID AS ID FROM AP_APP_CATEGORY WHERE AP_APP_CATEGORY.CATEGORY IN (", ") AND TENANT_ID = ?"); @@ -1117,9 +1124,12 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic log.debug("Request received in DAO Layer to get tag ids for given tag names"); } try { + List tagIds = new ArrayList<>(); + if (tagNames.isEmpty()) { + return tagIds; + } Connection conn = this.getDBConnection(); int index = 1; - List tagIds = new ArrayList<>(); StringJoiner joiner = new StringJoiner(",", "SELECT AP_APP_TAG.ID AS ID FROM AP_APP_TAG WHERE AP_APP_TAG.TAG IN (", ") AND TENANT_ID = ?"); diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/release/GenericApplicationReleaseDAOImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/release/GenericApplicationReleaseDAOImpl.java index ffe45ba3d3..c03ab8bea2 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/release/GenericApplicationReleaseDAOImpl.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/release/GenericApplicationReleaseDAOImpl.java @@ -564,6 +564,11 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements public List getReleaseByPackages(List packages, int tenantId) throws ApplicationManagementDAOException { + List releaseDTOs = new ArrayList<>(); + if (packages.isEmpty()) { + return releaseDTOs; + } + String sql = "SELECT " + "AR.ID AS RELEASE_ID, " + "AR.DESCRIPTION AS RELEASE_DESCRIPTION, " @@ -600,7 +605,6 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements } statement.setInt(index, tenantId); try (ResultSet resultSet = statement.executeQuery()) { - List releaseDTOs = new ArrayList<>(); while (resultSet.next()) { releaseDTOs.add(DAOUtil.constructAppReleaseDTO(resultSet)); } diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/review/GenericReviewDAOImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/review/GenericReviewDAOImpl.java index a727c52359..24052730b3 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/review/GenericReviewDAOImpl.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/review/GenericReviewDAOImpl.java @@ -110,6 +110,9 @@ public class GenericReviewDAOImpl extends AbstractDAOImpl implements ReviewDAO { + "application. Commenting user: " + username + " and tenant-id: " + tenantId); } try { + if (appReleaseIds.isEmpty()) { + return false; + } Connection conn = this.getDBConnection(); StringJoiner joiner = new StringJoiner(",", "SELECT rv.ID FROM AP_APP_REVIEW rv WHERE rv.AP_APP_RELEASE_ID IN (", @@ -283,6 +286,9 @@ public class GenericReviewDAOImpl extends AbstractDAOImpl implements ReviewDAO { log.debug("DAO request is received to Get all active application reviews."); } try { + if (releaseIds.isEmpty()) { + return new ArrayList<>(); + } Connection conn = this.getDBConnection(); StringJoiner joiner = new StringJoiner(",", "SELECT " + "AP_APP_REVIEW.ID AS ID, " @@ -336,6 +342,9 @@ public class GenericReviewDAOImpl extends AbstractDAOImpl implements ReviewDAO { log.debug("DAO request is received to Get all active application reviews of user " + username); } try { + if (releaseIds.isEmpty()) { + return new ArrayList<>(); + } Connection conn = this.getDBConnection(); StringJoiner joiner = new StringJoiner(",", "SELECT " @@ -473,6 +482,10 @@ public class GenericReviewDAOImpl extends AbstractDAOImpl implements ReviewDAO { log.debug("DAO request is received to Get all application rating values of an application."); } try { + List reviews = new ArrayList<>(); + if (uuids.isEmpty()) { + return reviews; + } int index = 1; Connection conn = this.getDBConnection(); StringJoiner joiner = new StringJoiner(",", @@ -487,7 +500,6 @@ public class GenericReviewDAOImpl extends AbstractDAOImpl implements ReviewDAO { } ps.setInt(index, tenantId); try (ResultSet rs = ps.executeQuery()) { - List reviews = new ArrayList<>(); while (rs.next()) { reviews.add(rs.getInt("RATING")); } diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/review/OracleReviewDAOImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/review/OracleReviewDAOImpl.java index 2231560930..ac252e52f7 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/review/OracleReviewDAOImpl.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/review/OracleReviewDAOImpl.java @@ -97,6 +97,9 @@ public class OracleReviewDAOImpl extends GenericReviewDAOImpl { log.debug("DAO request is received to Get all active application reviews."); } try { + if (releaseIds.isEmpty()) { + return new ArrayList<>(); + } Connection conn = this.getDBConnection(); StringJoiner joiner = new StringJoiner(",", "SELECT " + "AP_APP_REVIEW.ID AS ID, " @@ -150,6 +153,9 @@ public class OracleReviewDAOImpl extends GenericReviewDAOImpl { log.debug("DAO request is received to Get all active application reviews of user " + username); } try { + if (releaseIds.isEmpty()) { + return new ArrayList<>(); + } Connection conn = this.getDBConnection(); StringJoiner joiner = new StringJoiner(",", "SELECT " @@ -203,6 +209,10 @@ public class OracleReviewDAOImpl extends GenericReviewDAOImpl { log.debug("DAO request is received to Get all application rating values of an application."); } try { + List reviews = new ArrayList<>(); + if (uuids.isEmpty()) { + return reviews; + } int index = 1; Connection conn = this.getDBConnection(); StringJoiner joiner = new StringJoiner(",", @@ -217,7 +227,6 @@ public class OracleReviewDAOImpl extends GenericReviewDAOImpl { } ps.setInt(index, tenantId); try (ResultSet rs = ps.executeQuery()) { - List reviews = new ArrayList<>(); while (rs.next()) { reviews.add(rs.getInt("RATING")); } diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/review/SQLServerReviewDAOImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/review/SQLServerReviewDAOImpl.java index d169a6190a..213d619b0c 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/review/SQLServerReviewDAOImpl.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/review/SQLServerReviewDAOImpl.java @@ -97,6 +97,9 @@ public class SQLServerReviewDAOImpl extends GenericReviewDAOImpl { log.debug("DAO request is received to Get all active application reviews."); } try { + if (releaseIds.isEmpty()) { + return new ArrayList<>(); + } Connection conn = this.getDBConnection(); StringJoiner joiner = new StringJoiner(",", "SELECT " + "AP_APP_REVIEW.ID AS ID, " @@ -150,6 +153,9 @@ public class SQLServerReviewDAOImpl extends GenericReviewDAOImpl { log.debug("DAO request is received to Get all active application reviews of user " + username); } try { + if (releaseIds.isEmpty()) { + return new ArrayList<>(); + } Connection conn = this.getDBConnection(); StringJoiner joiner = new StringJoiner(",", "SELECT " @@ -203,6 +209,10 @@ public class SQLServerReviewDAOImpl extends GenericReviewDAOImpl { log.debug("DAO request is received to Get all application rating values of an application."); } try { + List reviews = new ArrayList<>(); + if (uuids.isEmpty()) { + return reviews; + } int index = 1; Connection conn = this.getDBConnection(); StringJoiner joiner = new StringJoiner(",", @@ -217,7 +227,6 @@ public class SQLServerReviewDAOImpl extends GenericReviewDAOImpl { } ps.setInt(index, tenantId); try (ResultSet rs = ps.executeQuery()) { - List reviews = new ArrayList<>(); while (rs.next()) { reviews.add(rs.getInt("RATING")); } diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/subscription/GenericSubscriptionDAOImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/subscription/GenericSubscriptionDAOImpl.java index 576eec9a6c..8c3f7da4d4 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/subscription/GenericSubscriptionDAOImpl.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/subscription/GenericSubscriptionDAOImpl.java @@ -383,9 +383,12 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc log.debug("Request received in DAO Layer to get device subscriptions for given device ids."); } try { + Map deviceSubscriptionDTOHashMap = new HashMap<>(); + if (deviceIds.isEmpty()) { + return deviceSubscriptionDTOHashMap; + } Connection conn = this.getDBConnection(); int index = 1; - Map deviceSubscriptionDTOHashMap = new HashMap<>(); StringJoiner joiner = new StringJoiner(",", "SELECT " + "DS.ID AS ID, " @@ -439,9 +442,12 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc log.debug("Request received in DAO Layer to get already subscribed users for given list of user names."); } try { + List subscribedUsers = new ArrayList<>(); + if (users.isEmpty()) { + return subscribedUsers; + } Connection conn = this.getDBConnection(); int index = 1; - List subscribedUsers = new ArrayList<>(); StringJoiner joiner = new StringJoiner(",", "SELECT US.USER_NAME AS USER_NAME " + "FROM AP_USER_SUBSCRIPTION US " @@ -479,9 +485,12 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc log.debug("Request received in DAO Layer to get already subscribed role names for given list of roles."); } try { + List subscribedRoles = new ArrayList<>(); + if (roles.isEmpty()) { + return subscribedRoles; + } Connection conn = this.getDBConnection(); int index = 1; - List subscribedUsers = new ArrayList<>(); StringJoiner joiner = new StringJoiner(",", "SELECT RS.ROLE_NAME AS ROLE " + "FROM AP_ROLE_SUBSCRIPTION RS " @@ -496,11 +505,11 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc ps.setInt(index, tenantId); try (ResultSet rs = ps.executeQuery()) { while (rs.next()) { - subscribedUsers.add(rs.getString("ROLE")); + subscribedRoles.add(rs.getString("ROLE")); } } } - return subscribedUsers; + return subscribedRoles; } catch (DBConnectionException e) { String msg = "Error occurred while obtaining the DB connection to getg subscribed roles for given role " + "names."; @@ -520,9 +529,12 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc log.debug("Request received in DAO Layer to get already subscribed groups for given list of groups."); } try { + List subscribedGroups = new ArrayList<>(); + if (groups.isEmpty()) { + return subscribedGroups; + } Connection conn = this.getDBConnection(); int index = 1; - List subscribedUsers = new ArrayList<>(); StringJoiner joiner = new StringJoiner(",", "SELECT GS.GROUP_NAME AS GROUP_NAME " + "FROM AP_GROUP_SUBSCRIPTION GS " @@ -537,11 +549,11 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc ps.setInt(index, tenantId); try (ResultSet rs = ps.executeQuery()) { while (rs.next()) { - subscribedUsers.add(rs.getString("GROUP_NAME")); + subscribedGroups.add(rs.getString("GROUP_NAME")); } } } - return subscribedUsers; + return subscribedGroups; } catch (DBConnectionException e) { String msg = "Error occurred while obtaining the DB connection to get already subscribed groups for given " + "group names."; @@ -562,9 +574,12 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc log.debug("Request received to DAO Layer to get already subscribed dvice Ids for given list of device Ids."); } try { + List subscribedDevices = new ArrayList<>(); + if (deviceIds.isEmpty()) { + return subscribedDevices; + } Connection conn = this.getDBConnection(); int index = 1; - List subscribedDevices = new ArrayList<>(); StringJoiner joiner = new StringJoiner(",", "SELECT DS.ID AS DEVICE_SUBSCRIPTION_ID " + "FROM AP_DEVICE_SUBSCRIPTION DS " @@ -695,6 +710,9 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc public boolean updateDeviceSubStatus(int deviceId, List deviceSubIds, String status, int tenantId) throws ApplicationManagementDAOException { try { + if (deviceSubIds.isEmpty()) { + return false; + } Connection conn = this.getDBConnection(); int index = 1; StringJoiner joiner = new StringJoiner(",", diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java index a7d7029c0f..749a31e0bb 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java @@ -380,6 +380,9 @@ public abstract class AbstractDeviceDAOImpl implements DeviceDAO { PreparedStatement stmt = null; ResultSet resultSet = null; List devices = new ArrayList<>(); + if (deviceProps.isEmpty()) { + return devices; + } try { List> outputLists = new ArrayList<>(); List deviceList = null; @@ -935,6 +938,9 @@ public abstract class AbstractDeviceDAOImpl implements DeviceDAO { throws DeviceManagementDAOException { List devices = new ArrayList<>(); try { + if (deviceStatuses.isEmpty()) { + return devices; + } Connection conn = this.getConnection(); StringJoiner joiner = new StringJoiner(",","SELECT " + "e1.OWNER, " @@ -1222,6 +1228,9 @@ public abstract class AbstractDeviceDAOImpl implements DeviceDAO { Connection conn; PreparedStatement stmt = null; try { + if (devices.isEmpty()) { + return false; + } conn = this.getConnection(); StringBuilder sql = new StringBuilder("UPDATE DM_ENROLMENT SET STATUS = ? WHERE DEVICE_ID IN " + "(SELECT d.ID FROM DM_DEVICE d, DM_DEVICE_TYPE t WHERE d.DEVICE_TYPE_ID = t.ID AND d.DEVICE_IDENTIFICATION IN ("); @@ -1913,6 +1922,10 @@ public abstract class AbstractDeviceDAOImpl implements DeviceDAO { int counter = 0; List devices = new ArrayList<>(); + if (deviceIdentifiers.isEmpty()) { + return devices; + } + StringJoiner joiner = new StringJoiner(",", "SELECT " + "d1.ID AS DEVICE_ID, d1.DESCRIPTION, d1.NAME AS DEVICE_NAME, d1.DEVICE_TYPE, " @@ -1961,6 +1974,10 @@ public abstract class AbstractDeviceDAOImpl implements DeviceDAO { int counter = 0; List devices = new ArrayList<>(); + if (deviceIdentifiers.isEmpty() || statuses.isEmpty()) { + return devices; + } + StringJoiner statusJoiner = new StringJoiner(",", "e.STATUS IN (", ") "); while (counter < statuses.size()) { statusJoiner.add("?"); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractEventConfigDAO.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractEventConfigDAO.java index 43609ed020..a0cc3889a0 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractEventConfigDAO.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractEventConfigDAO.java @@ -68,6 +68,9 @@ public abstract class AbstractEventConfigDAO implements EventConfigDAO { public List getEventsOfGroups(List groupIds, int tenantId) throws EventManagementDAOException { try { List eventList = new ArrayList<>(); + if (groupIds.isEmpty()) { + return eventList; + } Connection conn = this.getConnection(); String sql = "SELECT " + "E.ID AS EVENT_ID, " + @@ -145,6 +148,9 @@ public abstract class AbstractEventConfigDAO implements EventConfigDAO { @Override public void deleteEventGroupMappingRecordsByEventIds(List eventsIdsToDelete) throws EventManagementDAOException { try { + if (eventsIdsToDelete.isEmpty()) { + return; + } Connection conn = this.getConnection(); String sql = "DELETE FROM DM_DEVICE_EVENT_GROUP_MAPPING WHERE EVENT_ID IN (%s)"; String inClause = String.join(", ", Collections.nCopies(eventsIdsToDelete.size(), "?")); @@ -166,6 +172,9 @@ public abstract class AbstractEventConfigDAO implements EventConfigDAO { @Override public void deleteEventGroupMappingRecordsByGroupIds(List groupIdsToDelete) throws EventManagementDAOException { try { + if (groupIdsToDelete.isEmpty()) { + return; + } Connection conn = this.getConnection(); String sql = "DELETE FROM DM_DEVICE_EVENT_GROUP_MAPPING WHERE GROUP_ID IN (%s)"; String inClause = String.join(", ", Collections.nCopies(groupIdsToDelete.size(), "?")); @@ -230,6 +239,9 @@ public abstract class AbstractEventConfigDAO implements EventConfigDAO { public List getEventsById(List eventIdList) throws EventManagementDAOException { try { List eventList = new ArrayList<>(); + if (eventIdList.isEmpty()) { + return eventList; + } Connection conn = this.getConnection(); String sql = "SELECT " + "ID AS EVENT_ID, " + @@ -269,6 +281,9 @@ public abstract class AbstractEventConfigDAO implements EventConfigDAO { public List getGroupsOfEvents(List eventIdList) throws EventManagementDAOException { try { List groupIdList = new ArrayList<>(); + if (eventIdList.isEmpty()) { + return groupIdList; + } Connection conn = this.getConnection(); String sql = "SELECT " + "GROUP_ID " + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractGroupDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractGroupDAOImpl.java index 11e00c9f33..04d4bce584 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractGroupDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractGroupDAOImpl.java @@ -772,6 +772,9 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO { throws GroupManagementDAOException { List devices = new ArrayList<>(); try { + if (deviceStatuses.isEmpty()) { + return devices; + } Connection conn = GroupManagementDAOFactory.getConnection(); StringJoiner joiner = new StringJoiner(",","SELECT " + "d1.DEVICE_ID, " diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/GeofenceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/GeofenceDAOImpl.java index 5026434695..e0d1efa4d1 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/GeofenceDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/GeofenceDAOImpl.java @@ -421,6 +421,9 @@ public class GeofenceDAOImpl implements GeofenceDAO { public Map> getEventsOfGeoFences(List geofenceIds) throws DeviceManagementDAOException { try { Map> geoFenceEventMap = new HashMap<>(); + if (geofenceIds.isEmpty()) { + return geoFenceEventMap; + } Connection conn = this.getConnection(); String sql = "SELECT " + "E.ID AS EVENT_ID, " + @@ -490,6 +493,9 @@ public class GeofenceDAOImpl implements GeofenceDAO { public Set getGroupIdsOfGeoFences(List fenceIds) throws DeviceManagementDAOException { try { Set geoFenceGroupSet = new HashSet<>(); + if (fenceIds.isEmpty()) { + return geoFenceGroupSet; + } Connection conn = this.getConnection(); String sql = "SELECT " + "FENCE_ID, " + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/GenericDeviceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/GenericDeviceDAOImpl.java index 07a2882b3d..83615eb056 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/GenericDeviceDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/GenericDeviceDAOImpl.java @@ -883,6 +883,10 @@ public class GenericDeviceDAOImpl extends AbstractDeviceDAOImpl { Connection conn; try { + List devices = new ArrayList<>(); + if (deviceIds.isEmpty()) { + return devices; + } conn = this.getConnection(); int index = 1; @@ -937,7 +941,6 @@ public class GenericDeviceDAOImpl extends AbstractDeviceDAOImpl { ps.setInt(index, limitValue); try (ResultSet rs = ps.executeQuery()) { - List devices = new ArrayList<>(); while (rs.next()) { devices.add(DeviceManagementDAOUtil.loadDevice(rs)); } @@ -956,6 +959,9 @@ public class GenericDeviceDAOImpl extends AbstractDeviceDAOImpl { public int getSubscribedDeviceCount(List deviceIds, int tenantId, List status) throws DeviceManagementDAOException { try { + if (deviceIds.isEmpty()) { + return 0; + } Connection conn = this.getConnection(); int index = 1; StringJoiner joiner = new StringJoiner(",", diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/OracleDeviceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/OracleDeviceDAOImpl.java index b143136ef9..ed5a8c843c 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/OracleDeviceDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/OracleDeviceDAOImpl.java @@ -853,6 +853,10 @@ public class OracleDeviceDAOImpl extends AbstractDeviceDAOImpl { Connection conn; try { + List devices = new ArrayList<>(); + if (deviceIds.isEmpty()) { + return devices; + } conn = this.getConnection(); int index = 1; @@ -907,7 +911,6 @@ public class OracleDeviceDAOImpl extends AbstractDeviceDAOImpl { ps.setInt(index, limitValue); try (ResultSet rs = ps.executeQuery()) { - List devices = new ArrayList<>(); while (rs.next()) { devices.add(DeviceManagementDAOUtil.loadDevice(rs)); } @@ -926,6 +929,9 @@ public class OracleDeviceDAOImpl extends AbstractDeviceDAOImpl { public int getSubscribedDeviceCount(List deviceIds, int tenantId, List status) throws DeviceManagementDAOException { try { + if (deviceIds.isEmpty()) { + return 0; + } Connection conn = this.getConnection(); int index = 1; StringJoiner joiner = new StringJoiner(",", diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/PostgreSQLDeviceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/PostgreSQLDeviceDAOImpl.java index 4a7560f9f3..cfefbb8b3f 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/PostgreSQLDeviceDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/PostgreSQLDeviceDAOImpl.java @@ -833,6 +833,10 @@ public class PostgreSQLDeviceDAOImpl extends AbstractDeviceDAOImpl { Connection conn; try { + List devices = new ArrayList<>(); + if (deviceIds.isEmpty()) { + return devices; + } conn = this.getConnection(); int index = 1; @@ -887,7 +891,6 @@ public class PostgreSQLDeviceDAOImpl extends AbstractDeviceDAOImpl { ps.setInt(index, limitValue); try (ResultSet rs = ps.executeQuery()) { - List devices = new ArrayList<>(); while (rs.next()) { devices.add(DeviceManagementDAOUtil.loadDevice(rs)); } @@ -906,6 +909,9 @@ public class PostgreSQLDeviceDAOImpl extends AbstractDeviceDAOImpl { public int getSubscribedDeviceCount(List deviceIds, int tenantId, List status) throws DeviceManagementDAOException { try { + if (deviceIds.isEmpty()) { + return 0; + } Connection conn = this.getConnection(); int index = 1; StringJoiner joiner = new StringJoiner(",", diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/SQLServerDeviceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/SQLServerDeviceDAOImpl.java index 11112c4655..755f882a46 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/SQLServerDeviceDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/SQLServerDeviceDAOImpl.java @@ -699,6 +699,10 @@ public class SQLServerDeviceDAOImpl extends AbstractDeviceDAOImpl { Connection conn; try { + List devices = new ArrayList<>(); + if (deviceIds.isEmpty()) { + return devices; + } conn = this.getConnection(); int index = 1; @@ -753,7 +757,6 @@ public class SQLServerDeviceDAOImpl extends AbstractDeviceDAOImpl { ps.setInt(index, limitValue); try (ResultSet rs = ps.executeQuery()) { - List devices = new ArrayList<>(); while (rs.next()) { devices.add(DeviceManagementDAOUtil.loadDevice(rs)); } @@ -1039,6 +1042,9 @@ public class SQLServerDeviceDAOImpl extends AbstractDeviceDAOImpl { public int getSubscribedDeviceCount(List deviceIds, int tenantId, List status) throws DeviceManagementDAOException { try { + if (deviceIds.isEmpty()) { + return 0; + } Connection conn = this.getConnection(); int index = 1; StringJoiner joiner = new StringJoiner(",",