|
|
|
@ -19,16 +19,21 @@ package org.wso2.carbon.device.application.mgt.core.impl;
|
|
|
|
|
|
|
|
|
|
import org.apache.commons.logging.Log;
|
|
|
|
|
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.exception.ApplicationManagementException;
|
|
|
|
|
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.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.DeviceManagementDAOFactory;
|
|
|
|
|
|
|
|
|
|
import java.sql.SQLException;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* This is the default implementation for the Subscription Manager.
|
|
|
|
@ -36,13 +41,69 @@ import java.util.List;
|
|
|
|
|
public class SubscriptionManagerImpl implements SubscriptionManager {
|
|
|
|
|
|
|
|
|
|
private static final Log log = LogFactory.getLog(SubscriptionManagerImpl.class);
|
|
|
|
|
final private String ANDROID = "android";
|
|
|
|
|
final private String IOS = "ios";
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<DeviceIdentifier> installApplicationForDevices(String applicationUUID,
|
|
|
|
|
List<DeviceIdentifier> deviceList)
|
|
|
|
|
throws ApplicationManagementException {
|
|
|
|
|
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<org.wso2.carbon.device.mgt.common.DeviceIdentifier> androidDevices = new ArrayList<>();
|
|
|
|
|
List<org.wso2.carbon.device.mgt.common.DeviceIdentifier> iosDevices = 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());
|
|
|
|
@ -52,9 +113,13 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|
|
|
|
log.error("Device with ID: " + device.getId() + " not found to install the application.");
|
|
|
|
|
} else {
|
|
|
|
|
if (log.isDebugEnabled()) {
|
|
|
|
|
log.debug("Installing application to : " + device.getId());
|
|
|
|
|
log.debug("Prepare application install to : " + device.getId());
|
|
|
|
|
}
|
|
|
|
|
if (device.getType().equals(ANDROID)) {
|
|
|
|
|
androidDevices.add(deviceIdentifier);
|
|
|
|
|
} else {
|
|
|
|
|
iosDevices.add(deviceIdentifier);
|
|
|
|
|
}
|
|
|
|
|
//Todo: generating one time download link for the application and put install operation to device.
|
|
|
|
|
DAOFactory.getSubscriptionDAO().addDeviceApplicationMapping(device.getId(), applicationUUID, false);
|
|
|
|
|
failedDeviceList.remove(device);
|
|
|
|
|
}
|
|
|
|
@ -64,35 +129,7 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|
|
|
|
DeviceManagementDAOFactory.closeConnection();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//Todo: generating one time download link for the application and put install operation to devices.
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|