use crate::{
Result, Rudof,
api::conversion::ConversionOperations,
formats::{
ConversionFormat, ConversionMode, DataReaderMode, InputSpec, ResultConversionFormat, ResultConversionMode,
},
};
use std::io;
pub struct ShowSchemaConversionBuilder<'a, W: io::Write> {
rudof: &'a mut Rudof,
schema: &'a InputSpec,
input_mode: &'a ConversionMode,
output_mode: &'a ResultConversionMode,
input_format: &'a ConversionFormat,
output_format: &'a ResultConversionFormat,
writer: &'a mut W,
base: Option<&'a str>,
reader_mode: Option<&'a DataReaderMode>,
shape: Option<&'a str>,
show_time: Option<bool>,
templates_folder: Option<&'a std::path::Path>,
output_folder: Option<&'a std::path::Path>,
}
impl<'a, W: io::Write> ShowSchemaConversionBuilder<'a, W> {
pub(crate) fn new(
rudof: &'a mut Rudof,
schema: &'a InputSpec,
input_mode: &'a ConversionMode,
output_mode: &'a ResultConversionMode,
input_format: &'a ConversionFormat,
output_format: &'a ResultConversionFormat,
writer: &'a mut W,
) -> Self {
Self {
rudof,
schema,
input_mode,
output_mode,
input_format,
output_format,
writer,
base: None,
reader_mode: None,
shape: None,
show_time: None,
templates_folder: None,
output_folder: None,
}
}
pub fn with_base(mut self, base: &'a str) -> Self {
self.base = Some(base);
self
}
pub fn with_reader_mode(mut self, reader_mode: &'a DataReaderMode) -> Self {
self.reader_mode = Some(reader_mode);
self
}
pub fn with_shape(mut self, shape: &'a str) -> Self {
self.shape = Some(shape);
self
}
pub fn with_show_time(mut self, show_time: bool) -> Self {
self.show_time = Some(show_time);
self
}
pub fn with_templates_folder(mut self, templates_folder: &'a std::path::Path) -> Self {
self.templates_folder = Some(templates_folder);
self
}
pub fn with_output_folder(mut self, output_folder: &'a std::path::Path) -> Self {
self.output_folder = Some(output_folder);
self
}
pub fn execute(self) -> Result<()> {
<Rudof as ConversionOperations>::show_schema_conversion(
self.rudof,
self.schema,
self.base,
self.reader_mode,
self.input_mode,
self.output_mode,
self.input_format,
self.output_format,
self.shape,
self.show_time,
self.templates_folder,
self.output_folder,
self.writer,
)
}
}