use crate::traits::{
SEFunctionSetAssignmentsBase, SEList, SEResource, SESubscribableList, SESubscribableResource,
Validate,
};
use sep2_common_derive::{
SEFunctionSetAssignmentsBase, SEList, SEResource, SESubscribableList, SESubscribableResource,
};
use yaserde::{YaDeserialize, YaSerialize};
use super::{
links::{
CustomerAccountListLink, DERProgramListLink, DemandResponseProgramListLink, FileListLink,
MessagingProgramListLink, PrepaymentListLink, ResponseSetListLink, TariffProfileListLink,
TimeLink, UsagePointListLink,
},
primitives::{String32, Uint32},
types::{MRIDType, SubscribableType, VersionType},
};
#[derive(
Default,
PartialEq,
Eq,
Debug,
Clone,
YaSerialize,
YaDeserialize,
SEResource,
SEFunctionSetAssignmentsBase,
)]
#[yaserde(rename = "FunctionSetAssignmentsBase")]
#[yaserde(namespace = "urn:ieee:std:2030.5:ns")]
pub struct FunctionSetAssignmentsBase {
#[yaserde(rename = "CustomerAccountListLink")]
pub customer_account_list_link: Option<CustomerAccountListLink>,
#[yaserde(rename = "DemandResponseProgramListLink")]
pub demand_response_program_list_link: Option<DemandResponseProgramListLink>,
#[yaserde(rename = "DERProgramListLink")]
pub der_program_list_link: Option<DERProgramListLink>,
#[yaserde(rename = "FileListLink")]
pub file_list_link: Option<FileListLink>,
#[yaserde(rename = "MessagingProgramListLink")]
pub messaging_program_list_link: Option<MessagingProgramListLink>,
#[yaserde(rename = "PrepaymentListLink")]
pub prepayment_list_link: Option<PrepaymentListLink>,
#[yaserde(rename = "ResponseSetListLink")]
pub response_set_list_link: Option<ResponseSetListLink>,
#[yaserde(rename = "TariffProfileListLink")]
pub tariff_profile_list_link: Option<TariffProfileListLink>,
#[yaserde(rename = "TimeLink")]
pub time_link: Option<TimeLink>,
#[yaserde(rename = "UsagePointListLink")]
pub usage_point_list_link: Option<UsagePointListLink>,
#[yaserde(attribute, rename = "href")]
pub href: Option<String>,
}
impl Validate for FunctionSetAssignmentsBase {}
#[derive(
Default,
PartialEq,
Eq,
Debug,
Clone,
YaSerialize,
YaDeserialize,
SEFunctionSetAssignmentsBase,
SEResource,
)]
#[yaserde(rename = "FunctionSetAssignments")]
#[yaserde(namespace = "urn:ieee:std:2030.5:ns")]
pub struct FunctionSetAssignments {
#[yaserde(rename = "mRID")]
pub mrid: MRIDType,
#[yaserde(rename = "description")]
pub description: Option<String32>,
#[yaserde(rename = "version")]
pub version: Option<VersionType>,
#[yaserde(attribute, rename = "subscribable")]
pub subscribable: Option<SubscribableType>,
#[yaserde(rename = "CustomerAccountListLink")]
pub customer_account_list_link: Option<CustomerAccountListLink>,
#[yaserde(rename = "DemandResponseProgramListLink")]
pub demand_response_program_list_link: Option<DemandResponseProgramListLink>,
#[yaserde(rename = "DERProgramListLink")]
pub der_program_list_link: Option<DERProgramListLink>,
#[yaserde(rename = "FileListLink")]
pub file_list_link: Option<FileListLink>,
#[yaserde(rename = "MessagingProgramListLink")]
pub messaging_program_list_link: Option<MessagingProgramListLink>,
#[yaserde(rename = "PrepaymentListLink")]
pub prepayment_list_link: Option<PrepaymentListLink>,
#[yaserde(rename = "ResponseSetListLink")]
pub response_set_list_link: Option<ResponseSetListLink>,
#[yaserde(rename = "TariffProfileListLink")]
pub tariff_profile_list_link: Option<TariffProfileListLink>,
#[yaserde(rename = "TimeLink")]
pub time_link: Option<TimeLink>,
#[yaserde(rename = "UsagePointListLink")]
pub usage_point_list_link: Option<UsagePointListLink>,
#[yaserde(attribute, rename = "href")]
pub href: Option<String>,
}
impl PartialOrd for FunctionSetAssignments {
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
Some(self.cmp(other))
}
}
impl Ord for FunctionSetAssignments {
fn cmp(&self, other: &Self) -> std::cmp::Ordering {
self.mrid.cmp(&other.mrid).reverse()
}
}
impl Validate for FunctionSetAssignments {}
#[derive(
Default,
PartialEq,
Eq,
Debug,
Clone,
YaSerialize,
YaDeserialize,
SESubscribableList,
SEList,
SESubscribableResource,
SEResource,
)]
#[yaserde(rename = "FunctionSetAssignmentsList")]
#[yaserde(namespace = "urn:ieee:std:2030.5:ns")]
pub struct FunctionSetAssignmentsList {
#[yaserde(rename = "FunctionSetAssignments")]
pub function_set_assignments: Vec<FunctionSetAssignments>,
#[yaserde(attribute, rename = "pollRate")]
pub poll_rate: Option<Uint32>,
#[yaserde(attribute, rename = "all")]
pub all: Uint32,
#[yaserde(attribute, rename = "results")]
pub results: Uint32,
#[yaserde(attribute, rename = "subscribable")]
pub subscribable: Option<SubscribableType>,
#[yaserde(attribute, rename = "href")]
pub href: Option<String>,
}
impl Validate for FunctionSetAssignmentsList {}