add try with resources

pull/137/head
Thilina Sandaruwan 1 year ago
parent e66c3dc6f6
commit 3722bfc761

@ -211,9 +211,8 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO {
} }
} }
@Override
public int addGroupWithRoles(DeviceGroupRoleWrapper groups, int tenantId) throws GroupManagementDAOException { public int addGroupWithRoles(DeviceGroupRoleWrapper groups, int tenantId) throws GroupManagementDAOException {
PreparedStatement stmt = null;
ResultSet rs;
int groupId = -1; int groupId = -1;
boolean hasStatus = false; boolean hasStatus = false;
try { try {
@ -227,27 +226,29 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO {
+ "VALUES (?, ?, ?, ?, ?, ?, ?)"; + "VALUES (?, ?, ?, ?, ?, ?, ?)";
hasStatus = true; hasStatus = true;
} }
stmt = conn.prepareStatement(sql, new String[]{"ID"}); try (PreparedStatement stmt = conn.prepareStatement(sql, new String[]{"ID"})) {
stmt.setString(1, groups.getDescription()); stmt.setString(1, groups.getDescription());
stmt.setString(2, groups.getName()); stmt.setString(2, groups.getName());
stmt.setString(3, groups.getOwner()); stmt.setString(3, groups.getOwner());
stmt.setInt(4, tenantId); stmt.setInt(4, tenantId);
stmt.setString(5, groups.getParentPath()); stmt.setString(5, groups.getParentPath());
stmt.setInt(6, groups.getParentGroupId()); stmt.setInt(6, groups.getParentGroupId());
if (hasStatus) { if (hasStatus) {
stmt.setString(7, groups.getStatus()); stmt.setString(7, groups.getStatus());
} }
stmt.executeUpdate(); stmt.executeUpdate();
rs = stmt.getGeneratedKeys(); try (ResultSet rs = stmt.getGeneratedKeys();) {
if (rs.next()) { if (rs.next()) {
groupId = rs.getInt(1); groupId = rs.getInt(1);
}
return groupId;
}
} }
return groupId;
} catch (SQLException e) { } catch (SQLException e) {
throw new GroupManagementDAOException("Error occurred while adding deviceGroup '" + String msg = "Error occurred while adding deviceGroup '" +
groups.getName() + "'", e); groups.getName() + "'";
} finally { log.error(msg);
GroupManagementDAOUtil.cleanupResources(stmt, null); throw new GroupManagementDAOException(msg, e);
} }
} }
@ -282,27 +283,26 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO {
public boolean addGroupPropertiesWithRoles(DeviceGroupRoleWrapper groups, int groupId, int tenantId) public boolean addGroupPropertiesWithRoles(DeviceGroupRoleWrapper groups, int groupId, int tenantId)
throws GroupManagementDAOException { throws GroupManagementDAOException {
boolean status; boolean status;
PreparedStatement stmt = null;
try { try {
Connection conn = GroupManagementDAOFactory.getConnection(); Connection conn = GroupManagementDAOFactory.getConnection();
stmt = conn.prepareStatement( try (PreparedStatement stmt = conn.prepareStatement(
"INSERT INTO GROUP_PROPERTIES(GROUP_ID, PROPERTY_NAME, " + "INSERT INTO GROUP_PROPERTIES(GROUP_ID, PROPERTY_NAME, " +
"PROPERTY_VALUE, TENANT_ID) VALUES (?, ?, ?, ?)"); "PROPERTY_VALUE, TENANT_ID) VALUES (?, ?, ?, ?)")) {
for (Map.Entry<String, String> entry : groups.getGroupProperties().entrySet()) { for (Map.Entry<String, String> entry : groups.getGroupProperties().entrySet()) {
stmt.setInt(1, groupId); stmt.setInt(1, groupId);
stmt.setString(2, entry.getKey()); stmt.setString(2, entry.getKey());
stmt.setString(3, entry.getValue()); stmt.setString(3, entry.getValue());
stmt.setInt(4, tenantId); stmt.setInt(4, tenantId);
stmt.addBatch(); stmt.addBatch();
}
stmt.executeBatch();
status = true;
} }
stmt.executeBatch();
status = true;
} catch (SQLException e) { } catch (SQLException e) {
String msg = "Error occurred while adding properties for group '" + String msg = "Error occurred while adding properties for group '" +
groups.getName() + "' values : " + groups.getGroupProperties(); groups.getName() + "' values : " + groups.getGroupProperties();
log.error(msg);
throw new GroupManagementDAOException(msg, e); throw new GroupManagementDAOException(msg, e);
} finally {
GroupManagementDAOUtil.cleanupResources(stmt, null);
} }
return status; return status;
} }

@ -19,6 +19,8 @@
package io.entgra.device.mgt.core.device.mgt.core.dao.impl.group; package io.entgra.device.mgt.core.device.mgt.core.dao.impl.group;
import io.entgra.device.mgt.core.device.mgt.common.group.mgt.DeviceGroupRoleWrapper; import io.entgra.device.mgt.core.device.mgt.common.group.mgt.DeviceGroupRoleWrapper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.solr.common.StringUtils; import org.apache.solr.common.StringUtils;
import io.entgra.device.mgt.core.device.mgt.common.Device; import io.entgra.device.mgt.core.device.mgt.common.Device;
import io.entgra.device.mgt.core.device.mgt.common.group.mgt.DeviceGroup; import io.entgra.device.mgt.core.device.mgt.common.group.mgt.DeviceGroup;
@ -40,6 +42,8 @@ import java.util.List;
*/ */
public class PostgreSQLGroupDAOImpl extends AbstractGroupDAOImpl { public class PostgreSQLGroupDAOImpl extends AbstractGroupDAOImpl {
private static final Log log = LogFactory.getLog(PostgreSQLGroupDAOImpl.class);
@Override @Override
public int addGroup(DeviceGroup deviceGroup, int tenantId) throws GroupManagementDAOException { public int addGroup(DeviceGroup deviceGroup, int tenantId) throws GroupManagementDAOException {
PreparedStatement stmt = null; PreparedStatement stmt = null;
@ -80,15 +84,14 @@ public class PostgreSQLGroupDAOImpl extends AbstractGroupDAOImpl {
} }
} }
@Override
public int addGroupWithRoles(DeviceGroupRoleWrapper groups, int tenantId) throws GroupManagementDAOException { public int addGroupWithRoles(DeviceGroupRoleWrapper groups, int tenantId) throws GroupManagementDAOException {
PreparedStatement stmt = null;
ResultSet rs;
int groupId = -1; int groupId = -1;
boolean hasStatus = false; boolean hasStatus = false;
try { try {
Connection conn = GroupManagementDAOFactory.getConnection(); Connection conn = GroupManagementDAOFactory.getConnection();
String sql; String sql;
if(StringUtils.isEmpty(groups.getStatus())) { if (StringUtils.isEmpty(groups.getStatus())) {
sql = "INSERT INTO DM_GROUP(DESCRIPTION, GROUP_NAME, OWNER, TENANT_ID, PARENT_PATH) " + sql = "INSERT INTO DM_GROUP(DESCRIPTION, GROUP_NAME, OWNER, TENANT_ID, PARENT_PATH) " +
"VALUES (?, ?, ?, ?) RETURNING ID"; "VALUES (?, ?, ?, ?) RETURNING ID";
} else { } else {
@ -96,26 +99,28 @@ public class PostgreSQLGroupDAOImpl extends AbstractGroupDAOImpl {
"VALUES (?, ?, ?, ?, ?) RETURNING ID"; "VALUES (?, ?, ?, ?, ?) RETURNING ID";
hasStatus = true; hasStatus = true;
} }
stmt = conn.prepareStatement(sql); try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, groups.getDescription()); stmt.setString(1, groups.getDescription());
stmt.setString(2, groups.getName()); stmt.setString(2, groups.getName());
stmt.setString(3, groups.getOwner()); stmt.setString(3, groups.getOwner());
stmt.setInt(4, tenantId); stmt.setInt(4, tenantId);
stmt.setString(5, groups.getParentPath()); stmt.setString(5, groups.getParentPath());
if(hasStatus) { if (hasStatus) {
stmt.setString(6, groups.getStatus()); stmt.setString(6, groups.getStatus());
} }
stmt.execute(); stmt.execute();
rs = stmt.getGeneratedKeys(); try (ResultSet rs = stmt.getGeneratedKeys()) {
if (rs.next()) { if (rs.next()) {
groupId = rs.getInt(1); groupId = rs.getInt(1);
}
return groupId;
}
} }
return groupId;
} catch (SQLException e) { } catch (SQLException e) {
throw new GroupManagementDAOException("Error occurred while adding deviceGroup '" + String msg = "Error occurred while adding deviceGroup '" +
groups.getName() + "'", e); groups.getName() + "'";
} finally { log.error(msg);
GroupManagementDAOUtil.cleanupResources(stmt, null); throw new GroupManagementDAOException(msg, e);
} }
} }

@ -23,7 +23,13 @@ import io.entgra.device.mgt.core.device.mgt.common.DeviceIdentifier;
import io.entgra.device.mgt.core.device.mgt.common.exceptions.DeviceNotFoundException; import io.entgra.device.mgt.core.device.mgt.common.exceptions.DeviceNotFoundException;
import io.entgra.device.mgt.core.device.mgt.common.GroupPaginationRequest; import io.entgra.device.mgt.core.device.mgt.common.GroupPaginationRequest;
import io.entgra.device.mgt.core.device.mgt.common.PaginationResult; import io.entgra.device.mgt.core.device.mgt.common.PaginationResult;
import io.entgra.device.mgt.core.device.mgt.common.group.mgt.*; import io.entgra.device.mgt.core.device.mgt.common.group.mgt.DeviceGroup;
import io.entgra.device.mgt.core.device.mgt.common.group.mgt.DeviceGroupRoleWrapper;
import io.entgra.device.mgt.core.device.mgt.common.group.mgt.DeviceTypesOfGroups;
import io.entgra.device.mgt.core.device.mgt.common.group.mgt.GroupAlreadyExistException;
import io.entgra.device.mgt.core.device.mgt.common.group.mgt.GroupManagementException;
import io.entgra.device.mgt.core.device.mgt.common.group.mgt.GroupNotExistException;
import io.entgra.device.mgt.core.device.mgt.common.group.mgt.RoleDoesNotExistException;
import java.util.List; import java.util.List;

@ -35,6 +35,7 @@ import io.entgra.device.mgt.core.device.mgt.core.dao.GroupManagementDAOFactory;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.netbeans.lib.cvsclient.commandLine.command.status;
import org.wso2.carbon.CarbonConstants; import org.wso2.carbon.CarbonConstants;
import org.wso2.carbon.context.CarbonContext; import org.wso2.carbon.context.CarbonContext;
import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.context.PrivilegedCarbonContext;
@ -147,7 +148,7 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
} }
} }
public void createGroupWithRoles(DeviceGroupRoleWrapper groups, String defaultRole, String[] defaultPermissions) throws GroupManagementException, GroupAlreadyExistException { public void createGroupWithRoles(DeviceGroupRoleWrapper groups, String defaultRole, String[] defaultPermissions) throws GroupManagementException {
if (groups == null) { if (groups == null) {
String msg = "Received incomplete data for createGroup"; String msg = "Received incomplete data for createGroup";
log.error(msg); log.error(msg);
@ -179,23 +180,17 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
} }
GroupManagementDAOFactory.commitTransaction(); GroupManagementDAOFactory.commitTransaction();
} else { } else {
throw new GroupAlreadyExistException("Group exist with name " + groups.getName()); throw new GroupManagementException("Group exist with name " + groups.getName());
} }
} catch (GroupManagementDAOException e) { } catch (GroupManagementDAOException | GroupManagementException e) {
GroupManagementDAOFactory.rollbackTransaction(); GroupManagementDAOFactory.rollbackTransaction();
String msg = "Error occurred while adding deviceGroup '" + groups.getName() + "' to database."; String msg = e.getMessage();
log.error(msg, e); log.error(msg, e);
throw new GroupManagementException(msg, e); throw new GroupManagementException(msg, e);
} catch (TransactionManagementException e) { } catch (TransactionManagementException e) {
String msg = "Error occurred while initiating transaction."; String msg = "Error occurred while initiating transaction.";
log.error(msg, e); log.error(msg, e);
throw new GroupManagementException(msg, e); throw new GroupManagementException(msg, e);
} catch (GroupAlreadyExistException ex) {
throw ex;
} catch (Exception e) {
String msg = "Error occurred in creating group '" + groups.getName() + "'";
log.error(msg, e);
throw new GroupManagementException(msg, e);
} finally { } finally {
GroupManagementDAOFactory.closeConnection(); GroupManagementDAOFactory.closeConnection();
} }

Loading…
Cancel
Save