mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Adding the changes for removing repeated operations from pending operations, if same operation is added twice, are making them repeated, Device will not recieve them
This commit is contained in:
parent
c0dd2c423e
commit
f2128762f0
@ -31,7 +31,11 @@ public class Operation implements Serializable {
|
||||
}
|
||||
|
||||
public enum Status {
|
||||
IN_PROGRESS, PENDING, COMPLETED, ERROR
|
||||
IN_PROGRESS, PENDING, COMPLETED, ERROR, REPEATED
|
||||
}
|
||||
|
||||
public enum Control {
|
||||
REPEAT, NO_REPEAT, PAUSE_SEQUENCE, STOP_SEQUENCE
|
||||
}
|
||||
|
||||
private String code;
|
||||
@ -39,6 +43,7 @@ public class Operation implements Serializable {
|
||||
private Type type;
|
||||
private int id;
|
||||
private Status status;
|
||||
private Control control;
|
||||
private String receivedTimeStamp;
|
||||
private String createdTimeStamp;
|
||||
private boolean isEnabled;
|
||||
@ -88,6 +93,11 @@ public class Operation implements Serializable {
|
||||
if (status != operation.status) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(control != operation.control){
|
||||
return false;
|
||||
}
|
||||
|
||||
if (type != operation.type) {
|
||||
return false;
|
||||
}
|
||||
@ -152,6 +162,14 @@ public class Operation implements Serializable {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public Control getControl() {
|
||||
return control;
|
||||
}
|
||||
|
||||
public void setControl(Control control) {
|
||||
this.control = control;
|
||||
}
|
||||
|
||||
public String getReceivedTimeStamp() {
|
||||
return receivedTimeStamp;
|
||||
}
|
||||
@ -207,6 +225,7 @@ public class Operation implements Serializable {
|
||||
", type=" + type +
|
||||
", id=" + id +
|
||||
", status=" + status +
|
||||
", control=" + control +
|
||||
", receivedTimeStamp='" + receivedTimeStamp + '\'' +
|
||||
", createdTimeStamp='" + createdTimeStamp + '\'' +
|
||||
", isEnabled=" + isEnabled +
|
||||
|
||||
@ -34,4 +34,8 @@ public class CommandOperation extends Operation {
|
||||
return Type.COMMAND;
|
||||
}
|
||||
|
||||
public Control getControl(){
|
||||
return Control.NO_REPEAT;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -77,4 +77,9 @@ public class ConfigOperation extends Operation {
|
||||
return Type.CONFIG;
|
||||
}
|
||||
|
||||
|
||||
public Control getControl(){
|
||||
return Control.REPEAT;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -18,8 +18,6 @@
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.dto.operation.mgt;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
import java.io.Serializable;
|
||||
import java.util.Properties;
|
||||
|
||||
@ -30,7 +28,11 @@ public class Operation implements Serializable {
|
||||
}
|
||||
|
||||
public enum Status {
|
||||
IN_PROGRESS, PENDING, COMPLETED, ERROR
|
||||
IN_PROGRESS, PENDING, COMPLETED, ERROR, REPEATED
|
||||
}
|
||||
|
||||
public enum Control {
|
||||
REPEAT, NO_REPEAT, PAUSE_SEQUENCE, STOP_SEQUENCE
|
||||
}
|
||||
|
||||
private String code;
|
||||
@ -38,6 +40,7 @@ public class Operation implements Serializable {
|
||||
private Type type;
|
||||
private int id;
|
||||
private Status status;
|
||||
private Control control;
|
||||
private String receivedTimeStamp;
|
||||
private String createdTimeStamp;
|
||||
private boolean isEnabled;
|
||||
@ -84,6 +87,14 @@ public class Operation implements Serializable {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public Control getControl() {
|
||||
return control;
|
||||
}
|
||||
|
||||
public void setControl(Control control) {
|
||||
this.control = control;
|
||||
}
|
||||
|
||||
public String getReceivedTimeStamp() {
|
||||
return receivedTimeStamp;
|
||||
}
|
||||
|
||||
@ -31,4 +31,8 @@ public class PolicyOperation extends Operation{
|
||||
|
||||
private List<ProfileOperation> profileOperations;
|
||||
|
||||
public Control getControl(){
|
||||
return Control.REPEAT;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -26,4 +26,9 @@ public class ProfileOperation extends ConfigOperation implements Serializable {
|
||||
return Type.PROFILE;
|
||||
}
|
||||
|
||||
|
||||
public Control getControl(){
|
||||
return Control.REPEAT;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -35,5 +35,8 @@ public class CommandOperation extends Operation {
|
||||
public Type getType() {
|
||||
return Type.COMMAND;
|
||||
}
|
||||
public Control getControl(){
|
||||
return Control.NO_REPEAT;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -78,4 +78,8 @@ public class ConfigOperation extends Operation {
|
||||
return Type.CONFIG;
|
||||
}
|
||||
|
||||
public Control getControl(){
|
||||
return Control.REPEAT;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -109,6 +109,12 @@ public class OperationManagerImpl implements OperationManager {
|
||||
OperationDAOUtil.convertOperation(operation);
|
||||
int operationId = this.lookupOperationDAO(operation).addOperation(operationDto);
|
||||
for (EnrolmentInfo enrolmentInfo : enrolments) {
|
||||
if(operationDto.getControl() ==
|
||||
org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation.Control.NO_REPEAT){
|
||||
operationDAO.updateEnrollmentOperationsStatus(enrolmentInfo.getId(), operationDto.getCode(),
|
||||
org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation.Status.PENDING,
|
||||
org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation.Status.REPEATED);
|
||||
}
|
||||
operationMappingDAO.addOperationMapping(operationId, enrolmentInfo.getId());
|
||||
}
|
||||
OperationManagementDAOFactory.commitTransaction();
|
||||
|
||||
@ -33,4 +33,8 @@ public class PolicyOperation extends Operation {
|
||||
this.profileOperations = profileOperations;
|
||||
}
|
||||
|
||||
public Control getControl(){
|
||||
return Control.REPEAT;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -26,4 +26,8 @@ public class ProfileOperation extends ConfigOperation implements Serializable {
|
||||
return Type.PROFILE;
|
||||
}
|
||||
|
||||
public Control getControl(){
|
||||
return Control.REPEAT;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -52,6 +52,9 @@ public interface OperationDAO {
|
||||
void updateOperationStatus(int enrolmentId, int operationId,Operation.Status status)
|
||||
throws OperationManagementDAOException;
|
||||
|
||||
void updateEnrollmentOperationsStatus(int enrolmentId, String operationCode, Operation.Status existingStatus,
|
||||
Operation.Status newStatus) throws OperationManagementDAOException;
|
||||
|
||||
void addOperationResponse(int enrolmentId, int operationId, Object operationResponse)
|
||||
throws OperationManagementDAOException;
|
||||
|
||||
|
||||
@ -105,6 +105,41 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEnrollmentOperationsStatus(int enrolmentId, String operationCode, Operation.Status existingStatus,
|
||||
Operation.Status newStatus) throws OperationManagementDAOException {
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
try {
|
||||
Connection connection = OperationManagementDAOFactory.getConnection();
|
||||
String query = "SELECT EOM.ID FROM DM_ENROLMENT_OP_MAPPING AS EOM INNER JOIN DM_OPERATION DM " +
|
||||
"ON DM.ID = EOM.OPERATION_ID WHERE EOM.ENROLMENT_ID = ? AND DM.OPERATION_CODE = ? " +
|
||||
"AND EOM.STATUS = ?;";
|
||||
stmt = connection.prepareStatement(query);
|
||||
stmt.setInt(1, enrolmentId);
|
||||
stmt.setString(2, operationCode);
|
||||
stmt.setString(3, existingStatus.toString());
|
||||
// This will return only one result always.
|
||||
rs = stmt.executeQuery();
|
||||
int id = 0;
|
||||
while (rs.next()){
|
||||
id = rs.getInt("ID");
|
||||
}
|
||||
if (id != 0){
|
||||
stmt = connection.prepareStatement("UPDATE DM_ENROLMENT_OP_MAPPING SET STATUS = ? WHERE ID = ?");
|
||||
stmt.setString(1, newStatus.toString());
|
||||
stmt.setInt(2, id);
|
||||
stmt.executeUpdate();
|
||||
}
|
||||
|
||||
} catch (SQLException e) {
|
||||
throw new OperationManagementDAOException("Error occurred while update device mapping operation status " +
|
||||
"metadata", e);
|
||||
} finally {
|
||||
OperationManagementDAOUtil.cleanupResources(stmt);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOperationResponse(int enrolmentId, int operationId, Object operationResponse)
|
||||
throws OperationManagementDAOException {
|
||||
|
||||
@ -97,6 +97,7 @@ public class OperationDAOUtil {
|
||||
operation.setProperties(dtoOperation.getProperties());
|
||||
operation.setActivityId(DeviceManagementConstants.OperationAttributes.ACTIVITY + dtoOperation.getId());
|
||||
|
||||
|
||||
return operation;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user