pub mod acknowledgement;
pub mod activation;
pub mod kaskade;
pub mod kostenblatt;
pub mod network_constraint;
pub mod planned_resource_schedule;
pub mod stammdaten;
pub mod status_request;
pub mod unavailability;
pub use acknowledgement::AcknowledgementDocument;
pub use activation::ActivationDocument;
pub use kaskade::Kaskade;
pub use kostenblatt::Kostenblatt;
pub use network_constraint::NetworkConstraintDocument;
pub use planned_resource_schedule::PlannedResourceScheduleDocument;
pub use stammdaten::Stammdaten;
pub use status_request::StatusRequestMarketDocument;
pub use unavailability::UnavailabilityMarketDocument;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum DocumentType {
Activation,
PlannedResourceSchedule,
Acknowledgement,
Stammdaten,
StatusRequest,
Unavailability,
Kaskade,
NetworkConstraint,
Kostenblatt,
}
impl DocumentType {
pub fn root_element_name(self) -> &'static str {
match self {
Self::Activation => "ActivationDocument",
Self::PlannedResourceSchedule => "PlannedResourceScheduleDocument",
Self::Acknowledgement => "AcknowledgementDocument",
Self::Stammdaten => "Stammdaten",
Self::StatusRequest => "StatusRequest_MarketDocument",
Self::Unavailability => "Unavailability_MarketDocument",
Self::Kaskade => "Kaskade",
Self::NetworkConstraint => "NetworkConstraintDocument",
Self::Kostenblatt => "Kostenblatt",
}
}
pub fn expected_namespace(self) -> Option<&'static str> {
match self {
Self::Activation => Some(activation::NAMESPACE),
Self::StatusRequest => Some(status_request::NAMESPACE),
Self::Unavailability | Self::Kaskade => Some(kaskade::NAMESPACE),
Self::Stammdaten => Some("urn:kwep_stammdaten:1:0"),
_ => None,
}
}
pub fn from_root_element(name: &str) -> Option<Self> {
match name {
"ActivationDocument" => Some(Self::Activation),
"PlannedResourceScheduleDocument" => Some(Self::PlannedResourceSchedule),
"AcknowledgementDocument" => Some(Self::Acknowledgement),
"Stammdaten" => Some(Self::Stammdaten),
"StatusRequest_MarketDocument" => Some(Self::StatusRequest),
"Unavailability_MarketDocument" => Some(Self::Unavailability),
"Kaskade" => Some(Self::Kaskade),
"NetworkConstraintDocument" => Some(Self::NetworkConstraint),
"Kostenblatt" => Some(Self::Kostenblatt),
_ => None,
}
}
}