From 9f71408001b9aa99e54443ebef1360c63df3caf2 Mon Sep 17 00:00:00 2001 From: Dulitha Wijewantha Date: Thu, 22 Jan 2015 21:20:08 +0530 Subject: [PATCH] * Fixed the JNDI bug * Added a device module method and apis for a single device * UI improvement to the device page --- .../datasource/MobileDataSourceConfig.java | 6 +- .../dao/MobileDeviceManagementDAOFactory.java | 2 +- .../util/MobileDeviceManagementDAOUtil.java | 2 +- .../jaggeryapps/cdm/api/mobile/device-api.jag | 37 ++++----- .../jaggeryapps/cdm/client/javascript/main.js | 26 ++++++- .../jaggeryapps/cdm/modules/device.js | 75 +++++++++++++++++++ .../jaggeryapps/cdm/pages/device.jag | 75 ++++++++++++------- 7 files changed, 166 insertions(+), 57 deletions(-) create mode 100644 product/modules/distribution/src/repository/jaggeryapps/cdm/modules/device.js diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/config/datasource/MobileDataSourceConfig.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/config/datasource/MobileDataSourceConfig.java index 2b9c570c9f..5245b01717 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/config/datasource/MobileDataSourceConfig.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/config/datasource/MobileDataSourceConfig.java @@ -22,13 +22,11 @@ import javax.xml.bind.annotation.XmlRootElement; /** * Class for holding data source configuration in mobile-config.xml at parsing with JAXB. */ -@XmlRootElement(name = "DataSourceConfiguration") -public class MobileDataSourceConfig { +@XmlRootElement(name = "DataSourceConfiguration") public class MobileDataSourceConfig { private JNDILookupDefinition jndiLookupDefinition; - @XmlElement(name = "JndiLookupDefinition", nillable = true) - public JNDILookupDefinition getJndiLookupDefintion() { + @XmlElement(name = "JndiLookupDefinition", nillable = true) public JNDILookupDefinition getJndiLookupDefinition() { return jndiLookupDefinition; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/dao/MobileDeviceManagementDAOFactory.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/dao/MobileDeviceManagementDAOFactory.java index 8415271d2f..c014f9d6b9 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/dao/MobileDeviceManagementDAOFactory.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/dao/MobileDeviceManagementDAOFactory.java @@ -62,7 +62,7 @@ public class MobileDeviceManagementDAOFactory { throw new RuntimeException("Device Management Repository data source configuration " + "is null and thus, is not initialized"); } - JNDILookupDefinition jndiConfig = config.getJndiLookupDefintion(); + JNDILookupDefinition jndiConfig = config.getJndiLookupDefinition(); if (jndiConfig != null) { if (log.isDebugEnabled()) { log.debug("Initializing Device Management Repository data source using the JNDI " + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/dao/util/MobileDeviceManagementDAOUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/dao/util/MobileDeviceManagementDAOUtil.java index 146a33bcbf..1aec46825d 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/dao/util/MobileDeviceManagementDAOUtil.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/dao/util/MobileDeviceManagementDAOUtil.java @@ -51,7 +51,7 @@ public class MobileDeviceManagementDAOUtil { throw new RuntimeException("Device Management Repository data source configuration " + "is null and thus, is not initialized"); } - JNDILookupDefinition jndiConfig = config.getJndiLookupDefintion(); + JNDILookupDefinition jndiConfig = config.getJndiLookupDefinition(); if (jndiConfig != null) { if (log.isDebugEnabled()) { log.debug("Initializing Device Management Repository data source using the JNDI " + diff --git a/product/modules/distribution/src/repository/jaggeryapps/cdm/api/mobile/device-api.jag b/product/modules/distribution/src/repository/jaggeryapps/cdm/api/mobile/device-api.jag index 10f37dc405..783176d285 100644 --- a/product/modules/distribution/src/repository/jaggeryapps/cdm/api/mobile/device-api.jag +++ b/product/modules/distribution/src/repository/jaggeryapps/cdm/api/mobile/device-api.jag @@ -16,23 +16,24 @@ * specific language governing permissions and limitations * under the License. */ -var utility = require("/modules/utility.js"); -var deviceManagementService = utility.getDeviceManagementService(); -var devices = deviceManagementService.getAllDevices("android"); -var logger = new Log(); -var deviceList = []; -for (i = 0; i < devices.size(); i++) { - var device = devices.get(i); - deviceList.push({ - "identifier": device.getDeviceIdentifier(), - "name": device.getName(), - "ownership": device.getOwnership(), - "owner": device.getOwner(), - "deviceType": device.getType(), - "vendor": device.getProperties().get("vendor"), - "model": device.getProperties().get("model"), - "osVersion": device.getProperties().get("osVersion") - }); + +var verb = request.getMethod(); +var uri = request.getRequestURI(); +var callPath=uri.replace("/cdm/api/",""); +var log = new Log(); +var deviceModule = require("/modules/device.js"); +if (uri != null) { + var uriMatcher = new URIMatcher(callPath); + log.info(callPath); + if (uriMatcher.match("devices/mobile/{type}/{deviceid}/")) { + var deviceId = uriMatcher.elements().deviceid; + var type = uriMatcher.elements().type; + var result = deviceModule.viewDevice(type, deviceId); + print(result); + } + if (uriMatcher.match("devices/mobile/")) { + var result = deviceModule.listDevices(); + print(result); + } } -print(deviceList); %> \ No newline at end of file diff --git a/product/modules/distribution/src/repository/jaggeryapps/cdm/client/javascript/main.js b/product/modules/distribution/src/repository/jaggeryapps/cdm/client/javascript/main.js index 7c3d5d9791..0fa9dd49d8 100644 --- a/product/modules/distribution/src/repository/jaggeryapps/cdm/client/javascript/main.js +++ b/product/modules/distribution/src/repository/jaggeryapps/cdm/client/javascript/main.js @@ -1,6 +1,24 @@ +/* + * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ function identifierFormatter(value, row, index) { return [ - '', - value, - '' - ].join('');} \ No newline at end of file + '', + value, + '' + ].join(''); +} \ No newline at end of file diff --git a/product/modules/distribution/src/repository/jaggeryapps/cdm/modules/device.js b/product/modules/distribution/src/repository/jaggeryapps/cdm/modules/device.js new file mode 100644 index 0000000000..c208c91a4b --- /dev/null +++ b/product/modules/distribution/src/repository/jaggeryapps/cdm/modules/device.js @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +var utility = require("/modules/utility.js"); +var DeviceIdentifier = Packages.org.wso2.carbon.device.mgt.common.DeviceIdentifier; +var log = new Log(); + +var deviceManagementService = utility.getDeviceManagementService(); + +var listDevices = function () { + var devices = deviceManagementService.getAllDevices("android"); + var deviceList = []; + + for (i = 0; i < devices.size(); i++) { + var device = devices.get(i); + deviceList.push({ + "identifier": device.getDeviceIdentifier(), + "name": device.getName(), + "ownership": device.getOwnership(), + "owner": device.getOwner(), + "deviceType": device.getType(), + "vendor": device.getProperties().get("vendor"), + "model": device.getProperties().get("model"), + "osVersion": device.getProperties().get("osVersion") + }); + } + return deviceList; +} +var getDevice = function(type, deviceId){ + var deviceIdentifier = new DeviceIdentifier(); + deviceIdentifier.setType(type); + deviceIdentifier.setId(deviceId); + var device = deviceManagementService.getDevice(deviceIdentifier); + return device; +} + +var viewDevice = function(type, deviceId){ + var device = this.getDevice(type, deviceId); + + var entries = device.getProperties().entrySet(); + var iterator = entries.iterator(); + var properties = {}; + while(iterator.hasNext()){ + var entry = iterator.next(); + var key = entry.getKey(); + var value = entry.getValue(); + properties[key]= value; + } + return { + "identifier": device.getDeviceIdentifier(), + "name": device.getName(), + "ownership": device.getOwnership(), + "owner": device.getOwner(), + "deviceType": device.getType(), + "vendor": device.getProperties().get("vendor"), + "model": device.getProperties().get("model"), + "osVersion": device.getProperties().get("osVersion"), + "properties": properties + }; +} \ No newline at end of file diff --git a/product/modules/distribution/src/repository/jaggeryapps/cdm/pages/device.jag b/product/modules/distribution/src/repository/jaggeryapps/cdm/pages/device.jag index 3005b915cd..91977bdade 100644 --- a/product/modules/distribution/src/repository/jaggeryapps/cdm/pages/device.jag +++ b/product/modules/distribution/src/repository/jaggeryapps/cdm/pages/device.jag @@ -26,11 +26,20 @@ var title="WSO2 CDM"; <% include("/includes/header.jag"); + + var deviceModule = require("/modules/device.js"); + var uri = request.getRequestURI(); + var callPath=uri.replace("/cdm/",""); + var uriMatcher = new URIMatcher(callPath); + uriMatcher.match("devices/{type}/{deviceid}/"); + var deviceId = uriMatcher.elements().deviceid; + var type = uriMatcher.elements().type; + var device = deviceModule.viewDevice(type, deviceId); %>
-

Dulitha's iPhone

+

<%=device.name%>

@@ -50,36 +59,44 @@ var title="WSO2 CDM";
-

Model: GT-I9500

-

IMSI : GT-I9500

-

IMEI : GT-I9500

-
-
-
-
-

Model: GT-I9500

-

IMSI : GT-I9500

-

IMEI : GT-I9500

-
-
-
-
- - - - - - - -
App namePackage name
-
-
-
-
-
+ + <% + for (var property in device.properties) { + if (device.properties.hasOwnProperty(property)) { + var value = device.properties[property]; + %> +

<%=property %>: <%=value %>

+ <% + } + } + %> +
+
+
+
+

Model: GT-I9500

+

IMSI : GT-I9500

+

IMEI : GT-I9500

+
+
+
+
+ + + + + + + +
App namePackage name
+
+
+ - <% + + +<% include("/includes/layout-footer.jag"); %>