mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge branch 'APPM_Imp' of https://repository.entgra.net/community/device-mgt-core into apim-issues
# Conflicts: # components/application-mgt/io.entgra.device.mgt.core.application.mgt.core/src/main/java/io/entgra/device/mgt/core/application/mgt/core/dao/impl/subscription/GenericSubscriptionDAOImpl.java # components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java
This commit is contained in:
commit
7a0299419a
@ -23,10 +23,15 @@ import java.util.List;
|
||||
|
||||
public class CategorizedSubscriptionResult {
|
||||
private List<DeviceSubscriptionData> installedDevices;
|
||||
private int installedDevicesCount;
|
||||
private List<DeviceSubscriptionData> pendingDevices;
|
||||
private int pendingDevicesCount;
|
||||
private List<DeviceSubscriptionData> errorDevices;
|
||||
private int errorDevicesCount;
|
||||
private List<DeviceSubscriptionData> newDevices;
|
||||
private int newDevicesCount;
|
||||
private List<DeviceSubscriptionData> subscribedDevices;
|
||||
private int subscribedDevicesCount;
|
||||
|
||||
public CategorizedSubscriptionResult(List<DeviceSubscriptionData> installedDevices,
|
||||
List<DeviceSubscriptionData> pendingDevices,
|
||||
@ -61,6 +66,48 @@ public class CategorizedSubscriptionResult {
|
||||
this.subscribedDevices = subscribedDevices;
|
||||
}
|
||||
|
||||
public CategorizedSubscriptionResult(List<DeviceSubscriptionData> installedDevices,
|
||||
List<DeviceSubscriptionData> pendingDevices,
|
||||
List<DeviceSubscriptionData> errorDevices,
|
||||
List<DeviceSubscriptionData> newDevices,
|
||||
int installedDevicesCount,
|
||||
int pendingDevicesCount,
|
||||
int errorDevicesCount,
|
||||
int newDevicesCount
|
||||
) {
|
||||
this.installedDevices = installedDevices;
|
||||
this.pendingDevices = pendingDevices;
|
||||
this.errorDevices = errorDevices;
|
||||
this.newDevices = newDevices;
|
||||
this.subscribedDevices = null;
|
||||
this.installedDevicesCount = installedDevicesCount;
|
||||
this.pendingDevicesCount = pendingDevicesCount;
|
||||
this.errorDevicesCount = errorDevicesCount;
|
||||
this.newDevicesCount = newDevicesCount;
|
||||
this.subscribedDevicesCount = 0;
|
||||
}
|
||||
|
||||
public CategorizedSubscriptionResult(List<DeviceSubscriptionData> installedDevices,
|
||||
List<DeviceSubscriptionData> pendingDevices,
|
||||
List<DeviceSubscriptionData> errorDevices,
|
||||
List<DeviceSubscriptionData> newDevices,
|
||||
List<DeviceSubscriptionData> subscribedDevices, int installedDevicesCount,
|
||||
int pendingDevicesCount,
|
||||
int errorDevicesCount,
|
||||
int newDevicesCount,
|
||||
int subscribedDevicesCount) {
|
||||
this.installedDevices = installedDevices;
|
||||
this.pendingDevices = pendingDevices;
|
||||
this.errorDevices = errorDevices;
|
||||
this.newDevices = newDevices;
|
||||
this.subscribedDevices = subscribedDevices;
|
||||
this.installedDevicesCount = installedDevicesCount;
|
||||
this.pendingDevicesCount = pendingDevicesCount;
|
||||
this.errorDevicesCount = errorDevicesCount;
|
||||
this.newDevicesCount = newDevicesCount;
|
||||
this.subscribedDevicesCount = subscribedDevicesCount;
|
||||
}
|
||||
|
||||
public CategorizedSubscriptionResult(List<DeviceSubscriptionData> devices, String tabActionStatus) {
|
||||
switch (tabActionStatus) {
|
||||
case "COMPLETED":
|
||||
@ -127,4 +174,44 @@ public class CategorizedSubscriptionResult {
|
||||
public void setSubscribedDevices(List<DeviceSubscriptionData> subscribedDevices) {
|
||||
this.subscribedDevices = subscribedDevices;
|
||||
}
|
||||
|
||||
public int getInstalledDevicesCount() {
|
||||
return installedDevicesCount;
|
||||
}
|
||||
|
||||
public void setInstalledDevicesCount(int installedDevicesCount) {
|
||||
this.installedDevicesCount = installedDevicesCount;
|
||||
}
|
||||
|
||||
public int getPendingDevicesCount() {
|
||||
return pendingDevicesCount;
|
||||
}
|
||||
|
||||
public void setPendingDevicesCount(int pendingDevicesCount) {
|
||||
this.pendingDevicesCount = pendingDevicesCount;
|
||||
}
|
||||
|
||||
public int getErrorDevicesCount() {
|
||||
return errorDevicesCount;
|
||||
}
|
||||
|
||||
public void setErrorDevicesCount(int errorDevicesCount) {
|
||||
this.errorDevicesCount = errorDevicesCount;
|
||||
}
|
||||
|
||||
public int getNewDevicesCount() {
|
||||
return newDevicesCount;
|
||||
}
|
||||
|
||||
public void setNewDevicesCount(int newDevicesCount) {
|
||||
this.newDevicesCount = newDevicesCount;
|
||||
}
|
||||
|
||||
public int getSubscribedDevicesCount() {
|
||||
return subscribedDevicesCount;
|
||||
}
|
||||
|
||||
public void setSubscribedDevicesCount(int subscribedDevicesCount) {
|
||||
this.subscribedDevicesCount = subscribedDevicesCount;
|
||||
}
|
||||
}
|
||||
|
||||
@ -529,5 +529,15 @@ public interface SubscriptionDAO {
|
||||
|
||||
SubscriptionStatisticDTO getSubscriptionStatistic(List<Integer> deviceIds, String subscriptionType, boolean isUnsubscribed,
|
||||
int tenantId) throws ApplicationManagementDAOException;
|
||||
|
||||
/**
|
||||
* This method is used to get the counts of devices related to a UUID.
|
||||
*
|
||||
* @param appReleaseId the UUID of the application release.
|
||||
* @param tenantId id of the current tenant.
|
||||
* @param actionStatus categorized status.
|
||||
* @param actionTriggeredFrom type of the action.
|
||||
* @return {@link int} which contains the count of the subscription type
|
||||
* @throws ApplicationManagementDAOException if connection establishment or SQL execution fails.
|
||||
*/
|
||||
int countSubscriptionsByStatus(int appReleaseId, int tenantId, String actionStatus, String actionTriggeredFrom) throws ApplicationManagementDAOException;
|
||||
}
|
||||
|
||||
@ -1665,15 +1665,24 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc
|
||||
"GS.AP_APP_RELEASE_ID " +
|
||||
"FROM AP_GROUP_SUBSCRIPTION GS " +
|
||||
"WHERE GS.AP_APP_RELEASE_ID = ? " +
|
||||
"AND GS.UNSUBSCRIBED = ? AND GS.TENANT_ID = ? " +
|
||||
"ORDER BY " + subscriptionStatusTime + " DESC " +
|
||||
"LIMIT ? OFFSET ?";
|
||||
"AND GS.UNSUBSCRIBED = ? " +
|
||||
"AND GS.TENANT_ID = ? " +
|
||||
"ORDER BY " + subscriptionStatusTime + " DESC ";
|
||||
|
||||
// Append limit and offset only if limit is not -1
|
||||
if (limit != -1) {
|
||||
sql = sql + " LIMIT ? OFFSET ?";
|
||||
}
|
||||
try (PreparedStatement ps = conn.prepareStatement(sql)) {
|
||||
ps.setInt(1, appReleaseId);
|
||||
ps.setBoolean(2, unsubscribe);
|
||||
ps.setInt(3, tenantId);
|
||||
|
||||
// Set limit and offset parameters only if limit is not -1
|
||||
if (limit != -1) {
|
||||
ps.setInt(4, limit);
|
||||
ps.setInt(5, offset);
|
||||
}
|
||||
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
SubscriptionEntity subscriptionEntity;
|
||||
@ -2795,8 +2804,7 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc
|
||||
try {
|
||||
Connection connection = getDBConnection();
|
||||
String sql = "SELECT COUNT(DISTINCT ID) AS COUNT, " +
|
||||
"STATUS " +
|
||||
"FROM AP_DEVICE_SUBSCRIPTION " +
|
||||
"STATUS FROM AP_DEVICE_SUBSCRIPTION " +
|
||||
"WHERE TENANT_ID = ? " +
|
||||
"AND UNSUBSCRIBED = ?" +
|
||||
"AND DM_DEVICE_ID IN (" +
|
||||
@ -2851,4 +2859,39 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
public int countSubscriptionsByStatus(int appReleaseId, int tenantId, String actionStatus, String actionTriggeredFrom) throws ApplicationManagementDAOException {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Request received in DAO Layer to count device subscriptions by status and actionTriggeredFrom for the given AppReleaseID.");
|
||||
}
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
String sql = "SELECT COUNT(*) FROM AP_DEVICE_SUBSCRIPTION " +
|
||||
"WHERE AP_APP_RELEASE_ID = ? " +
|
||||
"AND TENANT_ID = ? " +
|
||||
"AND STATUS = ?" +
|
||||
" AND ACTION_TRIGGERED_FROM = ?";
|
||||
try (PreparedStatement ps = conn.prepareStatement(sql)) {
|
||||
ps.setInt(1, appReleaseId);
|
||||
ps.setInt(2, tenantId);
|
||||
ps.setString(3, actionStatus);
|
||||
ps.setString(4, actionTriggeredFrom);
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
if (rs.next()) {
|
||||
return rs.getInt(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the DB connection to count device subscriptions by status and action trigger.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "SQL Error occurred while counting device subscriptions by status and action trigger.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -118,7 +118,7 @@ public class RoleBasedSubscriptionManagementHelperServiceImpl implements Subscri
|
||||
} else {
|
||||
deviceSubscriptionDTOS = subscriptionDAO.getSubscriptionDetailsByDeviceIds(applicationReleaseDTO.getId(),
|
||||
isUnsubscribe, tenantId, deviceIdsOwnByRole, dbSubscriptionStatus,
|
||||
subscriptionInfo.getSubscriptionType(), deviceSubscriptionFilterCriteria.getTriggeredBy(), limit, offset);
|
||||
subscriptionInfo.getSubscriptionType(), deviceSubscriptionFilterCriteria.getTriggeredBy(), -1, -1);
|
||||
|
||||
deviceCount = SubscriptionManagementHelperUtil.getTotalDeviceSubscriptionCount(deviceSubscriptionDTOS,
|
||||
subscriptionInfo.getDeviceSubscriptionFilterCriteria(), applicationDTO.getDeviceTypeId());
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
|
||||
package io.entgra.device.mgt.core.device.mgt.api.jaxrs.beans;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
@ -113,4 +114,8 @@ public class ApplicationUninstallation {
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String toJson() {
|
||||
return new Gson().toJson(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -19,7 +19,6 @@
|
||||
package io.entgra.device.mgt.core.device.mgt.api.jaxrs.service.impl;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.google.gson.Gson;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.ApplicationInstallResponse;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.SubscriptionType;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.exception.SubscriptionManagementException;
|
||||
@ -44,6 +43,7 @@ import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.*;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.app.mgt.Application;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.app.mgt.ApplicationManagementException;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.app.mgt.MobileAppTypes;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.authorization.DeviceAccessAuthorizationException;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.authorization.DeviceAccessAuthorizationService;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.device.details.DeviceData;
|
||||
@ -1112,7 +1112,6 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
||||
@QueryParam("version") String version,
|
||||
@QueryParam("user") String user) {
|
||||
List<DeviceIdentifier> deviceIdentifiers = new ArrayList<>();
|
||||
Operation operation = new Operation();
|
||||
try {
|
||||
RequestValidationUtil.validateDeviceIdentifier(type, id);
|
||||
Device device = DeviceMgtAPIUtils.getDeviceManagementService().getDevice(id, false);
|
||||
@ -1133,11 +1132,12 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
||||
//if the applications not installed via entgra store
|
||||
} else {
|
||||
if (Constants.ANDROID.equals(type)) {
|
||||
ApplicationUninstallation applicationUninstallation = new ApplicationUninstallation(packageName, "PUBLIC", name, platform, version, user);
|
||||
Gson gson = new Gson();
|
||||
ApplicationUninstallation applicationUninstallation = new ApplicationUninstallation(packageName,
|
||||
MobileAppTypes.PUBLIC.toString(), name, platform, version, user);
|
||||
ProfileOperation operation = new ProfileOperation();
|
||||
operation.setCode(MDMAppConstants.AndroidConstants.UNMANAGED_APP_UNINSTALL);
|
||||
operation.setType(Operation.Type.PROFILE);
|
||||
operation.setPayLoad(gson.toJson(applicationUninstallation));
|
||||
operation.setPayLoad(applicationUninstallation.toJson());
|
||||
DeviceManagementProviderService deviceManagementProviderService = HelperUtil
|
||||
.getDeviceManagementProviderService();
|
||||
Activity activity = deviceManagementProviderService.addOperation(
|
||||
|
||||
@ -3306,9 +3306,7 @@ public abstract class AbstractDeviceDAOImpl implements DeviceDAO {
|
||||
List<Integer> filteredDeviceIds = new ArrayList<>();
|
||||
try {
|
||||
Connection connection = getConnection();
|
||||
String sql = "SELECT ID AS DEVICE_ID " +
|
||||
"FROM DM_DEVICE " +
|
||||
"WHERE TENANT_ID = ?";
|
||||
String sql = "SELECT ID AS DEVICE_ID FROM DM_DEVICE WHERE TENANT_ID = ?";
|
||||
|
||||
if (deviceIds != null && !deviceIds.isEmpty()) {
|
||||
sql += " AND ID NOT IN ( " + deviceIds.stream().map(id -> "?").collect(Collectors.joining(",")) + ")";
|
||||
@ -3521,7 +3519,7 @@ public abstract class AbstractDeviceDAOImpl implements DeviceDAO {
|
||||
boolean isDeviceNameProvided = false;
|
||||
try {
|
||||
Connection connection = getConnection();
|
||||
String sql = "SELECT COUNT(DISTINCT e.DEVICE_ID) " +
|
||||
String sql = "SELECT COUNT(DISTINCT e.DEVICE_ID) AS COUNT " +
|
||||
"FROM DM_DEVICE d " +
|
||||
"INNER JOIN DM_ENROLMENT e " +
|
||||
"ON d.ID = e.DEVICE_ID " +
|
||||
|
||||
@ -589,8 +589,11 @@ public abstract class AbstractEnrollmentDAOImpl implements EnrollmentDAO {
|
||||
"e.DEVICE_IDENTIFICATION AS DEVICE_IDENTIFICATION " +
|
||||
"FROM DM_ENROLMENT e " +
|
||||
"JOIN DM_DEVICE d ON e.DEVICE_ID = d.ID " +
|
||||
"WHERE e.OWNER = ? AND e.TENANT_ID = ? AND d.DEVICE_TYPE_ID = ? AND e.STATUS IN (" + deviceFilters + ")");
|
||||
"WHERE e.OWNER = ? AND e.TENANT_ID = ? AND e.STATUS IN (" + deviceFilters + ")");
|
||||
|
||||
if (deviceTypeId != 0) {
|
||||
sql.append(" AND d.DEVICE_TYPE_ID = ?");
|
||||
}
|
||||
if (deviceOwner != null && !deviceOwner.isEmpty()) {
|
||||
sql.append(" AND e.OWNER LIKE ?");
|
||||
}
|
||||
@ -607,10 +610,12 @@ public abstract class AbstractEnrollmentDAOImpl implements EnrollmentDAO {
|
||||
int index = 1;
|
||||
stmt.setString(index++, owner);
|
||||
stmt.setInt(index++, tenantId);
|
||||
stmt.setInt(index++, deviceTypeId);
|
||||
for (String status : allowingDeviceStatuses) {
|
||||
stmt.setString(index++, status);
|
||||
}
|
||||
if (deviceTypeId != 0) {
|
||||
stmt.setInt(index++, deviceTypeId);
|
||||
}
|
||||
|
||||
if (deviceOwner != null && !deviceOwner.isEmpty()) {
|
||||
stmt.setString(index++, "%" + deviceOwner + "%");
|
||||
@ -808,8 +813,11 @@ public abstract class AbstractEnrollmentDAOImpl implements EnrollmentDAO {
|
||||
StringBuilder sql = new StringBuilder("SELECT e.DEVICE_ID, e.OWNER, e.STATUS, e.DEVICE_TYPE, e.DEVICE_IDENTIFICATION " +
|
||||
"FROM DM_ENROLMENT e " +
|
||||
"JOIN DM_DEVICE d ON e.DEVICE_ID = d.ID " +
|
||||
"WHERE e.TENANT_ID = ? AND e.STATUS IN (" + deviceFilters.toString() + ") AND d.DEVICE_TYPE_ID = ?");
|
||||
"WHERE e.TENANT_ID = ? AND e.STATUS IN (" + deviceFilters.toString() + ")");
|
||||
|
||||
if (deviceTypeId != 0) {
|
||||
sql.append(" AND d.DEVICE_TYPE_ID = ?");
|
||||
}
|
||||
if (deviceOwner != null && !deviceOwner.isEmpty()) {
|
||||
sql.append(" AND e.OWNER LIKE ?");
|
||||
}
|
||||
@ -827,7 +835,9 @@ public abstract class AbstractEnrollmentDAOImpl implements EnrollmentDAO {
|
||||
for (String status : allowingDeviceStatuses) {
|
||||
stmt.setString(index++, status);
|
||||
}
|
||||
if (deviceTypeId != 0) {
|
||||
stmt.setInt(index++, deviceTypeId);
|
||||
}
|
||||
|
||||
if (deviceOwner != null && !deviceOwner.isEmpty()) {
|
||||
stmt.setString(index++, "%" + deviceOwner + "%");
|
||||
|
||||
@ -1482,9 +1482,11 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO {
|
||||
"WHERE " +
|
||||
" g.GROUP_NAME = ? " +
|
||||
" AND g.TENANT_ID = ? " +
|
||||
" AND d.DEVICE_TYPE_ID = ? " +
|
||||
" AND e.STATUS IN (" + statusPlaceholders + ")");
|
||||
|
||||
if (deviceTypeId != 0) {
|
||||
sql.append(" AND d.DEVICE_TYPE_ID = ?");
|
||||
}
|
||||
if (deviceOwner != null && !deviceOwner.isEmpty()) {
|
||||
sql.append(" AND e.OWNER LIKE ?");
|
||||
}
|
||||
@ -1505,11 +1507,12 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO {
|
||||
int index = 1;
|
||||
stmt.setString(index++, groupName);
|
||||
stmt.setInt(index++, tenantId);
|
||||
stmt.setInt(index++, deviceTypeId);
|
||||
for (String status : allowedStatuses) {
|
||||
stmt.setString(index++, status);
|
||||
}
|
||||
|
||||
if (deviceTypeId != 0) {
|
||||
stmt.setInt(index++, deviceTypeId);
|
||||
}
|
||||
if (deviceOwner != null && !deviceOwner.isEmpty()) {
|
||||
stmt.setString(index++, "%" + deviceOwner + "%");
|
||||
}
|
||||
|
||||
@ -1528,7 +1528,11 @@ public class GeoLocationProviderServiceImpl implements GeoLocationProviderServic
|
||||
@Override
|
||||
public boolean updateGeofence(GeofenceData geofenceData, int fenceId)
|
||||
throws GeoLocationBasedServiceException, EventConfigurationException {
|
||||
EventConfigurationProviderService eventConfigService;
|
||||
eventConfigService = DeviceManagementDataHolder.getInstance().getEventConfigurationService();
|
||||
int tenantId;
|
||||
List<Integer> groupIdsToDelete = new ArrayList<>();
|
||||
List<Integer> groupIdsToAdd = new ArrayList<>();
|
||||
try {
|
||||
tenantId = DeviceManagementDAOUtil.getTenantId();
|
||||
} catch (DeviceManagementDAOException e) {
|
||||
@ -1543,8 +1547,6 @@ public class GeoLocationProviderServiceImpl implements GeoLocationProviderServic
|
||||
int updatedRowCount = geofenceDAO.updateGeofence(geofenceData, fenceId);
|
||||
savedGroupIds = geofenceDAO.getGroupIdsOfGeoFence(fenceId);
|
||||
geofenceData.setId(fenceId);
|
||||
List<Integer> groupIdsToDelete = new ArrayList<>();
|
||||
List<Integer> groupIdsToAdd = new ArrayList<>();
|
||||
for (Integer savedGroupId : savedGroupIds) {
|
||||
if (!geofenceData.getGroupIds().contains(savedGroupId)) {
|
||||
groupIdsToDelete.add(savedGroupId);
|
||||
@ -1558,6 +1560,18 @@ public class GeoLocationProviderServiceImpl implements GeoLocationProviderServic
|
||||
geofenceDAO.deleteGeofenceGroupMapping(groupIdsToDelete, fenceId);
|
||||
geofenceDAO.createGeofenceGroupMapping(geofenceData, groupIdsToAdd);
|
||||
EventManagementDAOFactory.commitTransaction();
|
||||
try {
|
||||
if (!groupIdsToDelete.isEmpty()) {
|
||||
eventConfigService.createEventOperationTask(OperationMgtConstants.OperationCodes.EVENT_REVOKE,
|
||||
DeviceManagementConstants.EventServices.GEOFENCE,
|
||||
new GeoFenceEventMeta(geofenceData), tenantId, groupIdsToDelete);
|
||||
}
|
||||
} catch (EventConfigurationException e) {
|
||||
String msg = "Failed while creating EVENT_REVOKE operation creation task entry while updating geo fence "
|
||||
+ geofenceData.getFenceName() + " of the tenant " + tenantId;
|
||||
log.error(msg, e);
|
||||
throw new GeoLocationBasedServiceException(msg, e);
|
||||
}
|
||||
if (updatedRowCount > 0) {
|
||||
GeoCacheManagerImpl.getInstance().updateGeoFenceInCache(geofenceData, fenceId, tenantId);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user