Extending operation management implementation to support getPendingOperations() and getOperations() functionalities

revert-70aa11f8
prabathabey 10 years ago
parent 0583695338
commit befb9cc711

@ -26,17 +26,17 @@ import java.util.Properties;
public class Operation { public class Operation {
public enum Type { public enum Type {
CONFIG, MESSAGE, INFO, COMMAND CONFIG, MESSAGE, INFO, COMMAND, PROFILE
} }
public enum Status { public enum Status {
IN_PROGRES, PENDING, COMPLETED, ERROR IN_PROGRESS, PENDING, COMPLETED, ERROR
} }
private String code; private String code;
private Properties properties; private Properties properties;
private Type type; private Type type;
private Long operationId; private int id;
private String payLoad; private String payLoad;
private Status status; private Status status;
@ -67,12 +67,12 @@ public class Operation {
this.type = type; this.type = type;
} }
public Long getOperationId() { public int getId() {
return operationId; return id;
} }
public void setOperationId(Long operationId) { public void setId(int id) {
this.operationId = operationId; this.id = id;
} }
public String getPayLoad() { public String getPayLoad() {
@ -83,11 +83,11 @@ public class Operation {
this.payLoad = payLoad; this.payLoad = payLoad;
} }
public Status getOperationStates() { public Status getStatus() {
return status; return status;
} }
public void setOperationStates(Status status) { public void setStatus(Status status) {
this.status = status; this.status = status;
} }

@ -35,7 +35,7 @@ public interface OperationManager {
* operation * operation
*/ */
public boolean addOperation(Operation operation, public boolean addOperation(Operation operation,
List<DeviceIdentifier> devices) throws OperationManagementException; List<DeviceIdentifier> devices) throws OperationManagementException;
/** /**
* Method to retrieve the list of all operations to a device. * Method to retrieve the list of all operations to a device.
@ -44,7 +44,7 @@ public interface OperationManager {
* @throws OperationManagementException If some unusual behaviour is observed while fetching the * @throws OperationManagementException If some unusual behaviour is observed while fetching the
* operation list. * operation list.
*/ */
public List<Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementException; public List<? extends Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementException;
/** /**
* Method to retrieve the list of available operations to a device. * Method to retrieve the list of available operations to a device.
@ -53,11 +53,12 @@ public interface OperationManager {
* @throws OperationManagementException If some unusual behaviour is observed while fetching the * @throws OperationManagementException If some unusual behaviour is observed while fetching the
* operation list. * operation list.
*/ */
public List<Operation> getPendingOperations(DeviceIdentifier deviceId) throws OperationManagementException; public List<? extends Operation> getPendingOperations(
DeviceIdentifier deviceId) throws OperationManagementException;
public Operation getNextPendingOperation(DeviceIdentifier deviceId) throws OperationManagementException; public Operation getNextPendingOperation(DeviceIdentifier deviceId) throws OperationManagementException;
public Operation updateOperation(Long operationId, DeviceIdentifier deviceIdentifier, public Operation updateOperation(
String payLoad) throws OperationManagementException; int id, DeviceIdentifier deviceIdentifier, String payLoad) throws OperationManagementException;
} }

@ -346,12 +346,12 @@ public class DeviceManagementServiceProviderImpl implements DeviceManagementServ
} }
@Override @Override
public List<Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementException { public List<? extends Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementException {
return operationManager.getOperations(deviceId); return operationManager.getOperations(deviceId);
} }
@Override @Override
public List<Operation> getPendingOperations(DeviceIdentifier deviceId) throws OperationManagementException { public List<? extends Operation> getPendingOperations(DeviceIdentifier deviceId) throws OperationManagementException {
return operationManager.getPendingOperations(deviceId); return operationManager.getPendingOperations(deviceId);
} }
@ -361,8 +361,8 @@ public class DeviceManagementServiceProviderImpl implements DeviceManagementServ
} }
@Override @Override
public Operation updateOperation(Long operationId, DeviceIdentifier deviceIdentifier, public Operation updateOperation(int id, DeviceIdentifier deviceIdentifier,
String responsePayLoad) throws OperationManagementException { String payLoad) throws OperationManagementException {
return null; return null;
} }

