Spaces:
Build error
Build error
da-autocompliance-dev
/
src
/main
/java
/com
/dalab
/autocompliance
/controller
/ComplianceController.java
| package com.dalab.autocompliance.controller; | |
| import com.dalab.autocompliance.dto.ComplianceReportDefinitionDTO; | |
| import com.dalab.autocompliance.dto.ReportGenerationRequestDTO; | |
| import com.dalab.autocompliance.dto.ReportGenerationResponseDTO; | |
| import com.dalab.autocompliance.dto.ReportJobStatusDTO; | |
| import com.dalab.autocompliance.dto.ComplianceReportDTO; | |
| import com.dalab.autocompliance.dto.AssetComplianceStatusDTO; | |
| import com.dalab.autocompliance.dto.ComplianceControlDTO; | |
| import com.dalab.autocompliance.dto.ControlEvaluationRequestDTO; | |
| import com.dalab.autocompliance.dto.ControlEvaluationResponseDTO; | |
| import com.dalab.autocompliance.service.IComplianceService; | |
| import io.swagger.v3.oas.annotations.Operation; | |
| import io.swagger.v3.oas.annotations.Parameter; | |
| import io.swagger.v3.oas.annotations.responses.ApiResponse; | |
| import io.swagger.v3.oas.annotations.tags.Tag; | |
| import jakarta.validation.Valid; | |
| import lombok.RequiredArgsConstructor; | |
| import org.springframework.http.HttpStatus; | |
| import org.springframework.http.ResponseEntity; | |
| import org.springframework.security.access.prepost.PreAuthorize; | |
| import org.springframework.web.bind.annotation.*; | |
| import java.util.List; | |
| public class ComplianceController { | |
| private final IComplianceService complianceService; | |
| // Broad access to see what reports are available | |
| public ResponseEntity<List<ComplianceReportDefinitionDTO>> listAvailableReportDefinitions() { | |
| List<ComplianceReportDefinitionDTO> definitions = complianceService.listAvailableReportDefinitions(); | |
| return ResponseEntity.ok(definitions); | |
| } | |
| // Users who can trigger generation | |
| public ResponseEntity<ReportGenerationResponseDTO> generateComplianceReport( | |
| String reportType, | |
| ReportGenerationRequestDTO request) { | |
| ReportGenerationResponseDTO response = complianceService.generateComplianceReport(reportType, request); | |
| if ("FAILED_VALIDATION".equals(response.getStatus())) { | |
| return ResponseEntity.badRequest().body(response); | |
| } | |
| return ResponseEntity.status(HttpStatus.ACCEPTED).body(response); | |
| } | |
| // Users who can view job status | |
| public ResponseEntity<ReportJobStatusDTO> getReportGenerationJobStatus( | |
| String jobId) { | |
| ReportJobStatusDTO jobStatus = complianceService.getReportGenerationJobStatus(jobId); | |
| if ("NOT_FOUND".equals(jobStatus.getStatus())) { | |
| return ResponseEntity.status(HttpStatus.NOT_FOUND).body(jobStatus); | |
| } | |
| return ResponseEntity.ok(jobStatus); | |
| } | |
| // Users who can view reports | |
| public ResponseEntity<ComplianceReportDTO> getGeneratedReport( | |
| String reportId) { | |
| ComplianceReportDTO report = complianceService.getGeneratedReport(reportId); | |
| if (report == null) { | |
| return ResponseEntity.notFound().build(); | |
| } | |
| return ResponseEntity.ok(report); | |
| } | |
| public ResponseEntity<AssetComplianceStatusDTO> getAssetComplianceStatus( | |
| String assetId) { | |
| AssetComplianceStatusDTO status = complianceService.getAssetComplianceStatus(assetId); | |
| if ("UNKNOWN".equals(status.getOverallComplianceStatus()) && status.getRelevantReportIds() == null) { // Basic check for 'not found' | |
| return ResponseEntity.status(HttpStatus.NOT_FOUND).body(status); // Provide status with UNKNOWN if created that way | |
| } | |
| return ResponseEntity.ok(status); | |
| } | |
| // Broad access to see available controls | |
| public ResponseEntity<List<ComplianceControlDTO>> listAvailableControls() { | |
| List<ComplianceControlDTO> controls = complianceService.listAvailableControls(); | |
| return ResponseEntity.ok(controls); | |
| } | |
| // Users who can trigger evaluations | |
| public ResponseEntity<ControlEvaluationResponseDTO> evaluateControl( | |
| String controlId, | |
| ControlEvaluationRequestDTO request) { | |
| ControlEvaluationResponseDTO response = complianceService.evaluateControl(controlId, request); | |
| if ("FAILED_VALIDATION".equals(response.getStatus())) { | |
| return ResponseEntity.badRequest().body(response); | |
| } | |
| // Assuming ControlNotFoundException is handled by a global exception handler to return 404 | |
| return ResponseEntity.status(HttpStatus.ACCEPTED).body(response); | |
| } | |
| // TODO: Add endpoint for GET /controls/evaluations/{jobId} (status of a control evaluation job) | |
| } |