mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge branch 'application-mgt-new' into 'application-mgt-new'
Add new API endpoints See merge request entgra/carbon-device-mgt!356
This commit is contained in:
commit
0250cc1774
@ -1713,16 +1713,16 @@ public interface DeviceManagementService {
|
|||||||
@Valid OperationRequest operationRequest);
|
@Valid OperationRequest operationRequest);
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Path("/status/count/{tenantDomain}/{type}/{status}")
|
@Path("/type/{type}/status/{status}/count")
|
||||||
@ApiOperation(
|
@ApiOperation(
|
||||||
produces = MediaType.APPLICATION_JSON,
|
produces = MediaType.APPLICATION_JSON,
|
||||||
httpMethod = "GET",
|
httpMethod = "GET",
|
||||||
value = "Get Device Count with status",
|
value = "Get Device Count with status",
|
||||||
notes = "Get specified device count with status.",
|
notes = "Get specified device count with type and status.",
|
||||||
tags = "Device Management",
|
tags = "Device Management",
|
||||||
extensions = {
|
extensions = {
|
||||||
@Extension(properties = {
|
@Extension(properties = {
|
||||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:devices:details")
|
@ExtensionProperty(name = Constants.SCOPE, value = "perm:devices:view")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -1730,7 +1730,7 @@ public interface DeviceManagementService {
|
|||||||
value = {
|
value = {
|
||||||
@ApiResponse(
|
@ApiResponse(
|
||||||
code = 200,
|
code = 200,
|
||||||
message = "OK. \n Successfully fetched the details of the device.",
|
message = "OK. \n Successfully fetched the count of matching devices.",
|
||||||
response = int.class,
|
response = int.class,
|
||||||
responseHeaders = {
|
responseHeaders = {
|
||||||
@ResponseHeader(
|
@ResponseHeader(
|
||||||
@ -1764,13 +1764,6 @@ public interface DeviceManagementService {
|
|||||||
response = ErrorResponse.class)
|
response = ErrorResponse.class)
|
||||||
})
|
})
|
||||||
Response getDeviceCountByStatus(
|
Response getDeviceCountByStatus(
|
||||||
@ApiParam(
|
|
||||||
name = "tenantDomain",
|
|
||||||
value = "The tenant doamin.",
|
|
||||||
required = true)
|
|
||||||
@PathParam("tenantDomain")
|
|
||||||
@Size(max = 45)
|
|
||||||
String tenantDomain,
|
|
||||||
@ApiParam(
|
@ApiParam(
|
||||||
name = "type",
|
name = "type",
|
||||||
value = "The device type name, such as ios, android, windows or fire-alarm.",
|
value = "The device type name, such as ios, android, windows or fire-alarm.",
|
||||||
@ -1788,17 +1781,16 @@ public interface DeviceManagementService {
|
|||||||
|
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Path("/status/ids/{tenantDomain}/{type}/{status}")
|
@Path("/type/{type}/status/{status}/ids")
|
||||||
@ApiOperation(
|
@ApiOperation(
|
||||||
produces = MediaType.APPLICATION_JSON,
|
produces = MediaType.APPLICATION_JSON,
|
||||||
httpMethod = "GET",
|
httpMethod = "GET",
|
||||||
value = "Getting Details of a Device",
|
value = "Getting ids of devices with specified type and status",
|
||||||
notes = "Get the details of a device by specifying the device type and device identifier and optionally " +
|
notes = "Get the ids of a device by specifying the device type and status.",
|
||||||
"the owner.",
|
|
||||||
tags = "Device Management",
|
tags = "Device Management",
|
||||||
extensions = {
|
extensions = {
|
||||||
@Extension(properties = {
|
@Extension(properties = {
|
||||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:devices:details")
|
@ExtensionProperty(name = Constants.SCOPE, value = "perm:devices:view")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -1840,13 +1832,6 @@ public interface DeviceManagementService {
|
|||||||
response = ErrorResponse.class)
|
response = ErrorResponse.class)
|
||||||
})
|
})
|
||||||
Response getDeviceIdentifiersByStatus(
|
Response getDeviceIdentifiersByStatus(
|
||||||
@ApiParam(
|
|
||||||
name = "tenantDomain",
|
|
||||||
value = "The tenant domain.",
|
|
||||||
required = true)
|
|
||||||
@PathParam("tenantDomain")
|
|
||||||
@Size(max = 45)
|
|
||||||
String tenantDomain,
|
|
||||||
@ApiParam(
|
@ApiParam(
|
||||||
name = "type",
|
name = "type",
|
||||||
value = "The device type name, such as ios, android, windows or fire-alarm.",
|
value = "The device type name, such as ios, android, windows or fire-alarm.",
|
||||||
@ -1863,7 +1848,7 @@ public interface DeviceManagementService {
|
|||||||
String status);
|
String status);
|
||||||
|
|
||||||
@PUT
|
@PUT
|
||||||
@Path("/status/update/{tenantDomain}/{type}/{status}")
|
@Path("/type/{type}/status/{status}")
|
||||||
@ApiOperation(
|
@ApiOperation(
|
||||||
produces = MediaType.APPLICATION_JSON,
|
produces = MediaType.APPLICATION_JSON,
|
||||||
consumes = MediaType.APPLICATION_JSON,
|
consumes = MediaType.APPLICATION_JSON,
|
||||||
@ -1915,8 +1900,6 @@ public interface DeviceManagementService {
|
|||||||
response = ErrorResponse.class)
|
response = ErrorResponse.class)
|
||||||
})
|
})
|
||||||
Response bulkUpdateDeviceStatus(
|
Response bulkUpdateDeviceStatus(
|
||||||
@ApiParam(name = "tenantDomain", value = "The tenant domain.", required = true)
|
|
||||||
@PathParam("tenantDomain") String tenantDomain,
|
|
||||||
@ApiParam(name = "type", value = "The device type, such as ios, android or windows.", required = true)
|
@ApiParam(name = "type", value = "The device type, such as ios, android or windows.", required = true)
|
||||||
@PathParam("type") String type,
|
@PathParam("type") String type,
|
||||||
@ApiParam(name = "status", value = "The device type, such as ios, android or windows.", required = true)
|
@ApiParam(name = "status", value = "The device type, such as ios, android or windows.", required = true)
|
||||||
|
|||||||
@ -45,9 +45,11 @@ import io.swagger.annotations.ApiParam;
|
|||||||
import io.swagger.annotations.ApiResponse;
|
import io.swagger.annotations.ApiResponse;
|
||||||
import io.swagger.annotations.ApiResponses;
|
import io.swagger.annotations.ApiResponses;
|
||||||
import io.swagger.annotations.ResponseHeader;
|
import io.swagger.annotations.ResponseHeader;
|
||||||
|
import org.apache.axis2.transport.http.HTTPConstants;
|
||||||
import org.wso2.carbon.apimgt.annotations.api.Scope;
|
import org.wso2.carbon.apimgt.annotations.api.Scope;
|
||||||
import org.wso2.carbon.apimgt.annotations.api.Scopes;
|
import org.wso2.carbon.apimgt.annotations.api.Scopes;
|
||||||
import org.wso2.carbon.device.mgt.common.Device;
|
import org.wso2.carbon.device.mgt.common.Device;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceGroupList;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceList;
|
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceList;
|
||||||
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.util.Constants;
|
import org.wso2.carbon.device.mgt.jaxrs.util.Constants;
|
||||||
@ -198,6 +200,59 @@ public interface DeviceManagementAdminService {
|
|||||||
defaultValue = "5")
|
defaultValue = "5")
|
||||||
@QueryParam("limit") int limit);
|
@QueryParam("limit") int limit);
|
||||||
|
|
||||||
|
@Path("/count")
|
||||||
|
@GET
|
||||||
|
@ApiOperation(
|
||||||
|
produces = MediaType.APPLICATION_JSON,
|
||||||
|
httpMethod = HTTPConstants.HEADER_GET,
|
||||||
|
value = "Get the count of devices.",
|
||||||
|
notes = "Returns count of all devices enrolled with the system.",
|
||||||
|
tags = "Device Management Administrative Service",
|
||||||
|
extensions = {
|
||||||
|
@Extension(properties = {
|
||||||
|
@ExtensionProperty(name = Constants.SCOPE, value = "perm:admin:devices:view")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@ApiResponses(value = {
|
||||||
|
@ApiResponse(code = 200, message = "OK. \n Successfully fetched the device count.",
|
||||||
|
response = Integer.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 = 404,
|
||||||
|
message = "No groups found.",
|
||||||
|
response = ErrorResponse.class),
|
||||||
|
@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 device count.",
|
||||||
|
response = ErrorResponse.class)
|
||||||
|
})
|
||||||
|
Response getDeviceCount(@ApiParam(
|
||||||
|
name = "status",
|
||||||
|
value = "status of group of which count should be retrieved")
|
||||||
|
@QueryParam("status")
|
||||||
|
String status);
|
||||||
|
|
||||||
|
|
||||||
@PUT
|
@PUT
|
||||||
@Path("/device-owner")
|
@Path("/device-owner")
|
||||||
@ApiOperation(
|
@ApiOperation(
|
||||||
|
|||||||
@ -33,10 +33,12 @@ import io.swagger.annotations.ResponseHeader;
|
|||||||
import org.apache.axis2.transport.http.HTTPConstants;
|
import org.apache.axis2.transport.http.HTTPConstants;
|
||||||
import org.wso2.carbon.apimgt.annotations.api.Scope;
|
import org.wso2.carbon.apimgt.annotations.api.Scope;
|
||||||
import org.wso2.carbon.apimgt.annotations.api.Scopes;
|
import org.wso2.carbon.apimgt.annotations.api.Scopes;
|
||||||
|
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceGroupList;
|
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceGroupList;
|
||||||
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.util.Constants;
|
import org.wso2.carbon.device.mgt.jaxrs.util.Constants;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
import javax.ws.rs.*;
|
import javax.ws.rs.*;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
@ -75,6 +77,12 @@ import javax.ws.rs.core.Response;
|
|||||||
description = "",
|
description = "",
|
||||||
key = "perm:admin-groups:count",
|
key = "perm:admin-groups:count",
|
||||||
permissions = {"/device-mgt/admin/groups/view"}
|
permissions = {"/device-mgt/admin/groups/view"}
|
||||||
|
),
|
||||||
|
@Scope(
|
||||||
|
name = "Add groups",
|
||||||
|
description = "",
|
||||||
|
key = "perm:admin-groups:add",
|
||||||
|
permissions = {"/device-mgt/admin/groups/add"}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -166,7 +174,7 @@ public interface GroupManagementAdminService {
|
|||||||
)
|
)
|
||||||
@ApiResponses(value = {
|
@ApiResponses(value = {
|
||||||
@ApiResponse(code = 200, message = "OK. \n Successfully fetched the device group count.",
|
@ApiResponse(code = 200, message = "OK. \n Successfully fetched the device group count.",
|
||||||
response = DeviceGroupList.class,
|
response = Integer.class,
|
||||||
responseHeaders = {
|
responseHeaders = {
|
||||||
@ResponseHeader(
|
@ResponseHeader(
|
||||||
name = "Content-Type",
|
name = "Content-Type",
|
||||||
@ -202,4 +210,71 @@ public interface GroupManagementAdminService {
|
|||||||
@QueryParam("status")
|
@QueryParam("status")
|
||||||
String status);
|
String status);
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@ApiOperation(
|
||||||
|
consumes = MediaType.APPLICATION_JSON,
|
||||||
|
httpMethod = HTTPConstants.HEADER_POST,
|
||||||
|
value = "Adding a New Device Group",
|
||||||
|
notes = "Add device group with the current user as the owner.",
|
||||||
|
tags = "Device Group Management",
|
||||||
|
extensions = {
|
||||||
|
@Extension(properties = {
|
||||||
|
@ExtensionProperty(name = Constants.SCOPE, value = "perm:admin-groups:add")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@ApiResponses(
|
||||||
|
value = {
|
||||||
|
@ApiResponse(
|
||||||
|
code = 201,
|
||||||
|
message = "Created. \n Device group has successfully been created",
|
||||||
|
responseHeaders = {
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "Content-Location",
|
||||||
|
description = "The URL of the added group."),
|
||||||
|
@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 = 303,
|
||||||
|
message = "See Other. \n Source can be retrieved from the URL specified at the Location " +
|
||||||
|
"header.",
|
||||||
|
responseHeaders = {
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "Content-Location",
|
||||||
|
description = "The Source URL of the document.")}),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 400,
|
||||||
|
message = "Bad Request. \n Invalid request or validation error.",
|
||||||
|
response = ErrorResponse.class),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 401,
|
||||||
|
message = "Unauthorized. \n Current logged in user is not authorized to add device groups.",
|
||||||
|
response = ErrorResponse.class),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 415,
|
||||||
|
message = "Unsupported media type. \n The entity of the request was in a not supported " +
|
||||||
|
"format."),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 500,
|
||||||
|
message = "Internal Server Error. \n " +
|
||||||
|
"Server error occurred while adding a new device group.",
|
||||||
|
response = ErrorResponse.class)
|
||||||
|
})
|
||||||
|
Response createGroup(@ApiParam(
|
||||||
|
name = "group",
|
||||||
|
value = "Define the group object with data.",
|
||||||
|
required = true)
|
||||||
|
@Valid DeviceGroup group);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -973,66 +973,48 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
|||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Override
|
@Override
|
||||||
@Path("/status/count/{tenantDomain}/{type}/{status}")
|
@Path("/type/{type}/status/{status}/count")
|
||||||
public Response getDeviceCountByStatus(@PathParam("tenantDomain") String tenantDomain, @PathParam("type") String type, @PathParam("status") String status) {
|
public Response getDeviceCountByStatus(@PathParam("type") String type, @PathParam("status") String status) {
|
||||||
int deviceCount;
|
int deviceCount;
|
||||||
try {
|
try {
|
||||||
int tenantId = DeviceMgtAPIUtils.getRealmService().getTenantManager().getTenantId(tenantDomain);
|
deviceCount = DeviceMgtAPIUtils.getDeviceManagementService().getDeviceCountOfTypeByStatus(type, status);
|
||||||
deviceCount = DeviceMgtAPIUtils.getDeviceManagementService().getDeviceCountOfTypeByStatus(tenantId, type, status);
|
|
||||||
return Response.status(Response.Status.OK).entity(deviceCount).build();
|
return Response.status(Response.Status.OK).entity(deviceCount).build();
|
||||||
} catch (DeviceManagementException e) {
|
} catch (DeviceManagementException e) {
|
||||||
String errorMessage = "Error while retrieving device count.";
|
String errorMessage = "Error while retrieving device count.";
|
||||||
log.error(errorMessage, e);
|
log.error(errorMessage, e);
|
||||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
||||||
new ErrorResponse.ErrorResponseBuilder().setMessage(errorMessage).build()).build();
|
new ErrorResponse.ErrorResponseBuilder().setMessage(errorMessage).build()).build();
|
||||||
} catch (UserStoreException e) {
|
|
||||||
String errorMessage = "Error resolving tenant Domain";
|
|
||||||
log.error(errorMessage, e);
|
|
||||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
|
||||||
new ErrorResponse.ErrorResponseBuilder().setMessage(errorMessage).build()).build();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Override
|
@Override
|
||||||
@Path("/status/ids/{tenantDomain}/{type}/{status}")
|
@Path("/type/{type}/status/{status}/ids")
|
||||||
public Response getDeviceIdentifiersByStatus(@PathParam("tenantDomain") String tenantDomain, @PathParam("type") String type, @PathParam("status") String status) {
|
public Response getDeviceIdentifiersByStatus(@PathParam("type") String type, @PathParam("status") String status) {
|
||||||
List<String> deviceIds;
|
List<String> deviceIds;
|
||||||
try {
|
try {
|
||||||
int tenantId = DeviceMgtAPIUtils.getRealmService().getTenantManager().getTenantId(tenantDomain);
|
deviceIds = DeviceMgtAPIUtils.getDeviceManagementService().getDeviceIdentifiersByStatus(type, status);
|
||||||
deviceIds = DeviceMgtAPIUtils.getDeviceManagementService().getDeviceIdentifiersByStatus(tenantId, type, status);
|
|
||||||
return Response.status(Response.Status.OK).entity(deviceIds.toArray(new String[0])).build();
|
return Response.status(Response.Status.OK).entity(deviceIds.toArray(new String[0])).build();
|
||||||
} catch (DeviceManagementException e) {
|
} catch (DeviceManagementException e) {
|
||||||
String errorMessage = "Error while obtaining list of devices";
|
String errorMessage = "Error while obtaining list of devices";
|
||||||
log.error(errorMessage, e);
|
log.error(errorMessage, e);
|
||||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
||||||
new ErrorResponse.ErrorResponseBuilder().setMessage(errorMessage).build()).build();
|
new ErrorResponse.ErrorResponseBuilder().setMessage(errorMessage).build()).build();
|
||||||
} catch (UserStoreException e) {
|
|
||||||
String errorMessage = "Error resolving tenant Domain";
|
|
||||||
log.error(errorMessage, e);
|
|
||||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
|
||||||
new ErrorResponse.ErrorResponseBuilder().setMessage(errorMessage).build()).build();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@PUT
|
@PUT
|
||||||
@Override
|
@Override
|
||||||
@Path("/status/update/{tenantDomain}/{type}/{status}")
|
@Path("/type/{type}/status/{status}")
|
||||||
public Response bulkUpdateDeviceStatus(@PathParam("tenantDomain") String tenantDomain, @PathParam("type") String type,
|
public Response bulkUpdateDeviceStatus(@PathParam("type") String type, @PathParam("status") String status,
|
||||||
@PathParam("status") String status, @Valid List<String> deviceList) {
|
@Valid List<String> deviceList) {
|
||||||
try {
|
try {
|
||||||
int tenantId = DeviceMgtAPIUtils.getRealmService().getTenantManager().getTenantId(tenantDomain);
|
DeviceMgtAPIUtils.getDeviceManagementService().bulkUpdateDeviceStatus(type, deviceList, status);
|
||||||
DeviceMgtAPIUtils.getDeviceManagementService().bulkUpdateDeviceStatus(tenantId, type, deviceList, status);
|
|
||||||
} catch (DeviceManagementException e) {
|
} catch (DeviceManagementException e) {
|
||||||
String errorMessage = "Error while updating device status in bulk.";
|
String errorMessage = "Error while updating device status in bulk.";
|
||||||
log.error(errorMessage, e);
|
log.error(errorMessage, e);
|
||||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
||||||
new ErrorResponse.ErrorResponseBuilder().setMessage(errorMessage).build()).build();
|
new ErrorResponse.ErrorResponseBuilder().setMessage(errorMessage).build()).build();
|
||||||
} catch (UserStoreException e) {
|
|
||||||
String errorMessage = "Error resolving tenant Domain";
|
|
||||||
log.error(errorMessage, e);
|
|
||||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
|
||||||
new ErrorResponse.ErrorResponseBuilder().setMessage(errorMessage).build()).build();
|
|
||||||
}
|
}
|
||||||
return Response.status(Response.Status.OK).build();
|
return Response.status(Response.Status.OK).build();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,10 +40,10 @@ import org.wso2.carbon.base.MultitenantConstants;
|
|||||||
import org.wso2.carbon.context.CarbonContext;
|
import org.wso2.carbon.context.CarbonContext;
|
||||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
import org.wso2.carbon.device.mgt.common.Device;
|
import org.wso2.carbon.device.mgt.common.Device;
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
import org.wso2.carbon.device.mgt.common.EnrolmentInfo;
|
||||||
|
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||||
import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException;
|
import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException;
|
||||||
import org.wso2.carbon.device.mgt.common.exceptions.InvalidDeviceException;
|
import org.wso2.carbon.device.mgt.common.exceptions.InvalidDeviceException;
|
||||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
|
||||||
import org.wso2.carbon.device.mgt.common.exceptions.UserNotFoundException;
|
import org.wso2.carbon.device.mgt.common.exceptions.UserNotFoundException;
|
||||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceList;
|
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceList;
|
||||||
@ -53,7 +53,13 @@ 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.validation.constraints.Size;
|
||||||
import javax.ws.rs.*;
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.GET;
|
||||||
|
import javax.ws.rs.HeaderParam;
|
||||||
|
import javax.ws.rs.PUT;
|
||||||
|
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.List;
|
import java.util.List;
|
||||||
@ -107,6 +113,26 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Path("/count")
|
||||||
|
@GET
|
||||||
|
public Response getDeviceCount(@QueryParam("status") String status) {
|
||||||
|
int deviceCount;
|
||||||
|
try {
|
||||||
|
if (status == null) {
|
||||||
|
deviceCount = DeviceMgtAPIUtils.getDeviceManagementService().getDeviceCount();
|
||||||
|
} else {
|
||||||
|
deviceCount = DeviceMgtAPIUtils.getDeviceManagementService().getDeviceCount(EnrolmentInfo.Status.valueOf(status));
|
||||||
|
}
|
||||||
|
} catch (DeviceManagementException e) {
|
||||||
|
String msg = "Error occurred while fetching device count.";
|
||||||
|
log.error(msg, e);
|
||||||
|
return Response.serverError().entity(
|
||||||
|
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
|
||||||
|
}
|
||||||
|
return Response.status(Response.Status.OK).entity(deviceCount).build();
|
||||||
|
}
|
||||||
|
|
||||||
@PUT
|
@PUT
|
||||||
@Override
|
@Override
|
||||||
@Path("/device-owner")
|
@Path("/device-owner")
|
||||||
|
|||||||
@ -20,9 +20,11 @@ package org.wso2.carbon.device.mgt.jaxrs.service.impl.admin;
|
|||||||
|
|
||||||
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.apache.solr.common.StringUtils;
|
|
||||||
import org.wso2.carbon.device.mgt.common.GroupPaginationRequest;
|
import org.wso2.carbon.device.mgt.common.GroupPaginationRequest;
|
||||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||||
|
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||||
|
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroupConstants;
|
||||||
|
import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyExistException;
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceGroupList;
|
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceGroupList;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.service.api.admin.GroupManagementAdminService;
|
import org.wso2.carbon.device.mgt.jaxrs.service.api.admin.GroupManagementAdminService;
|
||||||
@ -36,6 +38,10 @@ public class GroupManagementAdminServiceImpl implements GroupManagementAdminServ
|
|||||||
|
|
||||||
private static final Log log = LogFactory.getLog(GroupManagementAdminServiceImpl.class);
|
private static final Log log = LogFactory.getLog(GroupManagementAdminServiceImpl.class);
|
||||||
|
|
||||||
|
private static final String DEFAULT_ADMIN_ROLE = "admin";
|
||||||
|
private static final String[] DEFAULT_ADMIN_PERMISSIONS = {"/permission/device-mgt/admin/groups",
|
||||||
|
"/permission/device-mgt/user/groups"};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response getGroups(String name, String owner, int offset, int limit, String status) {
|
public Response getGroups(String name, String owner, int offset, int limit, String status) {
|
||||||
try {
|
try {
|
||||||
@ -84,4 +90,24 @@ public class GroupManagementAdminServiceImpl implements GroupManagementAdminServ
|
|||||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response createGroup(DeviceGroup group) {
|
||||||
|
if (group == null) {
|
||||||
|
return Response.status(Response.Status.BAD_REQUEST).build();
|
||||||
|
}
|
||||||
|
group.setStatus(DeviceGroupConstants.GroupStatus.ACTIVE);
|
||||||
|
try {
|
||||||
|
DeviceMgtAPIUtils.getGroupManagementProviderService().createGroup(group, DEFAULT_ADMIN_ROLE, DEFAULT_ADMIN_PERMISSIONS);
|
||||||
|
return Response.status(Response.Status.CREATED).build();
|
||||||
|
} catch (GroupManagementException e) {
|
||||||
|
String msg = "Error occurred while adding new group.";
|
||||||
|
log.error(msg, e);
|
||||||
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||||
|
} catch (GroupAlreadyExistException e) {
|
||||||
|
String msg = "Group already exists with name " + group.getName() + ".";
|
||||||
|
log.warn(msg);
|
||||||
|
return Response.status(Response.Status.CONFLICT).entity(msg).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -752,11 +752,11 @@ public interface DeviceManagementProviderService {
|
|||||||
List<GeoCluster> findGeoClusters(String deviceType, GeoCoordinate southWest, GeoCoordinate northEast,
|
List<GeoCluster> findGeoClusters(String deviceType, GeoCoordinate southWest, GeoCoordinate northEast,
|
||||||
int geohashLength) throws DeviceManagementException;
|
int geohashLength) throws DeviceManagementException;
|
||||||
|
|
||||||
int getDeviceCountOfTypeByStatus(int tenantId, String deviceType, String deviceStatus) throws DeviceManagementException;
|
int getDeviceCountOfTypeByStatus(String deviceType, String deviceStatus) throws DeviceManagementException;
|
||||||
|
|
||||||
List<String> getDeviceIdentifiersByStatus(int tenantId, String deviceType, String deviceStatus) throws DeviceManagementException;
|
List<String> getDeviceIdentifiersByStatus(String deviceType, String deviceStatus) throws DeviceManagementException;
|
||||||
|
|
||||||
boolean bulkUpdateDeviceStatus(int tenantId, String deviceType, List<String> deviceList, String status) throws DeviceManagementException;
|
boolean bulkUpdateDeviceStatus(String deviceType, List<String> deviceList, String status) throws DeviceManagementException;
|
||||||
|
|
||||||
boolean updateEnrollment(String owner, List<String> deviceIdentifiers)
|
boolean updateEnrollment(String owner, List<String> deviceIdentifiers)
|
||||||
throws DeviceManagementException, UserNotFoundException, InvalidDeviceException;
|
throws DeviceManagementException, UserNotFoundException, InvalidDeviceException;
|
||||||
|
|||||||
@ -3125,10 +3125,10 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getDeviceCountOfTypeByStatus(int tenantId, String deviceType, String deviceStatus) throws DeviceManagementException {
|
public int getDeviceCountOfTypeByStatus(String deviceType, String deviceStatus) throws DeviceManagementException {
|
||||||
try {
|
try {
|
||||||
DeviceManagementDAOFactory.openConnection();
|
DeviceManagementDAOFactory.openConnection();
|
||||||
return deviceDAO.getDeviceCount(deviceType, deviceStatus, tenantId);
|
return deviceDAO.getDeviceCount(deviceType, deviceStatus, getTenantId());
|
||||||
} catch (DeviceManagementDAOException e) {
|
} catch (DeviceManagementDAOException e) {
|
||||||
String msg = "Error occurred in while retrieving device count by status for deviceType :" +deviceType + " status : " + deviceStatus;
|
String msg = "Error occurred in while retrieving device count by status for deviceType :" +deviceType + " status : " + deviceStatus;
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
@ -3143,11 +3143,11 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getDeviceIdentifiersByStatus(int tenantId, String deviceType, String deviceStatus) throws DeviceManagementException {
|
public List<String> getDeviceIdentifiersByStatus(String deviceType, String deviceStatus) throws DeviceManagementException {
|
||||||
List<String> deviceIds;
|
List<String> deviceIds;
|
||||||
try {
|
try {
|
||||||
DeviceManagementDAOFactory.openConnection();
|
DeviceManagementDAOFactory.openConnection();
|
||||||
deviceIds = deviceDAO.getDeviceIdentifiers(deviceType, deviceStatus, tenantId);
|
deviceIds = deviceDAO.getDeviceIdentifiers(deviceType, deviceStatus, getTenantId());
|
||||||
} catch (DeviceManagementDAOException e) {
|
} catch (DeviceManagementDAOException e) {
|
||||||
String msg = "Error occurred in while retrieving devices by status for deviceType :" +deviceType + " status : " + deviceStatus;
|
String msg = "Error occurred in while retrieving devices by status for deviceType :" +deviceType + " status : " + deviceStatus;
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
@ -3163,20 +3163,19 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean bulkUpdateDeviceStatus(int tenantId, String deviceType,
|
public boolean bulkUpdateDeviceStatus(String deviceType, List<String> deviceList, String status)
|
||||||
List<String> deviceList, String status)
|
|
||||||
throws DeviceManagementException {
|
throws DeviceManagementException {
|
||||||
boolean success;
|
boolean success;
|
||||||
try {
|
try {
|
||||||
DeviceManagementDAOFactory.openConnection();
|
DeviceManagementDAOFactory.beginTransaction();
|
||||||
success = deviceDAO.setEnrolmentStatusInBulk(deviceType, status, tenantId, deviceList);
|
success = deviceDAO.setEnrolmentStatusInBulk(deviceType, status, getTenantId(), deviceList);
|
||||||
DeviceManagementDAOFactory.commitTransaction();
|
DeviceManagementDAOFactory.commitTransaction();
|
||||||
} catch (DeviceManagementDAOException e) {
|
} catch (DeviceManagementDAOException e) {
|
||||||
String msg = "Error occurred in while updating status of devices :" + deviceType + " status : " + deviceList
|
DeviceManagementDAOFactory.rollbackTransaction();
|
||||||
.toString();
|
String msg = "Error occurred in while updating status of devices :" + deviceType + " status : " + status;
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
throw new DeviceManagementException(msg, e);
|
throw new DeviceManagementException(msg, e);
|
||||||
} catch (SQLException e) {
|
} catch (TransactionManagementException e) {
|
||||||
String msg = "Error occurred while opening a connection to the data source";
|
String msg = "Error occurred while opening a connection to the data source";
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
throw new DeviceManagementException(msg, e);
|
throw new DeviceManagementException(msg, e);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user