From 89495d9c77c5c5ffd5dc7fb06da1d148ced0377d Mon Sep 17 00:00:00 2001 From: amalhub Date: Mon, 9 Oct 2017 18:53:40 +0530 Subject: [PATCH] App-mgt-store Adding version name and code simplification --- .../impl/SubscriptionManagementAPIImpl.java | 4 +- .../common/services/SubscriptionManager.java | 4 +- .../core/impl/SubscriptionManagerImpl.java | 142 ++++++++---------- 3 files changed, 64 insertions(+), 86 deletions(-) diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.api/src/main/java/org/wso2/carbon/device/application/mgt/api/services/impl/SubscriptionManagementAPIImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.api/src/main/java/org/wso2/carbon/device/application/mgt/api/services/impl/SubscriptionManagementAPIImpl.java index cf0de355b5..5eac81699b 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.api/src/main/java/org/wso2/carbon/device/application/mgt/api/services/impl/SubscriptionManagementAPIImpl.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.api/src/main/java/org/wso2/carbon/device/application/mgt/api/services/impl/SubscriptionManagementAPIImpl.java @@ -59,10 +59,10 @@ public class SubscriptionManagementAPIImpl implements SubscriptionManagementAPI{ result = subscriptionManager.installApplicationForDevices(applicationUUTD, versionName, deviceList); } else if (!installationDetails.getUserNameList().isEmpty()) { List userList = installationDetails.getUserNameList(); - result = subscriptionManager.installApplicationForUsers(applicationUUTD, userList); + result = subscriptionManager.installApplicationForUsers(applicationUUID, userList, versionName); } else if (!installationDetails.getRoleNameList().isEmpty()) { List roleList = installationDetails.getRoleNameList(); - result = subscriptionManager.installApplicationForRoles(applicationUUTD, roleList); + result = subscriptionManager.installApplicationForRoles(applicationUUID, roleList, versionName); } else { result = "Missing request data!"; return Response.status(Response.Status.BAD_REQUEST).entity(result).build(); diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/SubscriptionManager.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/SubscriptionManager.java index 5f21cb2a98..603ac48015 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/SubscriptionManager.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/SubscriptionManager.java @@ -46,7 +46,7 @@ public interface SubscriptionManager { * @throws ApplicationManagementException Application Management Exception */ List installApplicationForUsers(String applicationUUID, - List userList) + List userList, String versionName) throws ApplicationManagementException; /** @@ -57,7 +57,7 @@ public interface SubscriptionManager { * @throws ApplicationManagementException Application Management Exception */ List installApplicationForRoles(String applicationUUID, - List roleList) + List roleList, String versionName) throws ApplicationManagementException; /** diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/SubscriptionManagerImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/SubscriptionManagerImpl.java index 3667e0953d..17fce50c57 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/SubscriptionManagerImpl.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/SubscriptionManagerImpl.java @@ -52,18 +52,67 @@ public class SubscriptionManagerImpl implements SubscriptionManager { public List installApplicationForDevices(String applicationUUID, String versionName, List deviceList) throws ApplicationManagementException { + return installApplication(applicationUUID, deviceList, versionName); + } + @Override + public List installApplicationForUsers(String applicationUUID, List userList, String versionName) + throws ApplicationManagementException { + log.info("Install application: " + applicationUUID + " to: " + userList.size() + " users."); + List deviceList = new ArrayList<>(); + for (String user : userList) { + try { + List devicesOfUser = HelperUtil.getDeviceManagementProviderService().getDevicesOfUser(user); + for (Device device : devicesOfUser) { + deviceList.add(new DeviceIdentifier(device + .getDeviceIdentifier(), device.getType())); + } + } catch (DeviceManagementException e) { + log.error("Error when extracting the device list from user[" + user + "].", e); + } + } + return installApplication(applicationUUID, deviceList, versionName); + } + + @Override + public List installApplicationForRoles(String applicationUUID, List roleList, String versionName) + throws ApplicationManagementException { + log.info("Install application: " + applicationUUID + " to: " + roleList.size() + " roles."); + List deviceList = new ArrayList<>(); + for (String role : roleList) { + try { + List devicesOfRole = HelperUtil.getDeviceManagementProviderService().getAllDevicesOfRole(role); + for (Device device : devicesOfRole) { + deviceList.add(new DeviceIdentifier(device + .getDeviceIdentifier(), device.getType())); + } + } catch (DeviceManagementException e) { + log.error("Error when extracting the device list from role[" + role + "].", e); + } + } + return installApplication(applicationUUID, deviceList, versionName); + } + + @Override + public List uninstallApplication(String applicationUUID, + List deviceList) + throws ApplicationManagementException { + return null; + } + + private List installApplication(String applicationUUID, List deviceList, String versionName) + throws ApplicationManagementException { + List failedDeviceList = new ArrayList<>(deviceList); // Todo: try whether we can optimise this by sending bulk inserts to db // Todo: atomicity is not maintained as deveice managment provider service uses separate db connection. fix this?? - log.info("Install application: " + applicationUUID + " to: " + deviceList.size() + " devices."); - List failedDeviceList = new ArrayList<>(deviceList); + log.info("Install application: " + applicationUUID + "[" + versionName + "]" + " to: " + deviceList.size() + " devices."); for (DeviceIdentifier device : deviceList) { org.wso2.carbon.device.mgt.common.DeviceIdentifier deviceIdentifier = new org.wso2.carbon.device.mgt .common.DeviceIdentifier(device.getId(), device.getType()); try { - DeviceManagementProviderService dmpService = DataHolder.getInstance().getDeviceManagementService(); + DeviceManagementProviderService dmpService = HelperUtil.getDeviceManagementProviderService(); if (!dmpService.isEnrolled(deviceIdentifier)) { - log.error("Device with ID: " + device.getId() + " is not enrolled to install the application."); + log.error("Device with ID: [" + device.getId() + "] is not enrolled to install the application."); } else { if (log.isDebugEnabled()) { log.debug("Installing application to : " + device.getId()); @@ -77,8 +126,7 @@ public class SubscriptionManagerImpl implements SubscriptionManager { operation.setPayLoad("{'type':'enterprise', 'url':'http://10.100.5.76:8000/app-debug.apk', 'app':'" + applicationUUID + "'}"); List deviceIdentifiers = new ArrayList<>(); deviceIdentifiers.add(deviceIdentifier); - DeviceManagementProviderService deviceManagementProviderService = HelperUtil.getDeviceManagementProviderService(); - deviceManagementProviderService.addOperation(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID, + dmpService.addOperation(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID, operation, deviceIdentifiers); DeviceApplicationMapping deviceApp = new DeviceApplicationMapping(); @@ -86,88 +134,18 @@ public class SubscriptionManagerImpl implements SubscriptionManager { deviceApp.setApplicationUUID(applicationUUID); deviceApp.setVersionName(versionName); deviceApp.setInstalled(false); - deviceManagementProviderService.addDeviceApplicationMapping(deviceApp); + dmpService.addDeviceApplicationMapping(deviceApp); +// DeviceManagementDAOFactory.openConnection(); // DAOFactory.getSubscriptionDAO().addDeviceApplicationMapping(device.getId(), applicationUUID, false); failedDeviceList.remove(device); } } catch (DeviceManagementException | OperationManagementException | InvalidDeviceException e) { - throw new ApplicationManagementException("Failed to install application " + applicationUUID + " on device " + deviceIdentifier, e); + log.error("Error while installing application to device[" + deviceIdentifier.getId() + "]", e); } +// finally { +// DeviceManagementDAOFactory.closeConnection(); +// } } return failedDeviceList; } - - @Override - public List installApplicationForUsers(String applicationUUID, List userList) - throws ApplicationManagementException { - log.info("Install application: " + applicationUUID + " to: " + userList.size() + " users."); - List deviceList = new ArrayList<>(); - for (String user : userList) { - try { - List devicesOfUser = DataHolder.getInstance().getDeviceManagementService().getDevicesOfUser(user); - for (Device device : devicesOfUser) { - deviceList.add(new DeviceIdentifier(device - .getDeviceIdentifier(), device.getType())); - } - } catch (DeviceManagementException e) { - log.error("Error when extracting the device list from user[" + user + "].", e); - } - } - return installApplication(applicationUUID, deviceList); - } - - @Override - public List installApplicationForRoles(String applicationUUID, List roleList) - throws ApplicationManagementException { - log.info("Install application: " + applicationUUID + " to: " + roleList.size() + " roles."); - List deviceList = new ArrayList<>(); - for (String role : roleList) { - try { - List devicesOfRole = DataHolder.getInstance().getDeviceManagementService().getAllDevicesOfRole(role); - for (Device device : devicesOfRole) { - deviceList.add(new DeviceIdentifier(device - .getDeviceIdentifier(), device.getType())); - } - } catch (DeviceManagementException e) { - log.error("Error when extracting the device list from role[" + role + "].", e); - } - } - return installApplication(applicationUUID, deviceList); - } - - @Override - public List uninstallApplication(String applicationUUID, - List deviceList) - throws ApplicationManagementException { - return null; - } - - private List installApplication(String applicationUUID, List deviceList) - throws ApplicationManagementException { - List failedDeviceList = new ArrayList<>(deviceList); - List activeDeviceList = new ArrayList<>(); - for (DeviceIdentifier device : deviceList) { - org.wso2.carbon.device.mgt.common.DeviceIdentifier deviceIdentifier = new org.wso2.carbon.device.mgt - .common.DeviceIdentifier(device.getId(), device.getType()); - try { - DeviceManagementDAOFactory.openConnection(); - if (DeviceManagementDAOFactory.getDeviceDAO().getDevice(deviceIdentifier).isEmpty()) { - log.error("Device with ID: " + device.getId() + " not found to install the application."); - } else { - if (log.isDebugEnabled()) { - log.debug("Prepare application install to : " + device.getId()); - } - activeDeviceList.add(deviceIdentifier); - DAOFactory.getSubscriptionDAO().addDeviceApplicationMapping(device.getId(), applicationUUID, false); - failedDeviceList.remove(device); - } - } catch (DeviceManagementDAOException | SQLException e) { - throw new ApplicationManagementException("Error locating device.", e); - } finally { - DeviceManagementDAOFactory.closeConnection(); - } - } - //Todo: generating one time download link for the application and put install operation to devices. - return failedDeviceList; - } }