argos/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/FileTransformerController.java

85 lines
3.9 KiB
Java
Raw Normal View History

2023-12-29 16:04:16 +01:00
package eu.eudat.controllers.v2;
import eu.eudat.audit.AuditableAction;
import eu.eudat.controllers.BaseController;
2024-01-05 17:06:16 +01:00
import eu.eudat.file.transformer.models.misc.FileFormat;
2023-12-29 16:04:16 +01:00
import eu.eudat.logic.services.ApiContext;
2024-01-05 17:06:16 +01:00
import eu.eudat.model.file.ExportRequestModel;
import eu.eudat.model.file.FileEnvelope;
2023-12-29 16:04:16 +01:00
import eu.eudat.service.transformer.FileTransformerService;
import gr.cite.commons.web.authz.service.AuthorizationService;
import gr.cite.tools.auditing.AuditService;
import gr.cite.tools.data.censor.CensorFactory;
import gr.cite.tools.logging.LoggerService;
import gr.cite.tools.logging.MapLogEntry;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
2024-01-05 17:06:16 +01:00
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
2023-12-29 16:04:16 +01:00
import org.springframework.web.bind.annotation.*;
2024-01-05 17:06:16 +01:00
import javax.management.InvalidApplicationException;
import java.io.IOException;
import java.nio.file.Files;
2023-12-29 16:04:16 +01:00
import java.util.List;
2024-01-05 17:06:16 +01:00
import java.util.UUID;
2023-12-29 16:04:16 +01:00
@RestController
@CrossOrigin
@RequestMapping(value = {"/api/file-transformer/"})
public class FileTransformerController extends BaseController {
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(FileTransformerController.class));
private final AuthorizationService authorizationService;
2024-01-05 17:06:16 +01:00
private final FileTransformerService fileTransformerService;
2023-12-29 16:04:16 +01:00
private final CensorFactory censorFactory;
private final AuditService auditService;
@Autowired
2024-01-05 17:06:16 +01:00
public FileTransformerController(ApiContext apiContext, AuthorizationService authorizationService, FileTransformerService fileTransformerService, CensorFactory censorFactory, AuditService auditService){
2023-12-29 16:04:16 +01:00
super(apiContext);
this.authorizationService = authorizationService;
2024-01-05 17:06:16 +01:00
this.fileTransformerService = fileTransformerService;
2023-12-29 16:04:16 +01:00
this.censorFactory = censorFactory;
this.auditService = auditService;
}
@GetMapping("/available")
public List<FileFormat> getAvailableConfigurations() {
logger.debug(new MapLogEntry("getAvailableConfigurations"));
2024-01-05 17:06:16 +01:00
List<FileFormat> model = this.fileTransformerService.getAvailableConfigurations();
2023-12-29 16:04:16 +01:00
this.auditService.track(AuditableAction.FileTransformer_GetAvailableConfigurations);
//this.auditService.trackIdentity(AuditableAction.IdentityTracking_Action);
return model;
}
2024-01-05 17:06:16 +01:00
@PostMapping("/export-dmp")
public ResponseEntity<byte[]> export(@RequestBody ExportRequestModel requestModel) throws InvalidApplicationException, IOException {
logger.debug(new MapLogEntry("exporting dmp"));
HttpHeaders headers = new HttpHeaders();
FileEnvelope fileEnvelope = this.fileTransformerService.exportDmp(requestModel.getId(), requestModel.getFormat());
headers.add("Content-Disposition", "attachment;filename=" + fileEnvelope.getFilename());
byte[] data = Files.readAllBytes(fileEnvelope.getFile().toPath());
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity<>(data, headers, HttpStatus.OK);
}
@PostMapping("/export-description")
public ResponseEntity<byte[]> exportDescription(@RequestBody ExportRequestModel requestModel) throws InvalidApplicationException, IOException {
logger.debug(new MapLogEntry("exporting dmp"));
HttpHeaders headers = new HttpHeaders();
FileEnvelope fileEnvelope = this.fileTransformerService.exportDescription(requestModel.getId(), requestModel.getFormat());
headers.add("Content-Disposition", "attachment;filename=" + fileEnvelope.getFilename());
byte[] data = Files.readAllBytes(fileEnvelope.getFile().toPath());
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity<>(data, headers, HttpStatus.OK);
}
2023-12-29 16:04:16 +01:00
}