@ -31,9 +31,11 @@ import org.wso2.carbon.device.mgt.common.spi.DeviceManager;
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants; import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
import org.wso2.carbon.device.mgt.core.DeviceManagementRepository; import org.wso2.carbon.device.mgt.core.DeviceManagementRepository;
import org.wso2.carbon.device.mgt.core.DeviceManagementServiceProviderImpl; import org.wso2.carbon.device.mgt.core.DeviceManagementServiceProviderImpl;
import org.wso2.carbon.device.mgt.core.api.mgt.APIConfig;
import org.wso2.carbon.device.mgt.core.api.mgt.APIPublisherService; import org.wso2.carbon.device.mgt.core.api.mgt.APIPublisherService;
import org.wso2.carbon.device.mgt.core.api.mgt.APIPublisherServiceImpl; import org.wso2.carbon.device.mgt.core.api.mgt.APIPublisherServiceImpl;
import org.wso2.carbon.device.mgt.core.api.mgt.APIRegistrationStartupObserver; import org.wso2.carbon.device.mgt.core.api.mgt.APIRegistrationStartupObserver;
import org.wso2.carbon.device.mgt.core.api.mgt.config.APIPublisherConfig;
import org.wso2.carbon.device.mgt.core.app.mgt.AppManagerConnectorException; import org.wso2.carbon.device.mgt.core.app.mgt.AppManagerConnectorException;
import org.wso2.carbon.device.mgt.core.app.mgt.RemoteAppManagerConnector; import org.wso2.carbon.device.mgt.core.app.mgt.RemoteAppManagerConnector;
import org.wso2.carbon.device.mgt.core.app.mgt.RemoteAppManagerConnector; import org.wso2.carbon.device.mgt.core.app.mgt.RemoteAppManagerConnector;
@ -156,6 +158,10 @@ public class DeviceManagementServiceComponent {
} }
} }
protected void deactivate(ComponentContext componentContext) {
//do nothing
}
private void initLicenseManager() throws LicenseManagementException { private void initLicenseManager() throws LicenseManagementException {
LicenseConfigurationManager.getInstance().initConfig(); LicenseConfigurationManager.getInstance().initConfig();
LicenseConfig licenseConfig = LicenseConfig licenseConfig =
@ -175,9 +181,11 @@ public class DeviceManagementServiceComponent {
DeviceManagementDataHolder.getInstance().setAppManager(appManager); DeviceManagementDataHolder.getInstance().setAppManager(appManager);
} }
protected void deactivate(ComponentContext componentContext) { // private void initAPIProviders() throws DeviceManagementException {
//do nothing // for (APIConfig config : APIPublisherConfig.getInstance().getApiConfigs()) {
} // config.init();
// }
// }
private void registerServices(ComponentContext componentContext) { private void registerServices(ComponentContext componentContext) {
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {

@ -32,4 +32,8 @@ public class CommandOperation extends Operation {
this.enabled = enabled; this.enabled = enabled;
} }
public Type getType() {
return Type.COMMAND;
}
} }

@ -75,4 +75,8 @@ public class ConfigOperation extends Operation {
} }
} }
public Type getType() {
return Type.CONFIG;
}
} }

