use crate::csaf::traits::util::impl_str_field_getter;
use crate::csaf_traits::ProductIdentificationHelperTrait;
use crate::schema::csaf2_0::schema::{
FullProductNameT as FullProductNameT20, HelperToIdentifyTheProduct as HelperToIdentifyTheProduct20,
};
use crate::schema::csaf2_1::schema::{
FullProductNameT as FullProductNameT21, HelperToIdentifyTheProduct as HelperToIdentifyTheProduct21,
};
pub trait ProductTrait {
type ProductIdentificationHelperType: ProductIdentificationHelperTrait;
fn get_product_id(&self) -> &str;
fn get_name(&self) -> &str;
fn get_product_identification_helper(&self) -> Option<&Self::ProductIdentificationHelperType>;
}
impl ProductTrait for FullProductNameT20 {
type ProductIdentificationHelperType = HelperToIdentifyTheProduct20;
impl_str_field_getter!(get_product_id, product_id);
impl_str_field_getter!(get_name, name);
fn get_product_identification_helper(&self) -> Option<&Self::ProductIdentificationHelperType> {
self.product_identification_helper.as_ref()
}
}
impl ProductTrait for FullProductNameT21 {
type ProductIdentificationHelperType = HelperToIdentifyTheProduct21;
impl_str_field_getter!(get_product_id, product_id);
impl_str_field_getter!(get_name, name);
fn get_product_identification_helper(&self) -> Option<&Self::ProductIdentificationHelperType> {
self.product_identification_helper.as_ref()
}
}