Skip to content

Commit

Permalink
Update risks and risk incidents REST-API
Browse files Browse the repository at this point in the history
  • Loading branch information
hmiguim committed May 7, 2024
1 parent 12a8267 commit d04444b
Show file tree
Hide file tree
Showing 25 changed files with 161 additions and 288 deletions.
Expand Up @@ -7,6 +7,7 @@
*/
package org.roda.core.data.v2.risks;

import java.io.Serial;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
Expand All @@ -15,14 +16,18 @@
import org.roda.core.data.v2.index.IsIndexed;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;

@jakarta.xml.bind.annotation.XmlRootElement(name = RodaConstants.RODA_OBJECT_RISK)
@JsonInclude(JsonInclude.Include.ALWAYS)
public class IndexedRisk extends Risk implements IsIndexed {

@Serial
private static final long serialVersionUID = 2864416437668370485L;
private int incidencesCount = 0;
private int unmitigatedIncidencesCount = 0;

private boolean hasVersions = false;
private Map<String, Object> fields;

public IndexedRisk() {
Expand All @@ -32,6 +37,8 @@ public IndexedRisk() {
public IndexedRisk(IndexedRisk risk) {
super(risk);
this.incidencesCount = risk.getIncidencesCount();
this.unmitigatedIncidencesCount = risk.getUnmitigatedIncidencesCount();
this.hasVersions = risk.hasVersions();
}

public int getIncidencesCount() {
Expand All @@ -50,6 +57,15 @@ public void setUnmitigatedIncidencesCount(int unmitigatedIncidencesCount) {
this.unmitigatedIncidencesCount = unmitigatedIncidencesCount;
}

@JsonProperty("hasVersions")
public boolean hasVersions() {
return hasVersions;
}

public void setHasVersions(boolean hasVersions) {
this.hasVersions = hasVersions;
}

@Override
public String getUUID() {
return getId();
Expand All @@ -73,13 +89,13 @@ public List<String> toCsvHeaders() {

@Override
public List<Object> toCsvValues() {
return Arrays.asList(new Object[] {getId(), getName(), getDescription(), getIdentifiedOn(), getIdentifiedBy(),
getCategories(), getNotes(), getPreMitigationProbability(), getPreMitigationImpact(), getPreMitigationSeverity(),
return Arrays.asList(getId(), getName(), getDescription(), getIdentifiedOn(), getIdentifiedBy(), getCategories(),
getNotes(), getPreMitigationProbability(), getPreMitigationImpact(), getPreMitigationSeverity(),
getPreMitigationNotes(), getPostMitigationProbability(), getPostMitigationImpact(), getPostMitigationSeverity(),
getPreMitigationNotes(), getMitigationStrategy(), getMitigationOwnerType(), getMitigationOwner(),
getMitigationRelatedEventIdentifierType(), getMitigationRelatedEventIdentifierValue(), getCreatedOn(),
getCreatedBy(), getUpdatedOn(), getUpdatedBy(), getIncidencesCount(), getUnmitigatedIncidencesCount(),
getInstanceId()});
getInstanceId());
}

@Override
Expand Down Expand Up @@ -122,9 +138,6 @@ public boolean equals(Object obj) {
IndexedRisk other = (IndexedRisk) obj;
if (incidencesCount != other.incidencesCount)
return false;
if (unmitigatedIncidencesCount != other.unmitigatedIncidencesCount)
return false;
return true;
return unmitigatedIncidencesCount == other.unmitigatedIncidencesCount;
}

}
Expand Up @@ -75,9 +75,9 @@ core.roles.org.roda.wui.api.v2.controller.DisposalRuleController.deleteDisposalR
core.roles.org.roda.wui.api.v2.controller.DisposalRuleController.applyDisposalRules = disposal_schedule.associate

# Indexed risk roles
core.roles.org.roda.wui.api.v2.controller.IndexedRiskController.hasRiskVersions = risk.read
core.roles.org.roda.wui.api.v2.controller.IndexedRiskController.deleteRisk = risk.read
core.roles.org.roda.wui.api.v2.controller.IndexedRiskController.updateRisk = risk.read
core.roles.org.roda.wui.api.v2.controller.RiskController.hasRiskVersions = risk.read
core.roles.org.roda.wui.api.v2.controller.RiskController.deleteRisk = risk.read
core.roles.org.roda.wui.api.v2.controller.RiskController.updateRisk = risk.read

# Risk incidence roles
core.roles.org.roda.wui.api.v2.controller.RiskIncidenceController.deleteRiskIncidences = incidence.read
Expand All @@ -102,8 +102,6 @@ core.roles.org.roda.wui.api.v2.services.IndexService.find(RiskIncidence) = risk.

# Generic findByUuid roles
core.roles.org.roda.wui.api.v2.services.IndexedService.findByUuid(IndexedRisk) = risk.read
core.roles.org.roda.wui.api.v2.controller.IndexedRiskController.findByUuid(User) = risk.read
core.roles.org.roda.wui.api.v2.controller.RiskIncidenceController.findByUuid(User) = incidence.read
core.roles.org.roda.wui.api.v2.services.IndexService.find(IndexedPreservationEvent) = preservation_metadata.read
core.roles.org.roda.wui.api.v2.services.IndexService.find(IndexedPreservationAgent) = preservation_metadata.read
core.roles.org.roda.wui.api.v2.services.IndexService.find(LogEntry) = log_entry.read
Expand Down
Expand Up @@ -42,6 +42,6 @@ public IndexResult<IndexedAIP> find(@RequestBody FindRequest findRequest, String
@Override
public Long count(@RequestBody CountRequest countRequest) {
RequestContext requestContext = RequestUtils.parseHTTPRequest(request);
return indexService.count(IndexedAIP.class, countRequest, requestContext.getUser());
return indexService.count(IndexedAIP.class, countRequest, requestContext);
}
}
Expand Up @@ -75,8 +75,7 @@ public IndexResult<LogEntry> find(@RequestBody FindRequest findRequest, String l
@Override
public Long count(@RequestBody CountRequest countRequest) {
RequestContext requestContext = RequestUtils.parseHTTPRequest(request);
return indexService.count(LogEntry.class, countRequest,
requestContext.getUser());
return indexService.count(LogEntry.class, countRequest, requestContext);
}

@PostMapping(path = "/import", produces = MediaType.APPLICATION_JSON_VALUE)
Expand Down
Expand Up @@ -59,7 +59,7 @@ public IndexResult<DisposalConfirmation> find(@RequestBody FindRequest findReque
@Override
public Long count(@RequestBody CountRequest countRequest) {
RequestContext requestContext = RequestUtils.parseHTTPRequest(request);
return indexService.count(DisposalConfirmation.class, countRequest, requestContext.getUser());
return indexService.count(DisposalConfirmation.class, countRequest, requestContext);
}

@Override
Expand Down
Expand Up @@ -31,6 +31,7 @@
@RestController
@RequestMapping(path = "/api/v2/disposal/schedules")
public class DisposalScheduleController implements DisposalScheduleRestService {

@Autowired
HttpServletRequest request;

Expand Down
Expand Up @@ -48,6 +48,6 @@ public IndexResult<IndexedReport> find(@RequestBody FindRequest findRequest, Str
@Override
public Long count(@RequestBody CountRequest countRequest) {
RequestContext requestContext = RequestUtils.parseHTTPRequest(request);
return indexService.count(IndexedReport.class, countRequest, requestContext.getUser());
return indexService.count(IndexedReport.class, countRequest, requestContext);
}
}
Expand Up @@ -30,6 +30,7 @@
@Tag(name = MetricsController.SWAGGER_ENDPOINT)
public class MetricsController {
public static final String SWAGGER_ENDPOINT = "v2 metrics";

@Autowired
MetricsService metricsService;
@Autowired
Expand Down
Expand Up @@ -29,14 +29,11 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;

@RestController
@RequestMapping(path = "/api/v2/notifications")
@Tag(name = NotificationController.SWAGGER_ENDPOINT)
public class NotificationController implements NotificationRestService {
public static final String SWAGGER_ENDPOINT = "v2 notifications";

@Autowired
private NotificationsService notificationsService;
Expand Down Expand Up @@ -110,6 +107,6 @@ public IndexResult<Notification> find(FindRequest findRequest, String localeStri
@Override
public Long count(@RequestBody CountRequest countRequest) {
RequestContext requestContext = RequestUtils.parseHTTPRequest(request);
return indexService.count(Notification.class, countRequest, requestContext.getUser());
return indexService.count(Notification.class, countRequest, requestContext);
}
}
Expand Up @@ -24,11 +24,11 @@
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;

Expand Down Expand Up @@ -74,11 +74,10 @@ public IndexResult<IndexedPreservationAgent> find(@RequestBody FindRequest findR
@Override
public Long count(CountRequest countRequest) {
RequestContext requestContext = RequestUtils.parseHTTPRequest(request);
return indexService.count(IndexedPreservationAgent.class, countRequest,
requestContext.getUser());
return indexService.count(IndexedPreservationAgent.class, countRequest, requestContext);
}

@RequestMapping(path = "/{id}/binary", method = RequestMethod.GET, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@GetMapping(path = "/{id}/binary", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@Operation(summary = "Downloads preservation agent file", responses = {
@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = StreamingResponseBody.class))),
@ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(implementation = ErrorResponseMessage.class))),
Expand Down
Expand Up @@ -34,11 +34,11 @@
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
Expand Down Expand Up @@ -81,8 +81,7 @@ public IndexResult<IndexedPreservationEvent> find(@RequestBody FindRequest findR
@Override
public Long count(@RequestBody CountRequest countRequest) {
RequestContext requestContext = RequestUtils.parseHTTPRequest(request);
return indexService.count(IndexedPreservationEvent.class, countRequest,
requestContext.getUser());
return indexService.count(IndexedPreservationEvent.class, countRequest, requestContext);
}

@Override
Expand Down Expand Up @@ -143,7 +142,7 @@ public PreservationEventsLinkingObjects getLinkingIdentifierObjects(String id) {
}
}

@RequestMapping(path = "/{id}/binary", method = RequestMethod.GET, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@GetMapping(path = "/{id}/binary", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@Operation(summary = "Downloads preservation event file", responses = {
@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = StreamingResponseBody.class))),
@ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(implementation = ErrorResponseMessage.class))),
Expand Down Expand Up @@ -180,7 +179,7 @@ public ResponseEntity<StreamingResponseBody> downloadBinary(
}
}

@RequestMapping(path = "/{id}/details/html", method = RequestMethod.GET, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@GetMapping(path = "/{id}/details/html", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@Operation(summary = "Gets preservation event details in HTML format", responses = {
@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = StreamingResponseBody.class))),
@ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(implementation = ErrorResponseMessage.class))),
Expand Down

0 comments on commit d04444b

Please sign in to comment.