refactored general configuration

revert-70aa11f8
ayyoob 9 years ago
parent c71e5ead00
commit a7074e2e4e

@ -16,7 +16,7 @@
* under the License.
*
*/
package org.wso2.carbon.device.mgt.jaxrs.service.api.admin;
package org.wso2.carbon.device.mgt.jaxrs.service.api;
import io.swagger.annotations.*;
import org.wso2.carbon.apimgt.annotations.api.API;
@ -30,7 +30,7 @@ import javax.ws.rs.core.Response;
@API(name = "Device Type Management", version = "1.0.0", context = "/admin/device-types", tags = {"devicemgt_admin"})
@Path("/admin/device-types")
@Path("/device-types")
@Api(value = "Device Type Management", description = "This API corresponds to all tasks related to device " +
"type management")
@Produces(MediaType.APPLICATION_JSON)

@ -16,14 +16,14 @@
* under the License.
*
*/
package org.wso2.carbon.device.mgt.jaxrs.service.impl.admin;
package org.wso2.carbon.device.mgt.jaxrs.service.impl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceTypeList;
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
import org.wso2.carbon.device.mgt.jaxrs.service.api.admin.DeviceTypeManagementService;
import org.wso2.carbon.device.mgt.jaxrs.service.api.DeviceTypeManagementService;
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
import javax.ws.rs.GET;
@ -32,7 +32,7 @@ import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
import java.util.List;
@Path("/admin/device-types")
@Path("/device-types")
public class DeviceTypeManagementServiceImpl implements DeviceTypeManagementService {
private static Log log = LogFactory.getLog(DeviceTypeManagementServiceImpl.class);

@ -107,7 +107,7 @@
<Permission>
<name>View device types</name>
<path>/device-mgt/admin/devices/Admin-DeviceType-View</path>
<url>/admin/device-types</url>
<url>/device-types</url>
<method>GET</method>
</Permission>
<!-- End of Device related APIs -->

@ -78,7 +78,7 @@
<bean id="groupManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.GroupManagementAdminServiceImpl"/>
<bean id="userManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.UserManagementAdminServiceImpl"/>
<bean id="dashboardServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.DashboardImpl"/>
<bean id="deviceTypeManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.DeviceTypeManagementServiceImpl"/>
<bean id="deviceTypeManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.DeviceTypeManagementServiceImpl"/>
<bean id="jsonProvider" class="org.wso2.carbon.device.mgt.jaxrs.common.GsonMessageBodyHandler"/>
<!--<bean id="errorHandler" class="org.wso2.carbon.device.mgt.jaxrs.common.ErrorHandler"/>-->

@ -18,7 +18,7 @@
var WEB_APP_TITLE = "WSO2 CDM";
var WEB_APP_CONTEXT = "/devicemgt";
var ADMIN_SERVICE_CONTEXT = "/devicemgt_admin";
var ADMIN_SERVICE_CONTEXT = "/api/device-mgt/v1.0";
var USER_SESSION_KEY = "_UUF_USER";
var UNSPECIFIED = "Unspecified";
var httpURL = "httpURL";

@ -38,6 +38,32 @@ deviceModule = function () {
var deviceCloudService = devicemgtProps["httpsURL"] + "/common/device_manager";
/**
* Only GET method is implemented for now since there are no other type of methods used this method.
* @param url - URL to call the backend without the host
* @param method - HTTP Method (GET, POST)
* @returns An object with 'status': 'success'|'error', 'content': {}
*/
privateMethods.callBackend = function (url, method) {
if (constants["HTTP_GET"] == method) {
return serviceInvokers.XMLHttp.get(url,
function (backendResponse) {
var response = {};
response.content = backendResponse.responseText;
if (backendResponse.status == 200) {
response.status = "success";
} else if (backendResponse.status == 400 || backendResponse.status == 401 ||
backendResponse.status == 404 || backendResponse.status == 500) {
response.status = "error";
}
return response;
}
);
} else {
log.error("Runtime error : This method only support HTTP GET requests.");
}
};
privateMethods.validateAndReturn = function (value) {
return (value == undefined || value == null) ? constants.UNSPECIFIED : value;
};
@ -289,16 +315,12 @@ deviceModule = function () {
};
publicMethods.getDeviceTypes = function () {
var url = devicemgtProps["httpsURL"] + constants.ADMIN_SERVICE_CONTEXT + "/devices/types";
return serviceInvokers.XMLHttp.get(
url, function (responsePayload) {
return responsePayload;
},
function (responsePayload) {
log.error(responsePayload);
return -1;
}
);
var url = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] + "/device-types";
var response = privateMethods.callBackend(url, constants["HTTP_GET"]);
if (response.status == "success") {
response.content = parse(response.content);
}
return response;
};
//Old methods

@ -263,29 +263,30 @@ var userModule = function () {
/**
* Get Platforms.
* @deprecated moved this device module under getDeviceTypes.
*/
//TODO Move this piece of logic out of user.js to somewhere else appropriate.
publicMethods.getPlatforms = function () {
var carbonUser = session.get(constants["USER_SESSION_KEY"]);
var utility = require("/app/modules/utility.js")["utility"];
if (!carbonUser) {
log.error("User object was not found in the session");
throw constants["ERRORS"]["USER_NOT_FOUND"];
}
try {
utility.startTenantFlow(carbonUser);
var url = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] + "/admin/device-types";
var response = privateMethods.callBackend(url, constants["HTTP_GET"]);
if (response.status == "success") {
response.content = parse(response.content);
}
return response;
} catch (e) {
throw e;
} finally {
utility.endTenantFlow();
}
};
//publicMethods.getPlatforms = function () {
// var carbonUser = session.get(constants["USER_SESSION_KEY"]);
// var utility = require("/app/modules/utility.js")["utility"];
// if (!carbonUser) {
// log.error("User object was not found in the session");
// throw constants["ERRORS"]["USER_NOT_FOUND"];
// }
// try {
// utility.startTenantFlow(carbonUser);
// var url = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] + "/device-types";
// var response = privateMethods.callBackend(url, constants["HTTP_GET"]);
// if (response.status == "success") {
// response.content = parse(response.content);
// }
// return response;
// } catch (e) {
// throw e;
// } finally {
// utility.endTenantFlow();
// }
//};
/**
* Get role

@ -50,21 +50,24 @@ function onRequest(context) {
if (deviceCount > 0) {
page.deviceCount = deviceCount;
var utility = require("/app/modules/utility.js").utility;
var data = deviceModule.getDeviceTypes();
var typesListResponse = deviceModule.getDeviceTypes();
var deviceTypes = [];
if (data) {
for (var i = 0; i < data.length; i++) {
var config = utility.getDeviceTypeConfig(data[i].name);
if (!config){
continue;
if (typesListResponse["status"] == "success") {
var data = typesListResponse["content"];
if (data) {
for (var i = 0; i < data.length; i++) {
var config = utility.getDeviceTypeConfig(data[i].name);
if (!config) {
continue;
}
var deviceType = config.deviceType;
deviceTypes.push({
"type": data[i].name,
"category": deviceType.category,
"label": deviceType.label,
"thumb": utility.getDeviceThumb(data[i].name)
});
}
var deviceType = config.deviceType;
deviceTypes.push({
"type": data[i].name,
"category": deviceType.category,
"label": deviceType.label,
"thumb": utility.getDeviceThumb(data[i].name)
});
}
}
page.deviceTypes = stringify(deviceTypes);

@ -25,47 +25,49 @@ function onRequest(context) {
var viewModel = {};
var deviceModule = require("/app/modules/device.js").deviceModule;
var utility = require("/app/modules/utility.js").utility;
var deviceTypes = deviceModule.getDeviceTypes();
var typesListResponse = deviceModule.getDeviceTypes();
if (typesListResponse["status"] == "success") {
var deviceTypes = typesListResponse["content"];
if (deviceTypes) {
var deviceTypesList = [], virtualDeviceTypesList = [];
for (var i = 0; i < deviceTypes.length; i++) {
if (deviceTypes) {
var deviceTypesList = [], virtualDeviceTypesList = [];
for (var i = 0; i < deviceTypes.length; i++) {
var deviceTypeLabel = deviceTypes[i].name;
var configs = utility.getDeviceTypeConfig(deviceTypeLabel);
var deviceCategory = "device";
if (configs) {
if (configs[DTYPE_CONF_DEVICE_TYPE_KEY][DTYPE_CONF_DEVICE_CATEGORY]) {
deviceCategory = configs[DTYPE_CONF_DEVICE_TYPE_KEY][DTYPE_CONF_DEVICE_CATEGORY];
var deviceTypeLabel = deviceTypes[i].name;
var configs = utility.getDeviceTypeConfig(deviceTypeLabel);
var deviceCategory = "device";
if (configs) {
if (configs[DTYPE_CONF_DEVICE_TYPE_KEY][DTYPE_CONF_DEVICE_CATEGORY]) {
deviceCategory = configs[DTYPE_CONF_DEVICE_TYPE_KEY][DTYPE_CONF_DEVICE_CATEGORY];
}
if (configs[DTYPE_CONF_DEVICE_TYPE_KEY][DTYPE_CONF_DEVICE_TYPE_LABEL_KEY]) {
deviceTypeLabel = configs[DTYPE_CONF_DEVICE_TYPE_KEY][DTYPE_CONF_DEVICE_TYPE_LABEL_KEY];
}
}
if (configs[DTYPE_CONF_DEVICE_TYPE_KEY][DTYPE_CONF_DEVICE_TYPE_LABEL_KEY]) {
deviceTypeLabel = configs[DTYPE_CONF_DEVICE_TYPE_KEY][DTYPE_CONF_DEVICE_TYPE_LABEL_KEY];
if (deviceCategory == 'virtual') {
virtualDeviceTypesList.push({
"hasCustTemplate": false,
"deviceTypeLabel": deviceTypeLabel,
"deviceTypeName": deviceTypes[i].name,
"deviceCategory": deviceCategory,
"deviceTypeId": deviceTypes[i].id,
"thumb": utility.getDeviceThumb(deviceTypes[i].name)
});
} else {
deviceTypesList.push({
"hasCustTemplate": false,
"deviceTypeLabel": deviceTypeLabel,
"deviceTypeName": deviceTypes[i].name,
"deviceCategory": deviceCategory,
"deviceTypeId": deviceTypes[i].id,
"thumb": utility.getDeviceThumb(deviceTypes[i].name)
});
}
}
if (deviceCategory == 'virtual') {
virtualDeviceTypesList.push({
"hasCustTemplate": false,
"deviceTypeLabel": deviceTypeLabel,
"deviceTypeName": deviceTypes[i].name,
"deviceCategory": deviceCategory,
"deviceTypeId": deviceTypes[i].id,
"thumb": utility.getDeviceThumb(deviceTypes[i].name)
});
} else {
deviceTypesList.push({
"hasCustTemplate": false,
"deviceTypeLabel": deviceTypeLabel,
"deviceTypeName": deviceTypes[i].name,
"deviceCategory": deviceCategory,
"deviceTypeId": deviceTypes[i].id,
"thumb": utility.getDeviceThumb(deviceTypes[i].name)
});
if (virtualDeviceTypesList.length > 0) {
viewModel.virtualDeviceTypesList = virtualDeviceTypesList;
}
viewModel.deviceTypesList = stringify(deviceTypesList);
}
if (virtualDeviceTypesList.length > 0) {
viewModel.virtualDeviceTypesList = virtualDeviceTypesList;
}
viewModel.deviceTypesList = stringify(deviceTypesList);
} else {
log.error("Unable to fetch device types data");
throw new Error("Unable to fetch device types!");

@ -15,107 +15,109 @@
specific language governing permissions and limitations
under the License.
}}
<div class="row">
<div class="col-md-12">
<!-- content -->
<div id="config-save-form" class="container col-centered wr-content">
<br>
{{#zone "content"}}
<div class="row">
<div class="col-md-12">
<!-- content -->
<div id="config-save-form" class="container col-centered wr-content">
<br>
<h1 class="page-sub-title">
Platform Configurations
</h1>
<br>
General and Platform Specific Server Settings for the Tenant
<br>
<br>
<h1 class="page-sub-title">
Platform Configurations
</h1>
<br>
General and Platform Specific Server Settings for the Tenant
<br>
<br>
<div class="wr-advance-operations">
<div class="row no-gutter">
<div class="wr-hidden-operations-nav col-lg-4">
<a id="generalConfigLink" href="javascript:void(0)" onclick="showAdvanceOperation('general', this)" class="selected">
<span class="wr-hidden-operations-icon fw-stack">
<i class="fw fw-settings fw-stack-2x"></i>
</span>
General Configurations
</a>
{{#each deviceTypes}}
<a id="{{name}}ConfigLink" href="javascript:void(0)" onclick="showAdvanceOperation('{{name}}', this)">
<span class="wr-hidden-operations-icon fw-stack">
<i class="fw fw-settings fw-stack-2x"></i>
</span>
{{label}} Configurations
<div class="wr-advance-operations">
<div class="row no-gutter">
<div class="wr-hidden-operations-nav col-lg-4">
<a id="generalConfigLink" href="javascript:void(0)" onclick="showAdvanceOperation('general', this)" class="selected">
<span class="wr-hidden-operations-icon fw-stack">
<i class="fw fw-settings fw-stack-2x"></i>
</span>
General Configurations
</a>
{{/each}}
</div>
{{#each deviceTypes}}
<a id="{{name}}ConfigLink" href="javascript:void(0)" onclick="showAdvanceOperation('{{name}}', this)">
<span class="wr-hidden-operations-icon fw-stack">
<i class="fw fw-settings fw-stack-2x"></i>
</span>
{{label}} Configurations
</a>
{{/each}}
</div>
<div class="wr-hidden-operations-content col-lg-8">
<!-- general -->
<div class="wr-hidden-operation" data-operation="general" style="display: block">
<div class="panel panel-default">
<div id="general-config-heading" class="panel-heading" role="tab">
<h2 class="sub-title panel-title">
Policy Monitoring
</h2>
</div>
<div id="email-config-body" class="panel-collapse panel-body"
role="tabpanel">
<div id="email-config-error-msg"
class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
<div class="wr-input-control">
<label class="wr-input-label" for="email-config-host">
Monitoring Frequency
<span class="helper" title="SMTP Server Host">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span>
<br>
( Should be in milliseconds )
</label>
<input id="monitoring-config-frequency" type="text"
class="form-control"
placeholder="[ Required Field ]">
<div class="wr-hidden-operations-content col-lg-8">
<!-- general -->
<div class="wr-hidden-operation" data-operation="general" style="display: block">
<div class="panel panel-default">
<div id="general-config-heading" class="panel-heading" role="tab">
<h2 class="sub-title panel-title">
Policy Monitoring
</h2>
</div>
<div class="wr-input-control wr-btn-grp">
<button id="save-general-btn" class="wr-btn">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Save&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</button>
<div id="email-config-body" class="panel-collapse panel-body"
role="tabpanel">
<div id="email-config-error-msg"
class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
<div class="wr-input-control">
<label class="wr-input-label" for="email-config-host">
Monitoring Frequency
<span class="helper" title="SMTP Server Host">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span>
<br>
( Should be in milliseconds )
</label>
<input id="monitoring-config-frequency" type="text"
class="form-control"
placeholder="[ Required Field ]">
</div>
<div class="wr-input-control wr-btn-grp">
<button id="save-general-btn" class="wr-btn">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Save&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</button>
</div>
</div>
</div>
</div>
</div>
<!-- general-->
{{#each deviceTypes}}
<div class="wr-hidden-operation" data-operation="{{name}}" style="display: none;">
{{unit unitName}}
</div>
{{/each}}
<!-- general-->
{{#each deviceTypes}}
<div class="wr-hidden-operation" data-operation="{{name}}" style="display: none;">
{{unit unitName}}
</div>
{{/each}}
</div>
</div>
</div>
</div>
</div>
<div id="record-created-msg" class="container col-centered wr-content hidden">
<div class="wr-form">
<p class="page-sub-title">Configuration was saved successfully.</p>
<br>
<br>Please click <b>"Go back to configurations"</b>, if you wish to save another
configuration or click
<b>"Exit"</b> to complete the process and go back to the dashboard.
<hr/>
<button class="wr-btn"
onclick="window.location.href='{{@app.context}}/platform-configuration'">Go
back
to
configurations
</button>
<button class="wr-btn" onclick="window.location.href='{{@app.context}}'">&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;&nbsp;&nbsp;&nbsp;</button>
<div id="record-created-msg" class="container col-centered wr-content hidden">
<div class="wr-form">
<p class="page-sub-title">Configuration was saved successfully.</p>
<br>
<br>Please click <b>"Go back to configurations"</b>, if you wish to save another
configuration or click
<b>"Exit"</b> to complete the process and go back to the dashboard.
<hr/>
<button class="wr-btn"
onclick="window.location.href='{{@app.context}}/platform-configuration'">Go
back
to
configurations
</button>
<button class="wr-btn" onclick="window.location.href='{{@app.context}}'">&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;&nbsp;&nbsp;&nbsp;</button>
</div>
</div>
<!-- /content -->
</div>
<!-- /content -->
</div>
</div>
{{/zone}}
{{#zone "bottomJs"}}
{{js "js/platform-configuration.js"}}
{{/zone}}

@ -20,15 +20,22 @@ function onRequest(context) {
var utility = require("/app/modules/device.js").utility;
var deviceModule = require("/app/modules/device.js").deviceModule;
//get all device types
var data = deviceModule.getDeviceTypes();
var deviceTypesArray = [];
if (data) {
for (var i = 0; i < data.length; i++) {
var deviceTypeName = data[i].name;
var configUnitName = utility.getTenantedDeviceUnitName(deviceTypeName, "platform.configuration");
if(configUnitName) {
var deviceTypeConfig = utility.getDeviceTypeConfig(deviceTypeName);
deviceTypesArray.push({name: deviceTypeName, label:deviceTypeConfig.deviceType.label, unitName : configUnitName});
var typesListResponse = deviceModule.getDeviceTypes();
if (typesListResponse["status"] == "success") {
var data = typesListResponse["content"].deviceTypes;
if (data) {
for (var i = 0; i < data.length; i++) {
var deviceTypeName = data[i];
var configUnitName = utility.getTenantedDeviceUnitName(deviceTypeName, "platform.configuration");
if (configUnitName) {
var deviceTypeConfig = utility.getDeviceTypeConfig(deviceTypeName);
deviceTypesArray.push({
name: deviceTypeName,
label: deviceTypeConfig.deviceType.label,
unitName: configUnitName
});
}
}
}
}

@ -41,7 +41,7 @@ $(document).ready(function () {
}
invokerUtil.get(
"/devicemgt_admin/configuration",
"/api/device-mgt/v1.0/configuration",
function (data) {
data = JSON.parse(data);
if (data && data.configuration) {
@ -85,13 +85,13 @@ $(document).ready(function () {
configList.push(monitorFrequency);
addConfigFormData.configuration = configList;
var addConfigAPI = "/devicemgt_admin/configuration";
invokerUtil.post(
var addConfigAPI = "/api/device-mgt/v1.0/configuration";
invokerUtil.put(
addConfigAPI,
addConfigFormData,
function (data) {
data = JSON.parse(data);
if (data.statusCode == responseCodes["SUCCESS"]) {
function (data, textStatus, jqXHR) {
data = jqXHR.status;
if (data == 200) {
$("#config-save-form").addClass("hidden");
$("#record-created-msg").removeClass("hidden");
} else if (data == 500) {
@ -118,3 +118,12 @@ $(document).ready(function () {
}
});
});
// Start of HTML embedded invoke methods
var showAdvanceOperation = function (operation, button) {
$(button).addClass('selected');
$(button).siblings().removeClass('selected');
var hiddenOperation = ".wr-hidden-operations-content > div";
$(hiddenOperation + '[data-operation="' + operation + '"]').show();
$(hiddenOperation + '[data-operation="' + operation + '"]').siblings().hide();
};

@ -21,11 +21,11 @@ function onRequest(context) {
var DTYPE_CONF_DEVICE_TYPE_LABEL_KEY = "label";
var utility = require("/app/modules/utility.js").utility;
var userModule = require("/app/modules/user.js")["userModule"];
var deviceModule = require("/app/modules/device.js").deviceModule;
var types = {};
types["types"] = [];
var typesListResponse = userModule.getPlatforms();
var typesListResponse = deviceModule.getDeviceTypes();
if (typesListResponse["status"] == "success") {
for (var type in typesListResponse["content"]) {
var deviceType = typesListResponse["content"][type]["name"];

Loading…
Cancel
Save