mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge pull request #958 from amalhub/application-mgt
Application-mgt store
This commit is contained in:
commit
39bc1e7426
@ -31,6 +31,7 @@ import javax.validation.Valid;
|
|||||||
import javax.ws.rs.Path;
|
import javax.ws.rs.Path;
|
||||||
import javax.ws.rs.Produces;
|
import javax.ws.rs.Produces;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,23 +46,25 @@ public class SubscriptionManagementAPIImpl implements SubscriptionManagementAPI{
|
|||||||
@Override
|
@Override
|
||||||
public Response installApplication(@ApiParam(name = "installationDetails", value = "The application ID and list" +
|
public Response installApplication(@ApiParam(name = "installationDetails", value = "The application ID and list" +
|
||||||
" the devices/users/roles", required = true) @Valid InstallationDetails installationDetails) {
|
" the devices/users/roles", required = true) @Valid InstallationDetails installationDetails) {
|
||||||
Object response;
|
Object result;
|
||||||
SubscriptionManager subscriptionManager = APIUtil.getSubscriptionManager();
|
SubscriptionManager subscriptionManager = APIUtil.getSubscriptionManager();
|
||||||
try {
|
try {
|
||||||
String applicationUUTD = installationDetails.getApplicationUUID();
|
String applicationUUID = installationDetails.getApplicationUUID();
|
||||||
if (!installationDetails.getDeviceIdentifiers().isEmpty()) {
|
if (!installationDetails.getDeviceIdentifiers().isEmpty()) {
|
||||||
List<DeviceIdentifier> deviceList = installationDetails.getDeviceIdentifiers();
|
List<DeviceIdentifier> deviceList = installationDetails.getDeviceIdentifiers();
|
||||||
response = subscriptionManager.installApplicationForDevices(applicationUUTD, deviceList);
|
result = subscriptionManager.installApplicationForDevices(applicationUUID, deviceList);
|
||||||
} else if (!installationDetails.getUserNameList().isEmpty()) {
|
} else if (!installationDetails.getUserNameList().isEmpty()) {
|
||||||
List<String> userList = installationDetails.getUserNameList();
|
List<String> userList = installationDetails.getUserNameList();
|
||||||
response = subscriptionManager.installApplicationForUsers(applicationUUTD, userList);
|
result = subscriptionManager.installApplicationForUsers(applicationUUID, userList);
|
||||||
} else if (!installationDetails.getRoleNameList().isEmpty()) {
|
} else if (!installationDetails.getRoleNameList().isEmpty()) {
|
||||||
List<String> roleList = installationDetails.getRoleNameList();
|
List<String> roleList = installationDetails.getRoleNameList();
|
||||||
response = subscriptionManager.installApplicationForRoles(applicationUUTD, roleList);
|
result = subscriptionManager.installApplicationForRoles(applicationUUID, roleList);
|
||||||
} else {
|
} else {
|
||||||
response = "Missing request data!";
|
result = "Missing request data!";
|
||||||
return Response.status(Response.Status.BAD_REQUEST).entity(response).build();
|
return Response.status(Response.Status.BAD_REQUEST).entity(result).build();
|
||||||
}
|
}
|
||||||
|
HashMap<String, Object> response = new HashMap<>();
|
||||||
|
response.put("failedDevices", result);
|
||||||
return Response.status(Response.Status.OK).entity(response).build();
|
return Response.status(Response.Status.OK).entity(response).build();
|
||||||
} catch (ApplicationManagementException e) {
|
} catch (ApplicationManagementException e) {
|
||||||
String msg = "Error occurred while installing the application";
|
String msg = "Error occurred while installing the application";
|
||||||
|
|||||||
@ -31,7 +31,7 @@ public interface SubscriptionManager {
|
|||||||
* To install an application to given list of devices.
|
* To install an application to given list of devices.
|
||||||
* @param applicationUUID Application ID
|
* @param applicationUUID Application ID
|
||||||
* @param deviceList Device list
|
* @param deviceList Device list
|
||||||
* @return DeviceList which the application has been installed
|
* @return Failed Device List which the application was unable to install
|
||||||
* @throws ApplicationManagementException Application Management Exception
|
* @throws ApplicationManagementException Application Management Exception
|
||||||
*/
|
*/
|
||||||
List<DeviceIdentifier> installApplicationForDevices(String applicationUUID,
|
List<DeviceIdentifier> installApplicationForDevices(String applicationUUID,
|
||||||
@ -42,10 +42,10 @@ public interface SubscriptionManager {
|
|||||||
* To install an application to given list of users.
|
* To install an application to given list of users.
|
||||||
* @param applicationUUID Application ID
|
* @param applicationUUID Application ID
|
||||||
* @param userList User list
|
* @param userList User list
|
||||||
* @return User list which the application has been installed
|
* @return Failed Device List which the application was unable to install
|
||||||
* @throws ApplicationManagementException Application Management Exception
|
* @throws ApplicationManagementException Application Management Exception
|
||||||
*/
|
*/
|
||||||
List<String> installApplicationForUsers(String applicationUUID,
|
List<DeviceIdentifier> installApplicationForUsers(String applicationUUID,
|
||||||
List<String> userList)
|
List<String> userList)
|
||||||
throws ApplicationManagementException;
|
throws ApplicationManagementException;
|
||||||
|
|
||||||
@ -53,10 +53,10 @@ public interface SubscriptionManager {
|
|||||||
* To install an application to given list of users.
|
* To install an application to given list of users.
|
||||||
* @param applicationUUID Application ID
|
* @param applicationUUID Application ID
|
||||||
* @param roleList Role list
|
* @param roleList Role list
|
||||||
* @return Role list which the application has been installed
|
* @return Failed Device List which the application was unable to install
|
||||||
* @throws ApplicationManagementException Application Management Exception
|
* @throws ApplicationManagementException Application Management Exception
|
||||||
*/
|
*/
|
||||||
List<String> installApplicationForRoles(String applicationUUID,
|
List<DeviceIdentifier> installApplicationForRoles(String applicationUUID,
|
||||||
List<String> roleList)
|
List<String> roleList)
|
||||||
throws ApplicationManagementException;
|
throws ApplicationManagementException;
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ public interface SubscriptionManager {
|
|||||||
* To uninstall an application from a given list of devices.
|
* To uninstall an application from a given list of devices.
|
||||||
* @param applicationUUID Application ID
|
* @param applicationUUID Application ID
|
||||||
* @param deviceList Device list
|
* @param deviceList Device list
|
||||||
* @return DeviceList which the application has been uninstalled
|
* @return Failed Device List which the application was unable to uninstall
|
||||||
* @throws ApplicationManagementException Application Management Exception
|
* @throws ApplicationManagementException Application Management Exception
|
||||||
*/
|
*/
|
||||||
List<DeviceIdentifier> uninstallApplication(String applicationUUID,
|
List<DeviceIdentifier> uninstallApplication(String applicationUUID,
|
||||||
|
|||||||
@ -19,10 +19,14 @@ package org.wso2.carbon.device.application.mgt.core.impl;
|
|||||||
|
|
||||||
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.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
import org.wso2.carbon.device.application.mgt.common.DeviceIdentifier;
|
import org.wso2.carbon.device.application.mgt.common.DeviceIdentifier;
|
||||||
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationManagementException;
|
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationManagementException;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.SubscriptionManager;
|
import org.wso2.carbon.device.application.mgt.common.services.SubscriptionManager;
|
||||||
import org.wso2.carbon.device.application.mgt.core.dao.common.DAOFactory;
|
import org.wso2.carbon.device.application.mgt.core.dao.common.DAOFactory;
|
||||||
|
import org.wso2.carbon.device.application.mgt.core.internal.DataHolder;
|
||||||
|
import org.wso2.carbon.device.mgt.common.Device;
|
||||||
|
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
|
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.DeviceManagementDAOFactory;
|
||||||
|
|
||||||
@ -42,7 +46,60 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|||||||
List<DeviceIdentifier> deviceList)
|
List<DeviceIdentifier> deviceList)
|
||||||
throws ApplicationManagementException {
|
throws ApplicationManagementException {
|
||||||
log.info("Install application: " + applicationUUID + " to: " + deviceList.size() + " devices.");
|
log.info("Install application: " + applicationUUID + " to: " + deviceList.size() + " devices.");
|
||||||
|
List<DeviceIdentifier> failedDevices = installApplication(applicationUUID, deviceList);
|
||||||
|
return failedDevices;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DeviceIdentifier> installApplicationForUsers(String applicationUUID, List<String> userList)
|
||||||
|
throws ApplicationManagementException {
|
||||||
|
log.info("Install application: " + applicationUUID + " to: " + userList.size() + " users.");
|
||||||
|
List<DeviceIdentifier> deviceList = new ArrayList<>();
|
||||||
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
|
for (String user : userList) {
|
||||||
|
try {
|
||||||
|
List<Device> devicesOfUser = DeviceManagementDAOFactory.getDeviceDAO().getDevicesOfUser(user, tenantId);
|
||||||
|
for (Device device : devicesOfUser) {
|
||||||
|
deviceList.add(new DeviceIdentifier(device
|
||||||
|
.getDeviceIdentifier(), device.getType()));
|
||||||
|
}
|
||||||
|
} catch (DeviceManagementDAOException e) {
|
||||||
|
log.error("Error when extracting the device list from user[" + user + "].", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return installApplication(applicationUUID, deviceList);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DeviceIdentifier> installApplicationForRoles(String applicationUUID, List<String> roleList)
|
||||||
|
throws ApplicationManagementException {
|
||||||
|
log.info("Install application: " + applicationUUID + " to: " + roleList.size() + " roles.");
|
||||||
|
List<DeviceIdentifier> deviceList = new ArrayList<>();
|
||||||
|
for (String role : roleList) {
|
||||||
|
try {
|
||||||
|
List<Device> 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<DeviceIdentifier> uninstallApplication(String applicationUUID,
|
||||||
|
List<DeviceIdentifier> deviceList)
|
||||||
|
throws ApplicationManagementException {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<DeviceIdentifier> installApplication(String applicationUUID, List<DeviceIdentifier> deviceList)
|
||||||
|
throws ApplicationManagementException {
|
||||||
List<DeviceIdentifier> failedDeviceList = new ArrayList<>(deviceList);
|
List<DeviceIdentifier> failedDeviceList = new ArrayList<>(deviceList);
|
||||||
|
List<org.wso2.carbon.device.mgt.common.DeviceIdentifier> activeDeviceList = new ArrayList<>();
|
||||||
for (DeviceIdentifier device : deviceList) {
|
for (DeviceIdentifier device : deviceList) {
|
||||||
org.wso2.carbon.device.mgt.common.DeviceIdentifier deviceIdentifier = new org.wso2.carbon.device.mgt
|
org.wso2.carbon.device.mgt.common.DeviceIdentifier deviceIdentifier = new org.wso2.carbon.device.mgt
|
||||||
.common.DeviceIdentifier(device.getId(), device.getType());
|
.common.DeviceIdentifier(device.getId(), device.getType());
|
||||||
@ -52,9 +109,9 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|||||||
log.error("Device with ID: " + device.getId() + " not found to install the application.");
|
log.error("Device with ID: " + device.getId() + " not found to install the application.");
|
||||||
} else {
|
} else {
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("Installing application to : " + device.getId());
|
log.debug("Prepare application install to : " + device.getId());
|
||||||
}
|
}
|
||||||
//Todo: generating one time download link for the application and put install operation to device.
|
activeDeviceList.add(deviceIdentifier);
|
||||||
DAOFactory.getSubscriptionDAO().addDeviceApplicationMapping(device.getId(), applicationUUID, false);
|
DAOFactory.getSubscriptionDAO().addDeviceApplicationMapping(device.getId(), applicationUUID, false);
|
||||||
failedDeviceList.remove(device);
|
failedDeviceList.remove(device);
|
||||||
}
|
}
|
||||||
@ -64,35 +121,7 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|||||||
DeviceManagementDAOFactory.closeConnection();
|
DeviceManagementDAOFactory.closeConnection();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//Todo: generating one time download link for the application and put install operation to devices.
|
||||||
return failedDeviceList;
|
return failedDeviceList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<String> installApplicationForUsers(String applicationUUID, List<String> userList)
|
|
||||||
throws ApplicationManagementException {
|
|
||||||
log.info("Install application: " + applicationUUID + " to: " + userList.size() + " users.");
|
|
||||||
for (String user : userList) {
|
|
||||||
//Todo: implementation
|
|
||||||
//Todo: get the device list and call installApplicationForDevices
|
|
||||||
}
|
|
||||||
return userList;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<String> installApplicationForRoles(String applicationUUID, List<String> roleList)
|
|
||||||
throws ApplicationManagementException {
|
|
||||||
log.info("Install application: " + applicationUUID + " to: " + roleList.size() + " users.");
|
|
||||||
for (String role : roleList) {
|
|
||||||
//Todo: implementation
|
|
||||||
//Todo: get the device list and call installApplicationForDevices
|
|
||||||
}
|
|
||||||
return roleList;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<DeviceIdentifier> uninstallApplication(String applicationUUID,
|
|
||||||
List<DeviceIdentifier> deviceList)
|
|
||||||
throws ApplicationManagementException {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user