49 lines
2.3 KiB
Java
49 lines
2.3 KiB
Java
package eu.eudat.repository;
|
|
|
|
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 org.springframework.core.ParameterizedTypeReference;
|
|
import org.springframework.web.reactive.function.client.WebClient;
|
|
|
|
import javax.management.InvalidApplicationException;
|
|
import java.io.IOException;
|
|
|
|
public class TransformerRepository implements FileTransformerClient {
|
|
|
|
private final WebClient transformerClient;
|
|
|
|
public TransformerRepository(WebClient transformerClient) {
|
|
this.transformerClient = transformerClient;
|
|
}
|
|
|
|
@Override
|
|
public FileEnvelope exportDmp(DmpFileTransformerModel dmpFileTransformerModel) throws InvalidApplicationException, IOException {
|
|
return transformerClient.post().uri("/export/dmp").bodyValue(dmpFileTransformerModel).exchangeToMono(mono -> mono.bodyToMono(FileEnvelope.class)).block();
|
|
}
|
|
|
|
@Override
|
|
public DmpFileTransformerModel importDmp(FileEnvelope fileEnvelope) {
|
|
return transformerClient.post().uri("/import/dmp").bodyValue(fileEnvelope).exchangeToMono(mono -> mono.bodyToMono(DmpFileTransformerModel.class)).block();
|
|
}
|
|
|
|
@Override
|
|
public FileEnvelope exportDescription(DescriptionFileTransformerModel descriptionFileTransformerModel, String format) {
|
|
return transformerClient.post().uri("/export/description", uriBuilder -> uriBuilder.queryParam("format", format).build()).bodyValue(descriptionFileTransformerModel).exchangeToMono(mono -> mono.bodyToMono(FileEnvelope.class)).block();
|
|
}
|
|
|
|
@Override
|
|
public DescriptionFileTransformerModel importDescription(FileEnvelope fileEnvelope) {
|
|
return transformerClient.post().uri("/import/description").bodyValue(fileEnvelope).exchangeToMono(mono -> mono.bodyToMono(DescriptionFileTransformerModel.class)).block();
|
|
}
|
|
|
|
@Override
|
|
public FileTransformerConfiguration getConfiguration() {
|
|
return transformerClient.get().uri("/formats").exchangeToMono(mono -> mono.bodyToMono(new ParameterizedTypeReference<FileTransformerConfiguration>() {})).block();
|
|
}
|
|
|
|
|
|
}
|