Merge pull request #958 from amalhub/application-mgt

Application-mgt store
feature/appm-store/pbac
sinthuja 7 years ago committed by GitHub
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…
Cancel
Save