use of eu.openminted.registry.core.domain.Paging in project resource-catalogue by madgeek-arc.
the class StatisticsManager method events.
public Map<DateTime, Map<String, Long>> events(Event.UserActionType type, Date from, Date to, Interval by) {
Map<DateTime, Map<String, Long>> results = new LinkedHashMap<>();
Paging<Resource> resources = searchService.cqlQuery(String.format("type=\"%s\" AND creation_date > %s AND creation_date < %s", type, from.toInstant().toEpochMilli(), to.toInstant().toEpochMilli()), "event", maxQuantity, 0, "creation_date", "ASC");
List<Event> events = resources.getResults().stream().map(resource -> parserService.deserialize(resource, Event.class)).collect(Collectors.toList());
DateTime start = new DateTime(from);
DateTime stop = new DateTime(to);
Map<DateTime, List<Event>> eventsByDate = new LinkedHashMap<>();
start.plusWeeks(1);
while (start.getMillis() <= stop.getMillis()) {
DateTime endDate = addInterval(start, by);
List<Event> weekEvents = new LinkedList<>();
events = events.stream().map(event -> {
if (endDate.isAfter(event.getInstant())) {
weekEvents.add(event);
return null;
} else
return event;
}).filter(Objects::nonNull).collect(Collectors.toList());
// weekEvents.sort(Comparator.comparing(Event::getService));
eventsByDate.put(start, weekEvents);
start = endDate;
}
for (Map.Entry<DateTime, List<Event>> weekEntry : eventsByDate.entrySet()) {
Map<String, Long> weekResults = weekEntry.getValue().stream().collect(Collectors.groupingBy(Event::getService, Collectors.counting()));
weekResults = weekResults.entrySet().stream().sorted(Map.Entry.comparingByKey()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new));
results.put(weekEntry.getKey(), weekResults);
}
return results;
}
use of eu.openminted.registry.core.domain.Paging in project resource-catalogue by madgeek-arc.
the class ProviderController method getAll.
@ApiOperation(value = "Filter a list of Providers based on a set of filters or get a list of all Providers in the Catalogue.")
@ApiImplicitParams({ @ApiImplicitParam(name = "query", value = "Keyword to refine the search", dataType = "string", paramType = "query"), @ApiImplicitParam(name = "from", value = "Starting index in the result set", dataType = "string", paramType = "query"), @ApiImplicitParam(name = "quantity", value = "Quantity to be fetched", dataType = "string", paramType = "query"), @ApiImplicitParam(name = "order", value = "asc / desc", dataType = "string", paramType = "query"), @ApiImplicitParam(name = "orderField", value = "Order field", dataType = "string", paramType = "query") })
@GetMapping(path = "all", produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE })
public ResponseEntity<Paging<Provider>> getAll(@ApiIgnore @RequestParam Map<String, Object> allRequestParams, @ApiIgnore Authentication auth) {
FacetFilter ff = new FacetFilter();
ff.setKeyword(allRequestParams.get("query") != null ? (String) allRequestParams.remove("query") : "");
ff.setFrom(allRequestParams.get("from") != null ? Integer.parseInt((String) allRequestParams.remove("from")) : 0);
ff.setQuantity(allRequestParams.get("quantity") != null ? Integer.parseInt((String) allRequestParams.remove("quantity")) : 10);
Map<String, Object> sort = new HashMap<>();
Map<String, Object> order = new HashMap<>();
String orderDirection = allRequestParams.get("order") != null ? (String) allRequestParams.remove("order") : "asc";
String orderField = allRequestParams.get("orderField") != null ? (String) allRequestParams.remove("orderField") : null;
if (orderField != null) {
order.put("order", orderDirection);
sort.put(orderField, order);
ff.setOrderBy(sort);
}
ff.setFilter(allRequestParams);
List<Provider> providerList = new LinkedList<>();
Paging<ProviderBundle> providerBundlePaging = providerManager.getAll(ff, auth);
for (ProviderBundle providerBundle : providerBundlePaging.getResults()) {
providerList.add(providerBundle.getProvider());
}
Paging<Provider> providerPaging = new Paging<>(providerBundlePaging.getTotal(), providerBundlePaging.getFrom(), providerBundlePaging.getTo(), providerList, providerBundlePaging.getFacets());
return new ResponseEntity<>(providerPaging, HttpStatus.OK);
}
use of eu.openminted.registry.core.domain.Paging in project resource-catalogue by madgeek-arc.
the class ProviderController method getRandomProviders.
@ApiImplicitParams({ @ApiImplicitParam(name = "query", value = "Keyword to refine the search", dataType = "string", paramType = "query"), @ApiImplicitParam(name = "from", value = "Starting index in the result set", dataType = "string", paramType = "query"), @ApiImplicitParam(name = "quantity", value = "Quantity to be fetched", dataType = "string", paramType = "query") })
@GetMapping(path = "randomProviders", produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE })
@PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_EPOT')")
public ResponseEntity<Paging<ProviderBundle>> getRandomProviders(@ApiIgnore @RequestParam Map<String, Object> allRequestParams, @ApiIgnore Authentication auth) {
FacetFilter ff = new FacetFilter();
ff.setKeyword(allRequestParams.get("query") != null ? (String) allRequestParams.remove("query") : "");
ff.setFrom(allRequestParams.get("from") != null ? Integer.parseInt((String) allRequestParams.remove("from")) : 0);
ff.setQuantity(allRequestParams.get("quantity") != null ? Integer.parseInt((String) allRequestParams.remove("quantity")) : 10);
ff.setFilter(allRequestParams);
List<ProviderBundle> providerList = new LinkedList<>();
Paging<ProviderBundle> providerBundlePaging = providerManager.getRandomProviders(ff, auditingInterval, auth);
for (ProviderBundle providerBundle : providerBundlePaging.getResults()) {
providerList.add(providerBundle);
}
Paging<ProviderBundle> providerPaging = new Paging<>(providerBundlePaging.getTotal(), providerBundlePaging.getFrom(), providerBundlePaging.getTo(), providerList, providerBundlePaging.getFacets());
return new ResponseEntity<>(providerPaging, HttpStatus.OK);
}
use of eu.openminted.registry.core.domain.Paging in project resource-catalogue by madgeek-arc.
the class SecureResponseAdvice method beforeBodyWrite.
@Override
public T beforeBodyWrite(T t, MethodParameter methodParameter, MediaType mediaType, Class<? extends HttpMessageConverter<?>> aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (t != null && !securityService.hasRole(auth, "ROLE_ADMIN") && !securityService.hasRole(auth, "ROLE_EPOT")) {
logger.trace("User is not Admin nor EPOT: attempting to remove sensitive information");
if (Collection.class.isAssignableFrom(t.getClass())) {
for (T object : ((Collection<T>) t)) {
modifyContent(object, auth);
}
} else if (Paging.class.isAssignableFrom(t.getClass())) {
for (T object : ((Paging<T>) t).getResults()) {
modifyContent(object, auth);
}
} else {
modifyContent(t, auth);
}
logger.debug("Final Object: {}", t);
}
return t;
}
use of eu.openminted.registry.core.domain.Paging in project resource-catalogue by madgeek-arc.
the class ServiceController method getRandomResources.
@ApiImplicitParams({ @ApiImplicitParam(name = "query", value = "Keyword to refine the search", dataType = "string", paramType = "query"), @ApiImplicitParam(name = "from", value = "Starting index in the result set", dataType = "string", paramType = "query"), @ApiImplicitParam(name = "quantity", value = "Quantity to be fetched", dataType = "string", paramType = "query") })
@GetMapping(path = "randomResources", produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE })
@PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_EPOT')")
public ResponseEntity<Paging<InfraService>> getRandomResources(@ApiIgnore @RequestParam Map<String, Object> allRequestParams, @ApiIgnore Authentication auth) {
FacetFilter ff = new FacetFilter();
ff.setKeyword(allRequestParams.get("query") != null ? (String) allRequestParams.remove("query") : "");
ff.setFrom(allRequestParams.get("from") != null ? Integer.parseInt((String) allRequestParams.remove("from")) : 0);
ff.setQuantity(allRequestParams.get("quantity") != null ? Integer.parseInt((String) allRequestParams.remove("quantity")) : 10);
ff.setFilter(allRequestParams);
List<InfraService> serviceList = new LinkedList<>();
Paging<InfraService> infraServicePaging = infraService.getRandomResources(ff, auditingInterval, auth);
for (InfraService infraService : infraServicePaging.getResults()) {
serviceList.add(infraService);
}
Paging<InfraService> servicePaging = new Paging<>(infraServicePaging.getTotal(), infraServicePaging.getFrom(), infraServicePaging.getTo(), serviceList, infraServicePaging.getFacets());
return new ResponseEntity<>(servicePaging, HttpStatus.OK);
}
Aggregations