use crate::arnalisamplic::{LoadableDevice, Mapping};
use crate::{file_load_json as load_json, LoadPathPattern, Result};
use indexmap::IndexSet;
use std::path::PathBuf;
#[derive(Clone, Debug)]
pub struct Device {
inner: crate::filesystem::Device,
}
impl Device {
pub fn new(inner: crate::filesystem::Device) -> Self {
Device { inner }
}
pub fn sampling_dir(&self, sampling_id: &str) -> PathBuf {
self.inner.sampling_dir(sampling_id).join("arnalisamplic")
}
pub fn sampling_mapping_file(
&self,
sampling_id: &str,
mapping_id: &str,
) -> PathBuf {
self.sampling_dir(sampling_id)
.join(format!("{}.json", mapping_id))
}
}
impl LoadableDevice for Device {
fn load_sampling_mapping_index(
&self,
sampling_id: &str,
) -> Result<IndexSet<String>> {
IndexSet::load_path_pattern_from_dir(
self.sampling_dir(sampling_id),
"*.json",
)
}
fn load_sampling_mapping(
&self,
sampling_id: &str,
mapping_id: &str,
) -> Result<Mapping> {
load_json(self.sampling_mapping_file(sampling_id, mapping_id))
}
}