@ -33,6 +33,7 @@ import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOE
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.OperationMappingDAO; import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationMappingDAO;
import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@ -91,35 +92,74 @@ public class OperationManagerImpl implements OperationManager {
} }
@Override @Override
public List<Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementException { public List<? extends Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementException {
return null; try {
List<Operation> operations = new ArrayList<Operation>();
OperationManagementDAOFactory.beginTransaction();
operations.addAll(profileOperationDAO.getOperations(deviceId));
operations.addAll(configOperationDAO.getOperations(deviceId));
operations.addAll(commandOperationDAO.getOperations(deviceId));
OperationManagementDAOFactory.commitTransaction();
return operations;
} catch (OperationManagementDAOException e) {
try {
OperationManagementDAOFactory.rollbackTransaction();
} catch (OperationManagementDAOException e1) {
log.warn("Error occurred while roll-backing the transaction", e1);
}
throw new OperationManagementException("Error occurred while retrieving the list of " +
"operations assigned for '" + deviceId.getType() + "' device '" + deviceId.getId() + "'", e);
}
} }
@Override @Override
public List<Operation> getPendingOperations(DeviceIdentifier deviceId) throws OperationManagementException { public List<? extends Operation> getPendingOperations(
return null; DeviceIdentifier deviceId) throws OperationManagementException {
try {
List<Operation> operations = new ArrayList<Operation>();
OperationManagementDAOFactory.beginTransaction();
operations.addAll(profileOperationDAO.getOperations(deviceId, Operation.Status.PENDING));
operations.addAll(configOperationDAO.getOperations(deviceId, Operation.Status.PENDING));
operations.addAll(commandOperationDAO.getOperations(deviceId, Operation.Status.PENDING));
OperationManagementDAOFactory.commitTransaction();
return operations;
} catch (OperationManagementDAOException e) {
try {
OperationManagementDAOFactory.rollbackTransaction();
} catch (OperationManagementDAOException e1) {
log.warn("Error occurred while roll-backing the transaction", e1);
}
throw new OperationManagementException("Error occurred while retrieving the list of " +
"pending operations assigned for '" + deviceId.getType() + "' device '" +
deviceId.getId() + "'", e);
}
} }
@Override @Override
public Operation getNextPendingOperation(DeviceIdentifier deviceId) throws OperationManagementException { public Operation getNextPendingOperation(DeviceIdentifier deviceId) throws OperationManagementException {
try { try {
OperationManagementDAOFactory.beginTransaction(); OperationManagementDAOFactory.beginTransaction();
profileOperationDAO.getNextOperation(deviceId); Operation operation = operationDAO.getNextOperation(deviceId);
operation = this.lookupOperationDAO(operation.getType()).getOperation(operation.getId());
OperationManagementDAOFactory.commitTransaction(); OperationManagementDAOFactory.commitTransaction();
return null; return operation;
} catch (OperationManagementDAOException e) { } catch (OperationManagementDAOException e) {
try { try {
OperationManagementDAOFactory.rollbackTransaction(); OperationManagementDAOFactory.rollbackTransaction();
} catch (OperationManagementDAOException e1) { } catch (OperationManagementDAOException e1) {
log.warn("Error occurred while roll-backing the transaction", e1); log.warn("Error occurred while roll-backing the transaction", e1);
} }
throw new OperationManagementException("Error occurred while adding operation", e); throw new OperationManagementException("Error occurred while retrieving next pending operation", e);
} }
} }
@Override @Override
public Operation updateOperation(Long operationId, DeviceIdentifier deviceIdentifier, public Operation updateOperation(int id, DeviceIdentifier deviceIdentifier,
String responsePayLoad) throws OperationManagementException { String responsePayLoad) throws OperationManagementException {
return null; return null;
} }
@ -133,4 +173,17 @@ public class OperationManagerImpl implements OperationManager {
} }
} }
private OperationDAO lookupOperationDAO(Operation.Type type) {
switch (type) {
case CONFIG:
return configOperationDAO;
case PROFILE:
return profileOperationDAO;
case COMMAND:
return commandOperationDAO;
default:
return commandOperationDAO;
}
}
} }

@ -32,4 +32,8 @@ public class ProfileOperation extends ConfigOperation implements Serializable {
this.payload = payload; this.payload = payload;
} }
public Type getType() {
return Type.PROFILE;
}
} }

