From ce0cc1699f692625ad7ea7be6730ad440ce24745 Mon Sep 17 00:00:00 2001 From: prabathabey Date: Sun, 23 Aug 2015 20:19:20 +0530 Subject: [PATCH 1/4] Fixing more transaction handling related issues --- .../core/dao/DeviceManagementDAOFactory.java | 4 +- .../operation/mgt/OperationManagerImpl.java | 138 +++++++----------- .../dao/OperationManagementDAOFactory.java | 41 +++--- .../mgt/dao/impl/PolicyOperationDAOImpl.java | 3 +- .../mgt/dao/impl/ProfileOperationDAOImpl.java | 4 +- 5 files changed, 76 insertions(+), 114 deletions(-) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceManagementDAOFactory.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceManagementDAOFactory.java index be15bd9551..7c86387ee4 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceManagementDAOFactory.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceManagementDAOFactory.java @@ -87,7 +87,7 @@ public class DeviceManagementDAOFactory { return currentConnection.get(); } - public static void commitTransaction() throws TransactionManagementException { + public static void commitTransaction() { try { Connection conn = currentConnection.get(); if (conn != null) { @@ -99,7 +99,7 @@ public class DeviceManagementDAOFactory { } } } catch (SQLException e) { - throw new TransactionManagementException("Error occurred while committing the transaction", e); + log.error("Error occurred while committing the transaction", e); } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationManagerImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationManagerImpl.java index a5d1285a92..3039d0d765 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationManagerImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationManagerImpl.java @@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory; import org.wso2.carbon.context.CarbonContext; import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.EnrolmentInfo; +import org.wso2.carbon.device.mgt.common.TransactionManagementException; import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException; import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager; @@ -36,6 +37,7 @@ import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationMappingDAO; import org.wso2.carbon.device.mgt.core.operation.mgt.dao.util.OperationDAOUtil; import org.wso2.carbon.device.mgt.core.operation.mgt.util.OperationCreateTimeComparator; +import java.sql.SQLException; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -101,19 +103,15 @@ public class OperationManagerImpl implements OperationManager { OperationManagementDAOFactory.commitTransaction(); return operationId; } catch (OperationManagementDAOException e) { - try { - OperationManagementDAOFactory.rollbackTransaction(); - } catch (OperationManagementDAOException e1) { - log.warn("Error occurred while roll-backing the transaction", e1); - } + OperationManagementDAOFactory.rollbackTransaction(); throw new OperationManagementException("Error occurred while adding operation", e); } catch (DeviceManagementDAOException e) { - try { - OperationManagementDAOFactory.rollbackTransaction(); - } catch (OperationManagementDAOException e1) { - log.warn("Error occurred while roll-backing the transaction", e1); - } + OperationManagementDAOFactory.rollbackTransaction(); throw new OperationManagementException("Error occurred while retrieving device metadata", e); + } catch (TransactionManagementException e) { + throw new OperationManagementException("Error occurred while initiating the transaction", e); + } finally { + OperationManagementDAOFactory.closeConnection(); } } @@ -122,7 +120,7 @@ public class OperationManagerImpl implements OperationManager { int enrolmentId; List operations = new ArrayList<>(); try { - OperationManagementDAOFactory.getConnection(); + OperationManagementDAOFactory.openConnection(); int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); enrolmentId = deviceDAO.getEnrolmentByStatus(deviceId, EnrolmentInfo.Status.ACTIVE, tenantId); @@ -145,12 +143,10 @@ public class OperationManagerImpl implements OperationManager { } catch (DeviceManagementDAOException e) { throw new OperationManagementException("Error occurred while retrieving metadata of '" + deviceId.getType() + "' device carrying the identifier '" + deviceId.getId() + "'"); + } catch (SQLException e) { + throw new OperationManagementException("Error occurred while opening a connection to the data source", e); } finally { - try { - OperationManagementDAOFactory.closeConnection(); - } catch (OperationManagementDAOException e) { - log.warn("Error occurred while closing data source connection", e); - } + OperationManagementDAOFactory.closeConnection(); } } @@ -165,7 +161,7 @@ public class OperationManagerImpl implements OperationManager { List operations = new ArrayList<>(); List dtoOperationList = new ArrayList<>(); try { - OperationManagementDAOFactory.getConnection(); + OperationManagementDAOFactory.openConnection(); int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); enrolmentId = deviceDAO.getEnrolmentByStatus(deviceId, EnrolmentInfo.Status.ACTIVE, tenantId); @@ -202,12 +198,10 @@ public class OperationManagerImpl implements OperationManager { throw new OperationManagementException("Error occurred while retrieving the device " + "for device Identifier type -'" + deviceId.getType() + "' and device Id '" + deviceId.getId() + "'", e); + } catch (SQLException e) { + throw new OperationManagementException("Error occurred while opening a connection to the data source", e); } finally { - try { - OperationManagementDAOFactory.closeConnection(); - } catch (OperationManagementDAOException e) { - log.warn("Error occurred while closing data source connection", e); - } + OperationManagementDAOFactory.closeConnection(); } } @@ -220,7 +214,7 @@ public class OperationManagerImpl implements OperationManager { Operation operation = null; int enrolmentId; try { - OperationManagementDAOFactory.getConnection(); + OperationManagementDAOFactory.openConnection(); int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); enrolmentId = deviceDAO.getEnrolmentByStatus(deviceId, EnrolmentInfo.Status.ACTIVE, tenantId); @@ -258,23 +252,19 @@ public class OperationManagerImpl implements OperationManager { } catch (DeviceManagementDAOException e) { throw new OperationManagementException("Error occurred while retrieving the device " + "for device Identifier type -'" + deviceId.getType() + "' and device Id '" + deviceId.getId(), e); + } catch (SQLException e) { + throw new OperationManagementException("Error occurred while opening a connection to the data source", e); } finally { - try { - OperationManagementDAOFactory.closeConnection(); - } catch (OperationManagementDAOException e) { - log.warn("Error occurred while closing data source connection", e); - } + OperationManagementDAOFactory.closeConnection(); } } @Override public void updateOperation(DeviceIdentifier deviceId, Operation operation) throws OperationManagementException { int operationId = operation.getId(); - if (log.isDebugEnabled()) { log.debug("operation Id:" + operationId + " status:" + operation.getStatus()); } - try { OperationManagementDAOFactory.beginTransaction(); @@ -282,65 +272,49 @@ public class OperationManagerImpl implements OperationManager { int enrolmentId = deviceDAO.getEnrolmentByStatus(deviceId, EnrolmentInfo.Status.ACTIVE, tenantId); if (operation.getStatus() != null) { - OperationManagementDAOFactory.beginTransaction(); operationDAO.updateOperationStatus(enrolmentId, operationId, org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation.Status .valueOf(operation.getStatus().toString())); } - - if (operation.getOperationResponse() != null) { - OperationManagementDAOFactory.beginTransaction(); operationDAO.addOperationResponse(enrolmentId, operationId, operation.getOperationResponse()); - OperationManagementDAOFactory.commitTransaction(); } + OperationManagementDAOFactory.commitTransaction(); } catch (OperationManagementDAOException e) { - try { - OperationManagementDAOFactory.rollbackTransaction(); - } catch (OperationManagementDAOException e1) { - log.warn("Error occurred while roll-backing the update operation transaction", e1); - } + OperationManagementDAOFactory.rollbackTransaction(); throw new OperationManagementException("Error occurred while updating the operation: " + operationId + " status:" + operation.getStatus(), e); } catch (DeviceManagementDAOException e) { - try { - OperationManagementDAOFactory.rollbackTransaction(); - } catch (OperationManagementDAOException e1) { - log.warn("Error occurred while roll-backing the update operation transaction", e1); - } + OperationManagementDAOFactory.rollbackTransaction(); throw new OperationManagementException("Error occurred while fetching the device for device identifier: " + deviceId.getId() + "type:" + deviceId.getType(), e); + } catch (TransactionManagementException e) { + throw new OperationManagementException("Error occurred while initiating a transaction", e); } finally { - try { - OperationManagementDAOFactory.closeConnection(); - } catch (OperationManagementDAOException e) { - log.warn("Error occurred while closing data source connection", e); - } + OperationManagementDAOFactory.closeConnection(); } } @Override public void deleteOperation(int operationId) throws OperationManagementException { - try { OperationManagementDAOFactory.beginTransaction(); - org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation operation = operationDAO.getOperation - (operationId); + org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation operation = + operationDAO.getOperation(operationId); if (operation == null) { throw new OperationManagementException("Operation not found for operation id:" + operationId); } - lookupOperationDAO(operation).deleteOperation(operationId); - OperationManagementDAOFactory.commitTransaction(); + OperationManagementDAOFactory.commitTransaction(); } catch (OperationManagementDAOException e) { - try { - OperationManagementDAOFactory.rollbackTransaction(); - } catch (OperationManagementDAOException e1) { - log.warn("Error occurred while roll-backing the delete operation transaction", e1); - } + OperationManagementDAOFactory.rollbackTransaction(); throw new OperationManagementException("Error occurred while deleting the operation: " + operationId, e); + } catch (TransactionManagementException e) { + throw new OperationManagementException("Error occurred while initiating a transaction", e); + } finally { + OperationManagementDAOFactory.closeConnection(); } } @@ -349,13 +323,12 @@ public class OperationManagerImpl implements OperationManager { throws OperationManagementException { int enrolmentId; Operation operation; - if (log.isDebugEnabled()) { log.debug("Operation Id:" + operationId + " Device Type:" + deviceId.getType() + " Device Identifier:" + deviceId.getId()); } try { - OperationManagementDAOFactory.getConnection(); + OperationManagementDAOFactory.openConnection(); int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); enrolmentId = deviceDAO.getEnrolmentByStatus(deviceId, EnrolmentInfo.Status.ACTIVE, tenantId); @@ -376,12 +349,11 @@ public class OperationManagerImpl implements OperationManager { } else if (dtoOperation.getType() .equals(org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation.Type.CONFIG)) { dtoOperation = configOperationDAO.getOperation(dtoOperation.getId()); - } else if (dtoOperation.getType().equals(org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation.Type - .PROFILE)) { + } else if (dtoOperation.getType().equals( + org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation.Type.PROFILE)) { dtoOperation = profileOperationDAO.getOperation(dtoOperation.getId()); - } else if (dtoOperation.getType().equals(org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation.Type - .POLICY)) { - + } else if (dtoOperation.getType().equals( + org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation.Type.POLICY)) { dtoOperation = policyOperationDAO.getOperation(dtoOperation.getId()); } @@ -398,12 +370,10 @@ public class OperationManagerImpl implements OperationManager { throw new OperationManagementException("Error occurred while retrieving the device " + "for device Identifier type -'" + deviceId.getType() + "' and device Id '" + deviceId.getId() + "'", e); + } catch (SQLException e) { + throw new OperationManagementException("Error occurred while opening connection to the data source", e); } finally { - try { - OperationManagementDAOFactory.closeConnection(); - } catch (OperationManagementDAOException e) { - log.warn("Error occurred while closing data source connection", e); - } + OperationManagementDAOFactory.closeConnection(); } return operation; } @@ -415,7 +385,7 @@ public class OperationManagerImpl implements OperationManager { List dtoOperationList = new ArrayList<>(); try { - OperationManagementDAOFactory.getConnection(); + OperationManagementDAOFactory.openConnection(); int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); int enrolmentId = deviceDAO.getEnrolmentByStatus(deviceId, EnrolmentInfo.Status.ACTIVE, tenantId); @@ -455,18 +425,15 @@ public class OperationManagerImpl implements OperationManager { } catch (DeviceManagementDAOException e) { throw new OperationManagementException("Error occurred while retrieving the device " + "for device Identifier type -'" + deviceId.getType() + "' and device Id '" + deviceId.getId(), e); + } catch (SQLException e) { + throw new OperationManagementException("Error occurred while opening a connection to the data source", e); } finally { - try { - OperationManagementDAOFactory.closeConnection(); - } catch (OperationManagementDAOException e) { - log.warn("Error occurred while closing data source connection", e); - } + OperationManagementDAOFactory.closeConnection(); } } @Override public Operation getOperation(int operationId) throws OperationManagementException { - Operation operation; try { OperationManagementDAOFactory.getConnection(); @@ -480,8 +447,9 @@ public class OperationManagerImpl implements OperationManager { if (dtoOperation.getType() .equals(org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation.Type.COMMAND)) { org.wso2.carbon.device.mgt.core.dto.operation.mgt.CommandOperation commandOperation; - commandOperation = (org.wso2.carbon.device.mgt.core.dto.operation.mgt.CommandOperation) commandOperationDAO - .getOperation(dtoOperation.getId()); + commandOperation = + (org.wso2.carbon.device.mgt.core.dto.operation.mgt.CommandOperation) commandOperationDAO. + getOperation(dtoOperation.getId()); dtoOperation.setEnabled(commandOperation.isEnabled()); } else if (dtoOperation.getType() .equals(org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation.Type.CONFIG)) { @@ -499,12 +467,10 @@ public class OperationManagerImpl implements OperationManager { String errorMsg = "Error occurred while retrieving the operation with operation Id '" + operationId; log.error(errorMsg, e); throw new OperationManagementException(errorMsg, e); + } catch (SQLException e) { + throw new OperationManagementException("Error occurred while opening a connection to the data source", e); } finally { - try { - OperationManagementDAOFactory.closeConnection(); - } catch (OperationManagementDAOException e) { - log.warn("Error occurred while closing data source connection", e); - } + OperationManagementDAOFactory.closeConnection(); } return operation; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/OperationManagementDAOFactory.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/OperationManagementDAOFactory.java index 68aa4b0608..6ed2e443ad 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/OperationManagementDAOFactory.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/OperationManagementDAOFactory.java @@ -20,6 +20,7 @@ package org.wso2.carbon.device.mgt.core.operation.mgt.dao; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.common.TransactionManagementException; import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig; import org.wso2.carbon.device.mgt.core.config.datasource.JNDILookupDefinition; import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil; @@ -69,27 +70,29 @@ public class OperationManagementDAOFactory { dataSource = resolveDataSource(config); } - public static void beginTransaction() throws OperationManagementDAOException { + public static void beginTransaction() throws TransactionManagementException { try { - currentConnection.set(dataSource.getConnection()); + Connection conn = dataSource.getConnection(); + conn.setAutoCommit(false); + currentConnection.set(conn); } catch (SQLException e) { - throw new OperationManagementDAOException( - "Error occurred while retrieving config.datasource connection", e); + throw new TransactionManagementException( + "Error occurred while retrieving config.datasource connection", e); } } - public static Connection getConnection() throws OperationManagementDAOException { + public static void openConnection() throws SQLException { + currentConnection.set(dataSource.getConnection()); + } + + public static Connection getConnection() throws SQLException { if (currentConnection.get() == null) { - try { - currentConnection.set(dataSource.getConnection()); - } catch (SQLException e) { - throw new OperationManagementDAOException("Error occurred while retrieving data source connection", e); - } + currentConnection.set(dataSource.getConnection()); } return currentConnection.get(); } - public static void closeConnection() throws OperationManagementDAOException { + public static void closeConnection() { Connection con = currentConnection.get(); if (con != null) { try { @@ -101,7 +104,7 @@ public class OperationManagementDAOFactory { } } - public static void commitTransaction() throws OperationManagementDAOException { + public static void commitTransaction() { try { Connection conn = currentConnection.get(); if (conn != null) { @@ -113,13 +116,11 @@ public class OperationManagementDAOFactory { } } } catch (SQLException e) { - throw new OperationManagementDAOException("Error occurred while committing the transaction", e); - } finally { - closeConnection(); + log.error("Error occurred while committing the transaction", e); } } - public static void rollbackTransaction() throws OperationManagementDAOException { + public static void rollbackTransaction() { try { Connection conn = currentConnection.get(); if (conn != null) { @@ -127,13 +128,11 @@ public class OperationManagementDAOFactory { } else { if (log.isDebugEnabled()) { log.debug("Datasource connection associated with the current thread is null, hence rollback " + - "has not been attempted"); + "has not been attempted"); } } } catch (SQLException e) { - throw new OperationManagementDAOException("Error occurred while roll-backing the transaction", e); - } finally { - closeConnection(); + log.error("Error occurred while roll-backing the transaction", e); } } @@ -147,7 +146,7 @@ public class OperationManagementDAOFactory { DataSource dataSource = null; if (config == null) { throw new RuntimeException("Device Management Repository data source configuration is null and " + - "thus, is not initialized"); + "thus, is not initialized"); } JNDILookupDefinition jndiConfig = config.getJndiLookupDefinition(); if (jndiConfig != null) { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/PolicyOperationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/PolicyOperationDAOImpl.java index cd4822ced0..712a2a777f 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/PolicyOperationDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/PolicyOperationDAOImpl.java @@ -42,10 +42,9 @@ public class PolicyOperationDAOImpl extends OperationDAOImpl { operation.setId(operationId); operation.setEnabled(true); PolicyOperation policyOperation = (PolicyOperation) operation; - Connection conn = OperationManagementDAOFactory.getConnection(); - PreparedStatement stmt = null; try { + Connection conn = OperationManagementDAOFactory.getConnection(); stmt = conn.prepareStatement("INSERT INTO DM_POLICY_OPERATION(OPERATION_ID, OPERATION_DETAILS) " + "VALUES(?, ?)"); stmt.setInt(1, operationId); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ProfileOperationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ProfileOperationDAOImpl.java index d8cab721c7..53778be739 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ProfileOperationDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ProfileOperationDAOImpl.java @@ -42,11 +42,9 @@ public class ProfileOperationDAOImpl extends OperationDAOImpl { operation.setId(operationId); operation.setEnabled(true); ProfileOperation profileOp = (ProfileOperation) operation; - Connection conn = OperationManagementDAOFactory.getConnection(); - PreparedStatement stmt = null; - try { + Connection conn = OperationManagementDAOFactory.getConnection(); stmt = conn.prepareStatement("INSERT INTO DM_PROFILE_OPERATION(OPERATION_ID, OPERATION_DETAILS) " + "VALUES(?, ?)"); stmt.setInt(1, operationId); From de2c3782149cde4619ab18df9d788a6c1faab7e8 Mon Sep 17 00:00:00 2001 From: prabathabey Date: Mon, 24 Aug 2015 10:15:50 +0530 Subject: [PATCH 2/4] Code cleanup --- .../mgt/core/dao/impl/ApplicationDAOImpl.java | 57 ++++----- .../dao/impl/ApplicationMappingDAOImpl.java | 10 +- .../mgt/core/dao/impl/DeviceDAOImpl.java | 112 +++++++++--------- .../mgt/core/dao/impl/DeviceTypeDAOImpl.java | 4 - .../mgt/dao/impl/CommandOperationDAOImpl.java | 8 +- .../mgt/dao/impl/ConfigOperationDAOImpl.java | 9 +- .../mgt/dao/impl/OperationDAOImpl.java | 6 - .../mgt/dao/impl/PolicyOperationDAOImpl.java | 17 ++- .../mgt/dao/impl/ProfileOperationDAOImpl.java | 60 ++++------ 9 files changed, 115 insertions(+), 168 deletions(-) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/ApplicationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/ApplicationDAOImpl.java index 9e2251e982..15b96b9b87 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/ApplicationDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/ApplicationDAOImpl.java @@ -58,8 +58,8 @@ public class ApplicationDAOImpl implements ApplicationDAO { stmt.setString(6, application.getLocationUrl()); stmt.setString(7, application.getImageUrl()); stmt.setInt(8, tenantId); - stmt.setObject(9,application.getAppProperties()); - stmt.setString(10,application.getApplicationIdentifier()); + stmt.setObject(9, application.getAppProperties()); + stmt.setString(10, application.getApplicationIdentifier()); stmt.execute(); rs = stmt.getGeneratedKeys(); @@ -81,7 +81,7 @@ public class ApplicationDAOImpl implements ApplicationDAO { Connection conn; PreparedStatement stmt = null; ResultSet rs; - List applicationIds = new ArrayList(); + List applicationIds = new ArrayList<>(); try { conn = this.getConnection(); stmt = conn.prepareStatement("INSERT INTO DM_APPLICATION (NAME, PLATFORM, CATEGORY, " + @@ -99,12 +99,12 @@ public class ApplicationDAOImpl implements ApplicationDAO { stmt.setString(6, application.getLocationUrl()); stmt.setString(7, application.getImageUrl()); stmt.setInt(8, tenantId); - stmt.setObject(9,application.getAppProperties()); - stmt.setString(10,application.getApplicationIdentifier()); + stmt.setObject(9, application.getAppProperties()); + stmt.setString(10, application.getApplicationIdentifier()); stmt.executeUpdate(); rs = stmt.getGeneratedKeys(); - if (rs.next()){ + if (rs.next()) { applicationIds.add(rs.getInt(1)); } } @@ -118,20 +118,17 @@ public class ApplicationDAOImpl implements ApplicationDAO { @Override public List removeApplications(List apps, int tenantId) throws DeviceManagementDAOException { - Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; - int applicationId = -1; - List applicationIds = new ArrayList(); - + List applicationIds = new ArrayList<>(); try { conn = this.getConnection(); conn.setAutoCommit(false); stmt = conn.prepareStatement("DELETE DM_APPLICATION WHERE APP_IDENTIFIER = ? AND TENANT_ID = ?", Statement.RETURN_GENERATED_KEYS); - for(Application app:apps){ + for (Application app : apps) { stmt.setString(1, app.getApplicationIdentifier()); stmt.setInt(2, tenantId); stmt.addBatch(); @@ -144,7 +141,9 @@ public class ApplicationDAOImpl implements ApplicationDAO { return applicationIds; } catch (SQLException e) { try { - conn.rollback(); + if (conn != null) { + conn.rollback(); + } } catch (SQLException e1) { log.warn("Error occurred while roll-backing the transaction", e); } @@ -189,21 +188,18 @@ public class ApplicationDAOImpl implements ApplicationDAO { public List getInstalledApplications(int deviceId) throws DeviceManagementDAOException { Connection conn; PreparedStatement stmt = null; - List applications = new ArrayList(); + List applications = new ArrayList<>(); Application application; - ByteArrayInputStream bais; - ObjectInputStream ois; - try { conn = this.getConnection(); stmt = conn.prepareStatement("Select ID, NAME, APP_IDENTIFIER, PLATFORM, CATEGORY, VERSION, TYPE, " + "LOCATION_URL, IMAGE_URL, APP_PROPERTIES, TENANT_ID From DM_APPLICATION app " + - "INNER JOIN "+ + "INNER JOIN " + "(Select APPLICATION_ID From DM_DEVICE_APPLICATION_MAPPING WHERE DEVICE_ID=?) APPMAP " + - "ON "+ + "ON " + "app.ID = APPMAP.APPLICATION_ID "); - stmt.setInt(1,deviceId); + stmt.setInt(1, deviceId); ResultSet rs = stmt.executeQuery(); while (rs.next()) { @@ -219,8 +215,7 @@ public class ApplicationDAOImpl implements ApplicationDAO { return applications; } - private Application loadApplication(ResultSet rs) throws DeviceManagementDAOException{ - + private Application loadApplication(ResultSet rs) throws DeviceManagementDAOException { ByteArrayInputStream bais; ObjectInputStream ois; Properties properties; @@ -231,7 +226,7 @@ public class ApplicationDAOImpl implements ApplicationDAO { application.setName(rs.getString("NAME")); application.setType(rs.getString("TYPE")); - if (rs.getBytes("APP_PROPERTIES") !=null) { + if (rs.getBytes("APP_PROPERTIES") != null) { byte[] appProperties = rs.getBytes("APP_PROPERTIES"); bais = new ByteArrayInputStream(appProperties); @@ -246,18 +241,12 @@ public class ApplicationDAOImpl implements ApplicationDAO { application.setVersion(rs.getString("VERSION")); application.setApplicationIdentifier(rs.getString("APP_IDENTIFIER")); - }catch (IOException ex){ - String errorMsg = "IO error occurred fetch at app properties"; - log.error(errorMsg, ex); - throw new DeviceManagementDAOException(errorMsg, ex); - }catch (ClassNotFoundException cex){ - String errorMsg = "Class not found error occurred fetch at app properties"; - log.error(errorMsg, cex); - throw new DeviceManagementDAOException(errorMsg, cex); - }catch (SQLException ex){ - String errorMsg = "SQL error occurred fetch at application"; - log.error(errorMsg, ex); - throw new DeviceManagementDAOException(errorMsg, ex); + } catch (IOException e) { + throw new DeviceManagementDAOException("IO error occurred fetch at app properties", e); + } catch (ClassNotFoundException e) { + throw new DeviceManagementDAOException("Class not found error occurred fetch at app properties", e); + } catch (SQLException e) { + throw new DeviceManagementDAOException("SQL error occurred fetch at application", e); } return application; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/ApplicationMappingDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/ApplicationMappingDAOImpl.java index a7d1605de7..981db85305 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/ApplicationMappingDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/ApplicationMappingDAOImpl.java @@ -38,7 +38,6 @@ import java.util.Properties; public class ApplicationMappingDAOImpl implements ApplicationMappingDAO { - private static final Log log = LogFactory.getLog(ApplicationMappingDAOImpl.class); @Override public int addApplicationMapping(int deviceId, int applicationId, int tenantId) throws DeviceManagementDAOException { @@ -74,7 +73,7 @@ public class ApplicationMappingDAOImpl implements ApplicationMappingDAO { Connection conn; PreparedStatement stmt = null; ResultSet rs = null; - List mappingIds = new ArrayList(); + List mappingIds = new ArrayList<>(); try { conn = this.getConnection(); String sql = "INSERT INTO DM_DEVICE_APPLICATION_MAPPING (DEVICE_ID, APPLICATION_ID, " + @@ -102,12 +101,9 @@ public class ApplicationMappingDAOImpl implements ApplicationMappingDAO { } @Override - public void removeApplicationMapping(int deviceId, List appIdList, int tenantId) - throws DeviceManagementDAOException { - + public void removeApplicationMapping(int deviceId, List appIdList, + int tenantId) throws DeviceManagementDAOException { Connection conn; - ResultSet rs; - int mappingId = -1; PreparedStatement stmt = null; try { conn = this.getConnection(); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/DeviceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/DeviceDAOImpl.java index 977ae3ad85..6d8d4107bf 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/DeviceDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/DeviceDAOImpl.java @@ -18,8 +18,6 @@ package org.wso2.carbon.device.mgt.core.dao.impl; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.wso2.carbon.device.mgt.common.Device; import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.EnrolmentInfo; @@ -36,8 +34,6 @@ import java.util.List; public class DeviceDAOImpl implements DeviceDAO { - private static final Log log = LogFactory.getLog(DeviceDAOImpl.class); - @Override public int addDevice(int typeId, Device device, int tenantId) throws DeviceManagementDAOException { Connection conn; @@ -48,7 +44,7 @@ public class DeviceDAOImpl implements DeviceDAO { conn = this.getConnection(); String sql = "INSERT INTO DM_DEVICE(DESCRIPTION, NAME, DEVICE_TYPE_ID, DEVICE_IDENTIFICATION, TENANT_ID) " + - "VALUES (?, ?, ?, ?, ?)"; + "VALUES (?, ?, ?, ?, ?)"; stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); stmt.setString(1, device.getDescription()); stmt.setString(2, device.getName()); @@ -63,8 +59,8 @@ public class DeviceDAOImpl implements DeviceDAO { } return deviceId; } catch (SQLException e) { - throw new DeviceManagementDAOException("Error occurred while enrolling device " + - "'" + device.getName() + "'", e); + throw new DeviceManagementDAOException("Error occurred while enrolling device '" + device.getName() + + "'", e); } finally { DeviceManagementDAOUtil.cleanupResources(stmt, rs); } @@ -80,7 +76,7 @@ public class DeviceDAOImpl implements DeviceDAO { conn = this.getConnection(); String sql = "UPDATE DM_DEVICE SET DESCRIPTION = ?, NAME = ? WHERE DEVICE_IDENTIFICATION = ? AND " + - "DEVICE_TYPE_ID = ? AND TENANT_ID = ?"; + "DEVICE_TYPE_ID = ? AND TENANT_ID = ?"; stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); stmt.setString(1, device.getDescription()); stmt.setString(2, device.getName()); @@ -96,7 +92,7 @@ public class DeviceDAOImpl implements DeviceDAO { return deviceId; } catch (SQLException e) { throw new DeviceManagementDAOException("Error occurred while enrolling device '" + - device.getName() + "'", e); + device.getName() + "'", e); } finally { DeviceManagementDAOUtil.cleanupResources(stmt, rs); } @@ -117,11 +113,11 @@ public class DeviceDAOImpl implements DeviceDAO { conn = this.getConnection(); String sql = "SELECT d1.ID AS DEVICE_ID, d1.DESCRIPTION, d1.NAME AS DEVICE_NAME, d1.DEVICE_TYPE, d1.DEVICE_IDENTIFICATION, " + - "e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, e.DATE_OF_ENROLMENT " + - "FROM DM_ENROLMENT e, (SELECT d.ID, d.DESCRIPTION, d.NAME, " + - "t.NAME AS DEVICE_TYPE, d.DEVICE_IDENTIFICATION FROM DM_DEVICE d, DM_DEVICE_TYPE t WHERE " + - "t.NAME = ? AND d.DEVICE_IDENTIFICATION = ? AND d.TENANT_ID = ?) d1 WHERE d1.ID = e.DEVICE_ID " + - "AND TENANT_ID = ?"; + "e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, e.DATE_OF_ENROLMENT " + + "FROM DM_ENROLMENT e, (SELECT d.ID, d.DESCRIPTION, d.NAME, " + + "t.NAME AS DEVICE_TYPE, d.DEVICE_IDENTIFICATION FROM DM_DEVICE d, DM_DEVICE_TYPE t WHERE " + + "t.NAME = ? AND d.DEVICE_IDENTIFICATION = ? AND d.TENANT_ID = ?) d1 WHERE d1.ID = e.DEVICE_ID " + + "AND TENANT_ID = ?"; stmt = conn.prepareStatement(sql); stmt.setString(1, deviceId.getType()); stmt.setString(2, deviceId.getId()); @@ -133,7 +129,7 @@ public class DeviceDAOImpl implements DeviceDAO { } } catch (SQLException e) { throw new DeviceManagementDAOException("Error occurred while listing devices for type " + - "'" + deviceId.getType() + "'", e); + "'" + deviceId.getType() + "'", e); } finally { DeviceManagementDAOUtil.cleanupResources(stmt, rs); } @@ -150,22 +146,22 @@ public class DeviceDAOImpl implements DeviceDAO { conn = this.getConnection(); String sql = "SELECT d1.DEVICE_ID, d1.DESCRIPTION, d1.NAME AS DEVICE_NAME, d1.DEVICE_TYPE, d1.DEVICE_IDENTIFICATION, " + - "e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, e.DATE_OF_ENROLMENT, e.ID AS ENROLMENT_ID " + - "FROM DM_ENROLMENT e, (SELECT d.ID AS DEVICE_ID, d.DESCRIPTION, d.NAME," + - "d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM DM_DEVICE d, DM_DEVICE_TYPE t " + - "WHERE d.DEVICE_TYPE_ID = t.ID AND d.TENANT_ID = ?) d1 WHERE d1.DEVICE_ID = e.DEVICE_ID AND TENANT_ID = ?"; + "e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, e.DATE_OF_ENROLMENT, e.ID AS ENROLMENT_ID " + + "FROM DM_ENROLMENT e, (SELECT d.ID AS DEVICE_ID, d.DESCRIPTION, d.NAME," + + "d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM DM_DEVICE d, DM_DEVICE_TYPE t " + + "WHERE d.DEVICE_TYPE_ID = t.ID AND d.TENANT_ID = ?) d1 WHERE d1.DEVICE_ID = e.DEVICE_ID AND TENANT_ID = ?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, tenantId); stmt.setInt(2, tenantId); rs = stmt.executeQuery(); - devices = new ArrayList(); + devices = new ArrayList<>(); while (rs.next()) { Device device = this.loadDevice(rs); devices.add(device); } } catch (SQLException e) { throw new DeviceManagementDAOException("Error occurred while retrieving information of all " + - "registered devices", e); + "registered devices", e); } finally { DeviceManagementDAOUtil.cleanupResources(stmt, rs); } @@ -182,16 +178,16 @@ public class DeviceDAOImpl implements DeviceDAO { conn = this.getConnection(); String sql = "SELECT d1.ID AS DEVICE_ID, d1.DESCRIPTION, d1.NAME AS DEVICE_NAME, d1.DEVICE_TYPE, d1.DEVICE_IDENTIFICATION, " + - "e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, e.DATE_OF_ENROLMENT, e.ID AS ENROLMENT_ID " + - "FROM DM_ENROLMENT e, (SELECT d.ID, d.DESCRIPTION, d.NAME, d.DEVICE_IDENTIFICATION, d.OWNER, t.NAME " + - "AS DEVICE_TYPE FROM DM_DEVICE d, DM_DEVICE_TYPE t WHERE DEVICE_TYPE_ID = t.ID AND t.NAME = ? " + - "AND d.TENANT_ID = ?) d1 WHERE DEVICE_ID = e.DEVICE_ID AND TENANT_ID = ?"; + "e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, e.DATE_OF_ENROLMENT, e.ID AS ENROLMENT_ID " + + "FROM DM_ENROLMENT e, (SELECT d.ID, d.DESCRIPTION, d.NAME, d.DEVICE_IDENTIFICATION, d.OWNER, t.NAME " + + "AS DEVICE_TYPE FROM DM_DEVICE d, DM_DEVICE_TYPE t WHERE DEVICE_TYPE_ID = t.ID AND t.NAME = ? " + + "AND d.TENANT_ID = ?) d1 WHERE DEVICE_ID = e.DEVICE_ID AND TENANT_ID = ?"; stmt = conn.prepareStatement(sql); stmt.setString(1, type); stmt.setInt(2, tenantId); stmt.setInt(3, tenantId); rs = stmt.executeQuery(); - devices = new ArrayList(); + devices = new ArrayList<>(); while (rs.next()) { Device device = this.loadDevice(rs); devices.add(device); @@ -208,16 +204,16 @@ public class DeviceDAOImpl implements DeviceDAO { public List getDevicesOfUser(String username, int tenantId) throws DeviceManagementDAOException { Connection conn; PreparedStatement stmt = null; - List devices = new ArrayList(); + List devices = new ArrayList<>(); try { conn = this.getConnection(); String sql = "SELECT d1.ID AS DEVICE_ID, d1.DESCRIPTION, d1.NAME AS DEVICE_NAME, d1.DEVICE_TYPE, " + - "d1.DEVICE_IDENTIFICATION, e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, " + - "e.DATE_OF_ENROLMENT FROM DM_ENROLMENT e, (SELECT t.NAME AS DEVICE_TYPE, d.ID, d.DESCRIPTION, " + - "d.NAME, d.DEVICE_IDENTIFICATION FROM DM_DEVICE d, DM_DEVICE_TYPE t " + - "WHERE d.DEVICE_TYPE_ID = t.ID AND d.TENANT_ID = ?) d1 " + - "WHERE DEVICE_ID = e.DEVICE_ID AND TENANT_ID = ? AND e.OWNER = ?"; + "d1.DEVICE_IDENTIFICATION, e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, " + + "e.DATE_OF_ENROLMENT FROM DM_ENROLMENT e, (SELECT t.NAME AS DEVICE_TYPE, d.ID, d.DESCRIPTION, " + + "d.NAME, d.DEVICE_IDENTIFICATION FROM DM_DEVICE d, DM_DEVICE_TYPE t " + + "WHERE d.DEVICE_TYPE_ID = t.ID AND d.TENANT_ID = ?) d1 " + + "WHERE DEVICE_ID = e.DEVICE_ID AND TENANT_ID = ? AND e.OWNER = ?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, tenantId); stmt.setInt(2, tenantId); @@ -230,7 +226,7 @@ public class DeviceDAOImpl implements DeviceDAO { } } catch (SQLException e) { throw new DeviceManagementDAOException("Error occurred while fetching the list of devices belongs to '" + - username + "'", e); + username + "'", e); } finally { DeviceManagementDAOUtil.cleanupResources(stmt, null); } @@ -282,15 +278,15 @@ public class DeviceDAOImpl implements DeviceDAO { public List getDevicesByName(String deviceName, int tenantId) throws DeviceManagementDAOException { Connection conn; PreparedStatement stmt = null; - List devices = new ArrayList(); + List devices = new ArrayList<>(); try { conn = this.getConnection(); String sql = "SELECT d1.ID AS DEVICE_ID, d1.DESCRIPTION, d1.NAME AS DEVICE_NAME, d1.DEVICE_TYPE, d1.DEVICE_IDENTIFICATION, " + - "e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, e.DATE_OF_ENROLMENT, e.ID AS ENROLMENT_ID " + - "FROM DM_ENROLMENT e, (SELECT d.ID, d.NAME, d.DESCRIPTION, t.NAME AS DEVICE_TYPE, " + - "d.DEVICE_IDENTIFICATION FROM DM_DEVICE d, DM_DEVICE_TYPE t WHERE d.DEVICE_TYPE_ID = t.ID " + - "AND d.NAME LIKE ? AND d.TENANT_ID = ?) d1 WHERE DEVICE_ID = e.DEVICE_ID AND TENANT_ID = ?"; + "e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, e.DATE_OF_ENROLMENT, e.ID AS ENROLMENT_ID " + + "FROM DM_ENROLMENT e, (SELECT d.ID, d.NAME, d.DESCRIPTION, t.NAME AS DEVICE_TYPE, " + + "d.DEVICE_IDENTIFICATION FROM DM_DEVICE d, DM_DEVICE_TYPE t WHERE d.DEVICE_TYPE_ID = t.ID " + + "AND d.NAME LIKE ? AND d.TENANT_ID = ?) d1 WHERE DEVICE_ID = e.DEVICE_ID AND TENANT_ID = ?"; stmt = conn.prepareStatement(sql); stmt.setString(1, deviceName + "%"); stmt.setInt(2, tenantId); @@ -303,7 +299,7 @@ public class DeviceDAOImpl implements DeviceDAO { } } catch (SQLException e) { throw new DeviceManagementDAOException("Error occurred while fetching the list of devices that matches " + - "'" + deviceName + "'", e); + "'" + deviceName + "'", e); } finally { DeviceManagementDAOUtil.cleanupResources(stmt, null); } @@ -320,7 +316,7 @@ public class DeviceDAOImpl implements DeviceDAO { conn = this.getConnection(); String sql = "INSERT INTO DM_ENROLMENT(DEVICE_ID, OWNER, OWNERSHIP, STATUS,DATE_OF_ENROLMENT, DATE_OF_LAST_UPDATE, " + - "TENANT_ID) VALUES(?, ?, ?, ?, ?, ?, ?)"; + "TENANT_ID) VALUES(?, ?, ?, ?, ?, ?, ?)"; stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); stmt.setInt(1, device.getId()); stmt.setString(2, device.getEnrolmentInfo().getOwner()); @@ -352,8 +348,8 @@ public class DeviceDAOImpl implements DeviceDAO { conn = this.getConnection(); String sql = "UPDATE DM_ENROLMENT SET STATUS = ? WHERE DEVICE_ID = (SELECT d.ID FROM DM_DEVICE d, DM_DEVICE_TYPE t " + - "WHERE d.DEVICE_TYPE_ID = t.ID AND d.DEVICE_IDENTIFICATION = ? AND t.NAME = ? AND d.TENANT_ID = ?) " + - "AND OWNER = ? AND TENANT_ID = ?"; + "WHERE d.DEVICE_TYPE_ID = t.ID AND d.DEVICE_IDENTIFICATION = ? AND t.NAME = ? AND d.TENANT_ID = ?) " + + "AND OWNER = ? AND TENANT_ID = ?"; stmt = conn.prepareStatement(sql); stmt.setString(1, status.toString()); stmt.setString(2, deviceId.getId()); @@ -381,8 +377,8 @@ public class DeviceDAOImpl implements DeviceDAO { conn = this.getConnection(); String sql = "SELECT STATUS FROM DM_ENROLMENT WHERE DEVICE_ID = " + - "(SELECT d.ID FROM DM_DEVICE d, DM_DEVICE_TYPE t WHERE d.DEVICE_TYPE_ID = t.ID AND " + - "d.DEVICE_IDENTIFICATION = ? AND t.NAME = ? AND d.TENANT_ID = ?) AND OWNER = ? AND TENANT_ID = ?"; + "(SELECT d.ID FROM DM_DEVICE d, DM_DEVICE_TYPE t WHERE d.DEVICE_TYPE_ID = t.ID AND " + + "d.DEVICE_IDENTIFICATION = ? AND t.NAME = ? AND d.TENANT_ID = ?) AND OWNER = ? AND TENANT_ID = ?"; stmt = conn.prepareStatement(sql); stmt.setString(1, deviceId.getId()); stmt.setString(2, deviceId.getType()); @@ -413,9 +409,9 @@ public class DeviceDAOImpl implements DeviceDAO { conn = this.getConnection(); String sql = "SELECT ID AS ENROLMENT_ID, DEVICE_ID, OWNER, OWNERSHIP, STATUS, DATE_OF_ENROLMENT, DATE_OF_LAST_UPDATE, " + - "TENANT_ID FROM DM_ENROLMENT WHERE DEVICE_ID = (SELECT d.ID FROM DM_DEVICE d, DM_DEVICE_TYPE t " + - "WHERE d.DEVICE_TYPE_ID = t.ID AND d.DEVICE_IDENTIFICATION = ? AND t.NAME = ? AND d.TENANT_ID = ?) " + - "AND OWNER = ? AND TENANT_ID = ?"; + "TENANT_ID FROM DM_ENROLMENT WHERE DEVICE_ID = (SELECT d.ID FROM DM_DEVICE d, DM_DEVICE_TYPE t " + + "WHERE d.DEVICE_TYPE_ID = t.ID AND d.DEVICE_IDENTIFICATION = ? AND t.NAME = ? AND d.TENANT_ID = ?) " + + "AND OWNER = ? AND TENANT_ID = ?"; stmt = conn.prepareStatement(sql); stmt.setString(1, deviceId.getId()); stmt.setString(2, deviceId.getType()); @@ -429,7 +425,7 @@ public class DeviceDAOImpl implements DeviceDAO { return enrolmentInfo; } catch (SQLException e) { throw new DeviceManagementDAOException("Error occurred while retrieving the enrolment " + - "information of user '" + currentOwner + "' upon device '" + deviceId + "'", e); + "information of user '" + currentOwner + "' upon device '" + deviceId + "'", e); } finally { DeviceManagementDAOUtil.cleanupResources(stmt, rs); } @@ -444,8 +440,8 @@ public class DeviceDAOImpl implements DeviceDAO { conn = this.getConnection(); String sql = "SELECT ID AS ENROLMENT_ID FROM DM_ENROLMENT WHERE DEVICE_ID = (SELECT d.ID FROM DM_DEVICE d, " + - "DM_DEVICE_TYPE t WHERE d.DEVICE_TYPE_ID = t.ID AND d.DEVICE_IDENTIFICATION = ? AND t.NAME = ? " + - "AND d.TENANT_ID = ?) AND STATUS = ? AND TENANT_ID = ?"; + "DM_DEVICE_TYPE t WHERE d.DEVICE_TYPE_ID = t.ID AND d.DEVICE_IDENTIFICATION = ? AND t.NAME = ? " + + "AND d.TENANT_ID = ?) AND STATUS = ? AND TENANT_ID = ?"; stmt = conn.prepareStatement(sql); stmt.setString(1, deviceId.getId()); stmt.setString(2, deviceId.getType()); @@ -460,7 +456,7 @@ public class DeviceDAOImpl implements DeviceDAO { } } catch (SQLException e) { throw new DeviceManagementDAOException("Error occurred while retrieving the enrolment " + - "id of device '" + deviceId + "'", e); + "id of device '" + deviceId + "'", e); } finally { DeviceManagementDAOUtil.cleanupResources(stmt, rs); } @@ -491,16 +487,16 @@ public class DeviceDAOImpl implements DeviceDAO { throws DeviceManagementDAOException { Connection conn; PreparedStatement stmt = null; - List devices = new ArrayList(); + List devices = new ArrayList<>(); try { conn = this.getConnection(); String sql = "SELECT d.ID AS DEVICE_ID, d.DESCRIPTION, d.NAME AS DEVICE_NAME, t.NAME AS DEVICE_TYPE, " + - "d.DEVICE_IDENTIFICATION, e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, " + - "e.DATE_OF_ENROLMENT FROM (SELECT e.ID, e.DEVICE_ID, e.OWNER, e.OWNERSHIP, e.STATUS, " + - "e.DATE_OF_ENROLMENT, e.DATE_OF_LAST_UPDATE FROM DM_ENROLMENT e WHERE TENANT_ID = ? " + - "AND STATUS = ?) e, DM_DEVICE d, DM_DEVICE_TYPE t WHERE DEVICE_ID = e.DEVICE_ID " + - "AND d.DEVICE_TYPE_ID = t.ID AND d.TENANT_ID = ?"; + "d.DEVICE_IDENTIFICATION, e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, " + + "e.DATE_OF_ENROLMENT FROM (SELECT e.ID, e.DEVICE_ID, e.OWNER, e.OWNERSHIP, e.STATUS, " + + "e.DATE_OF_ENROLMENT, e.DATE_OF_LAST_UPDATE FROM DM_ENROLMENT e WHERE TENANT_ID = ? " + + "AND STATUS = ?) e, DM_DEVICE d, DM_DEVICE_TYPE t WHERE DEVICE_ID = e.DEVICE_ID " + + "AND d.DEVICE_TYPE_ID = t.ID AND d.TENANT_ID = ?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, tenantId); stmt.setString(2, status.toString()); @@ -513,7 +509,7 @@ public class DeviceDAOImpl implements DeviceDAO { } } catch (SQLException e) { throw new DeviceManagementDAOException("Error occurred while fetching the list of devices that matches to status " + - "'" + status + "'", e); + "'" + status + "'", e); } finally { DeviceManagementDAOUtil.cleanupResources(stmt, null); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/DeviceTypeDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/DeviceTypeDAOImpl.java index 148634eaac..6e90b21288 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/DeviceTypeDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/DeviceTypeDAOImpl.java @@ -17,16 +17,12 @@ */ package org.wso2.carbon.device.mgt.core.dao.impl; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.device.mgt.common.TransactionManagementException; 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.DeviceTypeDAO; import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil; import org.wso2.carbon.device.mgt.core.dto.DeviceType; -import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/CommandOperationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/CommandOperationDAOImpl.java index ff664d82d8..fa3348789f 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/CommandOperationDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/CommandOperationDAOImpl.java @@ -35,10 +35,11 @@ public class CommandOperationDAOImpl extends OperationDAOImpl { @Override public int addOperation(Operation operation) throws OperationManagementDAOException { - int operationId = super.addOperation(operation); + int operationId; CommandOperation commandOp = (CommandOperation) operation; PreparedStatement stmt = null; try { + operationId = super.addOperation(operation); Connection conn = OperationManagementDAOFactory.getConnection(); stmt = conn.prepareStatement("INSERT INTO DM_COMMAND_OPERATION(OPERATION_ID, ENABLED) VALUES(?, ?)"); stmt.setInt(1, operationId); @@ -66,7 +67,6 @@ public class CommandOperationDAOImpl extends OperationDAOImpl { throw new OperationManagementDAOException("Error occurred while adding operation metadata", e); } finally { OperationManagementDAOUtil.cleanupResources(stmt); - OperationManagementDAOFactory.closeConnection(); } } @@ -75,7 +75,6 @@ public class CommandOperationDAOImpl extends OperationDAOImpl { PreparedStatement stmt = null; try { super.deleteOperation(id); - Connection connection = OperationManagementDAOFactory.getConnection(); stmt = connection.prepareStatement("DELETE DM_COMMAND_OPERATION WHERE OPERATION_ID = ?"); stmt.setInt(1, id); @@ -84,7 +83,6 @@ public class CommandOperationDAOImpl extends OperationDAOImpl { throw new OperationManagementDAOException("Error occurred while deleting operation metadata", e); } finally { OperationManagementDAOUtil.cleanupResources(stmt); - OperationManagementDAOFactory.closeConnection(); } } @@ -108,7 +106,6 @@ public class CommandOperationDAOImpl extends OperationDAOImpl { "object available for the id '" + id, e); } finally { OperationManagementDAOUtil.cleanupResources(stmt, rs); - OperationManagementDAOFactory.closeConnection(); } return commandOperation; } @@ -148,7 +145,6 @@ public class CommandOperationDAOImpl extends OperationDAOImpl { "for the device'" + enrolmentId + "' with status '" + status.toString(), e); } finally { OperationManagementDAOUtil.cleanupResources(stmt, rs); - OperationManagementDAOFactory.closeConnection(); } return commandOperations; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ConfigOperationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ConfigOperationDAOImpl.java index b88f0fc6e6..7d62fa8d79 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ConfigOperationDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ConfigOperationDAOImpl.java @@ -41,9 +41,10 @@ public class ConfigOperationDAOImpl extends OperationDAOImpl { @Override public int addOperation(Operation operation) throws OperationManagementDAOException { - int operationId = super.addOperation(operation); + int operationId; PreparedStatement stmt = null; try { + operationId = super.addOperation(operation); Connection conn = OperationManagementDAOFactory.getConnection(); stmt = conn.prepareStatement("INSERT INTO DM_CONFIG_OPERATION(OPERATION_ID, OPERATION_CONFIG) VALUES(?, ?)"); stmt.setInt(1, operationId); @@ -59,9 +60,9 @@ public class ConfigOperationDAOImpl extends OperationDAOImpl { @Override public void deleteOperation(int id) throws OperationManagementDAOException { - super.deleteOperation(id); PreparedStatement stmt = null; try { + super.deleteOperation(id); Connection connection = OperationManagementDAOFactory.getConnection(); stmt = connection.prepareStatement("DELETE DM_CONFIG_OPERATION WHERE OPERATION_ID = ?") ; stmt.setInt(1, id); @@ -78,8 +79,8 @@ public class ConfigOperationDAOImpl extends OperationDAOImpl { PreparedStatement stmt = null; ByteArrayOutputStream bao = null; ObjectOutputStream oos = null; - super.updateOperation(operation); try { + super.updateOperation(operation); Connection connection = OperationManagementDAOFactory.getConnection(); stmt = connection.prepareStatement("UPDATE DM_CONFIG_OPERATION O SET O.OPERATION_CONFIG = ? " + "WHERE O.OPERATION_ID = ?"); @@ -146,7 +147,6 @@ public class ConfigOperationDAOImpl extends OperationDAOImpl { + operationId, e); } finally { OperationManagementDAOUtil.cleanupResources(stmt, rs); - OperationManagementDAOFactory.closeConnection(); } return configOperation; } @@ -205,7 +205,6 @@ public class ConfigOperationDAOImpl extends OperationDAOImpl { } } OperationManagementDAOUtil.cleanupResources(stmt, rs); - OperationManagementDAOFactory.closeConnection(); } return operations; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/OperationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/OperationDAOImpl.java index 4aa0e70dbd..14454a2f63 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/OperationDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/OperationDAOImpl.java @@ -189,7 +189,6 @@ public class OperationDAOImpl implements OperationDAO { "available for the id '" + id, e); } finally { OperationManagementDAOUtil.cleanupResources(stmt, rs); - OperationManagementDAOFactory.closeConnection(); } return operation; } @@ -229,7 +228,6 @@ public class OperationDAOImpl implements OperationDAO { "available for the device'" + enrolmentId + "' with id '" + operationId, e); } finally { OperationManagementDAOUtil.cleanupResources(stmt, rs); - OperationManagementDAOFactory.closeConnection(); } return operation; } @@ -271,7 +269,6 @@ public class OperationDAOImpl implements OperationDAO { "available for the device'" + enrolmentId + "' with status '" + status.toString(), e); } finally { OperationManagementDAOUtil.cleanupResources(stmt, rs); - OperationManagementDAOFactory.closeConnection(); } return operations; } @@ -311,7 +308,6 @@ public class OperationDAOImpl implements OperationDAO { "available for the device'" + enrolmentId + "' with status '", e); } finally { OperationManagementDAOUtil.cleanupResources(stmt, rs); - OperationManagementDAOFactory.closeConnection(); } return operations; } @@ -350,7 +346,6 @@ public class OperationDAOImpl implements OperationDAO { throw new OperationManagementDAOException("Error occurred while adding operation metadata", e); } finally { OperationManagementDAOUtil.cleanupResources(stmt, rs); - OperationManagementDAOFactory.closeConnection(); } } @@ -393,7 +388,6 @@ public class OperationDAOImpl implements OperationDAO { "for the device'" + enrolmentId + "' with status '" + status.toString(), e); } finally { OperationManagementDAOUtil.cleanupResources(stmt, rs); - OperationManagementDAOFactory.closeConnection(); } return operations; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/PolicyOperationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/PolicyOperationDAOImpl.java index 712a2a777f..4f501bb8a6 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/PolicyOperationDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/PolicyOperationDAOImpl.java @@ -37,13 +37,14 @@ public class PolicyOperationDAOImpl extends OperationDAOImpl { @Override public int addOperation(Operation operation) throws OperationManagementDAOException { - int operationId = super.addOperation(operation); - operation.setCreatedTimeStamp(new Timestamp(new java.util.Date().getTime()).toString()); - operation.setId(operationId); - operation.setEnabled(true); - PolicyOperation policyOperation = (PolicyOperation) operation; + int operationId; PreparedStatement stmt = null; try { + operationId = super.addOperation(operation); + operation.setCreatedTimeStamp(new Timestamp(new java.util.Date().getTime()).toString()); + operation.setId(operationId); + operation.setEnabled(true); + PolicyOperation policyOperation = (PolicyOperation) operation; Connection conn = OperationManagementDAOFactory.getConnection(); stmt = conn.prepareStatement("INSERT INTO DM_POLICY_OPERATION(OPERATION_ID, OPERATION_DETAILS) " + "VALUES(?, ?)"); @@ -63,8 +64,8 @@ public class PolicyOperationDAOImpl extends OperationDAOImpl { PreparedStatement stmt = null; ByteArrayOutputStream bao = null; ObjectOutputStream oos = null; - super.updateOperation(operation); try { + super.updateOperation(operation); Connection connection = OperationManagementDAOFactory.getConnection(); stmt = connection.prepareStatement("UPDATE DM_POLICY_OPERATION O SET O.OPERATION_DETAILS=? " + "WHERE O.OPERATION_ID=?"); @@ -100,9 +101,9 @@ public class PolicyOperationDAOImpl extends OperationDAOImpl { @Override public void deleteOperation(int operationId) throws OperationManagementDAOException { - super.deleteOperation(operationId); PreparedStatement stmt = null; try { + super.deleteOperation(operationId); Connection connection = OperationManagementDAOFactory.getConnection(); stmt = connection.prepareStatement("DELETE DM_POLICY_OPERATION WHERE OPERATION_ID=?"); stmt.setInt(1, operationId); @@ -146,7 +147,6 @@ public class PolicyOperationDAOImpl extends OperationDAOImpl { "object available for the id '" + operationId + "'", e); } finally { OperationManagementDAOUtil.cleanupResources(stmt, rs); - OperationManagementDAOFactory.closeConnection(); } return policyOperation; } @@ -205,7 +205,6 @@ public class PolicyOperationDAOImpl extends OperationDAOImpl { } } OperationManagementDAOUtil.cleanupResources(stmt, rs); - OperationManagementDAOFactory.closeConnection(); } return operations; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ProfileOperationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ProfileOperationDAOImpl.java index 53778be739..56da664251 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ProfileOperationDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ProfileOperationDAOImpl.java @@ -36,14 +36,14 @@ public class ProfileOperationDAOImpl extends OperationDAOImpl { private static final Log log = LogFactory.getLog(ProfileOperationDAOImpl.class); public int addOperation(Operation operation) throws OperationManagementDAOException { - - int operationId = super.addOperation(operation); - operation.setCreatedTimeStamp(new Timestamp(new java.util.Date().getTime()).toString()); - operation.setId(operationId); - operation.setEnabled(true); - ProfileOperation profileOp = (ProfileOperation) operation; PreparedStatement stmt = null; + int operationId; try { + operationId = super.addOperation(operation); + operation.setCreatedTimeStamp(new Timestamp(new java.util.Date().getTime()).toString()); + operation.setId(operationId); + operation.setEnabled(true); + ProfileOperation profileOp = (ProfileOperation) operation; Connection conn = OperationManagementDAOFactory.getConnection(); stmt = conn.prepareStatement("INSERT INTO DM_PROFILE_OPERATION(OPERATION_ID, OPERATION_DETAILS) " + "VALUES(?, ?)"); @@ -60,13 +60,11 @@ public class ProfileOperationDAOImpl extends OperationDAOImpl { @Override public void updateOperation(Operation operation) throws OperationManagementDAOException { - PreparedStatement stmt = null; ByteArrayOutputStream bao = null; ObjectOutputStream oos = null; - super.updateOperation(operation); - try { + super.updateOperation(operation); Connection connection = OperationManagementDAOFactory.getConnection(); stmt = connection.prepareStatement("UPDATE DM_PROFILE_OPERATION O SET O.OPERATION_DETAILS=? " + "WHERE O.OPERATION_ID=?"); @@ -78,7 +76,6 @@ public class ProfileOperationDAOImpl extends OperationDAOImpl { stmt.setBytes(1, bao.toByteArray()); stmt.setInt(2, operation.getId()); stmt.executeUpdate(); - } catch (SQLException e) { throw new OperationManagementDAOException("Error occurred while update operation metadata", e); } catch (IOException e) { @@ -104,10 +101,9 @@ public class ProfileOperationDAOImpl extends OperationDAOImpl { @Override public void deleteOperation(int id) throws OperationManagementDAOException { - - super.deleteOperation(id); PreparedStatement stmt = null; try { + super.deleteOperation(id); Connection connection = OperationManagementDAOFactory.getConnection(); stmt = connection.prepareStatement("DELETE DM_PROFILE_OPERATION WHERE OPERATION_ID=?"); stmt.setInt(1, id); @@ -120,14 +116,12 @@ public class ProfileOperationDAOImpl extends OperationDAOImpl { } public Operation getOperation(int id) throws OperationManagementDAOException { - PreparedStatement stmt = null; ResultSet rs = null; ProfileOperation profileOperation = null; ByteArrayInputStream bais; ObjectInputStream ois; - try { Connection conn = OperationManagementDAOFactory.getConnection(); String sql = "SELECT OPERATION_ID, ENABLED, OPERATION_DETAILS FROM DM_PROFILE_OPERATION WHERE OPERATION_ID=?"; @@ -142,24 +136,17 @@ public class ProfileOperationDAOImpl extends OperationDAOImpl { ois = new ObjectInputStream(bais); profileOperation = (ProfileOperation) ois.readObject(); } - } catch (IOException e) { - String errorMsg = "IO Error occurred while de serialize the profile operation object"; - log.error(errorMsg, e); - throw new OperationManagementDAOException(errorMsg, e); + throw new OperationManagementDAOException("IO Error occurred while de serialize the profile " + + "operation object", e); } catch (ClassNotFoundException e) { - String errorMsg = "Class not found error occurred while de serialize the profile operation object"; - log.error(errorMsg, e); - throw new OperationManagementDAOException(errorMsg, e); + throw new OperationManagementDAOException("Class not found error occurred while de serialize the " + + "profile operation object", e); } catch (SQLException e) { - String errorMsg = "SQL Error occurred while retrieving the command operation object " + "available for " + - "the id '" - + id; - log.error(errorMsg, e); - throw new OperationManagementDAOException(errorMsg, e); + throw new OperationManagementDAOException("SQL Error occurred while retrieving the command " + + "operation object " + "available for the id '" + id, e); } finally { OperationManagementDAOUtil.cleanupResources(stmt, rs); - OperationManagementDAOFactory.closeConnection(); } return profileOperation; } @@ -167,7 +154,6 @@ public class ProfileOperationDAOImpl extends OperationDAOImpl { @Override public List getOperationsByDeviceAndStatus(int enrolmentId, Operation.Status status) throws OperationManagementDAOException { - PreparedStatement stmt = null; ResultSet rs = null; ProfileOperation profileOperation; @@ -200,18 +186,14 @@ public class ProfileOperationDAOImpl extends OperationDAOImpl { } } catch (IOException e) { - String errorMsg = "IO Error occurred while de serialize the profile operation object"; - log.error(errorMsg, e); - throw new OperationManagementDAOException(errorMsg, e); + throw new OperationManagementDAOException("IO Error occurred while de serialize the profile " + + "operation object", e); } catch (ClassNotFoundException e) { - String errorMsg = "Class not found error occurred while de serialize the profile operation object"; - log.error(errorMsg, e); - throw new OperationManagementDAOException(errorMsg, e); + throw new OperationManagementDAOException("Class not found error occurred while de serialize the " + + "profile operation object", e); } catch (SQLException e) { - String errorMsg = "SQL error occurred while retrieving the operation available for the device'" + enrolmentId + - "' with status '" + status.toString(); - log.error(errorMsg); - throw new OperationManagementDAOException(errorMsg, e); + throw new OperationManagementDAOException("SQL error occurred while retrieving the operation " + + "available for the device'" + enrolmentId + "' with status '" + status.toString(), e); } finally { if (bais != null) { try { @@ -228,8 +210,8 @@ public class ProfileOperationDAOImpl extends OperationDAOImpl { } } OperationManagementDAOUtil.cleanupResources(stmt, rs); - OperationManagementDAOFactory.closeConnection(); } return operationList; } + } From d4c5d9023ee4101264d17eeb188740ebf64a3001 Mon Sep 17 00:00:00 2001 From: prabathabey Date: Mon, 24 Aug 2015 11:04:28 +0530 Subject: [PATCH 3/4] Adding necessary instructions for transaction handling --- .../core/dao/DeviceManagementDAOFactory.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceManagementDAOFactory.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceManagementDAOFactory.java index 7c86387ee4..8d28f17825 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceManagementDAOFactory.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceManagementDAOFactory.java @@ -32,6 +32,52 @@ import java.sql.SQLException; import java.util.Hashtable; import java.util.List; +/** + * This class intends to act as the primary entity that hides all DAO instantiation related complexities and logic so + * that the business objection handling layer doesn't need to be aware of the same providing seamless plug-ability of + * different data sources, connection acquisition mechanisms as well as different forms of DAO implementations to the + * high-level implementations that require device management related metadata persistence. + *

+ * In addition, this also provides means to handle transactions across multiple device management related DAO objects. + * Any high-level business logic that requires transaction handling to be done via utility methods provided in + * DeviceManagementDAOFactory should adhere the following guidelines to avoid any unexpected behaviour that can cause + * as a result of improper use of the aforementioned utility method. + *

+ * Any transaction that commits data into the underlying data persistence mechanism MUST follow the sequence of + * operations mentioned below. + *

+ *

+ * {@code
+ * try {
+ *      DeviceManagementDAOFactory.beginTransaction();
+ *      .....
+ *      DeviceManagementDAOFactory.commitTransaction();
+ *      return success;
+ * } catch (Exception e) {
+ *      DeviceManagementDAOFactory.rollbackTransaction();
+ *      throw new DeviceManagementException("Error occurred while ...", e);
+ * } finally {
+ *      DeviceManagementDAOFactory.closeConnection();
+ * }
+ * }
+ * 
+ *

+ * Any transaction that retrieves data from the underlying data persistence mechanism MUST follow the sequence of + * operations mentioned below. + *

+ *

+ * {@code
+ * try {
+ *      DeviceManagementDAOFactory.openConnection();
+ *      .....
+ * } catch (Exception e) {
+ *      throw new DeviceManagementException("Error occurred while ..., e);
+ * } finally {
+ *      DeviceManagementDAOFactory.closeConnection();
+ * }
+ * }
+ * 
+ */ public class DeviceManagementDAOFactory { private static DataSource dataSource; From 3582973f840450ca9ad62914912ca59ce54223c0 Mon Sep 17 00:00:00 2001 From: prabathabey Date: Mon, 24 Aug 2015 11:04:47 +0530 Subject: [PATCH 4/4] Code cleanup --- .../device/mgt/core/operation/mgt/OperationManagerImpl.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationManagerImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationManagerImpl.java index 3039d0d765..b2e593291d 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationManagerImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationManagerImpl.java @@ -72,7 +72,6 @@ public class OperationManagerImpl implements OperationManager { @Override public int addOperation(Operation operation, List deviceIds) throws OperationManagementException { - if (log.isDebugEnabled()) { log.debug("operation:[" + operation.toString() + "]"); for (DeviceIdentifier deviceIdentifier : deviceIds) { @@ -464,9 +463,8 @@ public class OperationManagerImpl implements OperationManager { } operation = OperationDAOUtil.convertOperation(dtoOperation); } catch (OperationManagementDAOException e) { - String errorMsg = "Error occurred while retrieving the operation with operation Id '" + operationId; - log.error(errorMsg, e); - throw new OperationManagementException(errorMsg, e); + throw new OperationManagementException("Error occurred while retrieving the operation with operation Id '" + + operationId, e); } catch (SQLException e) { throw new OperationManagementException("Error occurred while opening a connection to the data source", e); } finally {