Fixing merge conflicts

revert-70aa11f8
prabathabey 9 years ago
commit d32cd96a74

@ -33,7 +33,7 @@
<Permission> <Permission>
<name>get certificate in the database</name> <name>get certificate in the database</name>
<path>/device-mgt/emm-admin/certificate/GetSignCSR</path> <path>/device-mgt/emm-admin/certificate/GetSignCSR</path>
<url>/certificates/signcsr</url> <url>/certificates/scep/signcsr</url>
<method>POST</method> <method>POST</method>
<scope>emm_admin</scope> <scope>emm_admin</scope>
</Permission> </Permission>

@ -29,38 +29,30 @@
--> -->
<PermissionConfiguration> <PermissionConfiguration>
<APIVersion></APIVersion> <APIVersion></APIVersion>
<!-- Device related APIs -->
<Permission>
<name>get certificate in the database</name>
<path>/device-mgt/emm-admin/certificate/GetSignCSR</path>
<url>/certificates/sign-csr</url>
<method>POST</method>
<scope>emm_admin</scope>
</Permission>
<!-- CertificateManagementAdminService related APIs --> <!-- CertificateManagementAdminService related APIs -->
<Permission> <Permission>
<name>Save certificate</name> <name>Save certificate</name>
<path>/device-mgt/admin/certificate/Save</path> <path>/device-mgt/admin/certificate/Save</path>
<url>/certificates</url> <url>/admin/certificates</url>
<method>POST</method> <method>POST</method>
</Permission> </Permission>
<Permission> <Permission>
<name>Get certificate</name> <name>Get certificate</name>
<path>/device-mgt/admin/certificate/Get</path> <path>/device-mgt/admin/certificate/Get</path>
<url>/certificates/*</url> <url>/admin/certificates/*</url>
<method>GET</method> <method>GET</method>
</Permission> </Permission>
<Permission> <Permission>
<name>Get all certificates</name> <name>Get all certificates</name>
<path>/device-mgt/admin/certificate/GetAll</path> <path>/device-mgt/admin/certificate/GetAll</path>
<url>/certificates</url> <url>/admin/certificates</url>
<method>GET</method> <method>GET</method>
</Permission> </Permission>
<Permission> <Permission>
<name>Remove certificate</name> <name>Remove certificate</name>
<path>/device-mgt/admin/certificate/Remove</path> <path>/device-mgt/admin/certificate/Remove</path>
<url>/certificates/*</url> <url>/admin/certificates/*</url>
<method>DELETE</method> <method>DELETE</method>
</Permission> </Permission>
<!-- End of CertificateManagementAdminService related APIs --> <!-- End of CertificateManagementAdminService related APIs -->

@ -0,0 +1,55 @@
/*
* 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.
*
*/
package org.wso2.carbon.device.mgt.jaxrs.beans;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.wso2.carbon.policy.mgt.common.Policy;
import java.util.List;
@ApiModel(value = "Policy List")
public class PolicyList extends BasePaginatedResult {
private List<Policy> policies;
@ApiModelProperty(value = "List of policies returned")
@JsonProperty("policies")
public List<Policy> getList() {
return policies;
}
public void setList(List<Policy> policies) {
this.policies = policies;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("{\n");
sb.append(" count: ").append(getCount()).append(",\n");
sb.append(" next: ").append(getNext()).append(",\n");
sb.append(" previous: ").append(getPrevious()).append(",\n");
sb.append(" roles: [").append(policies).append("\n");
sb.append("]}\n");
return sb.toString();
}
}

@ -43,7 +43,6 @@ public class RoleList extends BasePaginatedResult {
public String toString() { public String toString() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("{\n"); sb.append("{\n");
sb.append(" count: ").append(getCount()).append(",\n"); sb.append(" count: ").append(getCount()).append(",\n");
sb.append(" next: ").append(getNext()).append(",\n"); sb.append(" next: ").append(getNext()).append(",\n");
sb.append(" previous: ").append(getPrevious()).append(",\n"); sb.append(" previous: ").append(getPrevious()).append(",\n");

@ -254,15 +254,15 @@ public interface DeviceManagementService {
}) })
@Permission(scope = "device-info", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) @Permission(scope = "device-info", permissions = {"/permission/admin/device-mgt/admin/devices/list"})
Response getDevicesInfo( Response getDevicesInfo(
@ApiParam(
name = "deviceIds",
value = "List of device identifiers",
required = true) List<DeviceIdentifier> deviceIds,
@ApiParam( @ApiParam(
name = "If-Modified-Since", name = "If-Modified-Since",
value = "Timestamp of the last modified date", value = "Timestamp of the last modified date",
required = false) required = false)
@HeaderParam("If-Modified-Since") String timestamp); @HeaderParam("If-Modified-Since") String timestamp,
@ApiParam(
name = "deviceIds",
value = "List of device identifiers",
required = true) List<DeviceIdentifier> deviceIds);
@GET @GET

