mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge branch 'master' of https://github.com/wso2/carbon-device-mgt into das-ext
This commit is contained in:
commit
2aa5257cda
@ -32,16 +32,13 @@ import org.wso2.carbon.device.mgt.common.app.mgt.Application;
|
|||||||
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
|
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
|
||||||
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
|
||||||
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
|
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
|
||||||
import org.wso2.carbon.device.mgt.core.DeviceManagementPluginRepository;
|
|
||||||
import org.wso2.carbon.device.mgt.core.app.mgt.config.AppManagementConfig;
|
import org.wso2.carbon.device.mgt.core.app.mgt.config.AppManagementConfig;
|
||||||
import org.wso2.carbon.device.mgt.core.app.mgt.oauth.ServiceAuthenticator;
|
import org.wso2.carbon.device.mgt.core.app.mgt.oauth.ServiceAuthenticator;
|
||||||
import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager;
|
import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager;
|
||||||
import org.wso2.carbon.device.mgt.core.config.identity.IdentityConfigurations;
|
import org.wso2.carbon.device.mgt.core.config.identity.IdentityConfigurations;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.*;
|
import org.wso2.carbon.device.mgt.core.dao.*;
|
||||||
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
||||||
import org.wso2.carbon.device.mgt.core.internal.PluginInitializationListener;
|
|
||||||
import org.wso2.carbon.identity.oauth.stub.OAuthAdminServiceException;
|
import org.wso2.carbon.identity.oauth.stub.OAuthAdminServiceException;
|
||||||
import org.wso2.carbon.identity.oauth.stub.OAuthAdminServiceStub;
|
import org.wso2.carbon.identity.oauth.stub.OAuthAdminServiceStub;
|
||||||
import org.wso2.carbon.identity.oauth.stub.dto.OAuthConsumerAppDTO;
|
import org.wso2.carbon.identity.oauth.stub.dto.OAuthConsumerAppDTO;
|
||||||
@ -56,9 +53,6 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public class ApplicationManagerProviderServiceImpl implements ApplicationManagementProviderService {
|
public class ApplicationManagerProviderServiceImpl implements ApplicationManagementProviderService {
|
||||||
|
|
||||||
private ConfigurationContext configCtx;
|
|
||||||
private ServiceAuthenticator authenticator;
|
|
||||||
private String oAuthAdminServiceUrl;
|
|
||||||
private DeviceDAO deviceDAO;
|
private DeviceDAO deviceDAO;
|
||||||
private ApplicationDAO applicationDAO;
|
private ApplicationDAO applicationDAO;
|
||||||
private ApplicationMappingDAO applicationMappingDAO;
|
private ApplicationMappingDAO applicationMappingDAO;
|
||||||
@ -67,19 +61,6 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
|||||||
private static final Log log = LogFactory.getLog(ApplicationManagerProviderServiceImpl.class);
|
private static final Log log = LogFactory.getLog(ApplicationManagerProviderServiceImpl.class);
|
||||||
|
|
||||||
public ApplicationManagerProviderServiceImpl(AppManagementConfig appManagementConfig) {
|
public ApplicationManagerProviderServiceImpl(AppManagementConfig appManagementConfig) {
|
||||||
|
|
||||||
IdentityConfigurations identityConfig = DeviceConfigurationManager.getInstance().getDeviceManagementConfig().
|
|
||||||
getDeviceManagementConfigRepository().getIdentityConfigurations();
|
|
||||||
this.authenticator =
|
|
||||||
new ServiceAuthenticator(identityConfig.getAdminUsername(), identityConfig.getAdminPassword());
|
|
||||||
this.oAuthAdminServiceUrl =
|
|
||||||
identityConfig.getServerUrl() + DeviceManagementConstants.AppManagement.OAUTH_ADMIN_SERVICE;
|
|
||||||
try {
|
|
||||||
this.configCtx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
|
|
||||||
} catch (AxisFault e) {
|
|
||||||
throw new IllegalArgumentException("Error occurred while initializing Axis2 Configuration Context. " +
|
|
||||||
"Please check if an appropriate axis2.xml is provided", e);
|
|
||||||
}
|
|
||||||
this.deviceDAO = DeviceManagementDAOFactory.getDeviceDAO();
|
this.deviceDAO = DeviceManagementDAOFactory.getDeviceDAO();
|
||||||
this.applicationDAO = DeviceManagementDAOFactory.getApplicationDAO();
|
this.applicationDAO = DeviceManagementDAOFactory.getApplicationDAO();
|
||||||
this.applicationMappingDAO = DeviceManagementDAOFactory.getApplicationMappingDAO();
|
this.applicationMappingDAO = DeviceManagementDAOFactory.getApplicationMappingDAO();
|
||||||
@ -112,7 +93,6 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
|||||||
@Override
|
@Override
|
||||||
public void installApplicationForDevices(Operation operation, List<DeviceIdentifier> deviceIds)
|
public void installApplicationForDevices(Operation operation, List<DeviceIdentifier> deviceIds)
|
||||||
throws ApplicationManagementException {
|
throws ApplicationManagementException {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().addOperation(operation, deviceIds);
|
DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().addOperation(operation, deviceIds);
|
||||||
DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().notifyOperationToDevices
|
DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().notifyOperationToDevices
|
||||||
@ -207,50 +187,6 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateInstalledApplicationListOfDevice(
|
|
||||||
DeviceIdentifier deviceIdentifier, List<Application> applications) throws ApplicationManagementException {
|
|
||||||
}
|
|
||||||
|
|
||||||
private OAuthConsumerAppDTO getAppInfo() throws ApplicationManagementException {
|
|
||||||
OAuthConsumerAppDTO appInfo = null;
|
|
||||||
try {
|
|
||||||
OAuthAdminServiceStub oAuthAdminServiceStub =
|
|
||||||
new OAuthAdminServiceStub(configCtx, oAuthAdminServiceUrl);
|
|
||||||
authenticator.authenticate(oAuthAdminServiceStub._getServiceClient());
|
|
||||||
|
|
||||||
try {
|
|
||||||
appInfo = oAuthAdminServiceStub.getOAuthApplicationDataByAppName(
|
|
||||||
DeviceManagementConstants.AppManagement.OAUTH_APPLICATION_NAME);
|
|
||||||
}
|
|
||||||
//application doesn't exist. Due to the way getOAuthApplicationDataByAppName has been
|
|
||||||
//implemented, it throws an AxisFault if the App doesn't exist. Hence the catch.
|
|
||||||
catch (AxisFault fault) {
|
|
||||||
oAuthAdminServiceStub.registerOAuthApplicationData(this.getRequestDTO());
|
|
||||||
appInfo = oAuthAdminServiceStub.getOAuthApplicationDataByAppName(
|
|
||||||
DeviceManagementConstants.AppManagement.OAUTH_APPLICATION_NAME);
|
|
||||||
}
|
|
||||||
} catch (RemoteException e) {
|
|
||||||
handleException("Error occurred while retrieving app info", e);
|
|
||||||
} catch (OAuthAdminServiceException e) {
|
|
||||||
handleException("Error occurred while invoking OAuth admin service stub", e);
|
|
||||||
}
|
|
||||||
return appInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
private OAuthConsumerAppDTO getRequestDTO() {
|
|
||||||
OAuthConsumerAppDTO appDTO = new OAuthConsumerAppDTO();
|
|
||||||
appDTO.setApplicationName(DeviceManagementConstants.AppManagement.OAUTH_APPLICATION_NAME);
|
|
||||||
appDTO.setGrantTypes(
|
|
||||||
DeviceManagementConstants.AppManagement.OAUTH2_GRANT_TYPE_CLIENT_CREDENTIALS);
|
|
||||||
appDTO.setOAuthVersion(DeviceManagementConstants.AppManagement.OAUTH_VERSION_2);
|
|
||||||
return appDTO;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleException(String msg, Exception e) throws ApplicationManagementException {
|
|
||||||
log.error(msg, e);
|
|
||||||
throw new ApplicationManagementException(msg, e);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateApplicationListInstalledInDevice(
|
public void updateApplicationListInstalledInDevice(
|
||||||
DeviceIdentifier deviceIdentifier, List<Application> applications) throws ApplicationManagementException {
|
DeviceIdentifier deviceIdentifier, List<Application> applications) throws ApplicationManagementException {
|
||||||
|
|||||||
@ -17,8 +17,14 @@
|
|||||||
*/
|
*/
|
||||||
package org.wso2.carbon.device.mgt.core.config;
|
package org.wso2.carbon.device.mgt.core.config;
|
||||||
|
|
||||||
|
import org.wso2.carbon.device.mgt.core.config.identity.IdentityConfigurations;
|
||||||
|
import org.wso2.carbon.device.mgt.core.config.policy.PolicyConfiguration;
|
||||||
|
import org.wso2.carbon.device.mgt.core.config.task.TaskConfiguration;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlElement;
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents Device Mgt configuration.
|
* Represents Device Mgt configuration.
|
||||||
@ -27,6 +33,10 @@ import javax.xml.bind.annotation.XmlRootElement;
|
|||||||
public final class DeviceManagementConfig {
|
public final class DeviceManagementConfig {
|
||||||
|
|
||||||
private DeviceManagementConfigRepository deviceManagementConfigRepository;
|
private DeviceManagementConfigRepository deviceManagementConfigRepository;
|
||||||
|
private TaskConfiguration taskConfiguration;
|
||||||
|
private IdentityConfigurations identityConfigurations;
|
||||||
|
private PolicyConfiguration policyConfiguration;
|
||||||
|
//private List<String> pushNotificationProviders;
|
||||||
|
|
||||||
@XmlElement(name = "ManagementRepository", required = true)
|
@XmlElement(name = "ManagementRepository", required = true)
|
||||||
public DeviceManagementConfigRepository getDeviceManagementConfigRepository() {
|
public DeviceManagementConfigRepository getDeviceManagementConfigRepository() {
|
||||||
@ -37,4 +47,43 @@ public final class DeviceManagementConfig {
|
|||||||
this.deviceManagementConfigRepository = deviceManagementConfigRepository;
|
this.deviceManagementConfigRepository = deviceManagementConfigRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@XmlElement(name = "IdentityConfiguration", required = true)
|
||||||
|
public IdentityConfigurations getIdentityConfigurations() {
|
||||||
|
return identityConfigurations;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setIdentityConfigurations(IdentityConfigurations identityConfigurations) {
|
||||||
|
this.identityConfigurations = identityConfigurations;
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement(name = "PolicyConfiguration", required = true)
|
||||||
|
public PolicyConfiguration getPolicyConfiguration() {
|
||||||
|
return policyConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPolicyConfiguration(PolicyConfiguration policyConfiguration) {
|
||||||
|
this.policyConfiguration = policyConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement(name = "TaskConfiguration", required = true)
|
||||||
|
public TaskConfiguration getTaskConfiguration() {
|
||||||
|
return taskConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTaskConfiguration(TaskConfiguration taskConfiguration) {
|
||||||
|
this.taskConfiguration = taskConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
// @XmlElementWrapper(name = "PushNotificationProviders", required = true)
|
||||||
|
// @XmlElement(name = "Provider", required = true)
|
||||||
|
// public List<String> getPushNotificationProviders() {
|
||||||
|
// return pushNotificationProviders;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public void setPushNotificationProviders(List<String> pushNotificationProviders) {
|
||||||
|
// this.pushNotificationProviders = pushNotificationProviders;
|
||||||
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -31,12 +31,7 @@ import javax.xml.bind.annotation.XmlRootElement;
|
|||||||
@XmlRootElement(name = "ManagementRepository")
|
@XmlRootElement(name = "ManagementRepository")
|
||||||
public class DeviceManagementConfigRepository {
|
public class DeviceManagementConfigRepository {
|
||||||
|
|
||||||
|
|
||||||
// private EmailConfigurations emailConfigurations;
|
|
||||||
private TaskConfiguration taskConfiguration;
|
|
||||||
private DataSourceConfig dataSourceConfig;
|
private DataSourceConfig dataSourceConfig;
|
||||||
private IdentityConfigurations identityConfigurations;
|
|
||||||
private PolicyConfiguration policyConfiguration;
|
|
||||||
|
|
||||||
@XmlElement(name = "DataSourceConfiguration", required = true)
|
@XmlElement(name = "DataSourceConfiguration", required = true)
|
||||||
public DataSourceConfig getDataSourceConfig() {
|
public DataSourceConfig getDataSourceConfig() {
|
||||||
@ -47,40 +42,4 @@ public class DeviceManagementConfigRepository {
|
|||||||
this.dataSourceConfig = dataSourceConfig;
|
this.dataSourceConfig = dataSourceConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
// @XmlElement(name = "EmailClientConfiguration", required = true)
|
|
||||||
// public EmailConfigurations getEmailConfigurations() {
|
|
||||||
// return emailConfigurations;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void setEmailConfigurations(EmailConfigurations emailConfigurations) {
|
|
||||||
// this.emailConfigurations = emailConfigurations;
|
|
||||||
// }
|
|
||||||
|
|
||||||
@XmlElement(name = "IdentityConfiguration", required = true)
|
|
||||||
public IdentityConfigurations getIdentityConfigurations() {
|
|
||||||
return identityConfigurations;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void setIdentityConfigurations(IdentityConfigurations identityConfigurations) {
|
|
||||||
this.identityConfigurations = identityConfigurations;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XmlElement(name = "PolicyConfiguration", required = true)
|
|
||||||
public PolicyConfiguration getPolicyConfiguration() {
|
|
||||||
return policyConfiguration;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPolicyConfiguration(PolicyConfiguration policyConfiguration) {
|
|
||||||
this.policyConfiguration = policyConfiguration;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XmlElement(name = "TaskConfiguration", required = true)
|
|
||||||
public TaskConfiguration getTaskConfiguration() {
|
|
||||||
return taskConfiguration;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTaskConfiguration(TaskConfiguration taskConfiguration) {
|
|
||||||
this.taskConfiguration = taskConfiguration;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,7 +31,7 @@ public class PolicyConfiguration {
|
|||||||
private int minRetriesToMarkUnreachable;
|
private int minRetriesToMarkUnreachable;
|
||||||
private int minRetriesToMarkInactive;
|
private int minRetriesToMarkInactive;
|
||||||
|
|
||||||
@XmlElement(name = "monitoringClass", required = true)
|
@XmlElement(name = "MonitoringClass", required = true)
|
||||||
public String getMonitoringClass() {
|
public String getMonitoringClass() {
|
||||||
return monitoringClass;
|
return monitoringClass;
|
||||||
}
|
}
|
||||||
@ -40,7 +40,7 @@ public class PolicyConfiguration {
|
|||||||
this.monitoringClass = monitoringClass;
|
this.monitoringClass = monitoringClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
@XmlElement(name = "maxRetries", required = true)
|
@XmlElement(name = "MaxRetries", required = true)
|
||||||
public int getMaxRetries() {
|
public int getMaxRetries() {
|
||||||
return maxRetries;
|
return maxRetries;
|
||||||
}
|
}
|
||||||
@ -49,7 +49,7 @@ public class PolicyConfiguration {
|
|||||||
this.maxRetries = maxRetries;
|
this.maxRetries = maxRetries;
|
||||||
}
|
}
|
||||||
|
|
||||||
@XmlElement(name = "minRetriesToMarkUnreachable", required = true)
|
@XmlElement(name = "MinRetriesToMarkUnreachable", required = true)
|
||||||
public int getMinRetriesToMarkUnreachable() {
|
public int getMinRetriesToMarkUnreachable() {
|
||||||
return minRetriesToMarkUnreachable;
|
return minRetriesToMarkUnreachable;
|
||||||
}
|
}
|
||||||
@ -58,7 +58,7 @@ public class PolicyConfiguration {
|
|||||||
this.minRetriesToMarkUnreachable = minRetriesToMarkUnreachable;
|
this.minRetriesToMarkUnreachable = minRetriesToMarkUnreachable;
|
||||||
}
|
}
|
||||||
|
|
||||||
@XmlElement(name = "monitoringEnable", required = true)
|
@XmlElement(name = "MonitoringEnable", required = true)
|
||||||
public boolean getMonitoringEnable() {
|
public boolean getMonitoringEnable() {
|
||||||
return monitoringEnable;
|
return monitoringEnable;
|
||||||
}
|
}
|
||||||
@ -67,7 +67,7 @@ public class PolicyConfiguration {
|
|||||||
this.monitoringEnable = monitoringEnable;
|
this.monitoringEnable = monitoringEnable;
|
||||||
}
|
}
|
||||||
|
|
||||||
@XmlElement(name = "minRetriesToMarkInactive", required = true)
|
@XmlElement(name = "MinRetriesToMarkInactive", required = true)
|
||||||
public int getMinRetriesToMarkInactive() {
|
public int getMinRetriesToMarkInactive() {
|
||||||
return minRetriesToMarkInactive;
|
return minRetriesToMarkInactive;
|
||||||
}
|
}
|
||||||
@ -76,7 +76,7 @@ public class PolicyConfiguration {
|
|||||||
this.minRetriesToMarkInactive = minRetriesToMarkInactive;
|
this.minRetriesToMarkInactive = minRetriesToMarkInactive;
|
||||||
}
|
}
|
||||||
|
|
||||||
@XmlElement(name = "monitoringFrequency", required = true)
|
@XmlElement(name = "MonitoringFrequency", required = true)
|
||||||
public int getMonitoringFrequency() {
|
public int getMonitoringFrequency() {
|
||||||
return monitoringFrequency;
|
return monitoringFrequency;
|
||||||
}
|
}
|
||||||
@ -84,4 +84,5 @@ public class PolicyConfiguration {
|
|||||||
public void setMonitoringFrequency(int monitoringFrequency) {
|
public void setMonitoringFrequency(int monitoringFrequency) {
|
||||||
this.monitoringFrequency = monitoringFrequency;
|
this.monitoringFrequency = monitoringFrequency;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,8 +52,9 @@ public class DeviceTaskManagerServiceComponent {
|
|||||||
log.debug("Initializing device details retrieving task manager bundle.");
|
log.debug("Initializing device details retrieving task manager bundle.");
|
||||||
}
|
}
|
||||||
// This will start the device details retrieving task.
|
// This will start the device details retrieving task.
|
||||||
boolean taskEnable = DeviceConfigurationManager.getInstance().getDeviceManagementConfig().
|
boolean taskEnable =
|
||||||
getDeviceManagementConfigRepository().getTaskConfiguration().isEnabled();
|
DeviceConfigurationManager.getInstance().getDeviceManagementConfig().getTaskConfiguration().
|
||||||
|
isEnabled();
|
||||||
if (taskEnable) {
|
if (taskEnable) {
|
||||||
DeviceTaskManagerService taskManagerService = new DeviceTaskManagerServiceImpl();
|
DeviceTaskManagerService taskManagerService = new DeviceTaskManagerServiceImpl();
|
||||||
taskManagerService.startTask();
|
taskManagerService.startTask();
|
||||||
@ -70,7 +71,6 @@ public class DeviceTaskManagerServiceComponent {
|
|||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
protected void deactivate(ComponentContext componentContext) {
|
protected void deactivate(ComponentContext componentContext) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
DeviceTaskManagerService taskManagerService = new DeviceTaskManagerServiceImpl();
|
DeviceTaskManagerService taskManagerService = new DeviceTaskManagerServiceImpl();
|
||||||
taskManagerService.stopTask();
|
taskManagerService.stopTask();
|
||||||
@ -93,6 +93,7 @@ public class DeviceTaskManagerServiceComponent {
|
|||||||
}
|
}
|
||||||
DeviceManagementDataHolder.getInstance().setTaskService(null);
|
DeviceManagementDataHolder.getInstance().setTaskService(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -22,18 +22,16 @@ package org.wso2.carbon.device.mgt.core.task;
|
|||||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class Utils {
|
public class Utils {
|
||||||
|
|
||||||
|
public static Map<String, Long> getTenantedTaskOperationMap(Map<Integer, Map<String, Long>> map) {
|
||||||
public static HashMap<String, Long> getTenantedTaskOperationMap(HashMap<Integer, HashMap<String, Long>> map) {
|
|
||||||
|
|
||||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
|
|
||||||
if (map.containsKey(tenantId)) {
|
if (map.containsKey(tenantId)) {
|
||||||
return map.get(tenantId);
|
return map.get(tenantId);
|
||||||
} else {
|
} else {
|
||||||
HashMap<String, Long> mp = new HashMap<>();
|
Map<String, Long> mp = new HashMap<>();
|
||||||
map.put(tenantId, mp);
|
map.put(tenantId, mp);
|
||||||
return mp;
|
return mp;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -36,23 +36,19 @@ import org.wso2.carbon.device.mgt.core.task.TaskOperation;
|
|||||||
import org.wso2.carbon.device.mgt.core.task.Utils;
|
import org.wso2.carbon.device.mgt.core.task.Utils;
|
||||||
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
|
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class DeviceTaskManagerImpl implements DeviceTaskManager {
|
public class DeviceTaskManagerImpl implements DeviceTaskManager {
|
||||||
|
|
||||||
private static Log log = LogFactory.getLog(DeviceTaskManagerImpl.class);
|
private static Log log = LogFactory.getLog(DeviceTaskManagerImpl.class);
|
||||||
|
|
||||||
private static HashMap<Integer, HashMap<String, Long>> map = new HashMap<>();
|
private static Map<Integer, Map<String, Long>> map = new HashMap<>();
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TaskOperation> getOperationList() throws DeviceMgtTaskException {
|
public List<TaskOperation> getOperationList() throws DeviceMgtTaskException {
|
||||||
|
TaskConfiguration taskConfiguration =
|
||||||
TaskConfiguration taskConfiguration = DeviceConfigurationManager.getInstance().getDeviceManagementConfig().
|
DeviceConfigurationManager.getInstance().getDeviceManagementConfig().getTaskConfiguration();
|
||||||
getDeviceManagementConfigRepository().getTaskConfiguration();
|
|
||||||
|
|
||||||
List<TaskConfiguration.Operation> ops = taskConfiguration.getOperations();
|
List<TaskConfiguration.Operation> ops = taskConfiguration.getOperations();
|
||||||
List<TaskOperation> taskOperations = new ArrayList<>();
|
List<TaskOperation> taskOperations = new ArrayList<>();
|
||||||
@ -68,29 +64,25 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getTaskFrequency() throws DeviceMgtTaskException {
|
public int getTaskFrequency() throws DeviceMgtTaskException {
|
||||||
|
return DeviceConfigurationManager.getInstance().getDeviceManagementConfig().getTaskConfiguration().
|
||||||
return DeviceConfigurationManager.getInstance().getDeviceManagementConfig().
|
getFrequency();
|
||||||
getDeviceManagementConfigRepository().getTaskConfiguration().getFrequency();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getTaskImplementedClazz() throws DeviceMgtTaskException {
|
public String getTaskImplementedClazz() throws DeviceMgtTaskException {
|
||||||
|
return DeviceConfigurationManager.getInstance().getDeviceManagementConfig().getTaskConfiguration().
|
||||||
return DeviceConfigurationManager.getInstance().getDeviceManagementConfig().
|
getTaskClazz();
|
||||||
getDeviceManagementConfigRepository().getTaskConfiguration().getTaskClazz();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isTaskEnabled() throws DeviceMgtTaskException {
|
public boolean isTaskEnabled() throws DeviceMgtTaskException {
|
||||||
|
return DeviceConfigurationManager.getInstance().getDeviceManagementConfig().getTaskConfiguration().
|
||||||
return DeviceConfigurationManager.getInstance().getDeviceManagementConfig().
|
isEnabled();
|
||||||
getDeviceManagementConfigRepository().getTaskConfiguration().isEnabled();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addOperations() throws DeviceMgtTaskException {
|
public void addOperations() throws DeviceMgtTaskException {
|
||||||
|
|
||||||
DeviceManagementProviderService deviceManagementProviderService =
|
DeviceManagementProviderService deviceManagementProviderService =
|
||||||
DeviceManagementDataHolder.getInstance().getDeviceManagementProvider();
|
DeviceManagementDataHolder.getInstance().getDeviceManagementProvider();
|
||||||
try {
|
try {
|
||||||
@ -98,7 +90,6 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager {
|
|||||||
List<String> operations = this.getValidOperationNames();
|
List<String> operations = this.getValidOperationNames();
|
||||||
|
|
||||||
if (!devices.isEmpty()) {
|
if (!devices.isEmpty()) {
|
||||||
|
|
||||||
for (String str : operations) {
|
for (String str : operations) {
|
||||||
CommandOperation operation = new CommandOperation();
|
CommandOperation operation = new CommandOperation();
|
||||||
operation.setEnabled(true);
|
operation.setEnabled(true);
|
||||||
@ -116,17 +107,15 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager {
|
|||||||
} catch (OperationManagementException e) {
|
} catch (OperationManagementException e) {
|
||||||
throw new DeviceMgtTaskException("Error occurred while adding the operations to devices", e);
|
throw new DeviceMgtTaskException("Error occurred while adding the operations to devices", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getValidOperationNames() throws DeviceMgtTaskException {
|
public List<String> getValidOperationNames() throws DeviceMgtTaskException {
|
||||||
|
|
||||||
List<TaskOperation> taskOperations = this.getOperationList();
|
List<TaskOperation> taskOperations = this.getOperationList();
|
||||||
List<String> opNames = new ArrayList<>();
|
List<String> opNames = new ArrayList<>();
|
||||||
Long milliseconds = System.currentTimeMillis();
|
Long milliseconds = System.currentTimeMillis();
|
||||||
int frequency = this.getTaskFrequency();
|
int frequency = this.getTaskFrequency();
|
||||||
HashMap<String, Long> mp = Utils.getTenantedTaskOperationMap(map);
|
Map<String, Long> mp = Utils.getTenantedTaskOperationMap(map);
|
||||||
|
|
||||||
for (TaskOperation top : taskOperations) {
|
for (TaskOperation top : taskOperations) {
|
||||||
if (!mp.containsKey(top.getTaskName())) {
|
if (!mp.containsKey(top.getTaskName())) {
|
||||||
@ -163,5 +152,6 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager {
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,6 @@ import org.wso2.carbon.device.mgt.common.app.mgt.Application;
|
|||||||
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
|
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
|
||||||
import org.wso2.carbon.device.mgt.core.DeviceManagementPluginRepository;
|
import org.wso2.carbon.device.mgt.core.DeviceManagementPluginRepository;
|
||||||
import org.wso2.carbon.device.mgt.core.TestDeviceManagementService;
|
import org.wso2.carbon.device.mgt.core.TestDeviceManagementService;
|
||||||
import org.wso2.carbon.device.mgt.core.app.mgt.config.AppManagementConfig;
|
|
||||||
import org.wso2.carbon.device.mgt.core.common.TestDataHolder;
|
import org.wso2.carbon.device.mgt.core.common.TestDataHolder;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -35,13 +34,11 @@ import java.util.List;
|
|||||||
|
|
||||||
public class ApplicationManagementProviderServiceTest {
|
public class ApplicationManagementProviderServiceTest {
|
||||||
|
|
||||||
private ApplicationManagementProviderService appMgtProvider;
|
|
||||||
private static final Log log = LogFactory.getLog(ApplicationManagementProviderServiceTest.class);
|
private static final Log log = LogFactory.getLog(ApplicationManagementProviderServiceTest.class);
|
||||||
private DeviceManagementPluginRepository deviceManagementPluginRepository = null;
|
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public void init() {
|
public void init() {
|
||||||
deviceManagementPluginRepository = new DeviceManagementPluginRepository();
|
DeviceManagementPluginRepository deviceManagementPluginRepository = new DeviceManagementPluginRepository();
|
||||||
TestDeviceManagementService testDeviceManagementService =
|
TestDeviceManagementService testDeviceManagementService =
|
||||||
new TestDeviceManagementService(TestDataHolder.TEST_DEVICE_TYPE, TestDataHolder.SUPER_TENANT_DOMAIN);
|
new TestDeviceManagementService(TestDataHolder.TEST_DEVICE_TYPE, TestDataHolder.SUPER_TENANT_DOMAIN);
|
||||||
try {
|
try {
|
||||||
@ -82,8 +79,7 @@ public class ApplicationManagementProviderServiceTest {
|
|||||||
deviceId.setId(deviceIdentifier);
|
deviceId.setId(deviceIdentifier);
|
||||||
deviceId.setType(device.getType());
|
deviceId.setType(device.getType());
|
||||||
|
|
||||||
AppManagementConfig appManagementConfig = new AppManagementConfig();
|
ApplicationManagementProviderService appMgtProvider = new ApplicationManagerProviderServiceImpl();
|
||||||
appMgtProvider = new ApplicationManagerProviderServiceImpl();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
appMgtProvider.updateApplicationListInstalledInDevice(deviceId, applications);
|
appMgtProvider.updateApplicationListInstalledInDevice(deviceId, applications);
|
||||||
|
|||||||
@ -20,6 +20,7 @@ var groupModule = {};
|
|||||||
(function (groupModule) {
|
(function (groupModule) {
|
||||||
var log = new Log("/app/modules/group.js");
|
var log = new Log("/app/modules/group.js");
|
||||||
|
|
||||||
|
var userModule = require("/app/modules/user.js").userModule;
|
||||||
var constants = require('/app/modules/constants.js');
|
var constants = require('/app/modules/constants.js');
|
||||||
var devicemgtProps = require('/app/conf/devicemgt-props.js').config();
|
var devicemgtProps = require('/app/conf/devicemgt-props.js').config();
|
||||||
var utility = require("/app/modules/utility.js").utility;
|
var utility = require("/app/modules/utility.js").utility;
|
||||||
@ -32,7 +33,12 @@ var groupModule = {};
|
|||||||
var endPoint;
|
var endPoint;
|
||||||
|
|
||||||
groupModule.getGroupCount = function () {
|
groupModule.getGroupCount = function () {
|
||||||
endPoint = groupServiceEndpoint + "/user/" + user.username + "/count";
|
var permissions = userModule.getUIPermissions();
|
||||||
|
if (permissions.LIST_ALL_GROUPS) {
|
||||||
|
endPoint = groupServiceEndpoint + "/count";
|
||||||
|
} else if (permissions.LIST_GROUPS) {
|
||||||
|
endPoint = groupServiceEndpoint + "/user/" + user.username + "/count";
|
||||||
|
}
|
||||||
return serviceInvokers.XMLHttp.get(
|
return serviceInvokers.XMLHttp.get(
|
||||||
endPoint, function (responsePayload) {
|
endPoint, function (responsePayload) {
|
||||||
return responsePayload;
|
return responsePayload;
|
||||||
|
|||||||
@ -100,18 +100,19 @@
|
|||||||
<th data-for="By Ownership" class="select-filter"></th>
|
<th data-for="By Ownership" class="select-filter"></th>
|
||||||
<th class="no-sort"></th>
|
<th class="no-sort"></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="bulk-action-row">
|
<!--TODO: Enable bulk action row after gain compatibility with iot operation bar-->
|
||||||
<th colspan="7">
|
<!--<tr class="bulk-action-row">-->
|
||||||
<div id="operation-bar" class="hidden">
|
<!--<th colspan="7">-->
|
||||||
{{unit "mdm.unit.device.operation-bar"}}
|
<!--<div id="operation-bar" class="hidden">-->
|
||||||
</div>
|
<!--{{!unit "mdm.unit.device.operation-bar"}}-->
|
||||||
<div id="operation-guide" class="bs-callout bs-callout-info">
|
<!--</div>-->
|
||||||
<h4>Enabling Device Operations</h4>
|
<!--<div id="operation-guide" class="bs-callout bs-callout-info">-->
|
||||||
<p>To enable device operations, select the desired platform from above
|
<!--<h4>Enabling Device Operations</h4>-->
|
||||||
filter.</p>
|
<!--<p>To enable device operations, select the desired platform from above-->
|
||||||
</div>
|
<!--filter.</p>-->
|
||||||
</th>
|
<!--</div>-->
|
||||||
</tr>
|
<!--</th>-->
|
||||||
|
<!--</tr>-->
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="ast-container">
|
<tbody id="ast-container">
|
||||||
|
|
||||||
@ -326,7 +327,6 @@
|
|||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
<script id="device-listing" data-current-user="{{currentUser.username}}" data-device-types="{{deviceTypes}}"
|
<script id="device-listing" data-current-user="{{currentUser.username}}" data-device-types="{{deviceTypes}}"
|
||||||
data-image-resource="{{@app.context}}/public/cdmf.unit.device.type."
|
data-image-resource="{{@app.context}}/public/cdmf.unit.device.type."
|
||||||
src="{{@page.publicUri}}/templates/listing.hbs"
|
|
||||||
type="text/x-handlebars-template"></script>
|
type="text/x-handlebars-template"></script>
|
||||||
{{js "js/listing.js"}}
|
{{js "js/listing.js"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
@ -70,7 +70,6 @@ $(document).ready(function () {
|
|||||||
addDeviceSelectedClass(this);
|
addDeviceSelectedClass(this);
|
||||||
});
|
});
|
||||||
|
|
||||||
var i;
|
|
||||||
var permissionList = $("#permission").data("permission");
|
var permissionList = $("#permission").data("permission");
|
||||||
for (var key in permissionList) {
|
for (var key in permissionList) {
|
||||||
if (permissionList.hasOwnProperty(key)) {
|
if (permissionList.hasOwnProperty(key)) {
|
||||||
@ -163,10 +162,8 @@ function toTitleCase(str) {
|
|||||||
|
|
||||||
function loadDevices(searchType, searchParam){
|
function loadDevices(searchType, searchParam){
|
||||||
var deviceListing = $("#device-listing");
|
var deviceListing = $("#device-listing");
|
||||||
var deviceListingSrc = deviceListing.attr("src");
|
|
||||||
var imageResource = deviceListing.data("image-resource");
|
var imageResource = deviceListing.data("image-resource");
|
||||||
var currentUser = deviceListing.data("currentUser");
|
var currentUser = deviceListing.data("currentUser");
|
||||||
var frontEndPagination = false;
|
|
||||||
|
|
||||||
var serviceURL;
|
var serviceURL;
|
||||||
if ($.hasPermission("LIST_DEVICES")) {
|
if ($.hasPermission("LIST_DEVICES")) {
|
||||||
@ -206,6 +203,16 @@ function loadDevices(searchType, searchParam){
|
|||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getDeviceTypeCategory(type) {
|
||||||
|
var deviceTypes = deviceListing.data("deviceTypes");
|
||||||
|
for (var i = 0; i < deviceTypes.length; i++) {
|
||||||
|
if (deviceTypes[i].type == type) {
|
||||||
|
return deviceTypes[i].category;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
$('#device-grid').datatables_extended ({
|
$('#device-grid').datatables_extended ({
|
||||||
serverSide: true,
|
serverSide: true,
|
||||||
processing: false,
|
processing: false,
|
||||||
@ -238,7 +245,8 @@ function loadDevices(searchType, searchParam){
|
|||||||
return html;
|
return html;
|
||||||
}},
|
}},
|
||||||
{ targets: 2, data: 'enrolmentInfo.owner', className: 'fade-edge remove-padding-top'},
|
{ targets: 2, data: 'enrolmentInfo.owner', className: 'fade-edge remove-padding-top'},
|
||||||
{ targets: 3, data: 'enrolmentInfo.status', className: 'fade-edge remove-padding-top' ,
|
{
|
||||||
|
targets: 3, data: 'enrolmentInfo.status', className: 'fade-edge remove-padding-top',
|
||||||
render: function ( status, type, row, meta ) {
|
render: function ( status, type, row, meta ) {
|
||||||
var html;
|
var html;
|
||||||
switch (status) {
|
switch (status) {
|
||||||
@ -257,11 +265,22 @@ function loadDevices(searchType, searchParam){
|
|||||||
}
|
}
|
||||||
return html;
|
return html;
|
||||||
}},
|
}},
|
||||||
{ targets: 4, data: 'type' , className: 'fade-edge remove-padding-top' ,
|
{
|
||||||
|
targets: 4, data: 'type', className: 'fade-edge remove-padding-top',
|
||||||
render: function ( status, type, row, meta ) {
|
render: function ( status, type, row, meta ) {
|
||||||
return getDeviceTypeLabel(row.type);
|
return getDeviceTypeLabel(row.type);
|
||||||
}},
|
}
|
||||||
{ targets: 5, data: 'enrolmentInfo.ownership' , className: 'fade-edge remove-padding-top' },
|
},
|
||||||
|
{
|
||||||
|
targets: 5, data: 'enrolmentInfo.ownership', className: 'fade-edge remove-padding-top',
|
||||||
|
render: function (status, type, row, meta) {
|
||||||
|
if (getDeviceTypeCategory(row.type) == 'mobile') {
|
||||||
|
return row.enrolmentInfo.ownership;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{ targets: 6, data: 'enrolmentInfo.status' , className: 'text-right content-fill text-left-on-grid-view no-wrap' ,
|
{ targets: 6, data: 'enrolmentInfo.status' , className: 'text-right content-fill text-left-on-grid-view no-wrap' ,
|
||||||
render: function ( status, type, row, meta ) {
|
render: function ( status, type, row, meta ) {
|
||||||
var deviceType = row.type;
|
var deviceType = row.type;
|
||||||
@ -271,6 +290,15 @@ function loadDevices(searchType, searchParam){
|
|||||||
html = '<a href="device/' + deviceType + '?id=' + deviceIdentifier + '" data-click-event="remove-form"' +
|
html = '<a href="device/' + deviceType + '?id=' + deviceIdentifier + '" data-click-event="remove-form"' +
|
||||||
' class="btn padding-reduce-on-grid-view"><span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i>' +
|
' class="btn padding-reduce-on-grid-view"><span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i>' +
|
||||||
'<i class="fw fw-view fw-stack-1x"></i></span><span class="hidden-xs hidden-on-grid-view">View</span></a>';
|
'<i class="fw fw-view fw-stack-1x"></i></span><span class="hidden-xs hidden-on-grid-view">View</span></a>';
|
||||||
|
html += '<a href="analytics?deviceId=' + deviceIdentifier + '&deviceType=' + deviceType + '&deviceName=' + row.name + '" ' +
|
||||||
|
'data-click-event="remove-form" class="btn padding-reduce-on-grid-view"><span class="fw-stack">' +
|
||||||
|
'<i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-statistics fw-stack-1x"></i></span>' +
|
||||||
|
'<span class="hidden-xs hidden-on-grid-view">Analytics</span>';
|
||||||
|
html += '<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view edit-device-link" ' +
|
||||||
|
'data-deviceid="' + deviceIdentifier + '" data-devicetype="' + deviceType + '" data-devicename="' + row.name + '">' +
|
||||||
|
'<span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i>' +
|
||||||
|
'<i class="fw fw-edit fw-stack-1x"></i></span>' +
|
||||||
|
'<span class="hidden-xs hidden-on-grid-view">Edit</span></a>';
|
||||||
}
|
}
|
||||||
return html;
|
return html;
|
||||||
}}
|
}}
|
||||||
@ -285,6 +313,7 @@ function loadDevices(searchType, searchParam){
|
|||||||
var status = data.enrolmentInfo.status;
|
var status = data.enrolmentInfo.status;
|
||||||
var ownership = data.enrolmentInfo.ownership;
|
var ownership = data.enrolmentInfo.ownership;
|
||||||
var deviceType = data.type;
|
var deviceType = data.type;
|
||||||
|
var category = getDeviceTypeCategory(deviceType);
|
||||||
$.each($('td', row), function (colIndex) {
|
$.each($('td', row), function (colIndex) {
|
||||||
switch(colIndex) {
|
switch(colIndex) {
|
||||||
case 1:
|
case 1:
|
||||||
@ -304,18 +333,21 @@ function loadDevices(searchType, searchParam){
|
|||||||
case 4:
|
case 4:
|
||||||
$(this).attr('data-grid-label', "Type");
|
$(this).attr('data-grid-label', "Type");
|
||||||
$(this).attr('data-search', deviceType);
|
$(this).attr('data-search', deviceType);
|
||||||
$(this).attr('data-display', deviceType);
|
$(this).attr('data-display', getDeviceTypeLabel(deviceType));
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
$(this).attr('data-grid-label', "Ownership");
|
if (category == 'mobile') {
|
||||||
$(this).attr('data-search', ownership);
|
$(this).attr('data-grid-label', "Ownership");
|
||||||
$(this).attr('data-display', ownership);
|
$(this).attr('data-search', ownership);
|
||||||
|
$(this).attr('data-display', ownership);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
"fnDrawCallback": function( oSettings ) {
|
"fnDrawCallback": function( oSettings ) {
|
||||||
$(".icon .text").res_text(0.2);
|
$(".icon .text").res_text(0.2);
|
||||||
|
attachDeviceEvents();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$(deviceCheckbox).click(function () {
|
$(deviceCheckbox).click(function () {
|
||||||
@ -338,50 +370,6 @@ function openCollapsedNav() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadGroupedDevices(groupId) {
|
|
||||||
var serviceURL = "api/group/id/" + groupId + "/device/all";
|
|
||||||
var deviceListing = $("#device-listing");
|
|
||||||
var deviceListingSrc = deviceListing.attr("src");
|
|
||||||
var imageResource = deviceListing.data("image-resource");
|
|
||||||
var currentUser = deviceListing.data("currentUser");
|
|
||||||
$.template("device-listing", deviceListingSrc, function (template) {
|
|
||||||
|
|
||||||
var loadGroupRequest = $.ajax({
|
|
||||||
url: serviceURL,
|
|
||||||
method: "GET",
|
|
||||||
contentType: "application/json",
|
|
||||||
accept: "application/json"
|
|
||||||
});
|
|
||||||
|
|
||||||
loadGroupRequest.done(function (data) {
|
|
||||||
data = JSON.parse(data);
|
|
||||||
var viewModel = {};
|
|
||||||
viewModel.devices = data.data;
|
|
||||||
viewModel.imageLocation = imageResource;
|
|
||||||
viewModel.isGroupView = "true";
|
|
||||||
if (viewModel.devices.length > 0) {
|
|
||||||
$('#device-grid').removeClass('hidden');
|
|
||||||
var content = template(viewModel);
|
|
||||||
$("#ast-container").html(content);
|
|
||||||
/*
|
|
||||||
* On device checkbox select add parent selected style class
|
|
||||||
*/
|
|
||||||
$(deviceCheckbox).click(function () {
|
|
||||||
addDeviceSelectedClass(this);
|
|
||||||
});
|
|
||||||
attachDeviceEvents();
|
|
||||||
} else {
|
|
||||||
$('#device-table').addClass('hidden');
|
|
||||||
$('#device-listing-status-msg').text('No device is available to be displayed.');
|
|
||||||
}
|
|
||||||
$("#loading-content").remove();
|
|
||||||
$('#device-grid').datatables_extended();
|
|
||||||
$(".icon .text").res_text(0.2);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function initPage() {
|
function initPage() {
|
||||||
var deviceListing = $("#device-listing");
|
var deviceListing = $("#device-listing");
|
||||||
var currentUser = deviceListing.data("currentUser");
|
var currentUser = deviceListing.data("currentUser");
|
||||||
@ -642,9 +630,9 @@ function attachDeviceEvents() {
|
|||||||
});
|
});
|
||||||
postOperationRequest.done(function (data) {
|
postOperationRequest.done(function (data) {
|
||||||
$(modalPopupContent).html($('#edit-device-200-content').html());
|
$(modalPopupContent).html($('#edit-device-200-content').html());
|
||||||
$("h4[data-deviceid='" + deviceId + "']").html(newDeviceName);
|
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
hidePopup();
|
hidePopup();
|
||||||
|
location.reload(false);
|
||||||
}, 2000);
|
}, 2000);
|
||||||
});
|
});
|
||||||
postOperationRequest.fail(function (jqXHR, textStatus) {
|
postOperationRequest.fail(function (jqXHR, textStatus) {
|
||||||
|
|||||||
@ -17,15 +17,17 @@
|
|||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|
||||||
{{#zone "navbarActions"}}
|
{{#zone "navbarActions"}}
|
||||||
<li>
|
{{#if permissions.ADD_GROUP}}
|
||||||
<a href="{{@app.context}}/group/add" class="cu-btn">
|
<li>
|
||||||
|
<a href="{{@app.context}}/group/add" class="cu-btn">
|
||||||
<span class="icon fw-stack">
|
<span class="icon fw-stack">
|
||||||
<i class="fw fw-add fw-stack-1x"></i>
|
<i class="fw fw-add fw-stack-1x"></i>
|
||||||
<i class="fw fw-ring fw-stack-2x"></i>
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
</span>
|
</span>
|
||||||
Add Group
|
Add Group
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
{{/if}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|
||||||
{{#zone "content"}}
|
{{#zone "content"}}
|
||||||
@ -33,6 +35,7 @@
|
|||||||
<div class="wr-hidden-operations wr-advance-operations"></div>
|
<div class="wr-hidden-operations wr-advance-operations"></div>
|
||||||
<div class="col-md-12 wr-page-content">
|
<div class="col-md-12 wr-page-content">
|
||||||
<div>
|
<div>
|
||||||
|
<span id="permission" data-permission="{{permissions.list}}"></span>
|
||||||
{{#if groupCount}}
|
{{#if groupCount}}
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<table class="table table-striped table-hover list-table display responsive nowrap data-table table-selectable grid-view"
|
<table class="table table-striped table-hover list-table display responsive nowrap data-table table-selectable grid-view"
|
||||||
|
|||||||
@ -21,14 +21,15 @@ function onRequest(context) {
|
|||||||
var userModule = require("/app/modules/user.js").userModule;
|
var userModule = require("/app/modules/user.js").userModule;
|
||||||
var constants = require("/app/modules/constants.js");
|
var constants = require("/app/modules/constants.js");
|
||||||
var currentUser = session.get(constants.USER_SESSION_KEY);
|
var currentUser = session.get(constants.USER_SESSION_KEY);
|
||||||
var page_data = {};
|
var page = {};
|
||||||
if (currentUser) {
|
if (currentUser) {
|
||||||
page_data.permissions = userModule.getUIPermissions();
|
page.permissions = userModule.getUIPermissions();
|
||||||
page_data.currentUser = currentUser;
|
page.permissions.list = stringify(page.permissions);
|
||||||
|
page.currentUser = currentUser;
|
||||||
var groupCount = groupModule.getGroupCount();
|
var groupCount = groupModule.getGroupCount();
|
||||||
if (groupCount > 0) {
|
if (groupCount > 0) {
|
||||||
page_data.groupCount = groupCount;
|
page.groupCount = groupCount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return page_data;
|
return page;
|
||||||
}
|
}
|
||||||
@ -82,6 +82,19 @@ function toTitleCase(str) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var permissionSet = {};
|
||||||
|
|
||||||
|
//This method is used to setup permission for device listing
|
||||||
|
$.setPermission = function (permission) {
|
||||||
|
permissionSet[permission] = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
$.hasPermission = function (permission) {
|
||||||
|
return permissionSet[permission];
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
|
||||||
function loadGroups() {
|
function loadGroups() {
|
||||||
var groupListing = $("#group-listing");
|
var groupListing = $("#group-listing");
|
||||||
var groupListingSrc = groupListing.attr("src");
|
var groupListingSrc = groupListing.attr("src");
|
||||||
@ -108,10 +121,23 @@ function loadGroups() {
|
|||||||
$(".icon .text").res_text(0.2);
|
$(".icon .text").res_text(0.2);
|
||||||
};
|
};
|
||||||
|
|
||||||
invokerUtil.get("/devicemgt_admin/groups/user/" + currentUser + "?start=0&rowCount=1000",
|
var serviceURL;
|
||||||
successCallback, function (message) {
|
if ($.hasPermission("LIST_ALL_GROUPS")) {
|
||||||
displayErrors(message.content);
|
serviceURL = "/devicemgt_admin/groups?start=0&rowCount=1000";
|
||||||
});
|
} else if ($.hasPermission("LIST_GROUPS")) {
|
||||||
|
//Get authenticated users groups
|
||||||
|
serviceURL = "/devicemgt_admin/groups/user/" + currentUser + "?start=0&rowCount=1000";
|
||||||
|
} else {
|
||||||
|
$("#loading-content").remove();
|
||||||
|
$('#device-table').addClass('hidden');
|
||||||
|
$('#device-listing-status-msg').text('Permission denied.');
|
||||||
|
$("#device-listing-status").removeClass(' hidden');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
invokerUtil.get(serviceURL, successCallback, function (message) {
|
||||||
|
displayErrors(message.content);
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -129,6 +155,13 @@ function openCollapsedNav() {
|
|||||||
* DOM ready functions.
|
* DOM ready functions.
|
||||||
*/
|
*/
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
|
var permissionList = $("#permission").data("permission");
|
||||||
|
for (var key in permissionList) {
|
||||||
|
if (permissionList.hasOwnProperty(key)) {
|
||||||
|
$.setPermission(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
loadGroups();
|
loadGroups();
|
||||||
//$('#device-grid').datatables_extended();
|
//$('#device-grid').datatables_extended();
|
||||||
|
|
||||||
@ -138,30 +171,36 @@ $(document).ready(function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
/* for device list sorting drop down */
|
/* for device list sorting drop down */
|
||||||
$(".ctrl-filter-type-switcher").popover({
|
$(".ctrl-filter-type-switcher").popover(
|
||||||
html: true,
|
{
|
||||||
content: function () {
|
html: true,
|
||||||
return $("#content-filter-types").html();
|
content: function () {
|
||||||
}
|
return $("#content-filter-types").html();
|
||||||
});
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
/* for data tables*/
|
/* for data tables*/
|
||||||
$('[data-toggle="tooltip"]').tooltip();
|
$('[data-toggle="tooltip"]').tooltip();
|
||||||
|
|
||||||
$("[data-toggle=popover]").popover();
|
$("[data-toggle=popover]").popover();
|
||||||
|
|
||||||
$(".ctrl-filter-type-switcher").popover({
|
$(".ctrl-filter-type-switcher").popover(
|
||||||
html: true,
|
{
|
||||||
content: function () {
|
html: true,
|
||||||
return $('#content-filter-types').html();
|
content: function () {
|
||||||
}
|
return $('#content-filter-types').html();
|
||||||
});
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
$('#nav').affix({
|
$('#nav').affix(
|
||||||
offset: {
|
{
|
||||||
top: $('header').height()
|
offset: {
|
||||||
}
|
top: $('header').height()
|
||||||
});
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -212,12 +251,14 @@ function attachEvents() {
|
|||||||
$('#user-names').html('<div style="height:100px" data-state="loading" data-loading-text="Loading..." data-loading-style="icon-only" data-loading-inverse="true"></div>');
|
$('#user-names').html('<div style="height:100px" data-state="loading" data-loading-text="Loading..." data-loading-style="icon-only" data-loading-inverse="true"></div>');
|
||||||
showPopup();
|
showPopup();
|
||||||
$("a#share-group-next-link").hide();
|
$("a#share-group-next-link").hide();
|
||||||
var userRequest = $.ajax({
|
var userRequest = $.ajax(
|
||||||
url: "api/user/all",
|
{
|
||||||
method: "GET",
|
url: "api/user/all",
|
||||||
contentType: "application/json",
|
method: "GET",
|
||||||
accept: "application/json"
|
contentType: "application/json",
|
||||||
});
|
accept: "application/json"
|
||||||
|
}
|
||||||
|
);
|
||||||
userRequest.done(function (data, txtStatus, jqxhr) {
|
userRequest.done(function (data, txtStatus, jqxhr) {
|
||||||
var users = JSON.parse(data);
|
var users = JSON.parse(data);
|
||||||
var status = jqxhr.status;
|
var status = jqxhr.status;
|
||||||
@ -318,10 +359,9 @@ function attachEvents() {
|
|||||||
var successCallback = function (data) {
|
var successCallback = function (data) {
|
||||||
data = JSON.parse(data);
|
data = JSON.parse(data);
|
||||||
if (data.status == 200) {
|
if (data.status == 200) {
|
||||||
$(modalPopupContent).html($('#edit-group-200-content').html());
|
|
||||||
$("h4[data-groupid='" + groupId + "']").html(newGroupName);
|
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
hidePopup();
|
hidePopup();
|
||||||
|
location.reload(false);
|
||||||
}, 2000);
|
}, 2000);
|
||||||
} else {
|
} else {
|
||||||
displayErrors(status);
|
displayErrors(status);
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
*
|
*
|
||||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
* Version 2.0 (the "License"); you may not use this file except
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
@ -78,7 +78,8 @@ $.fn.datatables_extended = function(settings){
|
|||||||
$( "#operation-guide" ).hide();
|
$( "#operation-guide" ).hide();
|
||||||
$( "#operation-bar" ).removeClass("hidden");
|
$( "#operation-bar" ).removeClass("hidden");
|
||||||
$("#operation-bar").show();
|
$("#operation-bar").show();
|
||||||
loadOperationBar(val);
|
//TODO: Enable after adding iot operations bar
|
||||||
|
//loadOperationBar(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -86,13 +87,14 @@ $.fn.datatables_extended = function(settings){
|
|||||||
|
|
||||||
$(column).each(function () {
|
$(column).each(function () {
|
||||||
if ($(column.nodes()).attr('data-search')) {
|
if ($(column.nodes()).attr('data-search')) {
|
||||||
var titles = [];
|
var values = [];
|
||||||
column.nodes().unique().sort().each(function (d, j) {
|
column.nodes().unique().sort().each(function (d, j) {
|
||||||
var title = $(d).attr('data-display');
|
var title = $(d).attr('data-display');
|
||||||
if ($.inArray(title, titles) < 0) {
|
var value = $(d).attr('data-search');
|
||||||
titles.push(title);
|
if ($.inArray(value, values) < 0) {
|
||||||
if (title !== undefined) {
|
values.push(value);
|
||||||
select.append('<option value="' + title + '">' + title + '</option>')
|
if (value !== undefined) {
|
||||||
|
select.append('<option value="' + value + '">' + title + '</option>')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@ -2193,7 +2193,7 @@ input[type=number].form-control {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.table.list-table.grid-view .padding-reduce-on-grid-view {
|
.table.list-table.grid-view .padding-reduce-on-grid-view {
|
||||||
padding: 2px;
|
padding: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table.list-table.grid-view .text-left-on-grid-view {
|
.table.list-table.grid-view .text-left-on-grid-view {
|
||||||
@ -6428,7 +6428,7 @@ body.inverse .fade-edge:after {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.table.list-table.grid-view .padding-reduce-on-grid-view {
|
.table.list-table.grid-view .padding-reduce-on-grid-view {
|
||||||
padding: 2px;
|
padding: 1px;
|
||||||
}
|
}
|
||||||
.table.list-table.grid-view .text-left-on-grid-view {
|
.table.list-table.grid-view .text-left-on-grid-view {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
|||||||
@ -24,38 +24,38 @@
|
|||||||
<Name>jdbc/DM_DS</Name>
|
<Name>jdbc/DM_DS</Name>
|
||||||
</JndiLookupDefinition>
|
</JndiLookupDefinition>
|
||||||
</DataSourceConfiguration>
|
</DataSourceConfiguration>
|
||||||
<IdentityConfiguration>
|
|
||||||
<ServerUrl>https://localhost:9443</ServerUrl>
|
|
||||||
<AdminUsername>admin</AdminUsername>
|
|
||||||
<AdminPassword>admin</AdminPassword>
|
|
||||||
</IdentityConfiguration>
|
|
||||||
<PolicyConfiguration>
|
|
||||||
<monitoringClass>org.wso2.carbon.policy.mgt</monitoringClass>
|
|
||||||
<monitoringEnable>true</monitoringEnable>
|
|
||||||
<monitoringFrequency>60000</monitoringFrequency>
|
|
||||||
<maxRetries>5</maxRetries>
|
|
||||||
<minRetriesToMarkUnreachable>8</minRetriesToMarkUnreachable>
|
|
||||||
<minRetriesToMarkInactive>20</minRetriesToMarkInactive>
|
|
||||||
</PolicyConfiguration>
|
|
||||||
<TaskConfiguration>
|
|
||||||
<Enable>true</Enable>
|
|
||||||
<Frequency>600000</Frequency>
|
|
||||||
<TaskClass>org.wso2.carbon.device.mgt.core.task.impl.DeviceDetailsRetrieverTask</TaskClass>
|
|
||||||
<Operations>
|
|
||||||
<Operation>
|
|
||||||
<Name>DEVICE_INFO</Name>
|
|
||||||
<RecurrentTimes>1</RecurrentTimes>
|
|
||||||
</Operation>
|
|
||||||
<Operation>
|
|
||||||
<Name>APPLICATION_LIST</Name>
|
|
||||||
<RecurrentTimes>5</RecurrentTimes>
|
|
||||||
</Operation>
|
|
||||||
<Operation>
|
|
||||||
<Name>DEVICE_LOCATION</Name>
|
|
||||||
<RecurrentTimes>1</RecurrentTimes>
|
|
||||||
</Operation>
|
|
||||||
</Operations>
|
|
||||||
</TaskConfiguration>
|
|
||||||
</ManagementRepository>
|
</ManagementRepository>
|
||||||
|
<IdentityConfiguration>
|
||||||
|
<ServerUrl>https://localhost:9443</ServerUrl>
|
||||||
|
<AdminUsername>admin</AdminUsername>
|
||||||
|
<AdminPassword>admin</AdminPassword>
|
||||||
|
</IdentityConfiguration>
|
||||||
|
<PolicyConfiguration>
|
||||||
|
<MonitoringClass>org.wso2.carbon.policy.mgt</MonitoringClass>
|
||||||
|
<MonitoringEnable>true</MonitoringEnable>
|
||||||
|
<MonitoringFrequency>60000</MonitoringFrequency>
|
||||||
|
<MaxRetries>5</MaxRetries>
|
||||||
|
<MinRetriesToMarkUnreachable>8</MinRetriesToMarkUnreachable>
|
||||||
|
<MinRetriesToMarkInactive>20</MinRetriesToMarkInactive>
|
||||||
|
</PolicyConfiguration>
|
||||||
|
<TaskConfiguration>
|
||||||
|
<Enable>true</Enable>
|
||||||
|
<Frequency>600000</Frequency>
|
||||||
|
<TaskClass>org.wso2.carbon.device.mgt.core.task.impl.DeviceDetailsRetrieverTask</TaskClass>
|
||||||
|
<Operations>
|
||||||
|
<Operation>
|
||||||
|
<Name>DEVICE_INFO</Name>
|
||||||
|
<RecurrentTimes>1</RecurrentTimes>
|
||||||
|
</Operation>
|
||||||
|
<Operation>
|
||||||
|
<Name>APPLICATION_LIST</Name>
|
||||||
|
<RecurrentTimes>5</RecurrentTimes>
|
||||||
|
</Operation>
|
||||||
|
<Operation>
|
||||||
|
<Name>DEVICE_LOCATION</Name>
|
||||||
|
<RecurrentTimes>1</RecurrentTimes>
|
||||||
|
</Operation>
|
||||||
|
</Operations>
|
||||||
|
</TaskConfiguration>
|
||||||
</DeviceMgtConfiguration>
|
</DeviceMgtConfiguration>
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user