74 lines
3.2 KiB
Java
74 lines
3.2 KiB
Java
package eu.eudat.controllers;
|
|
|
|
import eu.eudat.audit.AuditableAction;
|
|
import eu.eudat.model.file.ExportRequestModel;
|
|
import eu.eudat.model.file.FileEnvelope;
|
|
import eu.eudat.model.file.RepositoryFileFormat;
|
|
import eu.eudat.service.transformer.FileTransformerService;
|
|
import gr.cite.tools.auditing.AuditService;
|
|
import gr.cite.tools.logging.LoggerService;
|
|
import gr.cite.tools.logging.MapLogEntry;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.http.HttpHeaders;
|
|
import org.springframework.http.HttpStatus;
|
|
import org.springframework.http.MediaType;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import javax.management.InvalidApplicationException;
|
|
import java.io.IOException;
|
|
import java.util.List;
|
|
|
|
@RestController
|
|
@CrossOrigin
|
|
@RequestMapping(value = {"/api/file-transformer/"})
|
|
public class FileTransformerController {
|
|
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(FileTransformerController.class));
|
|
|
|
|
|
private final FileTransformerService fileTransformerService;
|
|
private final AuditService auditService;
|
|
|
|
@Autowired
|
|
public FileTransformerController(FileTransformerService fileTransformerService, AuditService auditService){
|
|
this.fileTransformerService = fileTransformerService;
|
|
this.auditService = auditService;
|
|
}
|
|
|
|
@GetMapping("/available")
|
|
public List<RepositoryFileFormat> getAvailableConfigurations() {
|
|
logger.debug(new MapLogEntry("getAvailableConfigurations"));
|
|
|
|
List<RepositoryFileFormat> model = this.fileTransformerService.getAvailableExportFileFormats();
|
|
this.auditService.track(AuditableAction.FileTransformer_GetAvailableConfigurations);
|
|
//this.auditService.trackIdentity(AuditableAction.IdentityTracking_Action);
|
|
|
|
return model;
|
|
}
|
|
|
|
@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.getRepositoryId(), requestModel.getFormat());
|
|
headers.add("Content-Disposition", "attachment;filename=" + fileEnvelope.getFilename());
|
|
byte[] data = fileEnvelope.getFile();
|
|
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
|
|
return new ResponseEntity<>(data, headers, HttpStatus.OK);
|
|
}
|
|
|
|
@PostMapping("/export-description")
|
|
public ResponseEntity<byte[]> exportDescription(@RequestBody ExportRequestModel requestModel) {
|
|
logger.debug(new MapLogEntry("exporting dmp"));
|
|
HttpHeaders headers = new HttpHeaders();
|
|
|
|
FileEnvelope fileEnvelope = this.fileTransformerService.exportDescription(requestModel.getId(), requestModel.getRepositoryId(), requestModel.getFormat());
|
|
headers.add("Content-Disposition", "attachment;filename=" + fileEnvelope.getFilename());
|
|
byte[] data = fileEnvelope.getFile();
|
|
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
|
|
return new ResponseEntity<>(data, headers, HttpStatus.OK);
|
|
}
|
|
}
|