@ -35,9 +35,14 @@ public interface OperationDAO {
Operation getOperation(DeviceIdentifier deviceId, int operationId) throws OperationManagementDAOException; Operation getOperation(DeviceIdentifier deviceId, int operationId) throws OperationManagementDAOException;
List<Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementDAOException; Operation getOperation(DeviceIdentifier deviceId, Operation.Status status) throws OperationManagementDAOException;
List<Operation> getOperations(String status) throws OperationManagementDAOException; List<? extends Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementDAOException;
List<? extends Operation> getOperations(DeviceIdentifier deviceId,
Operation.Status status) throws OperationManagementDAOException;
List<? extends Operation> getOperations(Operation.Status status) throws OperationManagementDAOException;
Operation getNextOperation(DeviceIdentifier deviceId) throws OperationManagementDAOException; Operation getNextOperation(DeviceIdentifier deviceId) throws OperationManagementDAOException;

@ -29,6 +29,7 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import java.util.List;
public class CommandOperationDAOImpl extends OperationDAOImpl { public class CommandOperationDAOImpl extends OperationDAOImpl {
@ -37,11 +38,11 @@ public class CommandOperationDAOImpl extends OperationDAOImpl {
public int addOperation(Operation operation) throws OperationManagementDAOException { public int addOperation(Operation operation) throws OperationManagementDAOException {
int operationId = super.addOperation(operation); int operationId = super.addOperation(operation);
CommandOperation commandOp = (CommandOperation) operation; CommandOperation commandOp = (CommandOperation) operation;
Connection conn = OperationManagementDAOFactory.getConnection();
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
try { try {
Connection conn = OperationManagementDAOFactory.getConnection();
stmt = conn.prepareStatement("INSERT INTO DM_COMMAND_OPERATION(OPERATION_ID, ENABLED) VALUES(?, ?)"); stmt = conn.prepareStatement("INSERT INTO DM_COMMAND_OPERATION(OPERATION_ID, ENABLED) VALUES(?, ?)");
stmt.setInt(1, operationId); stmt.setInt(1, operationId);
stmt.setBoolean(2, commandOp.isEnabled()); stmt.setBoolean(2, commandOp.isEnabled());
@ -54,39 +55,71 @@ public class CommandOperationDAOImpl extends OperationDAOImpl {
return operationId; return operationId;
} }
@Override public List<? extends Operation> getOperations(DeviceIdentifier deviceId,
public int updateOperation(Operation operation) throws OperationManagementDAOException { Operation.Status status) throws OperationManagementDAOException {
return 0; PreparedStatement stmt = null;
} ResultSet rs = null;
@Override
public int deleteOperation(int id) throws OperationManagementDAOException {
return 0;
}
@Override try {
public Operation getOperation(int id) throws OperationManagementDAOException { Connection conn = OperationManagementDAOFactory.getConnection();
return null; String sql = "SELECT po.OPERATION_ID, po.TYPE, po.CREATED_TIMESTAMP, po.RECEIVED_TIMESTAMP, po.STATUS, " +
} "co.ENABLED FROM DM_COMMAND_OPERATION co INNER JOIN (SELECT o.ID AS OPERATION_ID, o.TYPE, " +
"o.CREATED_TIMESTAMP, o.RECEIVED_TIMESTAMP, o.STATUS FROM DM_OPERATION o INNER JOIN (" +
"SELECT dom.OPERATION_ID AS OP_ID FROM (SELECT d.ID FROM DM_DEVICE d INNER JOIN " +
"DM_DEVICE_TYPE dm ON d.DEVICE_TYPE_ID = dm.ID AND dm.NAME = ? AND " +
"d.DEVICE_IDENTIFICATION = ?) d1 INNER JOIN DM_DEVICE_OPERATION_MAPPING dom ON d1.ID = " +
"dom.DEVICE_ID) ois ON o.ID = ois.OP_ID AND o.STATUS = ? ORDER BY " +
"o.CREATED_TIMESTAMP ASC) po ON co.OPERATION_ID = po.OPERATION_ID";
stmt = conn.prepareStatement(sql);
stmt.setString(1, deviceId.getType());
stmt.setString(1, deviceId.getId());
stmt.setString(1, status.toString());
} catch (SQLException e) {
throw new OperationManagementDAOException("Error occurred while retrieving the list of " +
"operations with the status '" + status + "' available for the '" + deviceId.getType() +
"' device '" + deviceId.getId() + "'");
} finally {
OperationManagementDAOUtil.cleanupResources(stmt, rs);
}
@Override
public Operation getOperation(DeviceIdentifier deviceId, int operationId) throws OperationManagementDAOException {
return null; return null;
} }
@Override public List<? extends Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementDAOException {
public List<Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementDAOException { PreparedStatement stmt = null;
return null; ResultSet rs = null;
}
@Override try {
public List<Operation> getOperations(String status) throws OperationManagementDAOException { Connection conn = OperationManagementDAOFactory.getConnection();
return null; String sql = "SELECT po.OPERATION_ID, po.TYPE, po.CREATED_TIMESTAMP, po.RECEIVED_TIMESTAMP, po.STATUS, " +
} "co.ENABLED FROM DM_COMMAND_OPERATION co INNER JOIN (SELECT o.ID AS OPERATION_ID, o.TYPE, " +
"o.CREATED_TIMESTAMP, o.RECEIVED_TIMESTAMP, o.STATUS FROM DM_OPERATION o INNER JOIN (" +
"SELECT dom.OPERATION_ID AS OP_ID FROM (SELECT d.ID FROM DM_DEVICE d INNER JOIN " +
"DM_DEVICE_TYPE dm ON d.DEVICE_TYPE_ID = dm.ID AND dm.NAME = ? AND " +
"d.DEVICE_IDENTIFICATION = ?) d1 INNER JOIN DM_DEVICE_OPERATION_MAPPING dom ON d1.ID = " +
"dom.DEVICE_ID) ois ON o.ID = ois.OP_ID ORDER BY " +
"o.CREATED_TIMESTAMP ASC) po ON co.OPERATION_ID = po.OPERATION_ID";
stmt = conn.prepareStatement(sql);
stmt.setString(1, deviceId.getType());
stmt.setString(1, deviceId.getId());
rs = stmt.executeQuery();
@Override List<CommandOperation> operations = new ArrayList<CommandOperation>();
public Operation getNextOperation(DeviceIdentifier deviceId) throws OperationManagementDAOException { while (rs.next()) {
return null; CommandOperation operation = new CommandOperation();
operation.setId(rs.getInt("ID"));
operation.setType(Operation.Type.valueOf(rs.getString("TYPE")));
operation.setStatus(Operation.Status.valueOf(rs.getString("STATUS")));
operation.setEnabled(Boolean.parseBoolean(rs.getString("ENABLED")));
operations.add(operation);
}
return operations;
} catch (SQLException e) {
throw new OperationManagementDAOException("Error occurred while retrieving the list of " +
"operations available for the '" + deviceId.getType() + "' device '" + deviceId.getId() + "'");
} finally {
OperationManagementDAOUtil.cleanupResources(stmt, rs);
}
} }
} }

@ -18,12 +18,9 @@
*/ */
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.DeviceIdentifier;
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; import org.wso2.carbon.device.mgt.common.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;
import java.util.List;
public class ConfigOperationDAOImpl extends OperationDAOImpl { public class ConfigOperationDAOImpl extends OperationDAOImpl {
@Override @Override
@ -31,39 +28,4 @@ public class ConfigOperationDAOImpl extends OperationDAOImpl {
return 0; return 0;
} }
@Override
public int updateOperation(Operation operation) throws OperationManagementDAOException {
return 0;
}
@Override
public int deleteOperation(int id) throws OperationManagementDAOException {
return 0;
}
@Override
public Operation getOperation(int id) throws OperationManagementDAOException {
return null;
}
@Override
public Operation getOperation(DeviceIdentifier deviceId, int operationId) throws OperationManagementDAOException {
return null;
}
@Override
public List<Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementDAOException {
return null;
}
@Override
public List<Operation> getOperations(String status) throws OperationManagementDAOException {
return null;
}
@Override
public Operation getNextOperation(DeviceIdentifier deviceId) throws OperationManagementDAOException {
return null;
}
} }

@ -24,6 +24,9 @@ import org.wso2.carbon.device.mgt.core.operation.mgt.ProfileOperation;
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.*; import org.wso2.carbon.device.mgt.core.operation.mgt.dao.*;
import javax.sql.DataSource; import javax.sql.DataSource;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
@ -82,38 +85,92 @@ public class OperationDAOImpl implements OperationDAO {
} }
@Override @Override
public List<Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementDAOException { public Operation getOperation(DeviceIdentifier deviceId,
Connection conn = OperationManagementDAOFactory.getConnection(); Operation.Status status) throws OperationManagementDAOException {
String sql = "SELECT o.ID, o.TYPE, o.CREATED_TIMESTAMP, o.RECEIVED_TIMESTAMP, o.STATUS FROM DM_OPERATION o " + return null;
"INNER JOIN (SELECT dom.OPERATION_ID AS OP_ID FROM (SELECT d.ID FROM DM_DEVICE d INNER JOIN " + }
"DM_DEVICE_TYPE dm ON d.DEVICE_TYPE_ID = dm.ID AND dm.NAME = ? AND d.DEVICE_IDENTIFICATION = ?) d1 " +
"INNER JOIN DM_DEVICE_OPERATION_MAPPING dom ON d1.ID = dom.DEVICE_ID) ois ON o.ID = ois.OP_ID"; @Override
public List<? extends Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementDAOException {
List<Operation> operations;
PreparedStatement stmt = null;
ResultSet rs = null;
try { try {
PreparedStatement stmt = conn.prepareStatement(sql); Connection conn = OperationManagementDAOFactory.getConnection();
String sql = "SELECT o.ID, o.TYPE, o.CREATED_TIMESTAMP, o.RECEIVED_TIMESTAMP, o.STATUS FROM DM_OPERATION o " +
"INNER JOIN (SELECT dom.OPERATION_ID AS OP_ID FROM (SELECT d.ID FROM DM_DEVICE d INNER JOIN " +
"DM_DEVICE_TYPE dm ON d.DEVICE_TYPE_ID = dm.ID AND dm.NAME = ? AND d.DEVICE_IDENTIFICATION = ?) d1 " +
"INNER JOIN DM_DEVICE_OPERATION_MAPPING dom ON d1.ID = dom.DEVICE_ID) ois ON o.ID = ois.OP_ID";
stmt = conn.prepareStatement(sql);
stmt.setString(1, deviceId.getType()); stmt.setString(1, deviceId.getType());
stmt.setString(2, deviceId.getId()); stmt.setString(2, deviceId.getId());
rs = stmt.executeQuery();
List<Operation> operations = new ArrayList<Operation>(); operations = new ArrayList<Operation>();
ResultSet rs = stmt.executeQuery();
while (rs.next()) { while (rs.next()) {
Operation operation = new Operation(); Operation operation = new Operation();
//operation.setType(); operation.setId(rs.getInt("ID"));
} }
} catch (SQLException e) { } catch (SQLException e) {
throw new OperationManagementDAOException("Error occurred while retrieving the operation list " + throw new OperationManagementDAOException("Error occurred while retrieving the operation list " +
"available for the '" + deviceId.getType() + "' with id '" + deviceId.getId() + "'" , e); "available for the '" + deviceId.getType() + "' with id '" + deviceId.getId() + "'", e);
} finally {
OperationManagementDAOUtil.cleanupResources(stmt, rs);
} }
return operations;
}
@Override
public List<? extends Operation> getOperations(DeviceIdentifier deviceId,
Operation.Status status) throws OperationManagementDAOException {
return null; return null;
} }
@Override @Override
public List<Operation> getOperations(String status) throws OperationManagementDAOException { public List<? extends Operation> getOperations(Operation.Status status) throws OperationManagementDAOException {
return null; return null;
} }
@Override @Override
public Operation getNextOperation(DeviceIdentifier deviceId) throws OperationManagementDAOException { public Operation getNextOperation(DeviceIdentifier deviceId) throws OperationManagementDAOException {
PreparedStatement stmt = null;
ResultSet rs = null;
try {
Connection connection = OperationManagementDAOFactory.getConnection();
stmt = connection.prepareStatement(
"SELECT o.ID, o.TYPE, o.CREATED_TIMESTAMP, o.RECEIVED_TIMESTAMP, o.STATUS FROM DM_OPERATION o " +
"INNER JOIN (SELECT dom.OPERATION_ID AS OP_ID FROM (SELECT d.ID " +
"FROM DM_DEVICE d INNER JOIN DM_DEVICE_TYPE dm ON d.DEVICE_TYPE_ID = dm.ID AND " +
"dm.NAME = ? AND d.DEVICE_IDENTIFICATION = ?) d1 INNER JOIN " +
"DM_DEVICE_OPERATION_MAPPING dom ON d1.ID = dom.DEVICE_ID) ois ON o.ID = ois.OP_ID " +
"ORDER BY o.CREATED_TIMESTAMP ASC LIMIT 1");
stmt.setString(1, deviceId.getType());
stmt.setString(2, deviceId.getId());
rs = stmt.executeQuery();
Operation operation = null;
if (rs.next()) {
operation = new Operation();
operation.setType(this.getType(rs.getString("TYPE")));
operation.setStatus(this.getStatus(rs.getString("STATUS")));
operation.setId(rs.getInt("ID"));
}
return operation;
} catch (SQLException e) {
throw new OperationManagementDAOException("Error occurred while adding operation metadata", e);
} finally {
OperationManagementDAOUtil.cleanupResources(stmt, rs);
}
}
private Operation.Status getStatus(String status) {
return null; return null;
} }
private Operation.Type getType(String type) {
return null;
}
} }

@ -80,16 +80,6 @@ public class ProfileOperationDAOImpl extends OperationDAOImpl {
return operationId; return operationId;
} }
@Override
public int updateOperation(Operation operation) throws OperationManagementDAOException {
return 0;
}
@Override
public int deleteOperation(int id) throws OperationManagementDAOException {
return 0;
}
@Override @Override
public Operation getOperation(int operationId) throws OperationManagementDAOException { public Operation getOperation(int operationId) throws OperationManagementDAOException {
Connection conn = OperationManagementDAOFactory.getConnection(); Connection conn = OperationManagementDAOFactory.getConnection();
@ -136,16 +126,6 @@ public class ProfileOperationDAOImpl extends OperationDAOImpl {
} }
} }
@Override
public List<Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementDAOException {
return null;
}
@Override
public List<Operation> getOperations(String status) throws OperationManagementDAOException {
return null;
}
@Override @Override
public Operation getNextOperation(DeviceIdentifier deviceId) throws OperationManagementDAOException { public Operation getNextOperation(DeviceIdentifier deviceId) throws OperationManagementDAOException {
PreparedStatement stmt = null; PreparedStatement stmt = null;

@ -121,12 +121,13 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
} }
@Override @Override
public List<Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementException { public List<? extends Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().getOperations(deviceId); return DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().getOperations(deviceId);
} }
@Override @Override
public List<Operation> getPendingOperations(DeviceIdentifier deviceId) throws OperationManagementException { public List<? extends Operation> getPendingOperations(
DeviceIdentifier deviceId) throws OperationManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().getPendingOperations(deviceId); return DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().getPendingOperations(deviceId);
} }
@ -136,13 +137,14 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
} }
@Override @Override
public Operation updateOperation(Long operationId, DeviceIdentifier deviceIdentifier, public Operation updateOperation(int operationId, DeviceIdentifier deviceIdentifier,
String responsePayLoad) throws OperationManagementException { String responsePayLoad) throws OperationManagementException {
return null; return null;
} }
@Override @Override
public void sendEnrolmentInvitation(EmailMessageProperties emailMessageProperties) throws DeviceManagementException { public void sendEnrolmentInvitation(
EmailMessageProperties emailMessageProperties) throws DeviceManagementException {
DeviceManagementDataHolder.getInstance().getDeviceManagementProvider() DeviceManagementDataHolder.getInstance().getDeviceManagementProvider()
.sendEnrolmentInvitation(emailMessageProperties); .sendEnrolmentInvitation(emailMessageProperties);
} }

