mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Fix inconsistencies with subtypes and operation templates
This commit is contained in:
parent
34a9aa7431
commit
a4138b4778
@ -216,8 +216,8 @@ public class OperationTemplateServiceImpl implements OperationTemplateService {
|
||||
throws OperationTemplateMgtPluginException {
|
||||
AssertUtils.hasText(deviceType, "Invalid device type.");
|
||||
try {
|
||||
ConnectionManagerUtils.openDBConnection();
|
||||
return operationTemplateDAO.getAllOperationTemplates(deviceType);
|
||||
ConnectionManagerUtils.openDBConnection();
|
||||
return operationTemplateDAO.getAllOperationTemplates(deviceType);
|
||||
} catch (DBConnectionException | OperationTemplateManagementDAOException e) {
|
||||
log.error(e.getMessage());
|
||||
throw new OperationTemplateMgtPluginException(e.getMessage(), e);
|
||||
@ -273,11 +273,12 @@ public class OperationTemplateServiceImpl implements OperationTemplateService {
|
||||
*/
|
||||
@Override
|
||||
public Set<String> getOperationTemplateCodes(String deviceType, String subTypeId)
|
||||
throws OperationTemplateMgtPluginException {
|
||||
throws OperationTemplateMgtPluginException {
|
||||
|
||||
try {
|
||||
AssertUtils.hasText(subTypeId, "Invalid meter device subtype id: " + subTypeId);
|
||||
AssertUtils.isTrue(Integer.valueOf(subTypeId)>0, "Invalid meter device subtype id: " + subTypeId);
|
||||
AssertUtils.hasText(subTypeId, "Invalid device subtype id: " + subTypeId);
|
||||
AssertUtils.isTrue(Integer.parseInt(subTypeId) > 0,
|
||||
"Invalid device subtype id: " + subTypeId);
|
||||
AssertUtils.hasText(deviceType, "Invalid device type.");
|
||||
|
||||
String key = OperationTemplateManagementUtil.setOperationTemplateCacheKey(deviceType, subTypeId);
|
||||
@ -294,7 +295,6 @@ public class OperationTemplateServiceImpl implements OperationTemplateService {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param subTypeId
|
||||
* @param deviceType
|
||||
* @param operationCode
|
||||
@ -303,18 +303,18 @@ public class OperationTemplateServiceImpl implements OperationTemplateService {
|
||||
private void validateGetOperationTemplate(String subTypeId, String deviceType, String operationCode)
|
||||
throws OperationTemplateMgtPluginException {
|
||||
|
||||
AssertUtils.hasText(subTypeId, "Invalid meter device subtype id: " + subTypeId);
|
||||
AssertUtils.isTrue(Integer.valueOf(subTypeId)>0, "Invalid meter device subtype id: " + subTypeId);
|
||||
AssertUtils.hasText(subTypeId, "Invalid device subtype id: " + subTypeId);
|
||||
AssertUtils.isTrue(Integer.parseInt(subTypeId) > 0, "Invalid device subtype id: " + subTypeId);
|
||||
AssertUtils.hasText(operationCode, "Validation failed due to invalid operation code: " + operationCode);
|
||||
AssertUtils.hasText(deviceType, "Invalid device type.");
|
||||
AssertUtils.isTrue(deviceType.equals("METER"), "Invalid device type. ");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param operationTemplate
|
||||
* @throws OperationTemplateMgtPluginException
|
||||
*/
|
||||
private void validateAddOperationTemplate(OperationTemplate operationTemplate) throws OperationTemplateMgtPluginException {
|
||||
private void validateAddOperationTemplate(OperationTemplate operationTemplate)
|
||||
throws OperationTemplateMgtPluginException {
|
||||
|
||||
AssertUtils.isNull(operationTemplate, "Operation Template can not be null");
|
||||
AssertUtils.hasText(operationTemplate.getOperationDefinition(), "Operation definition can not be null");
|
||||
|
||||
@ -49,7 +49,7 @@ public class ServiceNegativeTest extends BaseOperationTemplatePluginTest {
|
||||
@Test(description = "This method tests Add Operation template under negative circumstances while missing " +
|
||||
"required fields",
|
||||
expectedExceptions = {OperationTemplateMgtPluginException.class},
|
||||
expectedExceptionsMessageRegExp = "Invalid meter device subtype id: 0")
|
||||
expectedExceptionsMessageRegExp = "Invalid device subtype id: 0")
|
||||
public void testAddOperationTemplates() throws OperationTemplateMgtPluginException {
|
||||
|
||||
OperationTemplate operationTemplate = new OperationTemplate();
|
||||
|
||||
@ -31,13 +31,13 @@ import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
|
||||
public class GetDeviceSubTypeCacheLoader extends CacheLoader<DeviceSubTypeCacheKey, DeviceSubType> {
|
||||
public class DeviceSubTypeCacheLoader extends CacheLoader<DeviceSubTypeCacheKey, DeviceSubType> {
|
||||
|
||||
private static final Log log = LogFactory.getLog(GetDeviceSubTypeCacheLoader.class);
|
||||
private static final Log log = LogFactory.getLog(DeviceSubTypeCacheLoader.class);
|
||||
|
||||
private final DeviceSubTypeDAO deviceSubTypeDAO;
|
||||
|
||||
public GetDeviceSubTypeCacheLoader() {
|
||||
public DeviceSubTypeCacheLoader() {
|
||||
this.deviceSubTypeDAO = DeviceSubTypeDAOFactory.getDeviceSubTypeDAO();
|
||||
}
|
||||
|
||||
@ -101,8 +101,9 @@ public class DeviceSubTypeDAOImpl implements DeviceSubTypeDAO {
|
||||
public DeviceSubType getDeviceSubType(String subTypeId, int tenantId, String deviceType)
|
||||
throws SubTypeMgtDAOException {
|
||||
try {
|
||||
String sql = "SELECT s.*, o.OPERATION_CODE FROM DM_DEVICE_SUB_TYPE s " +
|
||||
"LEFT JOIN SUB_OPERATION_TEMPLATE o on s.SUB_TYPE_ID = o.SUB_TYPE_ID " +
|
||||
String sql = "SELECT s.*, o.OPERATION_CODE FROM DM_DEVICE_SUB_TYPE s " +
|
||||
"LEFT JOIN SUB_OPERATION_TEMPLATE o ON s.SUB_TYPE_ID = o.SUB_TYPE_ID " +
|
||||
"AND s.DEVICE_TYPE = o.DEVICE_TYPE " +
|
||||
"WHERE s.SUB_TYPE_ID = ? AND s.TENANT_ID = ? AND s.DEVICE_TYPE = ?";
|
||||
|
||||
Connection conn = ConnectionManagerUtil.getDBConnection();
|
||||
@ -143,8 +144,7 @@ public class DeviceSubTypeDAOImpl implements DeviceSubTypeDAO {
|
||||
stmt.setInt(1, tenantId);
|
||||
stmt.setString(2, deviceType);
|
||||
try (ResultSet rs = stmt.executeQuery()) {
|
||||
List<DeviceSubType> deviceSubTypes = DAOUtil.loadDeviceSubTypes(rs);
|
||||
return deviceSubTypes;
|
||||
return DAOUtil.loadDeviceSubTypes(rs);
|
||||
}
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
@ -163,14 +163,14 @@ public class DeviceSubTypeDAOImpl implements DeviceSubTypeDAO {
|
||||
@Override
|
||||
public int getDeviceSubTypeCount(String deviceType) throws SubTypeMgtDAOException {
|
||||
try {
|
||||
String sql = "SELECT COUNT(*) as DEVICE_COUNT FROM DM_DEVICE_SUB_TYPE WHERE DEVICE_TYPE = ? ";
|
||||
String sql = "SELECT COUNT(*) as SUB_TYPE_COUNT FROM DM_DEVICE_SUB_TYPE WHERE DEVICE_TYPE = ? ";
|
||||
|
||||
Connection conn = ConnectionManagerUtil.getDBConnection();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
stmt.setString(1, deviceType);
|
||||
try (ResultSet rs = stmt.executeQuery()) {
|
||||
if (rs.next()) {
|
||||
return rs.getInt("DEVICE_COUNT");
|
||||
return rs.getInt("SUB_TYPE_COUNT");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -252,4 +252,5 @@ public class DeviceSubTypeDAOImpl implements DeviceSubTypeDAO {
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -21,7 +21,7 @@ package io.entgra.device.mgt.core.subtype.mgt.impl;
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
import io.entgra.device.mgt.core.subtype.mgt.cache.GetDeviceSubTypeCacheLoader;
|
||||
import io.entgra.device.mgt.core.subtype.mgt.cache.DeviceSubTypeCacheLoader;
|
||||
import io.entgra.device.mgt.core.subtype.mgt.dto.DeviceSubTypeCacheKey;
|
||||
import io.entgra.device.mgt.core.subtype.mgt.exception.BadRequestException;
|
||||
import io.entgra.device.mgt.core.subtype.mgt.exception.DBConnectionException;
|
||||
@ -48,7 +48,7 @@ public class DeviceSubTypeServiceImpl implements DeviceSubTypeService {
|
||||
private static final LoadingCache<DeviceSubTypeCacheKey, DeviceSubType> deviceSubTypeCache
|
||||
= CacheBuilder.newBuilder()
|
||||
.expireAfterWrite(15, TimeUnit.MINUTES)
|
||||
.build(new GetDeviceSubTypeCacheLoader());
|
||||
.build(new DeviceSubTypeCacheLoader());
|
||||
private final DeviceSubTypeDAO deviceSubTypeDAO;
|
||||
|
||||
public DeviceSubTypeServiceImpl() {
|
||||
@ -166,7 +166,13 @@ public class DeviceSubTypeServiceImpl implements DeviceSubTypeService {
|
||||
throws SubTypeMgtPluginException {
|
||||
try {
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
return deviceSubTypeDAO.getAllDeviceSubTypes(tenantId, deviceType);
|
||||
List<DeviceSubType> subtypes = deviceSubTypeDAO.getAllDeviceSubTypes(tenantId, deviceType);
|
||||
DeviceSubTypeCacheKey key;
|
||||
for (DeviceSubType dst: subtypes) {
|
||||
key = DeviceSubTypeMgtUtil.getDeviceSubTypeCacheKey(tenantId, dst.getSubTypeId(), deviceType);
|
||||
deviceSubTypeCache.put(key, dst);
|
||||
}
|
||||
return subtypes;
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the database connection to retrieve all device subtype for " +
|
||||
deviceType + " subtypes";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user