use crate::{
Result, Rudof,
api::data::DataOperations,
formats::{DataFormat, DataReaderMode, InputSpec},
};
pub struct LoadServiceDescriptionBuilder<'a> {
rudof: &'a mut Rudof,
service: &'a InputSpec,
data_format: Option<&'a DataFormat>,
reader_mode: Option<&'a DataReaderMode>,
base: Option<&'a str>,
}
impl<'a> LoadServiceDescriptionBuilder<'a> {
pub(crate) fn new(rudof: &'a mut Rudof, service: &'a InputSpec) -> Self {
Self {
rudof,
service,
data_format: None,
reader_mode: None,
base: None,
}
}
pub fn with_data_format(mut self, data_format: &'a DataFormat) -> Self {
self.data_format = Some(data_format);
self
}
pub fn with_reader_mode(mut self, reader_mode: &'a DataReaderMode) -> Self {
self.reader_mode = Some(reader_mode);
self
}
pub fn with_base(mut self, base: &'a str) -> Self {
self.base = Some(base);
self
}
pub fn execute(self) -> Result<()> {
<Rudof as DataOperations>::load_service_description(
self.rudof,
self.service,
self.data_format,
self.reader_mode,
self.base,
)
}
}