@ -170,18 +170,19 @@ public final class DeviceManagerUtil {
public static API getAPI(APIConfig config) throws APIManagementException { public static API getAPI(APIConfig config) throws APIManagementException {
APIProvider provider = config.getProvider(); APIProvider provider = config.getProvider();
APIIdentifier id = new APIIdentifier(config.getOwner(), config.getName(), config.getVersion()); APIIdentifier id = new APIIdentifier(config.getOwner(), config.getName(), config.getVersion());
API api = new API(id); API api = new API(id);
if (!provider.isAPIAvailable(id)) { api.setApiOwner(config.getOwner());
api.setContext(config.getContext()); api.setContext(config.getContext());
api.setUrl(config.getEndpoint()); api.setUrl(config.getEndpoint());
api.setUriTemplates( api.setUriTemplates(
getURITemplates(config.getEndpoint(), APIConstants.AUTH_APPLICATION_OR_USER_LEVEL_TOKEN)); getURITemplates(config.getEndpoint(), APIConstants.AUTH_APPLICATION_OR_USER_LEVEL_TOKEN));
api.setVisibility(APIConstants.API_GLOBAL_VISIBILITY); api.setVisibility(APIConstants.API_GLOBAL_VISIBILITY);
api.addAvailableTiers(provider.getTiers()); api.addAvailableTiers(provider.getTiers());
api.setEndpointSecured(false); api.setEndpointSecured(false);
api.setStatus(APIStatus.PUBLISHED); api.setStatus(APIStatus.PUBLISHED);
api.setTransports(config.getTransports()); api.setTransports(config.getTransports());
}
return api; return api;
} }

@ -87,7 +87,7 @@ public class DeviceOperationManagementTests extends DeviceManagementBaseTest {
DeviceIdentifier deviceId = new DeviceIdentifier(); DeviceIdentifier deviceId = new DeviceIdentifier();
deviceId.setId("4892813d-0b18-4a02-b7b1-61775257400e"); deviceId.setId("4892813d-0b18-4a02-b7b1-61775257400e");
deviceId.setType("android"); deviceId.setType("android");
List<Operation> operations = operationManager.getOperations(deviceId); List<? extends Operation> operations = operationManager.getOperations(deviceId);
Assert.assertNotNull(operations); Assert.assertNotNull(operations);
boolean notEmpty = operations.size() > 0; boolean notEmpty = operations.size() > 0;
Assert.assertTrue(notEmpty); Assert.assertTrue(notEmpty);

Loading…
Cancel
Save