94 lines
4.4 KiB
Java
94 lines
4.4 KiB
Java
package eu.eudat.file.transformer.executor;
|
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.fasterxml.jackson.databind.SerializationFeature;
|
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
|
import eu.eudat.file.transformer.interfaces.FileTransformerClient;
|
|
import eu.eudat.file.transformer.interfaces.FileTransformerConfiguration;
|
|
import eu.eudat.file.transformer.models.description.DescriptionFileTransformerModel;
|
|
import eu.eudat.file.transformer.models.dmp.DmpFileTransformerModel;
|
|
import eu.eudat.file.transformer.models.misc.FileEnvelope;
|
|
import eu.eudat.file.transformer.models.misc.FileFormat;
|
|
import eu.eudat.file.transformer.rda.Dataset;
|
|
import eu.eudat.file.transformer.rda.Dmp;
|
|
import eu.eudat.file.transformer.rda.RDAModel;
|
|
import eu.eudat.file.transformer.rda.mapper.DatasetRDAMapper;
|
|
import eu.eudat.file.transformer.rda.mapper.DmpRDAMapper;
|
|
import eu.eudat.file.transformer.utils.service.storage.FileStorageService;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import javax.management.InvalidApplicationException;
|
|
import java.io.IOException;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.List;
|
|
|
|
@Service
|
|
public class RdaFileTransformer implements FileTransformerClient {
|
|
|
|
private final DmpRDAMapper dmpRDAMapper;
|
|
private final DatasetRDAMapper descriptionRDAMapper;
|
|
private final ObjectMapper mapper;
|
|
private final FileStorageService fileStorageService;
|
|
|
|
@Autowired
|
|
public RdaFileTransformer(DmpRDAMapper dmpRDAMapper, DatasetRDAMapper descriptionRDAMapper, FileStorageService fileStorageService) {
|
|
this.dmpRDAMapper = dmpRDAMapper;
|
|
this.descriptionRDAMapper = descriptionRDAMapper;
|
|
this.fileStorageService = fileStorageService;
|
|
mapper = new ObjectMapper();
|
|
mapper.registerModule(new JavaTimeModule());
|
|
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
|
|
}
|
|
@Override
|
|
public FileEnvelope exportDmp(DmpFileTransformerModel dmpFileTransformerModel) throws InvalidApplicationException, IOException {
|
|
Dmp dmp = this.dmpRDAMapper.toRDA(dmpFileTransformerModel);
|
|
RDAModel rdaModel = new RDAModel();
|
|
rdaModel.setDmp(dmp);
|
|
String dmpJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(rdaModel);
|
|
FileEnvelope result = new FileEnvelope();
|
|
result.setFilename(dmpFileTransformerModel.getLabel() + ".json");
|
|
result.setFile(this.fileStorageService.storeFile(dmpJson.getBytes(StandardCharsets.UTF_8)));
|
|
return result;
|
|
}
|
|
|
|
@Override
|
|
public FileEnvelope exportDescription(DescriptionFileTransformerModel descriptionFileTransformerModel, String format) throws InvalidApplicationException, IOException {
|
|
Dataset dataset = this.descriptionRDAMapper.toRDA(descriptionFileTransformerModel, this.dmpRDAMapper.toRDA(descriptionFileTransformerModel.getDmp()));
|
|
String dmpJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(dataset);
|
|
FileEnvelope result = new FileEnvelope();
|
|
result.setFilename(descriptionFileTransformerModel.getLabel() + ".json");
|
|
result.setFile(this.fileStorageService.storeFile(dmpJson.getBytes(StandardCharsets.UTF_8)));
|
|
return result;
|
|
}
|
|
|
|
@Override
|
|
public DmpFileTransformerModel importDmp(FileEnvelope fileEnvelope) {
|
|
/*try { //TODO
|
|
String jsonString = String.valueOf(this.fileStorageService.readFile(fileEnvelope.getFile()));
|
|
RDAModel rda = mapper.readValue(jsonString, RDAModel.class);
|
|
DmpFileTransformerModel model = this.dmpRDAMapper.toEntity(rda.getDmp(), )
|
|
} catch (JsonProcessingException e) {
|
|
|
|
}*/
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public DescriptionFileTransformerModel importDescription(FileEnvelope fileEnvelope) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public FileTransformerConfiguration getConfiguration() {
|
|
List<FileFormat> supportedFormats = List.of(new FileFormat("json", false, null));
|
|
FileTransformerConfiguration configuration = new FileTransformerConfiguration();
|
|
configuration.setFileTransformerId("json");
|
|
configuration.setExportVariants(supportedFormats);
|
|
configuration.setImportVariants(supportedFormats);
|
|
return configuration;
|
|
}
|
|
}
|