mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Implement multi value (status) filtering for getting activity details
Co-authored-by: Gimhan Wijayawardana <gimhan@entgra.io> Co-committed-by: Gimhan Wijayawardana <gimhan@entgra.io>
This commit is contained in:
parent
ff92eae958
commit
64189a400d
@ -491,7 +491,7 @@ public interface ActivityInfoProviderService {
|
||||
name = "status",
|
||||
value = "Operation response status to filter"
|
||||
)
|
||||
@QueryParam("status") String status,
|
||||
@QueryParam("status") List<String> statuses,
|
||||
@ApiParam(
|
||||
name = "If-Modified-Since",
|
||||
value = "Checks if the requested variant was modified, since the specified date-time\n." +
|
||||
@ -615,7 +615,7 @@ public interface ActivityInfoProviderService {
|
||||
name = "status",
|
||||
value = "Operation response status to filter"
|
||||
)
|
||||
@QueryParam("status") String status,
|
||||
@QueryParam("status") List<String> statuses,
|
||||
@ApiParam(
|
||||
name = "If-Modified-Since",
|
||||
value = "Checks if the requested variant was modified, since the specified date-time\n." +
|
||||
|
||||
@ -50,6 +50,7 @@ import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@ -259,7 +260,7 @@ public class ActivityProviderServiceImpl implements ActivityInfoProviderService
|
||||
@QueryParam("deviceType") String deviceType,
|
||||
@QueryParam("deviceId") List<String> deviceIds,
|
||||
@QueryParam("type") String type,
|
||||
@QueryParam("status") String status,
|
||||
@QueryParam("status") List<String> statuses,
|
||||
@HeaderParam("If-Modified-Since") String ifModifiedSince,
|
||||
@QueryParam("startTimestamp") long startTimestamp,
|
||||
@QueryParam("endTimestamp") long endTimestamp) {
|
||||
@ -336,8 +337,12 @@ public class ActivityProviderServiceImpl implements ActivityInfoProviderService
|
||||
if (type != null && !type.isEmpty()) {
|
||||
activityPaginationRequest.setType(Operation.Type.valueOf(type.toUpperCase()));
|
||||
}
|
||||
if (status != null && !status.isEmpty()) {
|
||||
activityPaginationRequest.setStatus(Operation.Status.valueOf(status.toUpperCase()));
|
||||
if (statuses != null && !statuses.isEmpty()) {
|
||||
List<Operation.Status> statusEnums = new ArrayList<>();
|
||||
for (String status : statuses) {
|
||||
statusEnums.add(Operation.Status.valueOf(status.toUpperCase()));
|
||||
}
|
||||
activityPaginationRequest.setStatuses(statusEnums);
|
||||
}
|
||||
if (timestamp > 0) {
|
||||
activityPaginationRequest.setSince(timestamp);
|
||||
@ -382,7 +387,7 @@ public class ActivityProviderServiceImpl implements ActivityInfoProviderService
|
||||
@QueryParam("deviceType") String deviceType,
|
||||
@QueryParam("deviceId") List<String> deviceIds,
|
||||
@QueryParam("type") String type,
|
||||
@QueryParam("status") String status,
|
||||
@QueryParam("status") List<String> statuses,
|
||||
@HeaderParam("If-Modified-Since") String ifModifiedSince,
|
||||
@QueryParam("startTimestamp") long startTimestamp,
|
||||
@QueryParam("endTimestamp") long endTimestamp) {
|
||||
@ -457,8 +462,12 @@ public class ActivityProviderServiceImpl implements ActivityInfoProviderService
|
||||
if (type != null && !type.isEmpty()) {
|
||||
activityPaginationRequest.setType(Operation.Type.valueOf(type.toUpperCase()));
|
||||
}
|
||||
if (status != null && !status.isEmpty()) {
|
||||
activityPaginationRequest.setStatus(Operation.Status.valueOf(status.toUpperCase()));
|
||||
if (statuses != null && !statuses.isEmpty()) {
|
||||
List<Operation.Status> statusEnums = new ArrayList<>();
|
||||
for (String status : statuses) {
|
||||
statusEnums.add(Operation.Status.valueOf(status.toUpperCase()));
|
||||
}
|
||||
activityPaginationRequest.setStatuses(statusEnums);
|
||||
}
|
||||
if (timestamp > 0) {
|
||||
activityPaginationRequest.setSince(timestamp);
|
||||
|
||||
@ -132,7 +132,7 @@ public class ActivityProviderServiceImplTest {
|
||||
activityPaginationRequest.setDeviceType(DEVICE_TYPE_2);
|
||||
activityPaginationRequest.setOperationId(OPERATION_ID);
|
||||
activityPaginationRequest.setInitiatedBy(INITIATED_BY);
|
||||
activityPaginationRequest.setStatus(STATUS);
|
||||
activityPaginationRequest.setStatuses(Collections.singletonList(STATUS));
|
||||
activityPaginationRequest.setType(TYPE);
|
||||
activityPaginationRequest.setStartTimestamp(0);
|
||||
activityPaginationRequest.setEndTimestamp(0);
|
||||
@ -226,7 +226,7 @@ public class ActivityProviderServiceImplTest {
|
||||
Mockito.when(this.deviceManagementProviderService.getActivities(Mockito.any())).thenReturn(activities);
|
||||
Response response = this.activityInfoProviderService.getActivities(
|
||||
OFFSET, LIMIT, SINCE, INITIATED_BY, OPERATION_CODE, OPERATION_ID,
|
||||
DEVICE_TYPE_2, Collections.singletonList(DEVICE_ID), TYPE.toString(), STATUS.toString(), null, 0, 0);
|
||||
DEVICE_TYPE_2, Collections.singletonList(DEVICE_ID), TYPE.toString(), Collections.singletonList(STATUS.toString()), null, 0, 0);
|
||||
|
||||
Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
|
||||
Assert.assertNotNull(response);
|
||||
@ -258,7 +258,7 @@ public class ActivityProviderServiceImplTest {
|
||||
Mockito.when(this.deviceManagementProviderService.getDeviceActivities(Mockito.any())).thenReturn(deviceActivities);
|
||||
Response response = this.activityInfoProviderService.getDeviceActivities(
|
||||
OFFSET, LIMIT, SINCE, INITIATED_BY, OPERATION_CODE, OPERATION_ID,
|
||||
DEVICE_TYPE_2, Collections.singletonList(DEVICE_ID), TYPE.toString(), STATUS.toString(), null, 0, 0);
|
||||
DEVICE_TYPE_2, Collections.singletonList(DEVICE_ID), TYPE.toString(), Collections.singletonList(STATUS.toString()), null, 0, 0);
|
||||
|
||||
Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
|
||||
Assert.assertNotNull(response);
|
||||
|
||||
@ -36,7 +36,7 @@ public class ActivityPaginationRequest {
|
||||
private String initiatedBy;
|
||||
private long since;
|
||||
private Operation.Type type;
|
||||
private Operation.Status status;
|
||||
private List<Operation.Status> statuses;
|
||||
private long startTimestamp;
|
||||
private long endTimestamp;
|
||||
|
||||
@ -110,12 +110,12 @@ public class ActivityPaginationRequest {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public Operation.Status getStatus() {
|
||||
return status;
|
||||
public List<Operation.Status> getStatuses() {
|
||||
return statuses;
|
||||
}
|
||||
|
||||
public void setStatus(Operation.Status status) {
|
||||
this.status = status;
|
||||
public void setStatuses(List<Operation.Status> statuses) {
|
||||
this.statuses = statuses;
|
||||
}
|
||||
|
||||
public long getStartTimestamp() {
|
||||
|
||||
@ -2272,7 +2272,7 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
if (activityPaginationRequest.getDeviceType() != null ||
|
||||
(activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) ||
|
||||
activityPaginationRequest.getSince() != 0 ||
|
||||
activityPaginationRequest.getStatus() != null) {
|
||||
activityPaginationRequest.getStatuses() != null) {
|
||||
|
||||
sql.append("(SELECT DISTINCT OPERATION_ID FROM DM_ENROLMENT_OP_MAPPING eom WHERE TENANT_ID = ? ");
|
||||
|
||||
@ -2305,8 +2305,12 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
sql.append("AND TYPE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
sql.append("AND STATUS = ? ");
|
||||
if (activityPaginationRequest.getStatuses() != null && !activityPaginationRequest.getStatuses().isEmpty()) {
|
||||
sql.append("AND STATUS IN (");
|
||||
for (int i = 0; i < activityPaginationRequest.getStatuses().size() - 1; i++) {
|
||||
sql.append("?, ");
|
||||
}
|
||||
sql.append("?) ");
|
||||
}
|
||||
|
||||
sql.append("ORDER BY OPERATION_ID ASC limit ? , ? ) eom_ordered " +
|
||||
@ -2360,8 +2364,12 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
sql.append("AND eom.TYPE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
sql.append("AND eom.STATUS = ? ");
|
||||
if (activityPaginationRequest.getStatuses() != null && !activityPaginationRequest.getStatuses().isEmpty()) {
|
||||
sql.append("AND eom.STATUS IN (");
|
||||
for (int i = 0; i < activityPaginationRequest.getStatuses().size() - 1; i++) {
|
||||
sql.append("?, ");
|
||||
}
|
||||
sql.append("?) ");
|
||||
}
|
||||
|
||||
sql.append("ORDER BY eom.OPERATION_ID, eom.UPDATED_TIMESTAMP");
|
||||
@ -2372,7 +2380,7 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
if (activityPaginationRequest.getDeviceType() != null ||
|
||||
(activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) ||
|
||||
activityPaginationRequest.getSince() != 0 ||
|
||||
activityPaginationRequest.getStatus() != null) {
|
||||
activityPaginationRequest.getStatuses() != null) {
|
||||
|
||||
if (activityPaginationRequest.getDeviceType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getDeviceType());
|
||||
@ -2401,8 +2409,10 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getType().name());
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getStatus().name());
|
||||
if (activityPaginationRequest.getStatuses() != null && !activityPaginationRequest.getStatuses().isEmpty()) {
|
||||
for (io.entgra.device.mgt.core.device.mgt.common.operation.mgt.Operation.Status status : activityPaginationRequest.getStatuses()) {
|
||||
stmt.setString(index++, status.name());
|
||||
}
|
||||
}
|
||||
|
||||
stmt.setInt(index++, activityPaginationRequest.getOffset());
|
||||
@ -2463,8 +2473,10 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getType().name());
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
stmt.setString(index, activityPaginationRequest.getStatus().name());
|
||||
if (activityPaginationRequest.getStatuses() != null && !activityPaginationRequest.getStatuses().isEmpty()) {
|
||||
for (io.entgra.device.mgt.core.device.mgt.common.operation.mgt.Operation.Status status : activityPaginationRequest.getStatuses()) {
|
||||
stmt.setString(index++, status.name());
|
||||
}
|
||||
}
|
||||
|
||||
try (ResultSet rs = stmt.executeQuery()) {
|
||||
@ -2496,7 +2508,7 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
if (activityPaginationRequest.getDeviceType() != null ||
|
||||
(activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) ||
|
||||
activityPaginationRequest.getSince() != 0 ||
|
||||
activityPaginationRequest.getStatus() != null) {
|
||||
activityPaginationRequest.getStatuses() != null) {
|
||||
|
||||
sql.append("SELECT count(DISTINCT OPERATION_ID) AS ACTIVITY_COUNT " +
|
||||
"FROM DM_ENROLMENT_OP_MAPPING WHERE TENANT_ID = ? ");
|
||||
@ -2526,8 +2538,12 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
sql.append("AND TYPE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
sql.append("AND STATUS = ? ");
|
||||
if (activityPaginationRequest.getStatuses() != null && !activityPaginationRequest.getStatuses().isEmpty()) {
|
||||
sql.append("AND STATUS IN (");
|
||||
for (int i = 0; i < activityPaginationRequest.getStatuses().size() - 1; i++) {
|
||||
sql.append("?, ");
|
||||
}
|
||||
sql.append("?) ");
|
||||
}
|
||||
|
||||
} else {
|
||||
@ -2555,7 +2571,7 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
if (activityPaginationRequest.getDeviceType() != null ||
|
||||
(activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) ||
|
||||
activityPaginationRequest.getSince() != 0 ||
|
||||
activityPaginationRequest.getStatus() != null) {
|
||||
activityPaginationRequest.getStatuses() != null) {
|
||||
if (activityPaginationRequest.getDeviceType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getDeviceType());
|
||||
}
|
||||
@ -2579,8 +2595,10 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getType().name());
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getStatus().name());
|
||||
if (activityPaginationRequest.getStatuses() != null && !activityPaginationRequest.getStatuses().isEmpty()) {
|
||||
for (io.entgra.device.mgt.core.device.mgt.common.operation.mgt.Operation.Status status : activityPaginationRequest.getStatuses()) {
|
||||
stmt.setString(index++, status.name());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (activityPaginationRequest.getOperationCode() != null) {
|
||||
@ -2662,8 +2680,12 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
sql.append("AND TYPE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
sql.append("AND STATUS = ? ");
|
||||
if (activityPaginationRequest.getStatuses() != null && !activityPaginationRequest.getStatuses().isEmpty()) {
|
||||
sql.append("AND STATUS IN (");
|
||||
for (int i = 0; i < activityPaginationRequest.getStatuses().size() - 1; i++) {
|
||||
sql.append("?, ");
|
||||
}
|
||||
sql.append("?) ");
|
||||
}
|
||||
|
||||
sql.append("ORDER BY ID ASC limit ? , ? ) eom " +
|
||||
@ -2700,8 +2722,10 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getType().name());
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getStatus().name());
|
||||
if (activityPaginationRequest.getStatuses() != null && !activityPaginationRequest.getStatuses().isEmpty()) {
|
||||
for (io.entgra.device.mgt.core.device.mgt.common.operation.mgt.Operation.Status status : activityPaginationRequest.getStatuses()) {
|
||||
stmt.setString(index++, status.name());
|
||||
}
|
||||
}
|
||||
|
||||
stmt.setInt(index++, activityPaginationRequest.getOffset());
|
||||
@ -2744,7 +2768,6 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
StringBuilder sql = new StringBuilder();
|
||||
|
||||
|
||||
sql.append("SELECT count(DISTINCT ID) AS ACTIVITY_COUNT " +
|
||||
"FROM DM_ENROLMENT_OP_MAPPING WHERE TENANT_ID = ? ");
|
||||
|
||||
@ -2773,8 +2796,12 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
sql.append("AND TYPE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
sql.append("AND STATUS = ? ");
|
||||
if (activityPaginationRequest.getStatuses() != null && !activityPaginationRequest.getStatuses().isEmpty()) {
|
||||
sql.append("AND STATUS IN (");
|
||||
for (int i = 0; i < activityPaginationRequest.getStatuses().size() - 1; i++) {
|
||||
sql.append("?, ");
|
||||
}
|
||||
sql.append("?) ");
|
||||
}
|
||||
|
||||
if (activityPaginationRequest.getStartTimestamp() > 0 && activityPaginationRequest.getEndTimestamp() > 0) {
|
||||
@ -2808,8 +2835,10 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getType().name());
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getStatus().name());
|
||||
if (activityPaginationRequest.getStatuses() != null && !activityPaginationRequest.getStatuses().isEmpty()) {
|
||||
for (io.entgra.device.mgt.core.device.mgt.common.operation.mgt.Operation.Status status : activityPaginationRequest.getStatuses()) {
|
||||
stmt.setString(index++, status.name());
|
||||
}
|
||||
}
|
||||
|
||||
if (isTimeDurationFilteringProvided) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user