Fix on reviews

pull/111/head
Thashmi-nil 2 years ago
parent ca2d112901
commit eb20931490

@ -1316,19 +1316,25 @@ public class ApplicationManagerImpl implements ApplicationManager {
} }
} }
/**
* Persist application icon information when creating an application
*
* @param applicationReleaseDTO {@link ApplicationReleaseDTO}
* @throws ApplicationManagementException if error occurred while persisting application icon information
*/
private void persistAppIconInfo(ApplicationReleaseDTO applicationReleaseDTO) private void persistAppIconInfo(ApplicationReleaseDTO applicationReleaseDTO)
throws ApplicationManagementException { throws ApplicationManagementException {
try{ try {
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
String iconPath = APIUtil.createAppIconPath(applicationReleaseDTO, tenantId); String iconPath = APIUtil.createAppIconPath(applicationReleaseDTO, tenantId);
DataHolder.getInstance().getDeviceManagementService().saveApplicationIcon(iconPath, DataHolder.getInstance().getDeviceManagementService().saveApplicationIcon(iconPath,
String.valueOf(applicationReleaseDTO.getPackageName()), applicationReleaseDTO.getVersion(), tenantId); String.valueOf(applicationReleaseDTO.getPackageName()), applicationReleaseDTO.getVersion(), tenantId);
} catch (ApplicationManagementException e) { } catch (ApplicationManagementException e) {
String msg = "Error occurred while creating iconPath"; String msg = "Error occurred while creating iconPath. Application package name : " + applicationReleaseDTO.getPackageName();
log.error(msg, e); log.error(msg, e);
throw new ApplicationManagementException(msg, e); throw new ApplicationManagementException(msg, e);
} catch (DeviceManagementException e) { } catch (DeviceManagementException e) {
String msg = "Error occurred while saving application icon info"; String msg = "Error occurred while saving application icon info. Application package name : " + applicationReleaseDTO.getPackageName();
log.error(msg, e); log.error(msg, e);
throw new ApplicationManagementException(msg, e); throw new ApplicationManagementException(msg, e);
} }
@ -1942,7 +1948,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
try { try {
deleteAppIconInfo(applicationDTO); deleteAppIconInfo(applicationDTO);
} catch (ApplicationManagementException e) { } catch (ApplicationManagementException e) {
String msg = "Error occurred while deleting application icon info"; String msg = "Error occurred while deleting application icon info. Application package name: " + applicationDTO.getPackageName();
log.error(msg, e); log.error(msg, e);
throw new ApplicationManagementException(msg, e); throw new ApplicationManagementException(msg, e);
} }
@ -4057,17 +4063,23 @@ public class ApplicationManagerImpl implements ApplicationManager {
DataHolder.getInstance().getDeviceManagementService().updateApplicationIcon(applicationRelease.getIconPath(), DataHolder.getInstance().getDeviceManagementService().updateApplicationIcon(applicationRelease.getIconPath(),
oldPackageName, applicationRelease.getPackageName(), applicationRelease.getVersion()); oldPackageName, applicationRelease.getPackageName(), applicationRelease.getVersion());
} catch (DeviceManagementException e) { } catch (DeviceManagementException e) {
String msg = "Error occurred while updating application icon info"; String msg = "Error occurred while updating application icon info. Application package name: " + oldPackageName;
log.error(msg, e); log.error(msg, e);
throw new ApplicationManagementException(msg, e); throw new ApplicationManagementException(msg, e);
} }
} }
private void deleteAppIconInfo(ApplicationDTO applicationDTO) throws ApplicationManagementException{ /**
* Delete application icon information when deleting an application
*
* @param applicationDTO {@link ApplicationDTO}
* @throws ApplicationManagementException if error occurred while deleting application icon information
*/
private void deleteAppIconInfo(ApplicationDTO applicationDTO) throws ApplicationManagementException {
try { try {
DataHolder.getInstance().getDeviceManagementService().deleteApplicationIcon(applicationDTO.getPackageName()); DataHolder.getInstance().getDeviceManagementService().deleteApplicationIcon(applicationDTO.getPackageName());
} catch (DeviceManagementException e) { } catch (DeviceManagementException e) {
String msg = "Error occurred while deleting application icon info"; String msg = "Error occurred while deleting application icon info. Application package name: " + applicationDTO.getPackageName();
log.error(msg, e); log.error(msg, e);
throw new ApplicationManagementException(msg, e); throw new ApplicationManagementException(msg, e);
} }

@ -511,6 +511,13 @@ public class APIUtil {
+ artifactDownloadEndpoint + Constants.FORWARD_SLASH; + artifactDownloadEndpoint + Constants.FORWARD_SLASH;
} }
/**
* To create the application icon path.
*
* @param applicationReleaseDTO {@link ApplicationReleaseDTO}
* @param tenantId tenant ID
* @return iconPath constructed icon path.
*/
public static String createAppIconPath(ApplicationReleaseDTO applicationReleaseDTO, int tenantId) throws ApplicationManagementException { public static String createAppIconPath(ApplicationReleaseDTO applicationReleaseDTO, int tenantId) throws ApplicationManagementException {
String basePath = getArtifactDownloadBaseURL() + tenantId + Constants.FORWARD_SLASH + applicationReleaseDTO String basePath = getArtifactDownloadBaseURL() + tenantId + Constants.FORWARD_SLASH + applicationReleaseDTO
.getAppHashValue() + Constants.FORWARD_SLASH; .getAppHashValue() + Constants.FORWARD_SLASH;

@ -30,7 +30,11 @@ import io.entgra.device.mgt.core.device.mgt.core.dao.util.DeviceManagementDAOUti
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.ObjectInputStream; import java.io.ObjectInputStream;
import java.sql.*; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -396,42 +400,52 @@ public class ApplicationDAOImpl implements ApplicationDAO {
public void saveApplicationIcon(String iconPath, String packageName, String version, int tenantId) public void saveApplicationIcon(String iconPath, String packageName, String version, int tenantId)
throws DeviceManagementDAOException{ throws DeviceManagementDAOException{
Connection conn; Connection conn;
PreparedStatement stmt = null; String sql = "INSERT INTO DM_APP_ICONS " +
try{ "(ICON_PATH, " +
"PACKAGE_NAME, " +
"VERSION, " +
"CREATED_TIMESTAMP, " +
"TENANT_ID) " +
"VALUES (?, ?, ?, ?, ?)";
try {
conn = this.getConnection(); conn = this.getConnection();
stmt = conn.prepareStatement("INSERT INTO DM_APP_ICONS (ICON_PATH, PACKAGE_NAME, VERSION, CREATED_TIMESTAMP, TENANT_ID) " + try (PreparedStatement stmt = conn.prepareStatement(sql)) {
"VALUES (?, ?, ?, ?, ?)"); stmt.setString(1,iconPath);
stmt.setString(1,iconPath); stmt.setString(2,packageName);
stmt.setString(2,packageName); stmt.setString(3,version);
stmt.setString(3,version); stmt.setTimestamp(4, new Timestamp(new Date().getTime()));
stmt.setTimestamp(4, new Timestamp(new Date().getTime())); stmt.setInt(5, tenantId);
stmt.setInt(5, tenantId); stmt.executeUpdate();
stmt.executeUpdate(); }
} catch(SQLException e){ } catch (SQLException e) {
throw new DeviceManagementDAOException("Error occurred while saving application icon details"); String msg = "Error occurred while saving application icon details";
} finally { log.error(msg, e);
DeviceManagementDAOUtil.cleanupResources(stmt, null); throw new DeviceManagementDAOException(msg, e);
} }
} }
@Override @Override
public int getApplicationPackageCount(String packageName) throws DeviceManagementDAOException{ public int getApplicationPackageCount(String packageName) throws DeviceManagementDAOException{
Connection conn; Connection conn;
PreparedStatement stmt = null; String sql = "SELECT " +
ResultSet rs = null; "COUNT(*) AS APP_PACKAGE_COUNT " +
try{ "FROM DM_APP_ICONS " +
"WHERE PACKAGE_NAME = ?";
try {
conn = this.getConnection(); conn = this.getConnection();
stmt = conn.prepareStatement("SELECT COUNT(*) AS APP_PACKAGE_COUNT FROM DM_APP_ICONS WHERE PACKAGE_NAME = ?"); try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, packageName); stmt.setString(1, packageName);
rs = stmt.executeQuery(); try (ResultSet rs = stmt.executeQuery()) {
if (rs.next()) { if (rs.next()) {
return rs.getInt("APP_PACKAGE_COUNT"); return rs.getInt("APP_PACKAGE_COUNT");
}
return 0;
}
} }
return 0;
} catch (SQLException e) { } catch (SQLException e) {
throw new DeviceManagementDAOException("Error occurred while saving application icon details"); String msg = "Error occurred while getting application icon details";
} finally { log.error(msg, e);
DeviceManagementDAOUtil.cleanupResources(stmt, null); throw new DeviceManagementDAOException(msg, e);
} }
} }
@ -439,63 +453,70 @@ public class ApplicationDAOImpl implements ApplicationDAO {
public void updateApplicationIcon(String iconPath, String oldPackageName, String newPackageName, String version) public void updateApplicationIcon(String iconPath, String oldPackageName, String newPackageName, String version)
throws DeviceManagementDAOException{ throws DeviceManagementDAOException{
Connection conn; Connection conn;
PreparedStatement stmt = null; String sql = "UPDATE DM_APP_ICONS " +
try{ "SET " +
"ICON_PATH= ?, " +
"PACKAGE_NAME = ?, " +
"VERSION = ? " +
"WHERE PACKAGE_NAME = ?";
try {
conn = this.getConnection(); conn = this.getConnection();
stmt = conn.prepareStatement("UPDATE DM_APP_ICONS " + try (PreparedStatement stmt = conn.prepareStatement(sql)) {
"SET " + stmt.setString(1,iconPath);
"ICON_PATH= ?, " + stmt.setString(2,newPackageName);
"PACKAGE_NAME = ?, " + stmt.setString(3,version);
"VERSION = ? " + stmt.setString(4,oldPackageName);
"WHERE PACKAGE_NAME = ?"); stmt.executeUpdate();
stmt.setString(1,iconPath); }
stmt.setString(2,newPackageName); } catch (SQLException e) {
stmt.setString(3,version); String msg = "Error occurred while updating application icon details";
stmt.setString(4,oldPackageName); log.error(msg, e);
stmt.executeUpdate(); throw new DeviceManagementDAOException(msg, e);
} catch(SQLException e){
throw new DeviceManagementDAOException("Error occurred while updating application icon details");
} finally {
DeviceManagementDAOUtil.cleanupResources(stmt, null);
} }
} }
@Override @Override
public void deleteApplicationIcon(String packageName) throws DeviceManagementDAOException { public void deleteApplicationIcon(String packageName) throws DeviceManagementDAOException {
Connection conn; Connection conn;
PreparedStatement stmt = null; String sql = "DELETE " +
try{ "FROM DM_APP_ICONS " +
"WHERE PACKAGE_NAME = ?";
try {
conn = this.getConnection(); conn = this.getConnection();
stmt = conn.prepareStatement("DELETE FROM DM_APP_ICONS WHERE PACKAGE_NAME = ?" ); try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, packageName); stmt.setString(1, packageName);
stmt.executeUpdate(); stmt.executeUpdate();
}
} catch (SQLException e) { } catch (SQLException e) {
throw new DeviceManagementDAOException("Error occurred while deleting application icon details"); String msg = "Error occurred while deleting application icon details";
} finally { log.error(msg, e);
DeviceManagementDAOUtil.cleanupResources(stmt, null); throw new DeviceManagementDAOException(msg, e);
} }
} }
@Override @Override
public String getIconPath(String applicationIdentifier) throws DeviceManagementDAOException{ public String getIconPath(String applicationIdentifier) throws DeviceManagementDAOException{
Connection conn; Connection conn;
PreparedStatement stmt = null; String sql = "SELECT " +
"ICON_PATH " +
"FROM DM_APP_ICONS " +
"WHERE PACKAGE_NAME = ?";
String iconPath = null; String iconPath = null;
try{ try {
conn = this.getConnection(); conn = this.getConnection();
stmt = conn.prepareStatement("SELECT ICON_PATH FROM DM_APP_ICONS" + try (PreparedStatement stmt = conn.prepareStatement(sql)) {
" WHERE PACKAGE_NAME = ?"); stmt.setString(1,applicationIdentifier);
stmt.setString(1,applicationIdentifier); try (ResultSet rs = stmt.executeQuery()) {
try (ResultSet rs = stmt.executeQuery()) { if (rs.next()) {
if (rs.next()) { iconPath = rs.getString("ICON_PATH");
iconPath = rs.getString("ICON_PATH"); }
return iconPath;
} }
return iconPath;
} }
} catch (SQLException e) { } catch (SQLException e) {
throw new DeviceManagementDAOException("Error occurred while retrieving app icon path"); String msg = "Error occurred while retrieving app icon path of the application";
} finally { log.error(msg, e);
DeviceManagementDAOUtil.cleanupResources(stmt, null); throw new DeviceManagementDAOException(msg, e);
} }
} }
@ -503,30 +524,49 @@ public class ApplicationDAOImpl implements ApplicationDAO {
public List<Application> getInstalledApplicationListOnDevice(int deviceId, int enrolmentId, int offset, int limit, int tenantId) public List<Application> getInstalledApplicationListOnDevice(int deviceId, int enrolmentId, int offset, int limit, int tenantId)
throws DeviceManagementDAOException { throws DeviceManagementDAOException {
Connection conn; Connection conn;
PreparedStatement stmt = null;
List<Application> applicationList = new ArrayList<>(); List<Application> applicationList = new ArrayList<>();
Application application; Application application;
ResultSet rs = null; String sql = "SELECT " +
"ID, " +
"NAME, " +
"APP_IDENTIFIER, " +
"PLATFORM, " +
"CATEGORY, " +
"VERSION, " +
"TYPE, " +
"LOCATION_URL, " +
"IMAGE_URL, " +
"APP_PROPERTIES, " +
"MEMORY_USAGE, " +
"IS_ACTIVE, " +
"TENANT_ID " +
"FROM DM_APPLICATION " +
"WHERE DEVICE_ID = ? AND " +
"ENROLMENT_ID = ? AND " +
"TENANT_ID = ? " +
"LIMIT ? " +
"OFFSET ?";
try { try {
conn = this.getConnection(); conn = this.getConnection();
stmt = conn.prepareStatement("SELECT ID, NAME, APP_IDENTIFIER, PLATFORM, CATEGORY, VERSION, TYPE, " + try (PreparedStatement stmt = conn.prepareStatement(sql)) {
"LOCATION_URL, IMAGE_URL, APP_PROPERTIES, MEMORY_USAGE, IS_ACTIVE, TENANT_ID FROM DM_APPLICATION " + stmt.setInt(1, deviceId);
"WHERE DEVICE_ID = ? AND ENROLMENT_ID = ? AND TENANT_ID = ? LIMIT ? OFFSET ?"); stmt.setInt(2, enrolmentId);
stmt.setInt(1, deviceId); stmt.setInt(3, tenantId);
stmt.setInt(2, enrolmentId); stmt.setInt(4, limit);
stmt.setInt(3, tenantId); stmt.setInt(5, offset);
stmt.setInt(4, limit); try (ResultSet rs = stmt.executeQuery()) {
stmt.setInt(5, offset); while (rs.next()) {
rs = stmt.executeQuery(); application = loadApplication(rs);
while (rs.next()) { applicationList.add(application);
application = loadApplication(rs); }
applicationList.add(application); }
} }
} catch (SQLException e) { } catch (SQLException e) {
throw new DeviceManagementDAOException("SQL Error occurred while retrieving the list of Applications " + String msg = "SQL Error occurred while retrieving the list of Applications " +
"installed in device id '" + deviceId, e); "installed in device id '" + deviceId;
} finally { log.error(msg, e);
DeviceManagementDAOUtil.cleanupResources(stmt, rs); throw new DeviceManagementDAOException(msg, e);
} }
return applicationList; return applicationList;
} }

@ -1048,6 +1048,12 @@ public interface DeviceManagementProviderService {
*/ */
void deleteApplicationIcon(String packageName) throws DeviceManagementException; void deleteApplicationIcon(String packageName) throws DeviceManagementException;
/**
* This method is for getting the installed application list of a device
* @param device {@link Device}
* @return list of applications {@link Application}
* @throws DeviceManagementException if any service level or DAO level error occurs
*/
List<Application> getInstalledApplicationsOnDevice(Device device, int offset, int limit) List<Application> getInstalledApplicationsOnDevice(Device device, int offset, int limit)
throws DeviceManagementException; throws DeviceManagementException;
} }

@ -4914,7 +4914,10 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
throw new DeviceManagementException(msg, e); throw new DeviceManagementException(msg, e);
} catch (DeviceManagementDAOException e) { } catch (DeviceManagementDAOException e) {
DeviceManagementDAOFactory.rollbackTransaction(); DeviceManagementDAOFactory.rollbackTransaction();
String msg = "Error occurred while saving app icon info"; String msg = "Error occurred while saving app icon. Icon Path: " + iconPath +
" Package Name: " + packageName +
" Version: " + version +
" Tenant Id: " + tenantId;
log.error(msg, e); log.error(msg, e);
throw new DeviceManagementException(msg, e); throw new DeviceManagementException(msg, e);
} finally { } finally {
@ -4935,7 +4938,8 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
throw new DeviceManagementException(msg, e); throw new DeviceManagementException(msg, e);
} catch (DeviceManagementDAOException e) { } catch (DeviceManagementDAOException e) {
DeviceManagementDAOFactory.rollbackTransaction(); DeviceManagementDAOFactory.rollbackTransaction();
String msg = "Error occurred while updating app icon info"; String msg = "Error occurred while updating app icon info." +
" Package Name: " + oldPackageName;
log.error(msg, e); log.error(msg, e);
throw new DeviceManagementException(msg, e); throw new DeviceManagementException(msg, e);
} finally { } finally {
@ -4956,7 +4960,8 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
throw new DeviceManagementException(msg, e); throw new DeviceManagementException(msg, e);
} catch (DeviceManagementDAOException e) { } catch (DeviceManagementDAOException e) {
DeviceManagementDAOFactory.rollbackTransaction(); DeviceManagementDAOFactory.rollbackTransaction();
String msg = "Error occurred while deleting app icon info"; String msg = "Error occurred while deleting app icon info." +
" Package Name: " + packageName ;
log.error(msg, e); log.error(msg, e);
throw new DeviceManagementException(msg, e); throw new DeviceManagementException(msg, e);
} finally { } finally {
@ -4973,12 +4978,10 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
app.setImageUrl(iconPath); app.setImageUrl(iconPath);
} }
} catch (DeviceManagementDAOException e) { } catch (DeviceManagementDAOException e) {
DeviceManagementDAOFactory.rollbackTransaction();
String msg = "Error occurred while retrieving installed app icon info"; String msg = "Error occurred while retrieving installed app icon info";
log.error(msg, e); log.error(msg, e);
throw new DeviceManagementException(msg, e); throw new DeviceManagementException(msg, e);
} catch (SQLException e) { } catch (SQLException e) {
DeviceManagementDAOFactory.rollbackTransaction();
String msg = "Error occurred while opening a connection to the data source"; String msg = "Error occurred while opening a connection to the data source";
log.error(msg); log.error(msg);
throw new DeviceManagementException(msg, e); throw new DeviceManagementException(msg, e);

@ -672,7 +672,7 @@ CREATE TABLE IF NOT EXISTS DM_OTP_DATA (
EMAIL VARCHAR(100) NOT NULL, EMAIL VARCHAR(100) NOT NULL,
EMAIL_TYPE VARCHAR(20) NOT NULL, EMAIL_TYPE VARCHAR(20) NOT NULL,
META_INFO VARCHAR(20000) NOT NULL, META_INFO VARCHAR(20000) NOT NULL,
CREATED_AT TIMESTAMP NOT NULL, CREATED_AT TIMESTAMP(0) NOT NULL,
EXPIRY_TIME INT NOT NULL DEFAULT 3600, EXPIRY_TIME INT NOT NULL DEFAULT 3600,
IS_EXPIRED BOOLEAN DEFAULT false, IS_EXPIRED BOOLEAN DEFAULT false,
PRIMARY KEY (ID) PRIMARY KEY (ID)

Loading…
Cancel
Save