mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Improve push notifications for request with device list less than batch size
This commit is contained in:
parent
97a53a7387
commit
76f8d963f7
@ -40,6 +40,7 @@ import org.wso2.carbon.device.mgt.common.push.notification.NotificationContext;
|
|||||||
import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
|
import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
|
||||||
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationExecutionFailedException;
|
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationExecutionFailedException;
|
||||||
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
|
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
|
||||||
|
import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.DeviceDAO;
|
import org.wso2.carbon.device.mgt.core.dao.DeviceDAO;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
|
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
|
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
|
||||||
@ -146,7 +147,12 @@ public class OperationManagerImpl implements OperationManager {
|
|||||||
boolean isScheduledOperation = this.isTaskScheduledOperation(operation, deviceIds);
|
boolean isScheduledOperation = this.isTaskScheduledOperation(operation, deviceIds);
|
||||||
boolean isNotRepeated = false;
|
boolean isNotRepeated = false;
|
||||||
boolean isScheduled = false;
|
boolean isScheduled = false;
|
||||||
if (notificationStrategy != null) {
|
|
||||||
|
// check whether device list is greater than batch size notification strategy has enable to send push
|
||||||
|
// notification using scheduler task
|
||||||
|
if (DeviceConfigurationManager.getInstance().getDeviceManagementConfig().
|
||||||
|
getPushNotificationConfiguration().getSchedulerBatchSize() < authorizedDeviceList.size() &&
|
||||||
|
notificationStrategy != null) {
|
||||||
isScheduled = notificationStrategy.getConfig().isScheduled();
|
isScheduled = notificationStrategy.getConfig().isScheduled();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,8 +184,15 @@ public class OperationManagerImpl implements OperationManager {
|
|||||||
} else {
|
} else {
|
||||||
operationMappingDAO.addOperationMapping(operationId, enrolmentId, isScheduled);
|
operationMappingDAO.addOperationMapping(operationId, enrolmentId, isScheduled);
|
||||||
}
|
}
|
||||||
if (notificationStrategy != null && !notificationStrategy.getConfig().isScheduled()) {
|
/*
|
||||||
|
If notification strategy has not enable to send push notification using scheduler task
|
||||||
|
we will send notification immediately
|
||||||
|
*/
|
||||||
|
if (notificationStrategy != null && !isScheduled) {
|
||||||
try {
|
try {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Sending push notification to " + deviceId + " add operation thread.");
|
||||||
|
}
|
||||||
notificationStrategy.execute(new NotificationContext(deviceId, operation));
|
notificationStrategy.execute(new NotificationContext(deviceId, operation));
|
||||||
operationMappingDAO.updateOperationMapping(operationId, enrolmentId, org.wso2.carbon
|
operationMappingDAO.updateOperationMapping(operationId, enrolmentId, org.wso2.carbon
|
||||||
.device.mgt.core.dto.operation.mgt.Operation.PushStatus.COMPLETED);
|
.device.mgt.core.dto.operation.mgt.Operation.PushStatus.COMPLETED);
|
||||||
|
|||||||
@ -15,9 +15,10 @@
|
|||||||
* specific language governing permissions and limitations
|
* specific language governing permissions and limitations
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
package org.wso2.carbon.device.mgt.common.operation.mgt;
|
package org.wso2.carbon.device.mgt.core.operation.mgt;
|
||||||
|
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class for represent operation mapping
|
* Class for represent operation mapping
|
||||||
@ -27,6 +28,8 @@ public class OperationMapping {
|
|||||||
private DeviceIdentifier deviceIdentifier;
|
private DeviceIdentifier deviceIdentifier;
|
||||||
private int operationId;
|
private int operationId;
|
||||||
private int tenantId;
|
private int tenantId;
|
||||||
|
private Operation.Status status;
|
||||||
|
private Operation.PushStatus pushStatus;
|
||||||
|
|
||||||
public int getOperationId() {
|
public int getOperationId() {
|
||||||
return operationId;
|
return operationId;
|
||||||
@ -51,4 +54,20 @@ public class OperationMapping {
|
|||||||
public void setDeviceIdentifier(DeviceIdentifier deviceIdentifier) {
|
public void setDeviceIdentifier(DeviceIdentifier deviceIdentifier) {
|
||||||
this.deviceIdentifier = deviceIdentifier;
|
this.deviceIdentifier = deviceIdentifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Operation.Status getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(Operation.Status status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Operation.PushStatus getPushStatus() {
|
||||||
|
return pushStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPushStatus(Operation.PushStatus pushStatus) {
|
||||||
|
this.pushStatus = pushStatus;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -20,7 +20,7 @@ package org.wso2.carbon.device.mgt.core.operation.mgt.dao;
|
|||||||
|
|
||||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationMapping;
|
import org.wso2.carbon.device.mgt.core.operation.mgt.OperationMapping;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationResponse;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationResponse;
|
||||||
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation;
|
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation;
|
||||||
|
|
||||||
|
|||||||
@ -18,7 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.wso2.carbon.device.mgt.core.operation.mgt.dao;
|
package org.wso2.carbon.device.mgt.core.operation.mgt.dao;
|
||||||
|
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationMapping;
|
import org.wso2.carbon.device.mgt.core.operation.mgt.OperationMapping;
|
||||||
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation;
|
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -31,7 +31,7 @@ public interface OperationMappingDAO {
|
|||||||
|
|
||||||
void updateOperationMapping(int operationId, Integer deviceId, Operation.PushStatus pushStatus) throws
|
void updateOperationMapping(int operationId, Integer deviceId, Operation.PushStatus pushStatus) throws
|
||||||
OperationManagementDAOException;
|
OperationManagementDAOException;
|
||||||
void updateOperationMapping(List<OperationMapping> operationMappingList, Operation.PushStatus pushStatus) throws
|
void updateOperationMapping(List<OperationMapping> operationMappingList) throws
|
||||||
OperationManagementDAOException;
|
OperationManagementDAOException;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,7 +24,7 @@ import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
|||||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.ActivityStatus;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.ActivityStatus;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationMapping;
|
import org.wso2.carbon.device.mgt.core.operation.mgt.OperationMapping;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationResponse;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationResponse;
|
||||||
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation;
|
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation;
|
||||||
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationDAO;
|
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationDAO;
|
||||||
|
|||||||
@ -18,8 +18,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.wso2.carbon.device.mgt.core.operation.mgt.dao.impl;
|
package org.wso2.carbon.device.mgt.core.operation.mgt.dao.impl;
|
||||||
|
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationMapping;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation;
|
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation;
|
||||||
|
import org.wso2.carbon.device.mgt.core.operation.mgt.OperationMapping;
|
||||||
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOException;
|
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOException;
|
||||||
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOFactory;
|
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOFactory;
|
||||||
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOUtil;
|
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOUtil;
|
||||||
@ -98,7 +98,7 @@ public class OperationMappingDAOImpl implements OperationMappingDAO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateOperationMapping(List<OperationMapping> operationMappingList, Operation.PushStatus pushStatus) throws
|
public void updateOperationMapping(List<OperationMapping> operationMappingList) throws
|
||||||
OperationManagementDAOException {
|
OperationManagementDAOException {
|
||||||
PreparedStatement stmt = null;
|
PreparedStatement stmt = null;
|
||||||
try {
|
try {
|
||||||
@ -108,7 +108,7 @@ public class OperationMappingDAOImpl implements OperationMappingDAO {
|
|||||||
stmt = conn.prepareStatement(sql);
|
stmt = conn.prepareStatement(sql);
|
||||||
if (conn.getMetaData().supportsBatchUpdates()) {
|
if (conn.getMetaData().supportsBatchUpdates()) {
|
||||||
for (OperationMapping operationMapping : operationMappingList) {
|
for (OperationMapping operationMapping : operationMappingList) {
|
||||||
stmt.setString(1, pushStatus.toString());
|
stmt.setString(1, operationMapping.getPushStatus().toString());
|
||||||
stmt.setInt(2, Integer.parseInt(operationMapping.getDeviceIdentifier().getId()));
|
stmt.setInt(2, Integer.parseInt(operationMapping.getDeviceIdentifier().getId()));
|
||||||
stmt.setInt(3, operationMapping.getOperationId());
|
stmt.setInt(3, operationMapping.getOperationId());
|
||||||
stmt.addBatch();
|
stmt.addBatch();
|
||||||
@ -116,7 +116,7 @@ public class OperationMappingDAOImpl implements OperationMappingDAO {
|
|||||||
stmt.executeBatch();
|
stmt.executeBatch();
|
||||||
} else {
|
} else {
|
||||||
for (OperationMapping operationMapping : operationMappingList) {
|
for (OperationMapping operationMapping : operationMappingList) {
|
||||||
stmt.setString(1, pushStatus.toString());
|
stmt.setString(1, operationMapping.getPushStatus().toString());
|
||||||
stmt.setInt(2, Integer.parseInt(operationMapping.getDeviceIdentifier().getId()));
|
stmt.setInt(2, Integer.parseInt(operationMapping.getDeviceIdentifier().getId()));
|
||||||
stmt.setInt(3, operationMapping.getOperationId());
|
stmt.setInt(3, operationMapping.getOperationId());
|
||||||
stmt.executeUpdate();
|
stmt.executeUpdate();
|
||||||
|
|||||||
@ -23,7 +23,7 @@ import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
|||||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.ActivityStatus;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.ActivityStatus;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationMapping;
|
import org.wso2.carbon.device.mgt.core.operation.mgt.OperationMapping;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationResponse;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationResponse;
|
||||||
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation;
|
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation;
|
||||||
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOException;
|
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOException;
|
||||||
|
|||||||
@ -23,7 +23,7 @@ import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
|||||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.ActivityStatus;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.ActivityStatus;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationMapping;
|
import org.wso2.carbon.device.mgt.core.operation.mgt.OperationMapping;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationResponse;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationResponse;
|
||||||
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation;
|
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation;
|
||||||
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOException;
|
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOException;
|
||||||
|
|||||||
@ -23,7 +23,7 @@ import org.wso2.carbon.context.PrivilegedCarbonContext;
|
|||||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||||
import org.wso2.carbon.device.mgt.common.TransactionManagementException;
|
import org.wso2.carbon.device.mgt.common.TransactionManagementException;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationMapping;
|
import org.wso2.carbon.device.mgt.core.operation.mgt.OperationMapping;
|
||||||
import org.wso2.carbon.device.mgt.common.push.notification.NotificationContext;
|
import org.wso2.carbon.device.mgt.common.push.notification.NotificationContext;
|
||||||
import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
|
import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
|
||||||
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationExecutionFailedException;
|
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationExecutionFailedException;
|
||||||
@ -84,6 +84,7 @@ public class PushNotificationJob implements Runnable {
|
|||||||
notificationStrategy.execute(new NotificationContext(operationMapping.getDeviceIdentifier(),
|
notificationStrategy.execute(new NotificationContext(operationMapping.getDeviceIdentifier(),
|
||||||
provider.getOperation(operationMapping.getDeviceIdentifier().getType(), operationMapping
|
provider.getOperation(operationMapping.getDeviceIdentifier().getType(), operationMapping
|
||||||
.getOperationId())));
|
.getOperationId())));
|
||||||
|
operationMapping.setPushStatus(Operation.PushStatus.COMPLETED);
|
||||||
operationsCompletedList.add(operationMapping);
|
operationsCompletedList.add(operationMapping);
|
||||||
} catch (DeviceManagementException e) {
|
} catch (DeviceManagementException e) {
|
||||||
log.error("Error occurred while getting notification strategy for operation mapping " +
|
log.error("Error occurred while getting notification strategy for operation mapping " +
|
||||||
@ -109,7 +110,7 @@ public class PushNotificationJob implements Runnable {
|
|||||||
// Update push notification status to competed for operations which already sent
|
// Update push notification status to competed for operations which already sent
|
||||||
try {
|
try {
|
||||||
OperationManagementDAOFactory.beginTransaction();
|
OperationManagementDAOFactory.beginTransaction();
|
||||||
operationMappingDAO.updateOperationMapping(operationsCompletedList, Operation.PushStatus.COMPLETED);
|
operationMappingDAO.updateOperationMapping(operationsCompletedList);
|
||||||
OperationManagementDAOFactory.commitTransaction();
|
OperationManagementDAOFactory.commitTransaction();
|
||||||
} catch (TransactionManagementException | OperationManagementDAOException e) {
|
} catch (TransactionManagementException | OperationManagementDAOException e) {
|
||||||
OperationManagementDAOFactory.rollbackTransaction();
|
OperationManagementDAOFactory.rollbackTransaction();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user