53 lines
2.5 KiB
Java
53 lines
2.5 KiB
Java
package eu.eudat.repository;
|
|
|
|
import eu.eudat.file.transformer.executor.FileTransformerExecutor;
|
|
import eu.eudat.file.transformer.model.DescriptionFileTransformerModel;
|
|
import eu.eudat.file.transformer.model.DmpFileTransformerModel;
|
|
import eu.eudat.file.transformer.model.ExtraPropertiesModel;
|
|
import eu.eudat.file.transformer.model.file.FileEnvelope;
|
|
import eu.eudat.file.transformer.model.file.FileFormat;
|
|
import eu.eudat.utilities.webclient.WebClientUtils;
|
|
import org.springframework.core.ParameterizedTypeReference;
|
|
import org.springframework.web.reactive.function.client.WebClient;
|
|
|
|
import javax.management.InvalidApplicationException;
|
|
import java.io.IOException;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
public class TransformerRepository implements FileTransformerExecutor {
|
|
|
|
private final WebClient transformerClient;
|
|
|
|
public TransformerRepository(WebClient transformerClient) {
|
|
this.transformerClient = transformerClient;
|
|
}
|
|
|
|
@Override
|
|
public FileEnvelope exportDmp(DmpFileTransformerModel dmpFileTransformerModel, ExtraPropertiesModel map) throws InvalidApplicationException, IOException {
|
|
return transformerClient.post().uri("/export/dmp", uriBuilder -> WebClientUtils.buildParameters(uriBuilder, map)).bodyValue(dmpFileTransformerModel).exchangeToMono(mono -> mono.bodyToMono(FileEnvelope.class)).block();
|
|
}
|
|
|
|
@Override
|
|
public DmpFileTransformerModel importFileToDmp(FileEnvelope fileEnvelope) {
|
|
return transformerClient.post().uri("/import/dmp").bodyValue(fileEnvelope).exchangeToMono(mono -> mono.bodyToMono(DmpFileTransformerModel.class)).block();
|
|
}
|
|
|
|
@Override
|
|
public FileEnvelope exportDescription(DescriptionFileTransformerModel descriptionFileTransformerModel, ExtraPropertiesModel map) throws InvalidApplicationException, IOException {
|
|
return transformerClient.post().uri("/export/description", uriBuilder -> WebClientUtils.buildParameters(uriBuilder, map)).bodyValue(descriptionFileTransformerModel).exchangeToMono(mono -> mono.bodyToMono(FileEnvelope.class)).block();
|
|
}
|
|
|
|
@Override
|
|
public DescriptionFileTransformerModel importFileToDescription(FileEnvelope fileEnvelope) {
|
|
return transformerClient.post().uri("/import/description").bodyValue(fileEnvelope).exchangeToMono(mono -> mono.bodyToMono(DescriptionFileTransformerModel.class)).block();
|
|
}
|
|
|
|
@Override
|
|
public List<FileFormat> getSupportedFileFormats() {
|
|
return transformerClient.get().uri("/formats").exchangeToMono(mono -> mono.bodyToMono(new ParameterizedTypeReference<List<FileFormat>>() {})).block();
|
|
}
|
|
|
|
|
|
}
|