You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by of...@apache.org on 2020/06/19 14:41:20 UTC
[incubator-dlab] branch audit updated: Added filters for audit
This is an automated email from the ASF dual-hosted git repository.
ofuks pushed a commit to branch audit
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
The following commit(s) were added to refs/heads/audit by this push:
new 4628520 Added filters for audit
4628520 is described below
commit 4628520bf2c69a7ea12574b18c695d307304fe15
Author: Oleh Fuks <ol...@gmail.com>
AuthorDate: Fri Jun 19 17:41:08 2020 +0300
Added filters for audit
---
.../com/epam/dlab/backendapi/dao/AuditDAOImpl.java | 38 ++++++++++++++++++----
.../dlab/backendapi/domain/AuditPaginationDTO.java | 9 ++++-
2 files changed, 39 insertions(+), 8 deletions(-)
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAOImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAOImpl.java
index 8094997..e363888 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAOImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAOImpl.java
@@ -38,6 +38,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.Set;
import java.util.TimeZone;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
@@ -45,6 +46,7 @@ import java.util.stream.StreamSupport;
import static com.epam.dlab.backendapi.dao.ComputationalDAO.PROJECT;
import static com.mongodb.client.model.Aggregates.count;
import static com.mongodb.client.model.Aggregates.facet;
+import static com.mongodb.client.model.Aggregates.group;
import static com.mongodb.client.model.Aggregates.limit;
import static com.mongodb.client.model.Aggregates.match;
import static com.mongodb.client.model.Aggregates.skip;
@@ -57,8 +59,11 @@ public class AuditDAOImpl extends BaseDAO implements AuditDAO {
private static final String RESOURCE_NAME_FIELD = "resourceName";
private static final String TIMESTAMP_FIELD = "timestamp";
private static final String COUNT_FIELD = "count";
- private static final String AUDIT_FACET = "audit";
- private static final String TOTAL_COUNT_FACET = "totalCount";
+ private static final String AUDIT_FACET = "auditFacet";
+ private static final String TOTAL_COUNT_FACET = "totalCountFacet";
+ private static final String RESOURCE_NAME_FACET = "resourceNameFacet";
+ private static final String USER_FACET = "userFacet";
+ private static final String PROJECT_FACET = "projectFacet";
@Override
public void save(AuditDTO audit) {
@@ -79,9 +84,14 @@ public class AuditDAOImpl extends BaseDAO implements AuditDAO {
countPipeline.add(count());
valuesPipeline.addAll(Arrays.asList(skip(pageSize * (pageNumber - 1)), limit(pageSize)));
- List<Bson> facets = Collections.singletonList(facet(new Facet(AUDIT_FACET, valuesPipeline), new Facet(TOTAL_COUNT_FACET, countPipeline)));
+ List<Bson> userFilter = Collections.singletonList(group(getGroupingFields(USER)));
+ List<Bson> projectFilter = Collections.singletonList(group(getGroupingFields(PROJECT)));
+ List<Bson> resourceNameFilter = Collections.singletonList(group(getGroupingFields(RESOURCE_NAME_FIELD)));
+
+ List<Bson> facets = Collections.singletonList(facet(new Facet(AUDIT_FACET, valuesPipeline), new Facet(TOTAL_COUNT_FACET, countPipeline),
+ new Facet(RESOURCE_NAME_FACET, resourceNameFilter), new Facet(USER_FACET, userFilter), new Facet(PROJECT_FACET, projectFilter)));
return StreamSupport.stream(aggregate(AUDIT_COLLECTION, facets).spliterator(), false)
- .map(this::toAuditDTO)
+ .map(this::toAuditPaginationDTO)
.collect(Collectors.toList());
}
@@ -101,16 +111,30 @@ public class AuditDAOImpl extends BaseDAO implements AuditDAO {
return searchCriteria;
}
- private AuditPaginationDTO toAuditDTO(Document document) {
- List<Document> documents = (List<Document>) (document.get(TOTAL_COUNT_FACET));
- final int count = documents.isEmpty() ? 0 : documents.get(0).getInteger(COUNT_FIELD);
+ private AuditPaginationDTO toAuditPaginationDTO(Document document) {
+ List<Document> countDocuments = (List<Document>) document.get(TOTAL_COUNT_FACET);
+ final int count = countDocuments.isEmpty() ? 0 : countDocuments.get(0).getInteger(COUNT_FIELD);
+ Set<String> userFilter = getFilter(document, USER_FACET, USER);
+ Set<String> projectFilter = getFilter(document, PROJECT_FACET, PROJECT);
+ Set<String> resourceNameFilter = getFilter(document, RESOURCE_NAME_FACET, RESOURCE_NAME_FIELD);
List<AuditDTO> auditDTOs = (List<AuditDTO>) document.get(AUDIT_FACET);
return AuditPaginationDTO.builder()
.totalPageCount(count)
.audit(auditDTOs)
+ .userFilter(userFilter)
+ .resourceNameFilter(resourceNameFilter)
+ .projectFilter(projectFilter)
.build();
}
+ private Set<String> getFilter(Document document, String facet, String field) {
+ return ((List<Document>) document.get(facet))
+ .stream()
+ .map(d -> (Document) d.get(ID))
+ .map(d -> d.getString(field))
+ .collect(Collectors.toSet());
+ }
+
private Instant getInstant(String dateStart) {
Instant from;
try {
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditPaginationDTO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditPaginationDTO.java
index 71cfe8d..9729615 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditPaginationDTO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditPaginationDTO.java
@@ -24,11 +24,18 @@ import lombok.Builder;
import lombok.Data;
import java.util.List;
+import java.util.Set;
@Data
@Builder
public class AuditPaginationDTO {
- @JsonProperty("page-count")
+ @JsonProperty("page_count")
private final int totalPageCount;
private final List<AuditDTO> audit;
+ @JsonProperty("user_filter")
+ private final Set<String> userFilter;
+ @JsonProperty("project_filter")
+ private final Set<String> projectFilter;
+ @JsonProperty("resource_name_filter")
+ private final Set<String> resourceNameFilter;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org