@ -137,10 +137,11 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
} }
@POST @POST
@Path("/get-info")
@Override @Override
public Response getDevicesInfo( public Response getDevicesInfo(
List<DeviceIdentifier> deviceIds, @HeaderParam("If-Modified-Since") String timestamp,
@HeaderParam("If-Modified-Since") String timestamp) { List<DeviceIdentifier> deviceIds) {
DeviceInformationManager informationManager; DeviceInformationManager informationManager;
List<DeviceInfo> deviceInfo; List<DeviceInfo> deviceInfo;
try { try {
@ -276,10 +277,11 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
throw new UnexpectedServerErrorException( throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(msg).build()); new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(msg).build());
} }
if (devices == null) { if (devices == null || devices.size() == 0) {
return Response.status(Response.Status.NOT_FOUND).entity("It is likely that no device is found upon " + return Response.status(Response.Status.NOT_FOUND).entity("It is likely that no device is found upon " +
"the provided type and id").build(); "the provided search filters").build();
} }
return Response.status(Response.Status.OK).entity(devices).build(); return Response.status(Response.Status.OK).entity(devices).build();
} }
@ -330,8 +332,8 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
dms = DeviceMgtAPIUtils.getDeviceManagementService(); dms = DeviceMgtAPIUtils.getDeviceManagementService();
operations = dms.getOperations(new DeviceIdentifier(id, type)); operations = dms.getOperations(new DeviceIdentifier(id, type));
if (operations == null) { if (operations == null) {
Response.status(Response.Status.NOT_FOUND).entity("It is likely that no device is found upon " + return Response.status(Response.Status.NOT_FOUND).entity("It is likely that no device is found upon " +
"the provided type and id"); "the provided type and id").build();
} }
} catch (OperationManagementException e) { } catch (OperationManagementException e) {
String msg = "Error occurred while fetching the operations for the '" + type + "' device, which " + String msg = "Error occurred while fetching the operations for the '" + type + "' device, which " +

@ -27,9 +27,10 @@ import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException; import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException;
import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationService; import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationService;
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder; import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
import org.wso2.carbon.device.mgt.jaxrs.beans.PolicyList;
import org.wso2.carbon.device.mgt.jaxrs.beans.PolicyWrapper; import org.wso2.carbon.device.mgt.jaxrs.beans.PolicyWrapper;
import org.wso2.carbon.device.mgt.jaxrs.service.api.PolicyManagementService; import org.wso2.carbon.device.mgt.jaxrs.service.api.PolicyManagementService;
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.PolicyFilteringUtil; import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.FilteringUtil;
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils; import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtUtil; import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtUtil;
import org.wso2.carbon.policy.mgt.common.Policy; import org.wso2.carbon.policy.mgt.common.Policy;
@ -120,19 +121,27 @@ public class PolicyManagementServiceImpl implements PolicyManagementService {
@QueryParam("limit") int limit) { @QueryParam("limit") int limit) {
PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService();
List<Policy> policies; List<Policy> policies;
List<Policy> filteredPolicies;
PolicyList targetPolicies = new PolicyList();
try { try {
PolicyAdministratorPoint policyAdministratorPoint = policyManagementService.getPAP(); PolicyAdministratorPoint policyAdministratorPoint = policyManagementService.getPAP();
policies = policyAdministratorPoint.getPolicies(); policies = policyAdministratorPoint.getPolicies();
if (policies == null || policies.size() == 0) { if (policies == null || policies.size() == 0) {
return Response.status(Response.Status.NOT_FOUND).entity("No policies found.").build(); return Response.status(Response.Status.NOT_FOUND).entity("No policies found.").build();
} }
targetPolicies.setCount(policies.size());
filteredPolicies = FilteringUtil.getFilteredList(policies, offset, limit);
if (filteredPolicies.size() == 0) {
return Response.status(Response.Status.NOT_FOUND).entity("No policies found.").build();
}
targetPolicies.setList(filteredPolicies);
} catch (PolicyManagementException e) { } catch (PolicyManagementException e) {
String msg = "ErrorResponse occurred while retrieving all available policies"; String msg = "ErrorResponse occurred while retrieving all available policies";
log.error(msg, e); log.error(msg, e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
} }
return Response.status(Response.Status.OK).entity(PolicyFilteringUtil.getPolicies(policies, offset, limit))
.build(); return Response.status(Response.Status.OK).entity(targetPolicies).build();
} }
@GET @GET

@ -25,6 +25,7 @@ import org.wso2.carbon.base.MultitenantConstants;
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.beans.RoleList; import org.wso2.carbon.device.mgt.jaxrs.beans.RoleList;
import org.wso2.carbon.device.mgt.jaxrs.service.api.RoleManagementService; import org.wso2.carbon.device.mgt.jaxrs.service.api.RoleManagementService;
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.FilteringUtil;
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.UnexpectedServerErrorException; import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.UnexpectedServerErrorException;
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils; import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
import org.wso2.carbon.device.mgt.jaxrs.beans.RoleWrapper; import org.wso2.carbon.device.mgt.jaxrs.beans.RoleWrapper;
@ -57,14 +58,17 @@ public class RoleManagementServiceImpl implements RoleManagementService {
@HeaderParam("If-Modified-Since") String ifModifiedSince, @HeaderParam("If-Modified-Since") String ifModifiedSince,
@QueryParam("offset") int offset, @QueryParam("limit") int limit) { @QueryParam("offset") int offset, @QueryParam("limit") int limit) {
List<String> filteredRoles; List<String> filteredRoles;
RoleList targetRoles; RoleList targetRoles = new RoleList();
try { try {
filteredRoles = getRolesFromUserStore(); filteredRoles = getRolesFromUserStore();
if (filteredRoles == null) { if (filteredRoles == null || filteredRoles.size() == 0) {
return Response.status(Response.Status.NOT_FOUND).entity("No roles found.").build(); return Response.status(Response.Status.NOT_FOUND).entity("No roles found.").build();
} }
targetRoles = new RoleList();
targetRoles.setCount(filteredRoles.size()); targetRoles.setCount(filteredRoles.size());
filteredRoles = FilteringUtil.getFilteredList(getRolesFromUserStore(), offset, limit);
if (filteredRoles.size() == 0) {
return Response.status(Response.Status.NOT_FOUND).entity("No roles found.").build();
}
targetRoles.setList(filteredRoles); targetRoles.setList(filteredRoles);
} catch (UserStoreException e) { } catch (UserStoreException e) {
String msg = "Error occurred while retrieving roles from the underlying user stores"; String msg = "Error occurred while retrieving roles from the underlying user stores";
@ -181,6 +185,10 @@ public class RoleManagementServiceImpl implements RoleManagementService {
@POST @POST
@Override @Override
public Response addRole(RoleWrapper roleWrapper) { public Response addRole(RoleWrapper roleWrapper) {
if (roleWrapper == null) {
log.error("Request body is incorrect or empty");
return Response.status(Response.Status.BAD_REQUEST).build();
}
try { try {
UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager();
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
@ -210,6 +218,9 @@ public class RoleManagementServiceImpl implements RoleManagementService {
@Path("/{roleName}") @Path("/{roleName}")
@Override @Override
public Response updateRole(@PathParam("roleName") String roleName, RoleWrapper roleWrapper) { public Response updateRole(@PathParam("roleName") String roleName, RoleWrapper roleWrapper) {
if (roleWrapper == null) {
return Response.status(Response.Status.BAD_REQUEST).entity("Request body is incorrect or empty").build();
}
String newRoleName = roleWrapper.getRoleName(); String newRoleName = roleWrapper.getRoleName();
try { try {
final UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); final UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager();
@ -273,10 +284,13 @@ public class RoleManagementServiceImpl implements RoleManagementService {
"successfully been deleted").build(); "successfully been deleted").build();
} }
@POST @PUT
@Path("/{roleName}/users") @Path("/{roleName}/users")
@Override @Override
public Response updateUsersOfRole(@PathParam("roleName") String roleName, List<String> users) { public Response updateUsersOfRole(@PathParam("roleName") String roleName, List<String> users) {
if (users == null || users.size() == 0) {
return Response.status(Response.Status.BAD_REQUEST).entity("No users are found in the request").build();
}
try { try {
final UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); final UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager();
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {

@ -25,9 +25,11 @@ 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.DeviceManagementException; import org.wso2.carbon.device.mgt.common.DeviceManagementException;
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.service.api.admin.DeviceManagementAdminService; import org.wso2.carbon.device.mgt.jaxrs.service.api.admin.DeviceManagementAdminService;
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.UnauthorizedAccessException; import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.UnauthorizedAccessException;
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.UnexpectedServerErrorException;
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.*;
@ -63,15 +65,22 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
List<Device> devices = DeviceMgtAPIUtils.getDeviceManagementService(). List<Device> devices = DeviceMgtAPIUtils.getDeviceManagementService().
getDevicesByNameAndType(name, type, offset, limit); getDevicesByNameAndType(name, type, offset, limit);
if (devices == null) { if (devices == null || devices.size() == 0) {
return Response.status(Response.Status.NOT_FOUND).entity("No device, which carries the name '" + return Response.status(Response.Status.NOT_FOUND).entity("No device, which carries the name '" +
name + "', is currently enrolled in the system").build(); name + "', is currently enrolled in the system").build();
} }
return Response.status(Response.Status.OK).entity(devices).build();
// setting up paginated result
DeviceList deviceList = new DeviceList();
deviceList.setList(devices);
deviceList.setCount(devices.size());
return Response.status(Response.Status.OK).entity(deviceList).build();
} catch (DeviceManagementException e) { } catch (DeviceManagementException e) {
String msg = "Error occurred while fetching the devices that carry the name '" + name + "'"; String msg = "Error occurred at server side while fetching device list.";
log.error(msg, e); log.error(msg, e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(msg).build());
} finally { } finally {
PrivilegedCarbonContext.endTenantFlow(); PrivilegedCarbonContext.endTenantFlow();
} }

@ -18,21 +18,20 @@
*/ */
package org.wso2.carbon.device.mgt.jaxrs.service.impl.util; package org.wso2.carbon.device.mgt.jaxrs.service.impl.util;
import org.wso2.carbon.policy.mgt.common.Policy;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
/** /**
* This is used instead of filtering from cache. * This is used instead of filtering from cache.
* Todo : need to implement proper pagination support on retrieving policies.
*/ */
public class PolicyFilteringUtil { public class FilteringUtil {
/** /**
* This is used to filter from the cached policies. * This is used to filter from the cached policies.
*/ */
public static List<Policy> getPolicies(List<Policy> sourceList, int offset, int limit) { public static <T> List<T> getFilteredList(List<T> sourceList, int offset, int limit) {
if(sourceList == null || sourceList.size() < offset){ if(sourceList == null || sourceList.size() < offset){
return Collections.emptyList(); return Collections.emptyList();
} }

@ -252,12 +252,13 @@ public class DeviceMgtAPIUtils {
RealmService realmService = RealmService realmService =
(RealmService) PrivilegedCarbonContext.getThreadLocalCarbonContext().getOSGiService(RealmService.class, null); (RealmService) PrivilegedCarbonContext.getThreadLocalCarbonContext().getOSGiService(RealmService.class, null);
if (realmService == null) { if (realmService == null) {
throw new IllegalStateException(""); throw new IllegalStateException("Realm service has not been initialized.");
} }
try { try {
return realmService.getTenantManager().getTenantId(tenantDomain); return realmService.getTenantManager().getTenantId(tenantDomain);
} catch (UserStoreException e) { } catch (UserStoreException e) {
throw new DeviceManagementException(""); throw new DeviceManagementException("Error occured while trying to " +
"obtain tenant id of currently logged in user");
} }
} }

@ -30,104 +30,7 @@
<PermissionConfiguration> <PermissionConfiguration>
<APIVersion></APIVersion> <APIVersion></APIVersion>
<!-- Activity related APIs --> <!--Permission Tree Name-->
<Permission>
<name>Fetch Activity related details</name>
<path>/device-mgt/admin/activities/view</path>
<url>/activities/*</url>
<method>GET</method>
</Permission>
<Permission>
<name>Fetch Activity related details</name>
<path>/device-mgt/admin/activities/view</path>
<url>/activities</url>
<method>GET</method>
</Permission>
<!-- Activity related APIs -->
<!-- Device related APIs -->
<Permission>
<name>List devices</name>
<path>/device-mgt/admin/devices/list</path>
<url>/devices</url>
<method>GET</method>
</Permission>
<Permission>
<name>List device types</name>
<path>/device-mgt/admin/devices/list</path>
<url>/devices/types</url>
<method>GET</method>
</Permission>
<Permission>
<name>List device types</name>
<path>/device-mgt/user/devices/list</path>
<url>/devices/types</url>
<method>GET</method>
</Permission>
<Permission>
<name>Add policy</name>
<path>/device-mgt/admin/policies/add</path>
<url>/devices/types</url>
<method>GET</method>
</Permission>
<Permission>
<name>Add User policy</name>
<path>/device-mgt/user/policies/add</path>
<url>/devices/types</url>
<method>GET</method>
</Permission>
<Permission>
<name>Edit policy</name>
<path>/device-mgt/admin/policies/update</path>
<url>/devices/types</url>
<method>GET</method>
</Permission>
<Permission>
<name>Edit User policy</name>
<path>/device-mgt/user/policies/update</path>
<url>/devices/types</url>
<method>GET</method>
</Permission>
<Permission>
<name>View device</name>
<path>/device-mgt/admin/devices/view</path>
<url>/devices/view</url>
<method>GET</method>
</Permission>
<Permission>
<name>View user device</name>
<path>/device-mgt/user/devices/view</path>
<url>/devices/view</url>
<method>GET</method>
</Permission>
<Permission>
<name>Modify user device</name>
<path>/device-mgt/user/devices/update</path>
<url>/devices/type/*/id/*</url>
<method>PUT</method>
</Permission>
<Permission>
<name>Remove user device</name>
<path>/device-mgt/user/devices/remove</path>
<url>/devices/type/*/id/*</url>
<method>DELETE</method>
</Permission>
<Permission> <Permission>
<name>Device Management</name> <name>Device Management</name>
<path>/device-mgt</path> <path>/device-mgt</path>
@ -239,51 +142,90 @@
<url>/</url> <url>/</url>
<method>GET</method> <method>GET</method>
</Permission> </Permission>
<!--End of Permission Tree-->
<!-- Activity related APIs -->
<!--<Permission>-->
<!--<name>Get device</name>-->
<!--<path>/device-mgt/devices/view</path>-->
<!--<url>/devices/*/*</url>-->
<!--<method>GET</method>-->
<!--<scope>emm_admin,emm_user</scope>-->
<!--</Permission>-->
<Permission> <Permission>
<name>View device</name> <name>Fetch Activity related details</name>
<path>/device-mgt/admin/devices/view</path> <path>/device-mgt/admin/activities/view</path>
<url>/devices/user/*/*</url> <url>/activities/*</url>
<method>GET</method> <method>GET</method>
</Permission> </Permission>
<Permission> <Permission>
<name>Devices Count All</name> <name>Fetch Activity related details</name>
<path>/device-mgt/admin/activities/view</path>
<url>/activities</url>
<method>GET</method>
</Permission>
<!-- Activity related APIs -->
<!-- Device related APIs -->
<Permission>
<name>List devices</name>
<path>/device-mgt/admin/devices/list</path> <path>/device-mgt/admin/devices/list</path>
<url>/devices/count</url> <url>/devices</url>
<method>GET</method> <method>GET</method>
</Permission> </Permission>
<Permission> <Permission>
<name>Device Count</name> <name>Retrieve device information</name>
<path>/device-mgt/user/devices/list</path> <path>/device-mgt/admin/devices/list</path>
<url>/devices/user/*/count</url> <url>/devices/*/*/info</url>
<method>GET</method> <method>GET</method>
</Permission> </Permission>
<Permission> <Permission>
<name>List devices</name> <name>Get device</name>
<path>/device-mgt/admin/devices/list</path> <path>/device-mgt/admin/devices/list</path>
<url>/devices/name/*/*</url> <url>/devices/*/*</url>
<method>GET</method>
</Permission>
<Permission>
<name>Get device location</name>
<path>/device-mgt/admin/devices/list</path>
<url>/devices/*/*/location</url>
<method>GET</method> <method>GET</method>
</Permission> </Permission>
<Permission> <Permission>
<name>List All Own Devices</name> <name>devices location</name>
<path>/device-mgt/user/devices/list</path> <path>/device-mgt/admin/devices/list</path>
<url>/devices/user/*</url> <url>/devices/locations</url>
<method>POST</method>
</Permission>
<Permission>
<name>Get devices feature</name>
<path>/device-mgt/admin/devices/list</path>
<url>/devices/*/*/features</url>
<method>GET</method>
</Permission>
<Permission>
<name>Search devices</name>
<path>/device-mgt/admin/devices/list</path>
<url>/devices/search-devices</url>
<method>POST</method>
</Permission>
<Permission>
<name>list device application</name>
<path>/device-mgt/admin/devices/list</path>
<url>/devices/*/*/applications</url>
<method>GET</method>
</Permission>
<Permission>
<name>list device operation</name>
<path>/device-mgt/admin/devices/list</path>
<url>/devices/*/*/operations</url>
<method>GET</method> <method>GET</method>
</Permission> </Permission>
<Permission>
<name>list device effective-policy</name>
<path>/device-mgt/admin/devices/list</path>
<url>/devices/*/*/effective-policy</url>
<method>GET</method>
</Permission>
<Permission>
<name>list devices</name>
<path>/device-mgt/admin/devices/list</path>
<url>/admin/devices</url>
<method>GET</method>
</Permission>
<!-- End of Device related APIs --> <!-- End of Device related APIs -->
<!-- Notification related APIs --> <!-- Notification related APIs -->
@ -394,6 +336,20 @@
<method>GET</method> <method>GET</method>
</Permission> </Permission>
<Permission>
<name>View device</name>
<path>/device-mgt/admin/devices/view</path>
<url>/devices/*/*/operations</url>
<method>GET</method>
</Permission>
<Permission>
<name>View device</name>
<path>/device-mgt/user/devices/view</path>
<url>/devices/*/*/operations</url>
<method>GET</method>
</Permission>
<!--<Permission>--> <!--<Permission>-->
<!--<name>Get Applications For Device Type</name>--> <!--<name>Get Applications For Device Type</name>-->
<!--<path>/device-mgt/operations/application/view</path>--> <!--<path>/device-mgt/operations/application/view</path>-->
@ -404,34 +360,61 @@
<!-- End of Operations related APIs --> <!-- End of Operations related APIs -->
<!-- Feature related APIs --> <!-- Feature related APIs -->
<!--<Permission>-->
<!--<name>List policies</name>-->
<!--<path>/device-mgt/admin/policies/list</path>-->
<!--<url>/features/*</url>-->
<!--<method>GET</method>-->
<!--</Permission>-->
<!--<Permission>-->
<!--<name>View device</name>-->
<!--<path>/device-mgt/admin/devices/view</path>-->
<!--<url>/features/*</url>-->
<!--<method>GET</method>-->
<!--</Permission>-->
<!--<Permission>-->
<!--<name>View device</name>-->
<!--<path>/device-mgt/user/devices/view</path>-->
<!--<url>/features/*</url>-->
<!--<method>GET</method>-->
<!--</Permission>-->
<!--<Permission>-->
<!--<name>View device</name>-->
<!--<path>/device-mgt/user/devices/view</path>-->
<!--<url>/features</url>-->
<!--<method>GET</method> -->
<!--</Permission>-->
<Permission> <Permission>
<name>List policies</name> <name>List policies</name>
<path>/device-mgt/admin/policies/list</path> <path>/device-mgt/admin/policies/list</path>
<url>/features/*</url> <url>/devices/*/*/features</url>
<method>GET</method> <method>GET</method>
</Permission> </Permission>
<Permission> <Permission>
<name>View device</name> <name>View device</name>
<path>/device-mgt/admin/devices/view</path> <path>/device-mgt/admin/devices/view</path>
<url>/features/*</url> <url>/devices/*/*/features</url>
<method>GET</method> <method>GET</method>
</Permission> </Permission>
<Permission> <Permission>
<name>View device</name> <name>View device</name>
<path>/device-mgt/user/devices/view</path> <path>/device-mgt/user/devices/view</path>
<url>/features/*</url> <url>/devices/*/*/features</url>
<method>GET</method> <method>GET</method>
</Permission> </Permission>
<Permission> <Permission>
<name>View device</name> <name>View device</name>
<path>/device-mgt/user/devices/view</path> <path>/device-mgt/user/devices/view</path>
<url>/features</url> <url>/devices/*/*/features</url>
<method>GET</method> <method>GET</method>
</Permission> </Permission>
<!-- End of Feature related APIs --> <!-- End of Feature related APIs -->
<!-- Role related APIs --> <!-- Role related APIs -->
@ -466,7 +449,7 @@
<Permission> <Permission>
<name>List roles</name> <name>List roles</name>
<path>/device-mgt/admin/roles/list</path> <path>/device-mgt/admin/roles/list</path>
<url>/roles/permissions</url> <url>/roles/*/permissions</url>
<method>GET</method> <method>GET</method>
</Permission> </Permission>
@ -487,22 +470,14 @@
<Permission> <Permission>
<name>Update role</name> <name>Update role</name>
<path>/device-mgt/admin/roles/update</path> <path>/device-mgt/admin/roles/update</path>
<url>/roles</url> <url>/roles/*</url>
<method>PUT</method> <method>PUT</method>
</Permission> </Permission>
<!--<Permission>-->
<!--<name>Update a specific role</name>-->
<!--<path>/device-mgt/roles/update</path>-->
<!--<url>/roles/*</url>-->
<!--<method>PUT</method>-->
<!---->
<!--</Permission>-->
<Permission> <Permission>
<name>Update role</name> <name>Update role</name>
<path>/device-mgt/admin/roles/update</path> <path>/device-mgt/admin/roles/update</path>
<url>/roles/users</url> <url>/roles/*/users</url>
<method>PUT</method> <method>PUT</method>
</Permission> </Permission>
@ -516,7 +491,7 @@
<Permission> <Permission>
<name>Remove role</name> <name>Remove role</name>
<path>/device-mgt/admin/roles/remove</path> <path>/device-mgt/admin/roles/remove</path>
<url>/roles</url> <url>/roles/*</url>
<method>DELETE</method> <method>DELETE</method>
</Permission> </Permission>
@ -665,9 +640,9 @@
</Permission> </Permission>
<Permission> <Permission>
<name>Device Information</name> <name>Get additional information of devices</name>
<path>/device-mgt/admin/information/list</path> <path>/device-mgt/admin/information/list</path>
<url>/information/list</url> <url>/devices/get-info</url>
<method>POST</method> <method>POST</method>
</Permission> </Permission>
@ -1000,5 +975,4 @@
<method>GET</method> <method>GET</method>
</Permission> </Permission>
<!-- End of Dashboard related APIs --> <!-- End of Dashboard related APIs -->
</PermissionConfiguration> </PermissionConfiguration>

@ -259,7 +259,8 @@ public interface DeviceDAO {
* @return returns list of devices. * @return returns list of devices.
* @throws DeviceManagementDAOException * @throws DeviceManagementDAOException
*/ */
List<Device> getDevicesByNameAndType(String deviceName, String type, int tenantId, int offset, int limit) throws DeviceManagementDAOException; List<Device> getDevicesByNameAndType(String deviceName, String type, int tenantId, int offset, int limit)
throws DeviceManagementDAOException;
/** /**
* This method is used to retrieve devices of a given device name as a paginated result. * This method is used to retrieve devices of a given device name as a paginated result.

@ -619,71 +619,6 @@ public abstract class AbstractDeviceDAOImpl implements DeviceDAO {
return deviceCount; return deviceCount;
} }
/**
* Get the list of devices that matches with the given device name.
*
* @param deviceName Name of the device.
* @param tenantId Id of the current tenant
* @return device list
* @throws DeviceManagementDAOException
*/
@Override
public List<Device> getDevicesByNameAndType(String deviceName, String type, int tenantId, int offset, int limit)
throws DeviceManagementDAOException {
String filteringString = "";
if (deviceName != null && !deviceName.isEmpty()) {
filteringString = filteringString + " AND d.NAME LIKE ?";
}
if (type != null && !type.isEmpty()) {
filteringString = filteringString + " AND t.NAME = ?";
}
Connection conn;
PreparedStatement stmt = null;
List<Device> devices = new ArrayList<>();
ResultSet rs = null;
try {
conn = this.getConnection();
String sql = "SELECT d1.ID AS DEVICE_ID, d1.DESCRIPTION, d1.NAME AS DEVICE_NAME, d1.DEVICE_TYPE, " +
"d1.DEVICE_IDENTIFICATION, e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, " +
"e.DATE_OF_ENROLMENT, e.ID AS ENROLMENT_ID FROM DM_ENROLMENT e, (SELECT d.ID, d.NAME, " +
"d.DESCRIPTION, d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM DM_DEVICE d, " +
"DM_DEVICE_TYPE t WHERE d.DEVICE_TYPE_ID = t.ID AND d.TENANT_ID = ?" + filteringString +
") d1 WHERE d1.ID = e.DEVICE_ID LIMIT ?, ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, tenantId);
int i = 1;
if (deviceName != null && !deviceName.isEmpty()) {
stmt.setString(++i, deviceName + "%");
}
if (type != null && !type.isEmpty()) {
stmt.setString(++i, type);
}
stmt.setInt(++i, offset);
stmt.setInt(++i, limit);
rs = stmt.executeQuery();
while (rs.next()) {
Device device = DeviceManagementDAOUtil.loadDevice(rs);
devices.add(device);
}
} catch (SQLException e) {
throw new DeviceManagementDAOException("Error occurred while fetching the list of devices that matches " +
"'" + deviceName + "'", e);
} finally {
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
}
return devices;
}
@Override @Override
public int addEnrollment(Device device, int tenantId) throws DeviceManagementDAOException { public int addEnrollment(Device device, int tenantId) throws DeviceManagementDAOException {
Connection conn; Connection conn;

@ -303,6 +303,71 @@ public class GenericDeviceDAOImpl extends AbstractDeviceDAOImpl {
return devices; return devices;
} }
/**
* Get the list of devices that matches with the given device name and (or) device type.
*
* @param deviceName Name of the device.
* @param tenantId Id of the current tenant
* @return device list
* @throws DeviceManagementDAOException
*/
@Override
public List<Device> getDevicesByNameAndType(String deviceName, String type, int tenantId, int offset, int limit)
throws DeviceManagementDAOException {
String filteringString = "";
if (deviceName != null && !deviceName.isEmpty()) {
filteringString = filteringString + " AND d.NAME LIKE ?";
}
if (type != null && !type.isEmpty()) {
filteringString = filteringString + " AND t.NAME = ?";
}
Connection conn;
PreparedStatement stmt = null;
List<Device> devices = new ArrayList<>();
ResultSet rs = null;
try {
conn = this.getConnection();
String sql = "SELECT d1.ID AS DEVICE_ID, d1.DESCRIPTION, d1.NAME AS DEVICE_NAME, d1.DEVICE_TYPE, " +
"d1.DEVICE_IDENTIFICATION, e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, " +
"e.DATE_OF_ENROLMENT, e.ID AS ENROLMENT_ID FROM DM_ENROLMENT e, (SELECT d.ID, d.NAME, " +
"d.DESCRIPTION, d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM DM_DEVICE d, " +
"DM_DEVICE_TYPE t WHERE d.DEVICE_TYPE_ID = t.ID AND d.TENANT_ID = ?" + filteringString +
") d1 WHERE d1.ID = e.DEVICE_ID LIMIT ?, ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, tenantId);
int i = 1;
if (deviceName != null && !deviceName.isEmpty()) {
stmt.setString(++i, deviceName + "%");
}
if (type != null && !type.isEmpty()) {
stmt.setString(++i, type);
}
stmt.setInt(++i, offset);
stmt.setInt(++i, limit);
rs = stmt.executeQuery();
while (rs.next()) {
Device device = DeviceManagementDAOUtil.loadDevice(rs);
devices.add(device);
}
} catch (SQLException e) {
throw new DeviceManagementDAOException("Error occurred while fetching the list of devices corresponding" +
"to the mentioned filtering criteria", e);
} finally {
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
}
return devices;
}
private Connection getConnection() throws SQLException { private Connection getConnection() throws SQLException {
return DeviceManagementDAOFactory.getConnection(); return DeviceManagementDAOFactory.getConnection();
} }

@ -310,6 +310,71 @@ public class OracleDeviceDAOImpl extends AbstractDeviceDAOImpl {
return devices; return devices;
} }
/**
* Get the list of devices that matches with the given device name and (or) device type.
*
* @param deviceName Name of the device.
* @param tenantId Id of the current tenant
* @return device list
* @throws DeviceManagementDAOException
*/
@Override
public List<Device> getDevicesByNameAndType(String deviceName, String type, int tenantId, int offset, int limit)
throws DeviceManagementDAOException {
String filteringString = "";
if (deviceName != null && !deviceName.isEmpty()) {
filteringString = filteringString + " AND d.NAME LIKE ?";
}
if (type != null && !type.isEmpty()) {
filteringString = filteringString + " AND t.NAME = ?";
}
Connection conn;
PreparedStatement stmt = null;
List<Device> devices = new ArrayList<>();
ResultSet rs = null;
try {
conn = this.getConnection();
String sql = "SELECT * FROM (SELECT ROWNUM offset, rs.* FROM (SELECT d1.ID AS DEVICE_ID, d1.DESCRIPTION, " +
"d1.NAME AS DEVICE_NAME, d1.DEVICE_TYPE, d1.DEVICE_IDENTIFICATION, e.OWNER, e.OWNERSHIP, e.STATUS, " +
"e.DATE_OF_LAST_UPDATE, e.DATE_OF_ENROLMENT, e.ID AS ENROLMENT_ID FROM DM_ENROLMENT e, " +
"(SELECT d.ID, d.NAME, d.DESCRIPTION, d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM " +
"DM_DEVICE d, DM_DEVICE_TYPE t WHERE d.DEVICE_TYPE_ID = t.ID AND d.TENANT_ID = ?" + filteringString +
") d1 WHERE d1.ID = e.DEVICE_ID) rs) WHERE offset >= ? AND ROWNUM <= ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, tenantId);
int i = 1;
if (deviceName != null && !deviceName.isEmpty()) {
stmt.setString(++i, deviceName + "%");
}
if (type != null && !type.isEmpty()) {
stmt.setString(++i, type);
}
stmt.setInt(++i, offset);
stmt.setInt(++i, limit);
rs = stmt.executeQuery();
while (rs.next()) {
Device device = DeviceManagementDAOUtil.loadDevice(rs);
devices.add(device);
}
} catch (SQLException e) {
throw new DeviceManagementDAOException("Error occurred while fetching the list of devices corresponding" +
"to the mentioned filtering criteria", e);
} finally {
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
}
return devices;
}
private Connection getConnection() throws SQLException { private Connection getConnection() throws SQLException {
return DeviceManagementDAOFactory.getConnection(); return DeviceManagementDAOFactory.getConnection();
} }

@ -303,6 +303,71 @@ public class PostgreSQLDeviceDAOImpl extends AbstractDeviceDAOImpl {
return devices; return devices;
} }
/**
* Get the list of devices that matches with the given device name and (or) device type.
*
* @param deviceName Name of the device.
* @param tenantId Id of the current tenant
* @return device list
* @throws DeviceManagementDAOException
*/
@Override
public List<Device> getDevicesByNameAndType(String deviceName, String type, int tenantId, int offset, int limit)
throws DeviceManagementDAOException {
String filteringString = "";
if (deviceName != null && !deviceName.isEmpty()) {
filteringString = filteringString + " AND d.NAME LIKE ?";
}
if (type != null && !type.isEmpty()) {
filteringString = filteringString + " AND t.NAME = ?";
}
Connection conn;
PreparedStatement stmt = null;
List<Device> devices = new ArrayList<>();
ResultSet rs = null;
try {
conn = this.getConnection();
String sql = "SELECT d1.ID AS DEVICE_ID, d1.DESCRIPTION, d1.NAME AS DEVICE_NAME, d1.DEVICE_TYPE, " +
"d1.DEVICE_IDENTIFICATION, e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, " +
"e.DATE_OF_ENROLMENT, e.ID AS ENROLMENT_ID FROM DM_ENROLMENT e, (SELECT d.ID, d.NAME, " +
"d.DESCRIPTION, d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM DM_DEVICE d, " +
"DM_DEVICE_TYPE t WHERE d.DEVICE_TYPE_ID = t.ID AND d.TENANT_ID = ?" + filteringString +
") d1 WHERE d1.ID = e.DEVICE_ID OFFSET ? LIMIT ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, tenantId);
int i = 1;
if (deviceName != null && !deviceName.isEmpty()) {
stmt.setString(++i, deviceName + "%");
}
if (type != null && !type.isEmpty()) {
stmt.setString(++i, type);
}
stmt.setInt(++i, offset);
stmt.setInt(++i, limit);
rs = stmt.executeQuery();
while (rs.next()) {
Device device = DeviceManagementDAOUtil.loadDevice(rs);
devices.add(device);
}
} catch (SQLException e) {
throw new DeviceManagementDAOException("Error occurred while fetching the list of devices corresponding" +
"to the mentioned filtering criteria", e);
} finally {
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
}
return devices;
}
private Connection getConnection() throws SQLException { private Connection getConnection() throws SQLException {
return DeviceManagementDAOFactory.getConnection(); return DeviceManagementDAOFactory.getConnection();
} }

@ -305,6 +305,71 @@ public class SQLServerDeviceDAOImpl extends AbstractDeviceDAOImpl {
return devices; return devices;
} }
/**
* Get the list of devices that matches with the given device name and (or) device type.
*
* @param deviceName Name of the device.
* @param tenantId Id of the current tenant
* @return device list
* @throws DeviceManagementDAOException
*/
@Override
public List<Device> getDevicesByNameAndType(String deviceName, String type, int tenantId, int offset, int limit)
throws DeviceManagementDAOException {
String filteringString = "";
if (deviceName != null && !deviceName.isEmpty()) {
filteringString = filteringString + " AND d.NAME LIKE ?";
}
if (type != null && !type.isEmpty()) {
filteringString = filteringString + " AND t.NAME = ?";
}
Connection conn;
PreparedStatement stmt = null;
List<Device> devices = new ArrayList<>();
ResultSet rs = null;
try {
conn = this.getConnection();
String sql = "SELECT d1.ID AS DEVICE_ID, d1.DESCRIPTION, d1.NAME AS DEVICE_NAME, d1.DEVICE_TYPE, " +
"d1.DEVICE_IDENTIFICATION, e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, " +
"e.DATE_OF_ENROLMENT, e.ID AS ENROLMENT_ID FROM DM_ENROLMENT e, (SELECT d.ID, d.NAME, " +
"d.DESCRIPTION, d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM DM_DEVICE d, " +
"DM_DEVICE_TYPE t WHERE d.DEVICE_TYPE_ID = t.ID AND d.TENANT_ID = ?" + filteringString +
") d1 WHERE d1.ID = e.DEVICE_ID OFFSET ? ROWS FETCH NEXT ? ROWS ONLY";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, tenantId);
int i = 1;
if (deviceName != null && !deviceName.isEmpty()) {
stmt.setString(++i, deviceName + "%");
}
if (type != null && !type.isEmpty()) {
stmt.setString(++i, type);
}
stmt.setInt(++i, offset);
stmt.setInt(++i, limit);
rs = stmt.executeQuery();
while (rs.next()) {
Device device = DeviceManagementDAOUtil.loadDevice(rs);
devices.add(device);
}
} catch (SQLException e) {
throw new DeviceManagementDAOException("Error occurred while fetching the list of devices corresponding" +
"to the mentioned filtering criteria", e);
} finally {
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
}
return devices;
}
private Connection getConnection() throws SQLException { private Connection getConnection() throws SQLException {
return DeviceManagementDAOFactory.getConnection(); return DeviceManagementDAOFactory.getConnection();
} }

Loading…
Cancel
Save