mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
commit
3b68ccb4ba
@ -21,6 +21,7 @@ package org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt;
|
|||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
|
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||||
import org.wso2.carbon.device.mgt.common.push.notification.NotificationContext;
|
import org.wso2.carbon.device.mgt.common.push.notification.NotificationContext;
|
||||||
import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
|
import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
|
||||||
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig;
|
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig;
|
||||||
@ -77,17 +78,22 @@ public class MQTTNotificationStrategy implements NotificationStrategy {
|
|||||||
@Override
|
@Override
|
||||||
public void execute(NotificationContext ctx) throws PushNotificationExecutionFailedException {
|
public void execute(NotificationContext ctx) throws PushNotificationExecutionFailedException {
|
||||||
Map<String, String> dynamicProperties = new HashMap<>();
|
Map<String, String> dynamicProperties = new HashMap<>();
|
||||||
Properties properties = ctx.getOperation().getProperties();
|
Operation operation = ctx.getOperation();
|
||||||
|
Properties properties = operation.getProperties();
|
||||||
if (properties != null && properties.get(MQTT_ADAPTER_TOPIC) != null) {
|
if (properties != null && properties.get(MQTT_ADAPTER_TOPIC) != null) {
|
||||||
dynamicProperties.put("topic", (String) properties.get(MQTT_ADAPTER_TOPIC));
|
dynamicProperties.put("topic", (String) properties.get(MQTT_ADAPTER_TOPIC));
|
||||||
} else {
|
} else {
|
||||||
String topic = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain(true) + "/"
|
String topic = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain(true) + "/"
|
||||||
+ ctx.getDeviceId().getType() + "/" + ctx.getDeviceId().getId() + "/" + ctx.getOperation().getType();
|
+ ctx.getDeviceId().getType() + "/" + ctx.getDeviceId().getId() + "/" + operation.getType()
|
||||||
|
+ "/" + operation.getCode();
|
||||||
dynamicProperties.put("topic", topic);
|
dynamicProperties.put("topic", topic);
|
||||||
|
if (operation.getPayLoad() == null) {
|
||||||
|
operation.setPayLoad("");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MQTTDataHolder.getInstance().getOutputEventAdapterService().publish(mqttAdapterName, dynamicProperties,
|
MQTTDataHolder.getInstance().getOutputEventAdapterService().publish(mqttAdapterName, dynamicProperties,
|
||||||
ctx.getOperation().getPayLoad());
|
operation.getPayLoad());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -18,17 +18,29 @@
|
|||||||
*/
|
*/
|
||||||
package org.wso2.carbon.device.mgt.jaxrs.service.api;
|
package org.wso2.carbon.device.mgt.jaxrs.service.api;
|
||||||
|
|
||||||
import io.swagger.annotations.*;
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import io.swagger.annotations.ApiResponse;
|
||||||
|
import io.swagger.annotations.ApiResponses;
|
||||||
|
import io.swagger.annotations.ResponseHeader;
|
||||||
import org.wso2.carbon.apimgt.annotations.api.API;
|
import org.wso2.carbon.apimgt.annotations.api.API;
|
||||||
import org.wso2.carbon.apimgt.annotations.api.Permission;
|
import org.wso2.carbon.apimgt.annotations.api.Permission;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceTypeList;
|
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.beans.ErrorResponse;
|
||||||
|
|
||||||
import javax.ws.rs.*;
|
import javax.validation.constraints.Size;
|
||||||
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.GET;
|
||||||
|
import javax.ws.rs.HeaderParam;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.PathParam;
|
||||||
|
import javax.ws.rs.Produces;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
|
|
||||||
@API(name = "Device Type Management", version = "1.0.0", context = "/api/device-mgt/v1.0/admin/device-types", tags = {"devicemgt_admin"})
|
@API(name = "Device Type Management", version = "1.0.0", context = "/api/device-mgt/v1.0/admin/device-types",
|
||||||
|
tags = {"devicemgt_admin"})
|
||||||
|
|
||||||
@Path("/device-types")
|
@Path("/device-types")
|
||||||
@Api(value = "Device Type Management", description = "This API corresponds to all tasks related to device " +
|
@Api(value = "Device Type Management", description = "This API corresponds to all tasks related to device " +
|
||||||
@ -60,13 +72,16 @@ public interface DeviceTypeManagementService {
|
|||||||
"Used by caches, or in conditional requests."),
|
"Used by caches, or in conditional requests."),
|
||||||
@ResponseHeader(
|
@ResponseHeader(
|
||||||
name = "Last-Modified",
|
name = "Last-Modified",
|
||||||
description = "Date and time the resource has been modified the last time.\n" +
|
description =
|
||||||
|
"Date and time the resource has been modified the last time.\n" +
|
||||||
"Used by caches, or in conditional requests."),
|
"Used by caches, or in conditional requests."),
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
@ApiResponse(
|
@ApiResponse(
|
||||||
code = 304,
|
code = 304,
|
||||||
message = "Not Modified. \n Empty body because the client has already the latest version of " +
|
message =
|
||||||
|
"Not Modified. \n Empty body because the client has already the latest version of" +
|
||||||
|
" " +
|
||||||
"the requested resource."),
|
"the requested resource."),
|
||||||
@ApiResponse(
|
@ApiResponse(
|
||||||
code = 406,
|
code = 406,
|
||||||
@ -87,4 +102,64 @@ public interface DeviceTypeManagementService {
|
|||||||
@HeaderParam("If-Modified-Since")
|
@HeaderParam("If-Modified-Since")
|
||||||
String ifModifiedSince);
|
String ifModifiedSince);
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@ApiOperation(
|
||||||
|
produces = MediaType.APPLICATION_JSON,
|
||||||
|
httpMethod = "GET",
|
||||||
|
value = "Get the list of features for a give device type.",
|
||||||
|
notes = "Retrieves the list of features of a given device type.",
|
||||||
|
tags = "Device Type Management")
|
||||||
|
@ApiResponses(
|
||||||
|
value = {
|
||||||
|
@ApiResponse(
|
||||||
|
code = 200,
|
||||||
|
message = "OK. \n Successfully fetched the list of supported features.",
|
||||||
|
response = DeviceTypeList.class,
|
||||||
|
responseHeaders = {
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "Content-Type",
|
||||||
|
description = "The content type of the body"),
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "ETag",
|
||||||
|
description = "Entity Tag of the response resource.\n" +
|
||||||
|
"Used by caches, or in conditional requests."),
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "Last-Modified",
|
||||||
|
description =
|
||||||
|
"Date and time the resource has been modified the last time.\n" +
|
||||||
|
"Used by caches, or in conditional requests."),
|
||||||
|
}
|
||||||
|
),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 304,
|
||||||
|
message =
|
||||||
|
"Not Modified. \n Empty body because the client has already the latest version of" +
|
||||||
|
" " +
|
||||||
|
"the requested resource."),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 406,
|
||||||
|
message = "Not Acceptable.\n The requested media type is not supported"),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 500,
|
||||||
|
message = "Internal Server Error. \n Server error occurred while fetching the " +
|
||||||
|
"list of supported device types.",
|
||||||
|
response = ErrorResponse.class)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@Permission(name = "View Device Types", permission = "/device-mgt/devices/owning-device/view")
|
||||||
|
Response getFeatures(
|
||||||
|
@ApiParam(
|
||||||
|
name = "type",
|
||||||
|
value = "The device type, such as ios, android or windows.",
|
||||||
|
required = true)
|
||||||
|
@PathParam("type")
|
||||||
|
@Size(max = 45)
|
||||||
|
String type,
|
||||||
|
@ApiParam(
|
||||||
|
name = "If-Modified-Since",
|
||||||
|
value = "Validates if the requested variant has not been modified since the time specified",
|
||||||
|
required = false)
|
||||||
|
@HeaderParam("If-Modified-Since")
|
||||||
|
String ifModifiedSince);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,85 +18,96 @@
|
|||||||
*/
|
*/
|
||||||
package org.wso2.carbon.device.mgt.jaxrs.service.api;
|
package org.wso2.carbon.device.mgt.jaxrs.service.api;
|
||||||
|
|
||||||
import org.wso2.carbon.apimgt.annotations.api.Scope;
|
import org.wso2.carbon.apimgt.annotations.api.API;
|
||||||
|
import org.wso2.carbon.apimgt.annotations.api.Permission;
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||||
|
|
||||||
import javax.ws.rs.*;
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.DELETE;
|
||||||
|
import javax.ws.rs.GET;
|
||||||
|
import javax.ws.rs.POST;
|
||||||
|
import javax.ws.rs.PUT;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.PathParam;
|
||||||
|
import javax.ws.rs.Produces;
|
||||||
|
import javax.ws.rs.QueryParam;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
|
|
||||||
//@Path("/groups")
|
@API(name = "Group Management", version = "1.0.0", context = "/api/device-mgt/v1.0/groups", tags = {"devicemgt_admin"})
|
||||||
//@Produces(MediaType.APPLICATION_JSON)
|
|
||||||
//@Consumes(MediaType.APPLICATION_JSON)
|
@Path("/groups")
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
public interface GroupManagementService {
|
public interface GroupManagementService {
|
||||||
|
|
||||||
// @GET
|
@GET
|
||||||
// @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"})
|
@Permission(name = "View Group", permission = "/permission/admin/device-mgt/user/groups/list")
|
||||||
// Response getGroups(@QueryParam("user") String user, @QueryParam("offset") int offset,
|
Response getGroups(@QueryParam("user") String user, @QueryParam("offset") int offset,
|
||||||
// @QueryParam("limit") int limit);
|
@QueryParam("limit") int limit);
|
||||||
//
|
|
||||||
// @POST
|
|
||||||
// @Permission(scope = "group-add", permissions = {"/permission/admin/device-mgt/user/groups/add"})
|
|
||||||
// Response createGroup(DeviceGroup group);
|
|
||||||
//
|
|
||||||
// @Path("/{groupName}")
|
|
||||||
// @GET
|
|
||||||
// @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/view"})
|
|
||||||
// Response getGroup(@PathParam("groupName") String groupName);
|
|
||||||
//
|
|
||||||
// @Path("/{groupName}")
|
|
||||||
// @PUT
|
|
||||||
// @Permission(scope = "group-modify", permissions = {"/permission/admin/device-mgt/user/groups/update"})
|
|
||||||
// Response updateGroup(@PathParam("groupName") String groupName, DeviceGroup deviceGroup);
|
|
||||||
//
|
|
||||||
// @Path("/{groupName}")
|
|
||||||
// @DELETE
|
|
||||||
// @Permission(scope = "group-remove", permissions = {"/permission/admin/device-mgt/user/groups/remove"})
|
|
||||||
// Response deleteGroup(@PathParam("groupName") String groupName);
|
|
||||||
//
|
|
||||||
// @Path("/{groupName}/share-with-user")
|
|
||||||
// @POST
|
|
||||||
// @Permission(scope = "group-share", permissions = {"/permission/admin/device-mgt/user/groups/share"})
|
|
||||||
// Response shareGroupWithUser(@PathParam("groupName") String groupName, String targetUser);
|
|
||||||
//
|
|
||||||
// @Path("/{groupName}/share-with-role")
|
|
||||||
// @POST
|
|
||||||
// @Permission(scope = "group-share", permissions = {"/permission/admin/device-mgt/user/groups/share"})
|
|
||||||
// Response shareGroupWithRole(@PathParam("groupName") String groupName, String targetRole);
|
|
||||||
//
|
|
||||||
// @Path("/{groupName}/remove-share-with-user")
|
|
||||||
// @POST
|
|
||||||
// @Permission(scope = "group-share", permissions = {"/permission/admin/device-mgt/user/groups/unshare"})
|
|
||||||
// Response removeShareWithUser(@PathParam("groupName") String groupName, String targetUser);
|
|
||||||
//
|
|
||||||
// @Path("/{groupName}/remove-share-with-role")
|
|
||||||
// @POST
|
|
||||||
// @Permission(scope = "group-share", permissions = {"/permission/admin/device-mgt/user/groups/unshare"})
|
|
||||||
// Response removeShareWithRole(@PathParam("groupName") String groupName, String targetUser);
|
|
||||||
//
|
|
||||||
// @GET
|
|
||||||
// @Path("/{groupName}/users")
|
|
||||||
// @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"})
|
|
||||||
// Response getUsersOfGroup(@PathParam("groupName") String groupName);
|
|
||||||
//
|
|
||||||
// @GET
|
|
||||||
// @Path("/{groupName}/devices")
|
|
||||||
// @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/groups/roles"})
|
|
||||||
// Response getDevicesOfGroup(@PathParam("groupName") String groupName, @QueryParam("offset") int offset,
|
|
||||||
// @QueryParam("limit") int limit);
|
|
||||||
//
|
|
||||||
// @POST
|
|
||||||
// @Path("/{groupName}/devices")
|
|
||||||
// @Produces("application/json")
|
|
||||||
// @Permission(scope = "group-add", permissions = {"/permission/admin/device-mgt/user/groups/devices/add"})
|
|
||||||
// Response addDeviceToGroup(@PathParam("groupName") String groupName, DeviceIdentifier deviceIdentifier);
|
|
||||||
//
|
|
||||||
// @DELETE
|
|
||||||
// @Path("/{groupName}/devices")
|
|
||||||
// @Permission(scope = "group-remove", permissions = {"/permission/admin/device-mgt/user/groups/devices/remove"})
|
|
||||||
// Response removeDeviceFromGroup(@PathParam("groupName") String groupName, @QueryParam("type") String type,
|
|
||||||
// @QueryParam("id") String id);
|
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Permission(name = "Add Group", permission = "/permission/admin/device-mgt/user/groups/add")
|
||||||
|
Response createGroup(DeviceGroup group);
|
||||||
|
|
||||||
|
@Path("/{groupName}")
|
||||||
|
@GET
|
||||||
|
@Permission(name = "View Group", permission = "/permission/admin/device-mgt/user/groups/view")
|
||||||
|
Response getGroup(@PathParam("groupName") String groupName);
|
||||||
|
|
||||||
|
@Path("/{groupName}")
|
||||||
|
@PUT
|
||||||
|
@Permission(name = "Update Group", permission = "/permission/admin/device-mgt/user/groups/update")
|
||||||
|
Response updateGroup(@PathParam("groupName") String groupName, DeviceGroup deviceGroup);
|
||||||
|
|
||||||
|
@Path("/{groupName}")
|
||||||
|
@DELETE
|
||||||
|
@Permission(name = "Remove Groups", permission = "/permission/admin/device-mgt/user/groups/remove")
|
||||||
|
Response deleteGroup(@PathParam("groupName") String groupName);
|
||||||
|
|
||||||
|
@Path("/{groupName}/share-with-user")
|
||||||
|
@POST
|
||||||
|
@Permission(name = "Share Group to a User", permission = "/permission/admin/device-mgt/user/groups/share")
|
||||||
|
Response shareGroupWithUser(@PathParam("groupName") String groupName, String targetUser);
|
||||||
|
|
||||||
|
@Path("/{groupName}/share-with-role")
|
||||||
|
@POST
|
||||||
|
@Permission(name = "Share Group to a Role", permission = "/permission/admin/device-mgt/user/groups/share")
|
||||||
|
Response shareGroupWithRole(@PathParam("groupName") String groupName, String targetRole);
|
||||||
|
|
||||||
|
@Path("/{groupName}/remove-share-with-user")
|
||||||
|
@POST
|
||||||
|
@Permission(name = "Unshare a Group", permission = "/permission/admin/device-mgt/user/groups/unshare")
|
||||||
|
Response removeShareWithUser(@PathParam("groupName") String groupName, String targetUser);
|
||||||
|
|
||||||
|
@Path("/{groupName}/remove-share-with-role")
|
||||||
|
@POST
|
||||||
|
@Permission(name = "Unshare a Group", permission = "/permission/admin/device-mgt/user/groups/unshare")
|
||||||
|
Response removeShareWithRole(@PathParam("groupName") String groupName, String targetUser);
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("/{groupName}/users")
|
||||||
|
@Permission(name = "Get Users of Group", permission = "/permission/admin/device-mgt/user/groups/list")
|
||||||
|
Response getUsersOfGroup(@PathParam("groupName") String groupName);
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("/{groupName}/devices")
|
||||||
|
@Permission(name = "Get Devices of Group", permission = "/permission/admin/device-mgt/groups/roles")
|
||||||
|
Response getDevicesOfGroup(@PathParam("groupName") String groupName, @QueryParam("offset") int offset,
|
||||||
|
@QueryParam("limit") int limit);
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Path("/{groupName}/devices")
|
||||||
|
@Produces("application/json")
|
||||||
|
@Permission(name = "Add Device to a Group", permission = "/permission/admin/device-mgt/user/groups/devices/add")
|
||||||
|
Response addDeviceToGroup(@PathParam("groupName") String groupName, DeviceIdentifier deviceIdentifier);
|
||||||
|
|
||||||
|
@DELETE
|
||||||
|
@Path("/{groupName}/devices")
|
||||||
|
@Permission(name = "Remove Devices from Group",
|
||||||
|
permission = "/permission/admin/device-mgt/user/groups/devices/remove")
|
||||||
|
Response removeDeviceFromGroup(@PathParam("groupName") String groupName, @QueryParam("type") String type,
|
||||||
|
@QueryParam("id") String id);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,82 +18,92 @@
|
|||||||
*/
|
*/
|
||||||
package org.wso2.carbon.device.mgt.jaxrs.service.api.admin;
|
package org.wso2.carbon.device.mgt.jaxrs.service.api.admin;
|
||||||
|
|
||||||
import io.swagger.annotations.*;
|
import io.swagger.annotations.Api;
|
||||||
import org.wso2.carbon.apimgt.annotations.api.Scope;
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import io.swagger.annotations.ApiResponse;
|
||||||
|
import io.swagger.annotations.ApiResponses;
|
||||||
|
import io.swagger.annotations.ResponseHeader;
|
||||||
|
import org.wso2.carbon.apimgt.annotations.api.API;
|
||||||
|
import org.wso2.carbon.apimgt.annotations.api.Permission;
|
||||||
import org.wso2.carbon.policy.mgt.common.DeviceGroupWrapper;
|
import org.wso2.carbon.policy.mgt.common.DeviceGroupWrapper;
|
||||||
|
|
||||||
import javax.ws.rs.*;
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.GET;
|
||||||
|
import javax.ws.rs.HeaderParam;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.Produces;
|
||||||
|
import javax.ws.rs.QueryParam;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
//@Path("/admin/groups")
|
@API(name = "Group Management Admin", version = "1.0.0", context = "/api/device-mgt/v1.0/admin/groups", tags = {"devicemgt_admin"})
|
||||||
//@Produces(MediaType.APPLICATION_JSON)
|
|
||||||
//@Consumes(MediaType.APPLICATION_JSON)
|
@Path("/admin/groups")
|
||||||
//@Api(value = "Group Management Administrative Service", description = "This an API intended to be used by " +
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
// "'internal' components to log in as an admin user and do a selected number of operations. " +
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
// "Further, this is strictly restricted to admin users only ")
|
@Api(value = "Group Management Administrative Service", description = "This an API intended to be used by " +
|
||||||
|
"'internal' components to log in as an admin user and do a selected number of operations. " +
|
||||||
|
"Further, this is strictly restricted to admin users only ")
|
||||||
public interface GroupManagementAdminService {
|
public interface GroupManagementAdminService {
|
||||||
|
|
||||||
// @GET
|
@GET
|
||||||
// @ApiOperation(
|
@ApiOperation(
|
||||||
// produces = MediaType.APPLICATION_JSON,
|
produces = MediaType.APPLICATION_JSON,
|
||||||
// httpMethod = "GET",
|
httpMethod = "GET",
|
||||||
// value = "Get groups by the name.",
|
value = "Get groups by the name.",
|
||||||
// notes = "Get devices the name of device and tenant.",
|
notes = "Get devices the name of device and tenant.",
|
||||||
// response = DeviceGroupWrapper.class,
|
response = DeviceGroupWrapper.class,
|
||||||
// responseContainer = "List",
|
responseContainer = "List",
|
||||||
// tags = "Group Management Administrative Service")
|
tags = "Group Management Administrative Service")
|
||||||
// @ApiResponses(value = {
|
@ApiResponses(value = {
|
||||||
// @ApiResponse(code = 200, message = "OK. \n Successfully fetched the list of groups.",
|
@ApiResponse(code = 200, message = "OK. \n Successfully fetched the list of groups.",
|
||||||
// response = DeviceGroupWrapper.class,
|
response = DeviceGroupWrapper.class,
|
||||||
// responseContainer = "List",
|
responseContainer = "List",
|
||||||
// responseHeaders = {
|
responseHeaders = {
|
||||||
// @ResponseHeader(
|
@ResponseHeader(
|
||||||
// name = "Content-Type",
|
name = "Content-Type",
|
||||||
// description = "The content type of the body"),
|
description = "The content type of the body"),
|
||||||
// @ResponseHeader(
|
@ResponseHeader(
|
||||||
// name = "ETag",
|
name = "ETag",
|
||||||
// description = "Entity Tag of the response resource.\n" +
|
description = "Entity Tag of the response resource.\n" +
|
||||||
// "Used by caches, or in conditional requests."),
|
"Used by caches, or in conditional requests."),
|
||||||
// @ResponseHeader(
|
@ResponseHeader(
|
||||||
// name = "Last-Modified",
|
name = "Last-Modified",
|
||||||
// description = "Date and time the resource has been modified the last time.\n" +
|
description = "Date and time the resource has been modified the last time.\n" +
|
||||||
// "Used by caches, or in conditional requests."),
|
"Used by caches, or in conditional requests."),
|
||||||
// }),
|
}),
|
||||||
// @ApiResponse(
|
@ApiResponse(
|
||||||
// code = 304,
|
code = 304,
|
||||||
// message = "Not Modified. \n Empty body because the client has already the latest version of the requested resource."),
|
message = "Not Modified. \n Empty body because the client has already the latest version of the " +
|
||||||
// @ApiResponse(
|
"requested resource."),
|
||||||
// code = 406,
|
@ApiResponse(
|
||||||
// message = "Not Acceptable.\n The requested media type is not supported"),
|
code = 406,
|
||||||
// @ApiResponse(
|
message = "Not Acceptable.\n The requested media type is not supported"),
|
||||||
// code = 500,
|
@ApiResponse(
|
||||||
// message = "Internal Server ErrorResponse. \n Server error occurred while fetching the group list.")
|
code = 500,
|
||||||
// })
|
message = "Internal Server ErrorResponse. \n Server error occurred while fetching the group list.")
|
||||||
// @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"})
|
})
|
||||||
// Response getGroupsOfUser(
|
@Permission(name = "View All Groups", permission = "/permission/admin/device-mgt/user/groups/list")
|
||||||
// @ApiParam(
|
Response getGroupsOfUser(
|
||||||
// name = "username",
|
@ApiParam(
|
||||||
// value = "Username of the user.",
|
name = "username",
|
||||||
// required = true)
|
value = "Username of the user.",
|
||||||
// @QueryParam("username") String username,
|
required = true)
|
||||||
// @ApiParam(
|
@QueryParam("username") String username,
|
||||||
// name = "If-Modified-Since",
|
@ApiParam(
|
||||||
// value = "Timestamp of the last modified date",
|
name = "If-Modified-Since",
|
||||||
// required = false)
|
value = "Timestamp of the last modified date",
|
||||||
// @HeaderParam("If-Modified-Since") String timestamp,
|
required = false)
|
||||||
// @ApiParam(
|
@HeaderParam("If-Modified-Since") String timestamp,
|
||||||
// name = "offset",
|
@ApiParam(
|
||||||
// value = "Starting point within the complete list of items qualified.",
|
name = "offset",
|
||||||
// required = false)
|
value = "Starting point within the complete list of items qualified.",
|
||||||
// @QueryParam("offset") int offset,
|
required = false)
|
||||||
// @ApiParam(
|
@QueryParam("offset") int offset,
|
||||||
// name = "limit",
|
@ApiParam(
|
||||||
// value = "Maximum size of resource array to return.",
|
name = "limit",
|
||||||
// required = false)
|
value = "Maximum size of resource array to return.",
|
||||||
// @QueryParam("limit") int limit);
|
required = false)
|
||||||
//
|
@QueryParam("limit") int limit);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,14 +21,20 @@ package org.wso2.carbon.device.mgt.jaxrs.service.impl;
|
|||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||||
|
import org.wso2.carbon.device.mgt.common.Feature;
|
||||||
|
import org.wso2.carbon.device.mgt.common.FeatureManager;
|
||||||
|
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceTypeList;
|
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.beans.ErrorResponse;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.service.api.DeviceTypeManagementService;
|
import org.wso2.carbon.device.mgt.jaxrs.service.api.DeviceTypeManagementService;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.RequestValidationUtil;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
||||||
|
|
||||||
|
import javax.validation.constraints.Size;
|
||||||
import javax.ws.rs.GET;
|
import javax.ws.rs.GET;
|
||||||
import javax.ws.rs.HeaderParam;
|
import javax.ws.rs.HeaderParam;
|
||||||
import javax.ws.rs.Path;
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.PathParam;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -56,4 +62,28 @@ public class DeviceTypeManagementServiceImpl implements DeviceTypeManagementServ
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Override
|
||||||
|
@Path("/{type}/features")
|
||||||
|
public Response getFeatures(@PathParam("type") @Size(max = 45) String type, @HeaderParam("If-Modified-Since") String ifModifiedSince) {
|
||||||
|
List<Feature> features;
|
||||||
|
DeviceManagementProviderService dms;
|
||||||
|
try {
|
||||||
|
dms = DeviceMgtAPIUtils.getDeviceManagementService();
|
||||||
|
FeatureManager fm = dms.getFeatureManager(type);
|
||||||
|
if (fm == null) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity(
|
||||||
|
new ErrorResponse.ErrorResponseBuilder().setMessage("No feature manager is " +
|
||||||
|
"registered with the given type '" + type + "'").build()).build();
|
||||||
|
}
|
||||||
|
features = fm.getFeatures();
|
||||||
|
} catch (DeviceManagementException e) {
|
||||||
|
String msg = "Error occurred while retrieving the list of features of '" + type + "' device type";
|
||||||
|
log.error(msg, e);
|
||||||
|
return Response.serverError().entity(
|
||||||
|
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
|
||||||
|
}
|
||||||
|
return Response.status(Response.Status.OK).entity(features).build();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,10 +18,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.wso2.carbon.device.mgt.jaxrs.service.impl;
|
package org.wso2.carbon.device.mgt.jaxrs.service.impl;
|
||||||
|
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.service.api.GroupManagementService;
|
|
||||||
import org.apache.commons.httpclient.HttpStatus;
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
@ -33,105 +29,108 @@ import org.wso2.carbon.device.mgt.jaxrs.service.api.GroupManagementService;
|
|||||||
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
||||||
import org.wso2.carbon.policy.mgt.common.DeviceGroupWrapper;
|
import org.wso2.carbon.policy.mgt.common.DeviceGroupWrapper;
|
||||||
|
|
||||||
import javax.ws.rs.*;
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.PathParam;
|
||||||
|
import javax.ws.rs.Produces;
|
||||||
|
import javax.ws.rs.QueryParam;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
//@Path("/groups")
|
@Path("/groups")
|
||||||
//@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
//@Consumes(MediaType.APPLICATION_JSON)
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
public class GroupManagementServiceImpl implements GroupManagementService {
|
public class GroupManagementServiceImpl implements GroupManagementService {
|
||||||
|
|
||||||
// private static final Log log = LogFactory.getLog(GroupManagementServiceImpl.class);
|
private static final Log log = LogFactory.getLog(GroupManagementServiceImpl.class);
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Response getGroups(@QueryParam("user") String user, @QueryParam("offset") int offset,
|
|
||||||
// @QueryParam("limit") int limit) {
|
|
||||||
// try {
|
|
||||||
// List<DeviceGroupWrapper> groupWrappers = new ArrayList<>();
|
|
||||||
// GroupManagementProviderService service = DeviceMgtAPIUtils.getGroupManagementProviderService();
|
|
||||||
// List<DeviceGroup> deviceGroups = service.getGroups(user);
|
|
||||||
// int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
|
||||||
// for (DeviceGroup dg : deviceGroups) {
|
|
||||||
// DeviceGroupWrapper gw = new DeviceGroupWrapper();
|
|
||||||
// gw.setId(dg.getId());
|
|
||||||
// gw.setOwner(dg.getOwner());
|
|
||||||
// gw.setName(dg.getName());
|
|
||||||
// gw.setTenantId(tenantId);
|
|
||||||
// groupWrappers.add(gw);
|
|
||||||
// }
|
|
||||||
// return Response.status(Response.Status.OK).entity(groupWrappers).build();
|
|
||||||
// } catch (GroupManagementException e) {
|
|
||||||
// String error = "ErrorResponse occurred while getting the groups related to users for policy.";
|
|
||||||
// log.error(error, e);
|
|
||||||
// return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(error).build();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Response createGroup(DeviceGroup group) {
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Response getGroup(@PathParam("groupName") String groupName) {
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Response updateGroup(@PathParam("groupName") String groupName, DeviceGroup deviceGroup) {
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Response deleteGroup(@PathParam("groupName") String groupName) {
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Response shareGroupWithUser(String groupName, String targetUser) {
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Response shareGroupWithRole(String groupName, String targetRole) {
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Response removeShareWithUser(@PathParam("groupName") String groupName,
|
|
||||||
// @QueryParam("username") String targetUser) {
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Response removeShareWithRole(@PathParam("groupName") String groupName,
|
|
||||||
// @QueryParam("roleName") String targetUser) {
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Response getUsersOfGroup(@PathParam("groupName") String groupName) {
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Response getDevicesOfGroup(@PathParam("groupName") String groupName, @QueryParam("offset") int offset,
|
|
||||||
// @QueryParam("limit") int limit) {
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Response addDeviceToGroup(@PathParam("groupName") String groupName, DeviceIdentifier deviceIdentifier) {
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Response removeDeviceFromGroup(@PathParam("groupName") String groupName, @QueryParam("type") String type,
|
|
||||||
// @QueryParam("id") String id) {
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response getGroups(@QueryParam("user") String user, @QueryParam("offset") int offset,
|
||||||
|
@QueryParam("limit") int limit) {
|
||||||
|
try {
|
||||||
|
List<DeviceGroupWrapper> groupWrappers = new ArrayList<>();
|
||||||
|
GroupManagementProviderService service = DeviceMgtAPIUtils.getGroupManagementProviderService();
|
||||||
|
List<DeviceGroup> deviceGroups = service.getGroups(user);
|
||||||
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
|
for (DeviceGroup dg : deviceGroups) {
|
||||||
|
DeviceGroupWrapper gw = new DeviceGroupWrapper();
|
||||||
|
gw.setId(dg.getId());
|
||||||
|
gw.setOwner(dg.getOwner());
|
||||||
|
gw.setName(dg.getName());
|
||||||
|
gw.setTenantId(tenantId);
|
||||||
|
groupWrappers.add(gw);
|
||||||
|
}
|
||||||
|
return Response.status(Response.Status.OK).entity(groupWrappers).build();
|
||||||
|
} catch (GroupManagementException e) {
|
||||||
|
String error = "ErrorResponse occurred while getting the groups related to users for policy.";
|
||||||
|
log.error(error, e);
|
||||||
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(error).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response createGroup(DeviceGroup group) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response getGroup(@PathParam("groupName") String groupName) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response updateGroup(@PathParam("groupName") String groupName, DeviceGroup deviceGroup) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response deleteGroup(@PathParam("groupName") String groupName) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response shareGroupWithUser(String groupName, String targetUser) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response shareGroupWithRole(String groupName, String targetRole) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response removeShareWithUser(@PathParam("groupName") String groupName,
|
||||||
|
@QueryParam("username") String targetUser) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response removeShareWithRole(@PathParam("groupName") String groupName,
|
||||||
|
@QueryParam("roleName") String targetUser) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response getUsersOfGroup(@PathParam("groupName") String groupName) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response getDevicesOfGroup(@PathParam("groupName") String groupName, @QueryParam("offset") int offset,
|
||||||
|
@QueryParam("limit") int limit) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response addDeviceToGroup(@PathParam("groupName") String groupName, DeviceIdentifier deviceIdentifier) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response removeDeviceFromGroup(@PathParam("groupName") String groupName, @QueryParam("type") String type,
|
||||||
|
@QueryParam("id") String id) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -18,7 +18,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.wso2.carbon.device.mgt.jaxrs.service.impl.admin;
|
package org.wso2.carbon.device.mgt.jaxrs.service.impl.admin;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiParam;
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||||
@ -26,37 +25,42 @@ import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
|||||||
import org.wso2.carbon.device.mgt.jaxrs.service.api.admin.GroupManagementAdminService;
|
import org.wso2.carbon.device.mgt.jaxrs.service.api.admin.GroupManagementAdminService;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
||||||
|
|
||||||
import javax.ws.rs.*;
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.GET;
|
||||||
|
import javax.ws.rs.HeaderParam;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.Produces;
|
||||||
|
import javax.ws.rs.QueryParam;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
//@Path("/admin/groups")
|
@Path("/admin/groups")
|
||||||
//@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
//@Consumes(MediaType.APPLICATION_JSON)
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
public class GroupManagementAdminServiceImpl implements GroupManagementAdminService {
|
public class GroupManagementAdminServiceImpl implements GroupManagementAdminService {
|
||||||
//
|
|
||||||
// private static final Log log = LogFactory.getLog(GroupManagementAdminServiceImpl.class);
|
private static final Log log = LogFactory.getLog(GroupManagementAdminServiceImpl.class);
|
||||||
//
|
|
||||||
// @Override
|
@GET
|
||||||
// public Response getGroupsOfUser(
|
@Override
|
||||||
// @QueryParam("username") String username,
|
public Response getGroupsOfUser(
|
||||||
// @HeaderParam("If-Modified-Since") String timestamp,
|
@QueryParam("username") String username,
|
||||||
// @QueryParam("offset") int offset,
|
@HeaderParam("If-Modified-Since") String timestamp,
|
||||||
// @QueryParam("limit") int limit) {
|
@QueryParam("offset") int offset,
|
||||||
// try {
|
@QueryParam("limit") int limit) {
|
||||||
// PaginationResult result =
|
try {
|
||||||
// DeviceMgtAPIUtils.getGroupManagementProviderService().getGroups(username, offset, limit);
|
PaginationResult result =
|
||||||
// if (result != null && result.getRecordsTotal() > 0) {
|
DeviceMgtAPIUtils.getGroupManagementProviderService().getGroups(username, offset, limit);
|
||||||
// return Response.status(Response.Status.OK).entity(result).build();
|
if (result != null && result.getRecordsTotal() > 0) {
|
||||||
// } else {
|
return Response.status(Response.Status.OK).entity(result).build();
|
||||||
// return Response.status(Response.Status.NOT_FOUND).build();
|
} else {
|
||||||
// }
|
return Response.status(Response.Status.NOT_FOUND).build();
|
||||||
// } catch (GroupManagementException e) {
|
}
|
||||||
// String msg = "ErrorResponse occurred while retrieving the groups of user '" + username + "'";
|
} catch (GroupManagementException e) {
|
||||||
// log.error(msg, e);
|
String msg = "ErrorResponse occurred while retrieving the groups of user '" + username + "'";
|
||||||
// return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
log.error(msg, e);
|
||||||
// }
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||||
// }
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -73,7 +73,7 @@
|
|||||||
<bean id="policyManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.PolicyManagementServiceImpl"/>
|
<bean id="policyManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.PolicyManagementServiceImpl"/>
|
||||||
<bean id="roleManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.RoleManagementServiceImpl"/>
|
<bean id="roleManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.RoleManagementServiceImpl"/>
|
||||||
<bean id="userManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.UserManagementServiceImpl"/>
|
<bean id="userManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.UserManagementServiceImpl"/>
|
||||||
<!--<bean id="groupManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.GroupManagementServiceImpl"/>-->
|
<bean id="groupManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.GroupManagementServiceImpl"/>
|
||||||
<bean id="deviceManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.DeviceManagementAdminServiceImpl"/>
|
<bean id="deviceManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.DeviceManagementAdminServiceImpl"/>
|
||||||
<bean id="applicationManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.ApplicationManagementAdminServiceImpl"/>
|
<bean id="applicationManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.ApplicationManagementAdminServiceImpl"/>
|
||||||
<bean id="groupManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.GroupManagementAdminServiceImpl"/>
|
<bean id="groupManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.GroupManagementAdminServiceImpl"/>
|
||||||
|
|||||||
@ -48,10 +48,10 @@
|
|||||||
org.wso2.carbon.device.mgt.common.*
|
org.wso2.carbon.device.mgt.common.*
|
||||||
</Export-Package>
|
</Export-Package>
|
||||||
<Import-Package>
|
<Import-Package>
|
||||||
javax.xml.bind.annotation,
|
javax.xml.bind.annotation; version="${javax.xml.bind.imp.pkg.version}",
|
||||||
com.fasterxml.jackson.annotation;version="${jackson-annotations.version}",
|
com.fasterxml.jackson.annotation;version="${jackson-annotations.version}",
|
||||||
org.wso2.carbon.apimgt.api.model.*;version="${carbon.api.mgt.version.range}",
|
org.wso2.carbon.apimgt.api.model.*;version="${carbon.api.mgt.version.range}",
|
||||||
io.swagger.annotations.*;resolution:=optional
|
io.swagger.annotations; version="${swagger.annotations.version}"
|
||||||
</Import-Package>
|
</Import-Package>
|
||||||
</instructions>
|
</instructions>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|||||||
@ -46,7 +46,7 @@ public class PushNotificationBasedOperationManager implements OperationManager {
|
|||||||
Activity activity = this.operationManager.addOperation(operation, devices);
|
Activity activity = this.operationManager.addOperation(operation, devices);
|
||||||
for (DeviceIdentifier deviceId : devices) {
|
for (DeviceIdentifier deviceId : devices) {
|
||||||
try {
|
try {
|
||||||
this.notificationProvider.execute(new NotificationContext(deviceId));
|
this.notificationProvider.execute(new NotificationContext(deviceId, operation));
|
||||||
} catch (PushNotificationExecutionFailedException e) {
|
} catch (PushNotificationExecutionFailedException e) {
|
||||||
throw new OperationManagementException("Error occurred while sending push notification to device", e);
|
throw new OperationManagementException("Error occurred while sending push notification to device", e);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -104,12 +104,14 @@ deviceModule = function () {
|
|||||||
if (device["properties"] && device["properties"].length > 0) {
|
if (device["properties"] && device["properties"].length > 0) {
|
||||||
var propertiesList = device["properties"];
|
var propertiesList = device["properties"];
|
||||||
var properties = {};
|
var properties = {};
|
||||||
|
if (propertiesList) {
|
||||||
for (var i = 0; i < propertiesList.length; i++) {
|
for (var i = 0; i < propertiesList.length; i++) {
|
||||||
if (propertiesList[i]["value"]) {
|
if (propertiesList[i]["value"]) {
|
||||||
properties[propertiesList[i]["name"]] =
|
properties[propertiesList[i]["name"]] =
|
||||||
propertiesList[i]["value"];
|
propertiesList[i]["value"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
filteredDeviceData["initialDeviceInfo"] = properties;
|
filteredDeviceData["initialDeviceInfo"] = properties;
|
||||||
|
|
||||||
|
|||||||
@ -38,9 +38,9 @@ var operationModule = function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
privateMethods.getOperationsFromFeatures = function (deviceType, operationType) {
|
privateMethods.getOperationsFromFeatures = function (deviceType, operationType) {
|
||||||
var url = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] + "/features/" + deviceType;
|
var url = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] + "/device-types/" + deviceType + "/features";
|
||||||
var featuresList = serviceInvokers.XMLHttp.get(url, function (responsePayload) {
|
var featuresList = serviceInvokers.XMLHttp.get(url, function (responsePayload) {
|
||||||
var features = responsePayload;
|
var features = JSON.parse(responsePayload.responseText);
|
||||||
var featureList = [];
|
var featureList = [];
|
||||||
var feature;
|
var feature;
|
||||||
for (var i = 0; i < features.length; i++) {
|
for (var i = 0; i < features.length; i++) {
|
||||||
|
|||||||
@ -72,7 +72,7 @@ var invokers = function () {
|
|||||||
var xmlHttpRequest = new XMLHttpRequest();
|
var xmlHttpRequest = new XMLHttpRequest();
|
||||||
|
|
||||||
xmlHttpRequest.open(httpMethod, endpoint);
|
xmlHttpRequest.open(httpMethod, endpoint);
|
||||||
for(var i in headers){
|
for (var i in headers) {
|
||||||
xmlHttpRequest.setRequestHeader(headers[i].name, headers[i].value);
|
xmlHttpRequest.setRequestHeader(headers[i].name, headers[i].value);
|
||||||
}
|
}
|
||||||
xmlHttpRequest.setRequestHeader(constants["CONTENT_TYPE_IDENTIFIER"], constants["APPLICATION_JSON"]);
|
xmlHttpRequest.setRequestHeader(constants["CONTENT_TYPE_IDENTIFIER"], constants["APPLICATION_JSON"]);
|
||||||
@ -117,7 +117,8 @@ var invokers = function () {
|
|||||||
* @param endpoint Backend REST API url.
|
* @param endpoint Backend REST API url.
|
||||||
* @param responseCallback a function to be called with response retrieved.
|
* @param responseCallback a function to be called with response retrieved.
|
||||||
*/
|
*/
|
||||||
privateMethods["initiateXMLHTTPRequest"] = function (httpMethod, requestPayload, endpoint, responseCallback, headers) {
|
privateMethods["initiateXMLHTTPRequest"] =
|
||||||
|
function (httpMethod, requestPayload, endpoint, responseCallback, headers) {
|
||||||
return privateMethods.execute(httpMethod, requestPayload, endpoint, responseCallback, 0, headers);
|
return privateMethods.execute(httpMethod, requestPayload, endpoint, responseCallback, 0, headers);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -128,7 +129,8 @@ var invokers = function () {
|
|||||||
*/
|
*/
|
||||||
publicXMLHTTPInvokers["get"] = function (endpoint, responseCallback, headers) {
|
publicXMLHTTPInvokers["get"] = function (endpoint, responseCallback, headers) {
|
||||||
var requestPayload = null;
|
var requestPayload = null;
|
||||||
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_GET"], requestPayload, endpoint, responseCallback, headers);
|
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_GET"], requestPayload, endpoint, responseCallback,
|
||||||
|
headers);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -138,7 +140,8 @@ var invokers = function () {
|
|||||||
* @param responseCallback a function to be called with response retrieved.
|
* @param responseCallback a function to be called with response retrieved.
|
||||||
*/
|
*/
|
||||||
publicXMLHTTPInvokers["post"] = function (endpoint, requestPayload, responseCallback, headers) {
|
publicXMLHTTPInvokers["post"] = function (endpoint, requestPayload, responseCallback, headers) {
|
||||||
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_POST"], requestPayload, endpoint, responseCallback, headers);
|
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_POST"], requestPayload, endpoint, responseCallback,
|
||||||
|
headers);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -148,7 +151,8 @@ var invokers = function () {
|
|||||||
* @param responseCallback a function to be called with response retrieved.
|
* @param responseCallback a function to be called with response retrieved.
|
||||||
*/
|
*/
|
||||||
publicXMLHTTPInvokers["put"] = function (endpoint, requestPayload, responseCallback, headers) {
|
publicXMLHTTPInvokers["put"] = function (endpoint, requestPayload, responseCallback, headers) {
|
||||||
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_PUT"], requestPayload, endpoint, responseCallback, headers);
|
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_PUT"], requestPayload, endpoint, responseCallback,
|
||||||
|
headers);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -158,7 +162,8 @@ var invokers = function () {
|
|||||||
*/
|
*/
|
||||||
publicXMLHTTPInvokers["delete"] = function (endpoint, responseCallback, headers) {
|
publicXMLHTTPInvokers["delete"] = function (endpoint, responseCallback, headers) {
|
||||||
var requestPayload = null;
|
var requestPayload = null;
|
||||||
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_DELETE"], requestPayload, endpoint, responseCallback, headers);
|
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_DELETE"], requestPayload, endpoint,
|
||||||
|
responseCallback, headers);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -245,7 +250,8 @@ var invokers = function () {
|
|||||||
* @param errorCallback a function to be called if en error is reserved.
|
* @param errorCallback a function to be called if en error is reserved.
|
||||||
* @param headers a list of name value pairs for additional http headers.
|
* @param headers a list of name value pairs for additional http headers.
|
||||||
*/
|
*/
|
||||||
privateMethods["initiateHTTPClientRequest"] = function (method, url, successCallback, errorCallback, payload, headers) {
|
privateMethods["initiateHTTPClientRequest"] =
|
||||||
|
function (method, url, successCallback, errorCallback, payload, headers) {
|
||||||
//noinspection JSUnresolvedVariable
|
//noinspection JSUnresolvedVariable
|
||||||
var HttpClient = Packages.org.apache.commons.httpclient.HttpClient;
|
var HttpClient = Packages.org.apache.commons.httpclient.HttpClient;
|
||||||
var httpMethodObject;
|
var httpMethodObject;
|
||||||
@ -277,7 +283,7 @@ var invokers = function () {
|
|||||||
|
|
||||||
//noinspection JSUnresolvedVariable
|
//noinspection JSUnresolvedVariable
|
||||||
var Header = Packages.org.apache.commons.httpclient.Header;
|
var Header = Packages.org.apache.commons.httpclient.Header;
|
||||||
for(var i in headers){
|
for (var i in headers) {
|
||||||
var header = new Header();
|
var header = new Header();
|
||||||
header.setName(headers[i].name);
|
header.setName(headers[i].name);
|
||||||
header.setValue(headers[i].value);
|
header.setValue(headers[i].value);
|
||||||
@ -321,14 +327,18 @@ var invokers = function () {
|
|||||||
//noinspection JSUnresolvedFunction
|
//noinspection JSUnresolvedFunction
|
||||||
var status = httpMethodObject.getStatusCode();
|
var status = httpMethodObject.getStatusCode();
|
||||||
if (status == 200) {
|
if (status == 200) {
|
||||||
var responseContentDispositionHeader = httpMethodObject.getResponseHeader(constants["CONTENT_DISPOSITION_IDENTIFIER"]);
|
var responseContentDispositionHeader = httpMethodObject.getResponseHeader(
|
||||||
|
constants["CONTENT_DISPOSITION_IDENTIFIER"]);
|
||||||
if (responseContentDispositionHeader) {
|
if (responseContentDispositionHeader) {
|
||||||
return successCallback(httpMethodObject.getResponseBodyAsStream(), httpMethodObject.getResponseHeaders());
|
return successCallback(httpMethodObject.getResponseBodyAsStream(),
|
||||||
|
httpMethodObject.getResponseHeaders());
|
||||||
} else {
|
} else {
|
||||||
return successCallback(httpMethodObject.getResponseBody());
|
return successCallback(httpMethodObject.getResponseBodyAsString(),
|
||||||
|
httpMethodObject.getResponseHeaders());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return errorCallback(httpMethodObject.getResponseBody());
|
return errorCallback(httpMethodObject.getResponseBodyAsString(),
|
||||||
|
httpMethodObject.getResponseHeaders());
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return errorCallback(response);
|
return errorCallback(response);
|
||||||
@ -349,8 +359,8 @@ var invokers = function () {
|
|||||||
*/
|
*/
|
||||||
publicHTTPClientInvokers["get"] = function (url, successCallback, errorCallback, headers) {
|
publicHTTPClientInvokers["get"] = function (url, successCallback, errorCallback, headers) {
|
||||||
var requestPayload = null;
|
var requestPayload = null;
|
||||||
return privateMethods.
|
return privateMethods.initiateHTTPClientRequest(constants["HTTP_GET"], url, successCallback, errorCallback,
|
||||||
initiateHTTPClientRequest(constants["HTTP_GET"], url, successCallback, errorCallback, requestPayload, headers);
|
requestPayload, headers);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -362,8 +372,8 @@ var invokers = function () {
|
|||||||
* @param headers a list of name value pairs for additional http headers.
|
* @param headers a list of name value pairs for additional http headers.
|
||||||
*/
|
*/
|
||||||
publicHTTPClientInvokers["post"] = function (url, payload, successCallback, errorCallback, headers) {
|
publicHTTPClientInvokers["post"] = function (url, payload, successCallback, errorCallback, headers) {
|
||||||
return privateMethods.
|
return privateMethods.initiateHTTPClientRequest(constants["HTTP_POST"], url, successCallback, errorCallback,
|
||||||
initiateHTTPClientRequest(constants["HTTP_POST"], url, successCallback, errorCallback, payload, headers);
|
payload, headers);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -375,8 +385,8 @@ var invokers = function () {
|
|||||||
* @param headers a list of name value pairs for additional http headers.
|
* @param headers a list of name value pairs for additional http headers.
|
||||||
*/
|
*/
|
||||||
publicHTTPClientInvokers["put"] = function (url, payload, successCallback, errorCallback, headers) {
|
publicHTTPClientInvokers["put"] = function (url, payload, successCallback, errorCallback, headers) {
|
||||||
return privateMethods.
|
return privateMethods.initiateHTTPClientRequest(constants["HTTP_PUT"], url, successCallback, errorCallback,
|
||||||
initiateHTTPClientRequest(constants["HTTP_PUT"], url, successCallback, errorCallback, payload, headers);
|
payload, headers);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -388,8 +398,8 @@ var invokers = function () {
|
|||||||
*/
|
*/
|
||||||
publicHTTPClientInvokers["delete"] = function (url, successCallback, errorCallback, headers) {
|
publicHTTPClientInvokers["delete"] = function (url, successCallback, errorCallback, headers) {
|
||||||
var requestPayload = null;
|
var requestPayload = null;
|
||||||
return privateMethods.
|
return privateMethods.initiateHTTPClientRequest(constants["HTTP_DELETE"], url, successCallback, errorCallback,
|
||||||
initiateHTTPClientRequest(constants["HTTP_DELETE"], url, successCallback, errorCallback, requestPayload, headers);
|
requestPayload, headers);
|
||||||
};
|
};
|
||||||
|
|
||||||
var publicMethods = {};
|
var publicMethods = {};
|
||||||
|
|||||||
@ -24,6 +24,7 @@ utility = function () {
|
|||||||
var log = new Log("/app/modules/utility.js");
|
var log = new Log("/app/modules/utility.js");
|
||||||
var JavaClass = Packages.java.lang.Class;
|
var JavaClass = Packages.java.lang.Class;
|
||||||
var PrivilegedCarbonContext = Packages.org.wso2.carbon.context.PrivilegedCarbonContext;
|
var PrivilegedCarbonContext = Packages.org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
|
var server = require("carbon")["server"];
|
||||||
|
|
||||||
var getOsgiService = function (className) {
|
var getOsgiService = function (className) {
|
||||||
return PrivilegedCarbonContext.getThreadLocalCarbonContext().getOSGiService(JavaClass.forName(className));
|
return PrivilegedCarbonContext.getThreadLocalCarbonContext().getOSGiService(JavaClass.forName(className));
|
||||||
@ -71,7 +72,10 @@ utility = function () {
|
|||||||
if (deviceTypeConfigFile.isExists()) {
|
if (deviceTypeConfigFile.isExists()) {
|
||||||
try {
|
try {
|
||||||
deviceTypeConfigFile.open("r");
|
deviceTypeConfigFile.open("r");
|
||||||
deviceTypeConfig = parse(deviceTypeConfigFile.readAll());
|
var config = deviceTypeConfigFile.readAll();
|
||||||
|
config = config.replace("%https.ip%", server.address("https"));
|
||||||
|
config = config.replace("%http.ip%", server.address("http"));
|
||||||
|
deviceTypeConfig = parse(config);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log.error("Error while reading device config file for `" + deviceType + "`: " + err);
|
log.error("Error while reading device config file for `" + deviceType + "`: " + err);
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@ -138,11 +138,11 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody id="ast-container">
|
<tbody id="ast-container">
|
||||||
|
|
||||||
<br class="c-both"/>
|
<br class="c-both" />
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<br class="c-both"/>
|
<br class="c-both" />
|
||||||
<div id="content-filter-types" style="display: none">
|
<div id="content-filter-types" style="display: none">
|
||||||
<div class="sort-title">Sort By</div>
|
<div class="sort-title">Sort By</div>
|
||||||
<div class="sort-options">
|
<div class="sort-options">
|
||||||
@ -163,7 +163,7 @@
|
|||||||
registered
|
registered
|
||||||
{{/if}}
|
{{/if}}
|
||||||
at the moment.</h2>
|
at the moment.</h2>
|
||||||
<br/>
|
<br />
|
||||||
|
|
||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
{{#if groupName}}
|
{{#if groupName}}
|
||||||
@ -233,7 +233,9 @@
|
|||||||
<h3 class="pull-left modal-title">
|
<h3 class="pull-left modal-title">
|
||||||
Do you really want to remove this device from your Devices List?
|
Do you really want to remove this device from your Devices List?
|
||||||
</h3>
|
</h3>
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i
|
||||||
|
class="fw fw-cancel"></i>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||||
|
|
||||||
@ -256,7 +258,9 @@
|
|||||||
<h3 class="pull-left modal-title">
|
<h3 class="pull-left modal-title">
|
||||||
Device was successfully removed.
|
Device was successfully removed.
|
||||||
</h3>
|
</h3>
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i
|
||||||
|
class="fw fw-cancel"></i>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||||
|
|
||||||
@ -273,7 +277,9 @@
|
|||||||
<h3 class="pull-left modal-title">
|
<h3 class="pull-left modal-title">
|
||||||
Please enter new name for the device?
|
Please enter new name for the device?
|
||||||
</h3>
|
</h3>
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i
|
||||||
|
class="fw fw-cancel"></i>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||||
<input id="edit-device-name" style="color:#3f3f3f;padding:5px" type="text"
|
<input id="edit-device-name" style="color:#3f3f3f;padding:5px" type="text"
|
||||||
@ -298,7 +304,9 @@
|
|||||||
<h3 class="pull-left modal-title">
|
<h3 class="pull-left modal-title">
|
||||||
Device was successfully updated.
|
Device was successfully updated.
|
||||||
</h3>
|
</h3>
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i
|
||||||
|
class="fw fw-cancel"></i>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||||
|
|
||||||
@ -321,7 +329,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-5 col-md-6 col-centered">
|
<div class="col-lg-5 col-md-6 col-centered">
|
||||||
<h3>Exception at backend. Try Later.</h3>
|
<h3>Exception at backend. Try Later.</h3>
|
||||||
<br/>
|
<br />
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<a href="#" id="device-400-link" class="btn-operations">
|
<a href="#" id="device-400-link" class="btn-operations">
|
||||||
Ok
|
Ok
|
||||||
@ -337,7 +345,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-5 col-md-6 col-centered">
|
<div class="col-lg-5 col-md-6 col-centered">
|
||||||
<h3>Operation not permitted.</h3>
|
<h3>Operation not permitted.</h3>
|
||||||
<br/>
|
<br />
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<a href="#" id="device-403-link" class="btn-operations">
|
<a href="#" id="device-403-link" class="btn-operations">
|
||||||
Ok
|
Ok
|
||||||
@ -352,8 +360,9 @@
|
|||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-5 col-md-6 col-centered">
|
<div class="col-lg-5 col-md-6 col-centered">
|
||||||
<h3>You don't have any groups to add this device. Please add group first.</h3>
|
<h3>You don't have any groups to add this device. Please add group
|
||||||
<br/>
|
first.</h3>
|
||||||
|
<br />
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<a href="{{@app.context}}/group/add" class="btn-operations">
|
<a href="{{@app.context}}/group/add" class="btn-operations">
|
||||||
Add New Group
|
Add New Group
|
||||||
@ -373,7 +382,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-5 col-md-6 col-centered">
|
<div class="col-lg-5 col-md-6 col-centered">
|
||||||
<h3>Device does not exist.</h3>
|
<h3>Device does not exist.</h3>
|
||||||
<br/>
|
<br />
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<a href="#" id="remove-device-409-link" class="btn-operations">
|
<a href="#" id="remove-device-409-link" class="btn-operations">
|
||||||
Ok
|
Ok
|
||||||
@ -386,10 +395,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
<script id="device-listing" data-current-user="{{currentUser.username}}" data-device-types="{{deviceTypes}}"
|
<script id="device-listing" data-current-user="{{@user.username}}" data-device-types="{{deviceTypes}}"
|
||||||
type="text/x-handlebars-template"></script>
|
type="text/x-handlebars-template"></script>
|
||||||
{{js "js/listing.js"}}
|
{{js "js/listing.js"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|||||||
@ -87,20 +87,20 @@ $(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,
|
html: true,
|
||||||
content : function () {
|
content: function () {
|
||||||
return $("#content-filter-types").html();
|
return $("#content-filter-types").html();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$(".ast-container").on("click", ".claim-btn", function(e){
|
$(".ast-container").on("click", ".claim-btn", function (e) {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
var deviceId = $(this).data("deviceid");
|
var deviceId = $(this).data("deviceid");
|
||||||
var serviceURL = "/temp-controller-agent/enrollment/claim?username=" + currentUser;
|
var serviceURL = "/temp-controller-agent/enrollment/claim?username=" + currentUser;
|
||||||
var deviceIdentifier = {id: deviceId, type: "TemperatureController"};
|
var deviceIdentifier = {id: deviceId, type: "TemperatureController"};
|
||||||
invokerUtil.put(serviceURL, deviceIdentifier, function(message){
|
invokerUtil.put(serviceURL, deviceIdentifier, function (message) {
|
||||||
console.log(message);
|
console.log(message);
|
||||||
}, function(message){
|
}, function (message) {
|
||||||
console.log(message.content);
|
console.log(message.content);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -166,15 +166,15 @@ function toTitleCase(str) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadDevices(searchType, searchParam){
|
function loadDevices(searchType, searchParam) {
|
||||||
var serviceURL;
|
var serviceURL;
|
||||||
if (groupName && groupOwner && $.hasPermission("LIST_OWN_DEVICES")) {
|
if (groupName && groupOwner && $.hasPermission("LIST_OWN_DEVICES")) {
|
||||||
serviceURL = "/devicemgt_admin/groups/owner/" + groupOwner + "/name/" + groupName + "/devices";
|
serviceURL = "/api/device-mgt/v1.0/groups/owner/" + groupOwner + "/name/" + groupName + "/devices";
|
||||||
} else if ($.hasPermission("LIST_DEVICES")) {
|
} else if ($.hasPermission("LIST_DEVICES")) {
|
||||||
serviceURL = "/devicemgt_admin/devices";
|
serviceURL = "/api/device-mgt/v1.0/devices";
|
||||||
} else if ($.hasPermission("LIST_OWN_DEVICES")) {
|
} else if ($.hasPermission("LIST_OWN_DEVICES")) {
|
||||||
//Get authenticated users devices
|
//Get authenticated users devices
|
||||||
serviceURL = "/devicemgt_admin/users/devices?username=" + currentUser;
|
serviceURL = "/api/device-mgt/v1.0/users/devices?username=" + currentUser;
|
||||||
} else {
|
} else {
|
||||||
$("#loading-content").remove();
|
$("#loading-content").remove();
|
||||||
$('#device-table').addClass('hidden');
|
$('#device-table').addClass('hidden');
|
||||||
@ -197,10 +197,10 @@ function loadDevices(searchType, searchParam){
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
function getDeviceTypeLabel(type){
|
function getDeviceTypeLabel(type) {
|
||||||
var deviceTypes = deviceListing.data("deviceTypes");
|
var deviceTypes = deviceListing.data("deviceTypes");
|
||||||
for (var i = 0; i < deviceTypes.length; i++){
|
for (var i = 0; i < deviceTypes.length; i++) {
|
||||||
if (deviceTypes[i].type == type){
|
if (deviceTypes[i].type == type) {
|
||||||
return deviceTypes[i].label;
|
return deviceTypes[i].label;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -227,29 +227,21 @@ function loadDevices(searchType, searchParam){
|
|||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#device-grid').datatables_extended ({
|
var columns = [
|
||||||
serverSide: true,
|
{
|
||||||
processing: false,
|
targets: 0,
|
||||||
searching: true,
|
data: 'name',
|
||||||
ordering: false,
|
class: 'remove-padding icon-only content-fill',
|
||||||
filter: false,
|
render: function (data, type, row, meta) {
|
||||||
pageLength : 16,
|
return '<div class="thumbnail icon"><img class="square-element text fw " src="' + getDeviceTypeThumb(
|
||||||
ajax: { url : '/devicemgt/api/devices', data : {url : serviceURL},
|
row.deviceType) + '"/></div>';
|
||||||
dataSrc: function ( json ) {
|
|
||||||
$('#device-grid').removeClass('hidden');
|
|
||||||
$("#loading-content").remove();
|
|
||||||
var $list = $("#device-table :input[type='search']");
|
|
||||||
$list.each(function(){
|
|
||||||
$(this).addClass("hidden");
|
|
||||||
});
|
|
||||||
return json.data;
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
columnDefs: [
|
{
|
||||||
{ targets: 0, data: 'name', className: 'remove-padding icon-only content-fill' , render: function ( data, type, row, meta ) {
|
targets: 1,
|
||||||
return '<div class="thumbnail icon"><img class="square-element text fw " src="' + getDeviceTypeThumb(row.type) + '"/></div>';
|
data: 'name',
|
||||||
}},
|
class: 'fade-edge',
|
||||||
{ targets: 1, data: 'name', className: 'fade-edge' , render: function ( name, type, row, meta ) {
|
render: function (name, type, row, meta) {
|
||||||
var model = getPropertyValue(row.properties, 'DEVICE_MODEL');
|
var model = getPropertyValue(row.properties, 'DEVICE_MODEL');
|
||||||
var vendor = getPropertyValue(row.properties, 'VENDOR');
|
var vendor = getPropertyValue(row.properties, 'VENDOR');
|
||||||
var html = '<h4>' + name + '</h4>';
|
var html = '<h4>' + name + '</h4>';
|
||||||
@ -257,11 +249,17 @@ function loadDevices(searchType, searchParam){
|
|||||||
html += '<div>(' + vendor + '-' + model + ')</div>';
|
html += '<div>(' + vendor + '-' + model + ')</div>';
|
||||||
}
|
}
|
||||||
return html;
|
return html;
|
||||||
}},
|
}
|
||||||
{ targets: 2, data: 'enrolmentInfo.owner', className: 'fade-edge remove-padding-top'},
|
},
|
||||||
|
{targets: 2,
|
||||||
|
data: 'user',
|
||||||
|
class: 'fade-edge remove-padding-top',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
targets: 3, data: 'enrolmentInfo.status', className: 'fade-edge remove-padding-top',
|
targets: 3,
|
||||||
render: function ( status, type, row, meta ) {
|
data: 'status',
|
||||||
|
class: 'fade-edge remove-padding-top',
|
||||||
|
render: function (status, type, row, meta) {
|
||||||
var html;
|
var html;
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case 'ACTIVE' :
|
case 'ACTIVE' :
|
||||||
@ -278,72 +276,97 @@ function loadDevices(searchType, searchParam){
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return html;
|
return html;
|
||||||
}},
|
|
||||||
{
|
|
||||||
targets: 4, data: 'type', className: 'fade-edge remove-padding-top',
|
|
||||||
render: function ( status, type, row, meta ) {
|
|
||||||
return getDeviceTypeLabel(row.type);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
targets: 5, data: 'enrolmentInfo.ownership', className: 'fade-edge remove-padding-top',
|
targets: 4,
|
||||||
|
data: 'deviceType',
|
||||||
|
class: 'fade-edge remove-padding-top',
|
||||||
render: function (status, type, row, meta) {
|
render: function (status, type, row, meta) {
|
||||||
if (getDeviceTypeCategory(row.type) == 'mobile') {
|
return getDeviceTypeLabel(row.deviceType);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
targets: 5,
|
||||||
|
data: 'ownership',
|
||||||
|
class: 'fade-edge remove-padding-top',
|
||||||
|
render: function (status, type, row, meta) {
|
||||||
|
if (getDeviceTypeCategory(row.deviceType) == 'mobile') {
|
||||||
return row.enrolmentInfo.ownership;
|
return row.enrolmentInfo.ownership;
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ targets: 6, data: 'enrolmentInfo.status' , className: 'text-right content-fill text-left-on-grid-view no-wrap' ,
|
{
|
||||||
render: function ( status, type, row, meta ) {
|
targets: 6,
|
||||||
var deviceType = row.type;
|
data: 'status',
|
||||||
|
class: 'text-right content-fill text-left-on-grid-view no-wrap',
|
||||||
|
render: function (status, type, row, meta) {
|
||||||
|
var deviceType = row.deviceType;
|
||||||
var deviceIdentifier = row.deviceIdentifier;
|
var deviceIdentifier = row.deviceIdentifier;
|
||||||
var html = '<span></span>';
|
var html = '<span></span>';
|
||||||
if (status != 'REMOVED') {
|
if (status != 'REMOVED') {
|
||||||
html = '<a href="device/' + deviceType + '?id=' + deviceIdentifier + '" data-click-event="remove-form"' +
|
html =
|
||||||
' class="btn padding-reduce-on-grid-view"><span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i>' +
|
'<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>'
|
||||||
|
+
|
||||||
'<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="device/' + deviceType + '/analytics?deviceId=' + deviceIdentifier + '&deviceName=' + row.name + '" ' +
|
html += '<a href="device/' + deviceType + '/analytics?deviceId=' + deviceIdentifier + '&deviceName='
|
||||||
'data-click-event="remove-form" class="btn padding-reduce-on-grid-view"><span class="fw-stack">' +
|
+ row.name + '" ' +
|
||||||
'<i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-statistics fw-stack-1x"></i></span>' +
|
'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>';
|
'<span class="hidden-xs hidden-on-grid-view">Analytics</span>';
|
||||||
|
|
||||||
if (!groupName || !groupOwner) {
|
if (!groupName || !groupOwner) {
|
||||||
html += '<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view group-device-link" ' +
|
html +=
|
||||||
'data-deviceid="' + deviceIdentifier + '" data-devicetype="' + deviceType + '" data-devicename="' +
|
'<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view group-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>' +
|
row.name + '"><span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i>' +
|
||||||
'<i class="fw fw-grouping fw-stack-1x"></i></span>' +
|
'<i class="fw fw-grouping fw-stack-1x"></i></span>' +
|
||||||
'<span class="hidden-xs hidden-on-grid-view">Group</span></a>';
|
'<span class="hidden-xs hidden-on-grid-view">Group</span></a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
html += '<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view edit-device-link" ' +
|
html +=
|
||||||
'data-deviceid="' + deviceIdentifier + '" data-devicetype="' + deviceType + '" data-devicename="' + row.name + '">' +
|
'<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>' +
|
'<span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i>' +
|
||||||
'<i class="fw fw-edit fw-stack-1x"></i></span>' +
|
'<i class="fw fw-edit fw-stack-1x"></i></span>' +
|
||||||
'<span class="hidden-xs hidden-on-grid-view">Edit</span></a>';
|
'<span class="hidden-xs hidden-on-grid-view">Edit</span></a>';
|
||||||
html += '<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view remove-device-link" ' +
|
html +=
|
||||||
'data-deviceid="' + deviceIdentifier + '" data-devicetype="' + deviceType + '" data-devicename="' + row.name + '">' +
|
'<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view remove-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>' +
|
'<span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i>' +
|
||||||
'<i class="fw fw-delete fw-stack-1x"></i></span>' +
|
'<i class="fw fw-delete fw-stack-1x"></i></span>' +
|
||||||
'<span class="hidden-xs hidden-on-grid-view">Delete</span>';
|
'<span class="hidden-xs hidden-on-grid-view">Delete</span>';
|
||||||
}
|
}
|
||||||
return html;
|
return html;
|
||||||
}}
|
}
|
||||||
],
|
}
|
||||||
"createdRow": function( row, data, dataIndex ) {
|
];
|
||||||
|
|
||||||
|
var fnCreatedRow = function (row, data, dataIndex) {
|
||||||
$(row).attr('data-type', 'selectable');
|
$(row).attr('data-type', 'selectable');
|
||||||
$(row).attr('data-deviceid', data.deviceIdentifier);
|
$(row).attr('data-deviceid', data.deviceIdentifier);
|
||||||
$(row).attr('data-devicetype', data.type);
|
$(row).attr('data-devicetype', data.type);
|
||||||
var model = getPropertyValue(data.properties, 'DEVICE_MODEL');
|
var model = getPropertyValue(data.properties, 'DEVICE_MODEL');
|
||||||
var vendor = getPropertyValue(data.properties, 'VENDOR');
|
var vendor = getPropertyValue(data.properties, 'VENDOR');
|
||||||
var owner = data.enrolmentInfo.owner;
|
var owner = data.user;
|
||||||
var status = data.enrolmentInfo.status;
|
var status = data.status;
|
||||||
var ownership = data.enrolmentInfo.ownership;
|
var ownership = data.ownership;
|
||||||
var deviceType = data.type;
|
var deviceType = data.type;
|
||||||
var category = getDeviceTypeCategory(deviceType);
|
var category = getDeviceTypeCategory(deviceType);
|
||||||
$.each($('td', row), function (colIndex) {
|
$.each($('td', row), function (colIndex) {
|
||||||
switch(colIndex) {
|
switch (colIndex) {
|
||||||
case 1:
|
case 1:
|
||||||
$(this).attr('data-search', model + ',' + vendor);
|
$(this).attr('data-search', model + ',' + vendor);
|
||||||
$(this).attr('data-display', model);
|
$(this).attr('data-display', model);
|
||||||
@ -372,12 +395,52 @@ function loadDevices(searchType, searchParam){
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
};
|
||||||
"fnDrawCallback": function( oSettings ) {
|
|
||||||
$(".icon .text").res_text(0.2);
|
var dataFilter = function (data) {
|
||||||
attachDeviceEvents();
|
data = JSON.parse(data);
|
||||||
|
var objects = [];
|
||||||
|
|
||||||
|
$(data.devices).each(function (index) {
|
||||||
|
objects.push(
|
||||||
|
{
|
||||||
|
model: getPropertyValue(data.devices[index].properties, "DEVICE_MODEL"),
|
||||||
|
vendor: getPropertyValue(data.devices[index].properties, "VENDOR"),
|
||||||
|
user: data.devices[index].enrolmentInfo.owner,
|
||||||
|
status: data.devices[index].enrolmentInfo.status,
|
||||||
|
ownership: data.devices[index].enrolmentInfo.ownership,
|
||||||
|
deviceType: data.devices[index].type,
|
||||||
|
deviceIdentifier: data.devices[index].deviceIdentifier,
|
||||||
|
name: data.devices[index].name
|
||||||
}
|
}
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var json = {
|
||||||
|
"recordsTotal": data.count,
|
||||||
|
"recordsFiltered": data.count,
|
||||||
|
"data": objects
|
||||||
|
};
|
||||||
|
return JSON.stringify(json);
|
||||||
|
};
|
||||||
|
|
||||||
|
$('#device-grid').datatables_extended_serverside_paging(
|
||||||
|
null,
|
||||||
|
serviceURL,
|
||||||
|
dataFilter,
|
||||||
|
columns,
|
||||||
|
fnCreatedRow,
|
||||||
|
function () {
|
||||||
|
$(".icon .text").res_text(0.2);
|
||||||
|
$('#device-grid').removeClass('hidden');
|
||||||
|
$("#loading-content").remove();
|
||||||
|
attachDeviceEvents();
|
||||||
|
}, {
|
||||||
|
"placeholder": "Search By Device Name",
|
||||||
|
"searchKey": "name"
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
$(deviceCheckbox).click(function () {
|
$(deviceCheckbox).click(function () {
|
||||||
addDeviceSelectedClass(this);
|
addDeviceSelectedClass(this);
|
||||||
});
|
});
|
||||||
@ -403,7 +466,7 @@ $(document).ready(function () {
|
|||||||
|
|
||||||
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)) {
|
||||||
$.setPermission(key);
|
$.setPermission(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -412,8 +475,8 @@ $(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,
|
html: true,
|
||||||
content : function () {
|
content: function () {
|
||||||
return $("#content-filter-types").html();
|
return $("#content-filter-types").html();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -423,14 +486,14 @@ $(document).ready(function () {
|
|||||||
|
|
||||||
$("[data-toggle=popover]").popover();
|
$("[data-toggle=popover]").popover();
|
||||||
|
|
||||||
$(".ctrl-filter-type-switcher").popover ({
|
$(".ctrl-filter-type-switcher").popover({
|
||||||
html : true,
|
html: true,
|
||||||
content: function() {
|
content: function () {
|
||||||
return $('#content-filter-types').html();
|
return $('#content-filter-types').html();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#nav').affix ({
|
$('#nav').affix({
|
||||||
offset: {
|
offset: {
|
||||||
top: $('header').height()
|
top: $('header').height()
|
||||||
}
|
}
|
||||||
@ -464,7 +527,7 @@ function showPopup() {
|
|||||||
function hidePopup() {
|
function hidePopup() {
|
||||||
$(modalPopupContent).html('');
|
$(modalPopupContent).html('');
|
||||||
$(modalPopup).modal('hide');
|
$(modalPopup).modal('hide');
|
||||||
$('body').removeClass('modal-open').css('padding-right','0px');
|
$('body').removeClass('modal-open').css('padding-right', '0px');
|
||||||
$('.modal-backdrop').remove();
|
$('.modal-backdrop').remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -483,16 +546,17 @@ function attachDeviceEvents() {
|
|||||||
var deviceId = $(this).data("deviceid");
|
var deviceId = $(this).data("deviceid");
|
||||||
var deviceType = $(this).data("devicetype");
|
var deviceType = $(this).data("devicetype");
|
||||||
$(modalPopupContent).html($('#group-device-modal-content').html());
|
$(modalPopupContent).html($('#group-device-modal-content').html());
|
||||||
$('#user-groups').html('<div style="height:100px" data-state="loading" data-loading-text="Loading..." data-loading-style="icon-only" data-loading-inverse="true"></div>');
|
$('#user-groups').html(
|
||||||
|
'<div style="height:100px" data-state="loading" data-loading-text="Loading..." data-loading-style="icon-only" data-loading-inverse="true"></div>');
|
||||||
$("a#group-device-yes-link").hide();
|
$("a#group-device-yes-link").hide();
|
||||||
showPopup();
|
showPopup();
|
||||||
|
|
||||||
var serviceURL;
|
var serviceURL;
|
||||||
if ($.hasPermission("LIST_ALL_GROUPS")) {
|
if ($.hasPermission("LIST_ALL_GROUPS")) {
|
||||||
serviceURL = "/devicemgt_admin/groups/all";
|
serviceURL = "/api/device-mgt/v1.0/groups/all";
|
||||||
} else if ($.hasPermission("LIST_GROUPS")) {
|
} else if ($.hasPermission("LIST_GROUPS")) {
|
||||||
//Get authenticated users groups
|
//Get authenticated users groups
|
||||||
serviceURL = "/devicemgt_admin/groups/user/" + currentUser + "/all";
|
serviceURL = "/api/device-mgt/v1.0/groups/user/" + currentUser + "/all";
|
||||||
}
|
}
|
||||||
|
|
||||||
invokerUtil.get(serviceURL, function (data) {
|
invokerUtil.get(serviceURL, function (data) {
|
||||||
@ -507,7 +571,7 @@ function attachDeviceEvents() {
|
|||||||
$("a#group-device-yes-link").show();
|
$("a#group-device-yes-link").show();
|
||||||
$("a#group-device-yes-link").click(function () {
|
$("a#group-device-yes-link").click(function () {
|
||||||
var selectedGroup = $('#assign-group-selector').val();
|
var selectedGroup = $('#assign-group-selector').val();
|
||||||
serviceURL = "/devicemgt_admin/groups/owner/" + selectedGroup + "/devices";
|
serviceURL = "/api/device-mgt/v1.0/groups/owner/" + selectedGroup + "/devices";
|
||||||
var device = {"id": deviceId, "type": deviceType};
|
var device = {"id": deviceId, "type": deviceType};
|
||||||
invokerUtil.post(serviceURL, device, function (data) {
|
invokerUtil.post(serviceURL, device, function (data) {
|
||||||
$(modalPopupContent).html($('#group-associate-device-200-content').html());
|
$(modalPopupContent).html($('#group-associate-device-200-content').html());
|
||||||
@ -545,7 +609,7 @@ function attachDeviceEvents() {
|
|||||||
$("a.remove-device-link").click(function () {
|
$("a.remove-device-link").click(function () {
|
||||||
var deviceId = $(this).data("deviceid");
|
var deviceId = $(this).data("deviceid");
|
||||||
var deviceType = $(this).data("devicetype");
|
var deviceType = $(this).data("devicetype");
|
||||||
var serviceURL = "/devicemgt_admin/devices/type/" + deviceType + "/id/" + deviceId;
|
var serviceURL = "/api/device-mgt/v1.0/devices/type/" + deviceType + "/id/" + deviceId;
|
||||||
|
|
||||||
$(modalPopupContent).html($('#remove-device-modal-content').html());
|
$(modalPopupContent).html($('#remove-device-modal-content').html());
|
||||||
showPopup();
|
showPopup();
|
||||||
@ -576,7 +640,7 @@ function attachDeviceEvents() {
|
|||||||
var deviceId = $(this).data("deviceid");
|
var deviceId = $(this).data("deviceid");
|
||||||
var deviceType = $(this).data("devicetype");
|
var deviceType = $(this).data("devicetype");
|
||||||
var deviceName = $(this).data("devicename");
|
var deviceName = $(this).data("devicename");
|
||||||
var serviceURL = "/devicemgt_admin/devices/type/" + deviceType + "/id/" + deviceId;
|
var serviceURL = "/api/device-mgt/v1.0/devices/type/" + deviceType + "/id/" + deviceId;
|
||||||
|
|
||||||
$(modalPopupContent).html($('#edit-device-modal-content').html());
|
$(modalPopupContent).html($('#edit-device-modal-content').html());
|
||||||
$('#edit-device-name').val(deviceName);
|
$('#edit-device-name').val(deviceName);
|
||||||
|
|||||||
@ -54,7 +54,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<span id="permission" data-permission="{{permissions.list}}"></span>
|
<span id="permission" data-permission="{{permissions.list}}"></span>
|
||||||
{{#if groupCount}}
|
{{#if groupCount}}
|
||||||
<div class="container-fluid" id="group-listing" data-current-user="{{currentUser.username}}">
|
<div class="container-fluid" id="group-listing" data-current-user="{{@user.username}}">
|
||||||
<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"
|
||||||
id="group-grid">
|
id="group-grid">
|
||||||
<thead>
|
<thead>
|
||||||
|
|||||||
@ -47,24 +47,6 @@
|
|||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|
||||||
{{#zone "content"}}
|
{{#zone "content"}}
|
||||||
{{!
|
|
||||||
Copyright (c) 2016, 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.
|
|
||||||
}}
|
|
||||||
|
|
||||||
<div id="loading-content" class="col-centered">
|
<div id="loading-content" class="col-centered">
|
||||||
{{#if removePermitted}}
|
{{#if removePermitted}}
|
||||||
<input type="hidden" id="can-remove" value="true" />
|
<input type="hidden" id="can-remove" value="true" />
|
||||||
@ -87,7 +69,7 @@ under the License.
|
|||||||
<th colspan="3"></th>
|
<th colspan="3"></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="ast-container" data-app-context="{{appContext}}"></tbody>
|
<tbody id="ast-container" data-app-context="{{@app.context}}"></tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -154,7 +136,7 @@ under the License.
|
|||||||
|
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
<!--suppress HtmlUnknownTarget -->
|
<!--suppress HtmlUnknownTarget -->
|
||||||
<script id="role-listing" data-current-user="{{currentUser.username}}"
|
<script id="role-listing" data-current-user="{{@user.username}}"
|
||||||
src="{{@page.publicUri}}/templates/role-listing.hbs" type="text/x-handlebars-template"></script>
|
src="{{@page.publicUri}}/templates/role-listing.hbs" type="text/x-handlebars-template"></script>
|
||||||
{{js "js/role-listing.js"}}
|
{{js "js/role-listing.js"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
@ -31,7 +31,6 @@ function onRequest(context) {
|
|||||||
context["removePermitted"] = true;
|
context["removePermitted"] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
context["appContext"] = deviceMgtProps["appContext"];
|
|
||||||
context["adminRole"] = deviceMgtProps["adminRole"];
|
context["adminRole"] = deviceMgtProps["adminRole"];
|
||||||
|
|
||||||
return context;
|
return context;
|
||||||
|
|||||||
@ -327,7 +327,7 @@
|
|||||||
{{/zone}}
|
{{/zone}}
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
<!--suppress HtmlUnknownTarget -->
|
<!--suppress HtmlUnknownTarget -->
|
||||||
<script id="user-listing" data-current-user="{{currentUser.username}}"
|
<script id="user-listing" data-current-user="{{@user.username}}"
|
||||||
src="{{@page.publicUri}}/templates/listing.hbs" type="text/x-handlebars-template"></script>
|
src="{{@page.publicUri}}/templates/listing.hbs" type="text/x-handlebars-template"></script>
|
||||||
{{js "js/listing.js"}}
|
{{js "js/listing.js"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|||||||
@ -52,7 +52,7 @@ $.fn.datatables_extended_serverside_paging = function (settings , url, dataFilte
|
|||||||
filter: false,
|
filter: false,
|
||||||
bSortCellsTop: true,
|
bSortCellsTop: true,
|
||||||
ajax : {
|
ajax : {
|
||||||
url: "/emm/api/data-tables/invoker",
|
url: context + "/api/data-tables/invoker",
|
||||||
data : function (params) {
|
data : function (params) {
|
||||||
var i;
|
var i;
|
||||||
var searchParams = {};
|
var searchParams = {};
|
||||||
|
|||||||
@ -70,7 +70,7 @@
|
|||||||
{{css "css/listing-grid.css"}}
|
{{css "css/listing-grid.css"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
<script id="device-listing" data-current-user="{{currentUser.username}}"
|
<script id="device-listing" data-current-user="{{@user.username}}"
|
||||||
src="{{@unit.publicUri}}/templates/listing.hbs"
|
src="{{@unit.publicUri}}/templates/listing.hbs"
|
||||||
type="text/x-handlebars-template"></script>
|
type="text/x-handlebars-template"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|||||||
@ -142,7 +142,13 @@ function loadDevices(searchType, searchParam){
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$('#device-grid').addClass('hidden');
|
$('#device-grid').addClass('hidden');
|
||||||
$('#device-listing-status-msg').text('No device is available to be displayed.');
|
$('#device-listing-status-msg').html(
|
||||||
|
'<div class="col-centered text-center"><h3 class="text-muted"><i class="fw fw-mobile fw-3x"></i>' +
|
||||||
|
'</h3><h3 class="text-muted">No device type is available to be displayed.</h3>' +
|
||||||
|
'<a href="https://docs.wso2.com/display/IoTS100/Quick+Start+Guide" target="_blank" ' +
|
||||||
|
'class="btn-operations btn-default"><span class="fw-stack">' +
|
||||||
|
'<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-document fw-stack-1x"></i></span>' +
|
||||||
|
' Quick Startup Guide</a></div>');
|
||||||
}
|
}
|
||||||
|
|
||||||
$(".icon .text").res_text(0.2);
|
$(".icon .text").res_text(0.2);
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<tr data-type="selectable" data-deviceid="{{deviceTypeId}}" data-devicetype="{{deviceTypeName}}"
|
<tr data-type="selectable" data-deviceid="{{deviceTypeId}}" data-devicetype="{{deviceTypeName}}"
|
||||||
data-href="{{appContext}}/device/{{deviceTypeName}}/enroll" class="clickable-row">
|
data-href="{{@app.context}}/device/{{deviceTypeName}}/enroll" class="clickable-row">
|
||||||
<td class="remove-padding icon-only content-fill" data-search="{{deviceCategory}}" data-display="{{deviceCategory}}">
|
<td class="remove-padding icon-only content-fill" data-search="{{deviceCategory}}" data-display="{{deviceCategory}}">
|
||||||
<div class="thumbnail icon">
|
<div class="thumbnail icon">
|
||||||
<!--<i class="square-element text fw fw-mobile"></i>-->
|
<!--<i class="square-element text fw fw-mobile"></i>-->
|
||||||
@ -9,7 +9,7 @@
|
|||||||
<td class="remove-padding-top" data-search="{{deviceTypeLabel}}" data-display="{{deviceTypeLabel}}">
|
<td class="remove-padding-top" data-search="{{deviceTypeLabel}}" data-display="{{deviceTypeLabel}}">
|
||||||
{{deviceTypeLabel}}</td>
|
{{deviceTypeLabel}}</td>
|
||||||
<td class="text-right content-fill text-left-on-grid-view no-wrap">
|
<td class="text-right content-fill text-left-on-grid-view no-wrap">
|
||||||
<a href="{{appContext}}/device/{{deviceTypeName}}/enroll"
|
<a href="{{@app.context}}/device/{{deviceTypeName}}/enroll"
|
||||||
data-click-event="remove-form" class="btn col-md-12">
|
data-click-event="remove-form" class="btn col-md-12">
|
||||||
<span class="fw-stack">
|
<span class="fw-stack">
|
||||||
<i class="fw fw-ring fw-stack-2x"></i>
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
|||||||
@ -17,6 +17,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
(function () {
|
(function () {
|
||||||
|
var deviceId = $(".device-id");
|
||||||
|
var deviceIdentifier = deviceId.data("deviceid");
|
||||||
|
var deviceType = deviceId.data("type");
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
$(".panel-body").removeClass("hidden");
|
$(".panel-body").removeClass("hidden");
|
||||||
$("#loading-content").remove();
|
$("#loading-content").remove();
|
||||||
@ -25,10 +29,6 @@
|
|||||||
loadOperationsLog();
|
loadOperationsLog();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($('#policies').length) {
|
|
||||||
loadPolicies();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($('#policy_compliance').length) {
|
if ($('#policy_compliance').length) {
|
||||||
loadPolicyCompliance();
|
loadPolicyCompliance();
|
||||||
}
|
}
|
||||||
@ -47,158 +47,157 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
function loadOperationsLog(update) {
|
function loadOperationsLog(update) {
|
||||||
var operationsLog = $("#operations-log");
|
var operationsLogTable = "#operations-log-table";
|
||||||
var deviceListingSrc = operationsLog.attr("src");
|
if (update) {
|
||||||
var deviceId = operationsLog.data("device-id");
|
operationTable = $(operationsLogTable).DataTable();
|
||||||
var deviceType = operationsLog.data("device-type");
|
operationTable.ajax.reload(false);
|
||||||
|
return;
|
||||||
$.template("operations-log", deviceListingSrc, function (template) {
|
|
||||||
var serviceURL = "/devicemgt_admin/operations/" + deviceType + "/" + deviceId;
|
|
||||||
|
|
||||||
var successCallback = function (data) {
|
|
||||||
data = JSON.parse(data);
|
|
||||||
$('#operations-spinner').addClass('hidden');
|
|
||||||
var viewModel = {};
|
|
||||||
viewModel.operations = data;
|
|
||||||
if (data.length > 0) {
|
|
||||||
var content = template(viewModel);
|
|
||||||
if (!update) {
|
|
||||||
$("#operations-log-container").html(content);
|
|
||||||
$('#operations-log-table').datatables_extended();
|
|
||||||
} else {
|
|
||||||
$('#operations-log-table').dataTable().fnClearTable();
|
|
||||||
for (var i = 0; i < data.length; i++) {
|
|
||||||
var status;
|
|
||||||
if (data[i].status == "COMPLETED") {
|
|
||||||
status = "<span><i class='fw fw-ok icon-success'></i> Completed</span>";
|
|
||||||
} else if (data[i].status == "PENDING") {
|
|
||||||
status = "<span><i class='fw fw-warning icon-warning'></i> Pending</span>";
|
|
||||||
} else if (data[i].status == "ERROR") {
|
|
||||||
status = "<span><i class='fw fw-error icon-danger'></i> Error</span>";
|
|
||||||
} else if (data[i].status == "IN_PROGRESS") {
|
|
||||||
status = "<span><i class='fw fw-ok icon-warning'></i> In Progress</span>";
|
|
||||||
}
|
}
|
||||||
|
operationTable = $(operationsLogTable).datatables_extended({
|
||||||
$('#operations-log-table').dataTable().fnAddData([
|
serverSide: true,
|
||||||
data[i].code,
|
processing: false,
|
||||||
status,
|
searching: false,
|
||||||
data[i].createdTimeStamp
|
ordering: false,
|
||||||
]);
|
pageLength : 10,
|
||||||
|
order: [],
|
||||||
|
ajax: {
|
||||||
|
url: context + "/api/operation/paginate",
|
||||||
|
data: {deviceId : deviceIdentifier, deviceType: deviceType},
|
||||||
|
dataSrc: function (json) {
|
||||||
|
$("#operations-spinner").addClass("hidden");
|
||||||
|
$("#operations-log-container").empty();
|
||||||
|
return json.data;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
columnDefs: [
|
||||||
|
{targets: 0, data: "code" },
|
||||||
|
{targets: 1, data: "status", render:
|
||||||
|
function (status) {
|
||||||
|
var html;
|
||||||
|
switch (status) {
|
||||||
|
case "COMPLETED" :
|
||||||
|
html = "<span><i class='fw fw-ok icon-success'></i> Completed</span>";
|
||||||
|
break;
|
||||||
|
case "PENDING" :
|
||||||
|
html = "<span><i class='fw fw-warning icon-warning'></i> Pending</span>";
|
||||||
|
break;
|
||||||
|
case "ERROR" :
|
||||||
|
html = "<span><i class='fw fw-error icon-danger'></i> Error</span>";
|
||||||
|
break;
|
||||||
|
case "IN_PROGRESS" :
|
||||||
|
html = "<span><i class='fw fw-ok icon-warning'></i> In Progress</span>";
|
||||||
|
break;
|
||||||
|
case "REPEATED" :
|
||||||
|
html = "<span><i class='fw fw-ok icon-warning'></i> Repeated</span>";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return html;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{targets: 2, data: "createdTimeStamp", render:
|
||||||
|
function (date) {
|
||||||
|
var value = String(date);
|
||||||
|
return value.slice(0, 16);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"createdRow": function(row, data) {
|
||||||
|
$(row).attr("data-type", "selectable");
|
||||||
|
$(row).attr("data-id", data["id"]);
|
||||||
|
$.each($("td", row),
|
||||||
|
function(colIndex) {
|
||||||
|
switch(colIndex) {
|
||||||
|
case 1:
|
||||||
|
$(this).attr("data-grid-label", "Code");
|
||||||
|
$(this).attr("data-display", data["code"]);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$(this).attr("data-grid-label", "Status");
|
||||||
|
$(this).attr("data-display", data["status"]);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$(this).attr("data-grid-label", "Created Timestamp");
|
||||||
|
$(this).attr("data-display", data["createdTimeStamp"]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
|
||||||
invokerUtil.get(serviceURL,
|
|
||||||
successCallback, function (message) {
|
|
||||||
console.log(message);
|
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function loadPolicies() {
|
|
||||||
var policyList = $("#policy-list");
|
|
||||||
var policyListingSrc = policyList.attr("src");
|
|
||||||
var deviceId = policyList.data("device-id");
|
|
||||||
var deviceType = policyList.data("device-type");
|
|
||||||
|
|
||||||
$.template("policy-list", policyListingSrc, function (template) {
|
|
||||||
var serviceURL = "/devicemgt_admin/policies";
|
|
||||||
|
|
||||||
var successCallback = function (data) {
|
|
||||||
data = JSON.parse(data);
|
|
||||||
$('#policy-spinner').addClass('hidden');
|
|
||||||
var policyListFromRestEndpoint = data.responseContent;
|
|
||||||
if (policyListFromRestEndpoint.length > 0) {
|
|
||||||
var viewModel = {};
|
|
||||||
var policyListToView = [];
|
|
||||||
var i, policyObjectFromRestEndpoint, policyObjectToView;
|
|
||||||
for (i = 0; i < policyListFromRestEndpoint.length; i++) {
|
|
||||||
// get list object
|
|
||||||
policyObjectFromRestEndpoint = policyListFromRestEndpoint[i];
|
|
||||||
// populate list object values to view-object
|
|
||||||
policyObjectToView = {};
|
|
||||||
policyObjectToView["id"] = policyObjectFromRestEndpoint["id"];
|
|
||||||
policyObjectToView["priorityId"] = policyObjectFromRestEndpoint["priorityId"];
|
|
||||||
policyObjectToView["name"] = policyObjectFromRestEndpoint["policyName"];
|
|
||||||
policyObjectToView["platform"] = policyObjectFromRestEndpoint["profile"]["deviceType"]["name"];
|
|
||||||
policyObjectToView["ownershipType"] = policyObjectFromRestEndpoint["ownershipType"];
|
|
||||||
policyObjectToView["compliance"] = policyObjectFromRestEndpoint["compliance"];
|
|
||||||
|
|
||||||
if (policyObjectFromRestEndpoint["active"] == true && policyObjectFromRestEndpoint["updated"] == true) {
|
|
||||||
policyObjectToView["status"] = "Active/Updated";
|
|
||||||
} else if (policyObjectFromRestEndpoint["active"] == true && policyObjectFromRestEndpoint["updated"] == false) {
|
|
||||||
policyObjectToView["status"] = "Active";
|
|
||||||
} else if (policyObjectFromRestEndpoint["active"] == false && policyObjectFromRestEndpoint["updated"] == true) {
|
|
||||||
policyObjectToView["status"] = "Inactive/Updated";
|
|
||||||
} else if (policyObjectFromRestEndpoint["active"] == false && policyObjectFromRestEndpoint["updated"] == false) {
|
|
||||||
policyObjectToView["status"] = "Inactive";
|
|
||||||
}
|
|
||||||
// push view-objects to list
|
|
||||||
policyListToView.push(policyObjectToView);
|
|
||||||
}
|
|
||||||
viewModel.policies = policyListToView;
|
|
||||||
var content = template(viewModel);
|
|
||||||
$("#policy-list-container").html(content);
|
|
||||||
$('#policy-table').datatables_extended();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
invokerUtil.get(serviceURL,
|
|
||||||
successCallback, function (message) {
|
|
||||||
console.log(message);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadPolicyCompliance() {
|
function loadPolicyCompliance() {
|
||||||
var policyCompliance = $("#policy-view");
|
var policyCompliance = $("#policy-view");
|
||||||
var policySrc = policyCompliance.attr("src");
|
var policyComplianceTemplate = policyCompliance.attr("src");
|
||||||
var deviceId = policyCompliance.data("device-id");
|
var deviceId = policyCompliance.data("device-id");
|
||||||
var deviceType = policyCompliance.data("device-type");
|
var deviceType = policyCompliance.data("device-type");
|
||||||
var activePolicy = null;
|
var activePolicy = null;
|
||||||
|
|
||||||
$.template("policy-view", policySrc, function (template) {
|
$.template(
|
||||||
var serviceURLPolicy = "/devicemgt_admin/policies/" + deviceType + "/" + deviceId + "/active-policy"
|
"policy-view",
|
||||||
var serviceURLCompliance = "/devicemgt_admin/policies/" + deviceType + "/" + deviceId;
|
policyComplianceTemplate,
|
||||||
|
function (template) {
|
||||||
|
var getEffectivePolicyURL = "/api/device-mgt/v1.0/devices/" + deviceType + "/" + deviceId + "/effective-policy";
|
||||||
|
var getDeviceComplianceURL = "/api/device-mgt/v1.0/devices/" + deviceType + "/" + deviceId + "/compliance-data";
|
||||||
|
|
||||||
var successCallbackCompliance = function (data) {
|
invokerUtil.get(
|
||||||
|
getEffectivePolicyURL,
|
||||||
|
// success-callback
|
||||||
|
function (data, textStatus, jqXHR) {
|
||||||
|
if (jqXHR.status == 200 && data) {
|
||||||
|
data = JSON.parse(data);
|
||||||
|
$("#policy-spinner").addClass("hidden");
|
||||||
|
if (data["active"] == true) {
|
||||||
|
activePolicy = data;
|
||||||
|
invokerUtil.get(
|
||||||
|
getDeviceComplianceURL,
|
||||||
|
// success-callback
|
||||||
|
function (data, textStatus, jqXHR) {
|
||||||
|
if (jqXHR.status == 200 && data) {
|
||||||
var viewModel = {};
|
var viewModel = {};
|
||||||
viewModel.policy = activePolicy;
|
viewModel["policy"] = activePolicy;
|
||||||
viewModel.deviceType = deviceType;
|
viewModel["deviceType"] = deviceType;
|
||||||
if (data != null && data.complianceFeatures != null && data.complianceFeatures != undefined && data.complianceFeatures.length > 0) {
|
data = JSON.parse(data);
|
||||||
viewModel.compliance = "NON-COMPLIANT";
|
var content;
|
||||||
viewModel.complianceFeatures = data.complianceFeatures;
|
if (data["complianceData"]) {
|
||||||
var content = template(viewModel);
|
if (data["complianceData"]["complianceFeatures"] &&
|
||||||
|
data["complianceData"]["complianceFeatures"].length > 0) {
|
||||||
|
viewModel["compliance"] = "NON-COMPLIANT";
|
||||||
|
viewModel["complianceFeatures"] = data["complianceData"]["complianceFeatures"];
|
||||||
|
content = template(viewModel);
|
||||||
$("#policy-list-container").html(content);
|
$("#policy-list-container").html(content);
|
||||||
} else {
|
} else {
|
||||||
viewModel.compliance = "COMPLIANT";
|
viewModel["compliance"] = "COMPLIANT";
|
||||||
var content = template(viewModel);
|
content = template(viewModel);
|
||||||
$("#policy-list-container").html(content);
|
$("#policy-list-container").html(content);
|
||||||
$("#policy-compliance-table").addClass("hidden");
|
$("#policy-compliance-table").addClass("hidden");
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
};
|
$("#policy-list-container").
|
||||||
|
html("<div class='panel-body'><br><p class='fw-warning'> This device " +
|
||||||
var successCallbackPolicy = function (data) {
|
"has no policy applied.<p></div>");
|
||||||
data = JSON.parse(data);
|
|
||||||
$('#policy-spinner').addClass('hidden');
|
|
||||||
if (data != null && data.active == true) {
|
|
||||||
activePolicy = data;
|
|
||||||
invokerUtil.get(serviceURLCompliance,
|
|
||||||
successCallbackCompliance, function (message) {
|
|
||||||
console.log(message);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
},
|
||||||
invokerUtil.get(serviceURLPolicy,
|
// error-callback
|
||||||
successCallbackPolicy, function (message) {
|
function () {
|
||||||
console.log(message);
|
$("#policy-list-container").
|
||||||
});
|
html("<div class='panel-body'><br><p class='fw-warning'> Loading policy compliance related data " +
|
||||||
});
|
"was not successful. please try refreshing data in a while.<p></div>");
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// error-callback
|
||||||
|
function () {
|
||||||
|
$("#policy-list-container").
|
||||||
|
html("<div class='panel-body'><br><p class='fw-warning'> Loading policy compliance related data " +
|
||||||
|
"was not successful. please try refreshing data in a while.<p></div>");
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
}());
|
}());
|
||||||
|
|||||||
@ -23,11 +23,11 @@ function onRequest(context) {
|
|||||||
|
|
||||||
if (deviceType != null && deviceType != undefined && deviceId != null && deviceId != undefined) {
|
if (deviceType != null && deviceType != undefined && deviceId != null && deviceId != undefined) {
|
||||||
var deviceModule = require("/app/modules/business-controllers/device.js")["deviceModule"];
|
var deviceModule = require("/app/modules/business-controllers/device.js")["deviceModule"];
|
||||||
var device = deviceModule.viewDevice(deviceType, deviceId);
|
var device = deviceModule.viewDevice(deviceType, deviceId)["content"];
|
||||||
|
|
||||||
if (device) {
|
if (device) {
|
||||||
var viewModel = {};
|
var viewModel = {};
|
||||||
var deviceInfo = device.properties.DEVICE_INFO;
|
var deviceInfo = (device.properties) ? device.properties.DEVICE_INFO : null;
|
||||||
if (deviceInfo != undefined && String(deviceInfo.toString()).length > 0) {
|
if (deviceInfo != undefined && String(deviceInfo.toString()).length > 0) {
|
||||||
deviceInfo = parse(stringify(deviceInfo));
|
deviceInfo = parse(stringify(deviceInfo));
|
||||||
if (device.type == "ios") {
|
if (device.type == "ios") {
|
||||||
@ -111,7 +111,6 @@ function onRequest(context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info(device);
|
|
||||||
var utility = require("/app/modules/utility.js").utility;
|
var utility = require("/app/modules/utility.js").utility;
|
||||||
var configs = utility.getDeviceTypeConfig(deviceType);
|
var configs = utility.getDeviceTypeConfig(deviceType);
|
||||||
return {"device": device, "label" : configs["deviceType"]["label"]};
|
return {"device": device, "label" : configs["deviceType"]["label"]};
|
||||||
|
|||||||
@ -55,7 +55,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
<script id="notification-listing" data-current-user="{{currentUser.username}}"
|
<script id="notification-listing" data-current-user="{{@user.username}}"
|
||||||
data-image-resource="{{@unit.publicUri}}/images/" src="{{@unit.publicUri}}/templates/notification-listing.hbs"
|
data-image-resource="{{@unit.publicUri}}/images/" src="{{@unit.publicUri}}/templates/notification-listing.hbs"
|
||||||
type="text/x-handlebars-template"></script>
|
type="text/x-handlebars-template"></script>
|
||||||
{{js "js/notification-listing.js"}}
|
{{js "js/notification-listing.js"}}
|
||||||
|
|||||||
@ -87,7 +87,7 @@
|
|||||||
{{#zone "navbarCollapsableRightItems"}}
|
{{#zone "navbarCollapsableRightItems"}}
|
||||||
<ul id="notification-bubble-wrapper" class="nav navbar-nav navbar-right">
|
<ul id="notification-bubble-wrapper" class="nav navbar-nav navbar-right">
|
||||||
<li class="visible-inline-block">
|
<li class="visible-inline-block">
|
||||||
<!--<a href="{{appContext}}notification-listing" title="Failures of operations on the device side will be listed here">-->
|
<!--<a href="{{@app.context}}notification-listing" title="Failures of operations on the device side will be listed here">-->
|
||||||
<a data-toggle="sidebar" data-target="#right-sidebar" data-container=".page-content"
|
<a data-toggle="sidebar" data-target="#right-sidebar" data-container=".page-content"
|
||||||
aria-expanded="false" rel="notifications-sidebar">
|
aria-expanded="false" rel="notifications-sidebar">
|
||||||
<span class="icon fw-stack">
|
<span class="icon fw-stack">
|
||||||
@ -105,12 +105,12 @@
|
|||||||
data-offset-top="80">
|
data-offset-top="80">
|
||||||
<ul class="sidebar-messages">
|
<ul class="sidebar-messages">
|
||||||
</ul>
|
</ul>
|
||||||
<div class="text-center"><a href="{{appContext}}notification-listing" class="btn btn-primary">Show All Notifications</a></div>
|
<div class="text-center"><a href="{{@app.context}}/notification-listing" class="btn btn-primary">Show All Notifications</a></div>
|
||||||
</div>
|
</div>
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
<script id="notifications" data-current-user="{{currentUser.username}}"
|
<script id="notifications" data-current-user="{{@user.username}}"
|
||||||
data-image-resource="{{self.publicURL}}/images/" src="{{self.publicURL}}/templates/notifications.hbs"
|
data-image-resource="{{@unit.publicUri}}/images/" src="{{@unit.publicUri}}/templates/notifications.hbs"
|
||||||
type="text/x-handlebars-template"></script>
|
type="text/x-handlebars-template"></script>
|
||||||
{{js "js/nav-menu.js"}}
|
{{js "js/nav-menu.js"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|||||||
@ -4562,7 +4562,7 @@ a.wr-side-panel-toggle-btn.selected {
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: -900px;
|
left: -1000px;
|
||||||
z-index: 10000;
|
z-index: 10000;
|
||||||
-moz-transition: left 0.4s ease;
|
-moz-transition: left 0.4s ease;
|
||||||
transition: left 0.4s ease 0s;
|
transition: left 0.4s ease 0s;
|
||||||
|
|||||||
8
pom.xml
8
pom.xml
@ -1820,8 +1820,8 @@
|
|||||||
<carbon.api.mgt.version.range>(5.0.0,7.0.0]</carbon.api.mgt.version.range>
|
<carbon.api.mgt.version.range>(5.0.0,7.0.0]</carbon.api.mgt.version.range>
|
||||||
|
|
||||||
<!-- Carbon Analytics Commons -->
|
<!-- Carbon Analytics Commons -->
|
||||||
<carbon.analytics.common.version>5.0.11</carbon.analytics.common.version>
|
<carbon.analytics.common.version>5.1.3</carbon.analytics.common.version>
|
||||||
<carbon.analytics.common.version.range>[5.0.11,6.0.0)</carbon.analytics.common.version.range>
|
<carbon.analytics.common.version.range>[5.1.3,6.0.0)</carbon.analytics.common.version.range>
|
||||||
|
|
||||||
<!-- Carbon Registry -->
|
<!-- Carbon Registry -->
|
||||||
<carbon.registry.version>4.5.6</carbon.registry.version>
|
<carbon.registry.version>4.5.6</carbon.registry.version>
|
||||||
@ -1888,7 +1888,8 @@
|
|||||||
|
|
||||||
<!--javax ws rs version-->
|
<!--javax ws rs version-->
|
||||||
<javax.ws.rs.version>2.0.1</javax.ws.rs.version>
|
<javax.ws.rs.version>2.0.1</javax.ws.rs.version>
|
||||||
<swagger.version>1.5.8</swagger.version>
|
<swagger.version>1.5.10</swagger.version>
|
||||||
|
<swagger.annotations.version>1.5.10</swagger.annotations.version>
|
||||||
<servlet-api.version>2.5</servlet-api.version>
|
<servlet-api.version>2.5</servlet-api.version>
|
||||||
|
|
||||||
<!--JWT grant type extension feature-->
|
<!--JWT grant type extension feature-->
|
||||||
@ -1898,6 +1899,7 @@
|
|||||||
|
|
||||||
<hibernate-validator.version>5.0.2.Final</hibernate-validator.version>
|
<hibernate-validator.version>5.0.2.Final</hibernate-validator.version>
|
||||||
<javax.xml.parsers.import.pkg.version>[0.0.0,1.0.0)</javax.xml.parsers.import.pkg.version>
|
<javax.xml.parsers.import.pkg.version>[0.0.0,1.0.0)</javax.xml.parsers.import.pkg.version>
|
||||||
|
<javax.xml.bind.imp.pkg.version>[0.0.0,1.0.0)</javax.xml.bind.imp.pkg.version>
|
||||||
|
|
||||||
<!-- apache pdfbox version -->
|
<!-- apache pdfbox version -->
|
||||||
<orbit.version.pdfbox>1.8.10.wso2v2</orbit.version.pdfbox>
|
<orbit.version.pdfbox>1.8.10.wso2v2</orbit.version.pdfbox>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user