redispatch_xml/documents/
mod.rs1pub mod acknowledgement;
4pub mod activation;
5pub mod kaskade;
6pub mod kostenblatt;
7pub mod network_constraint;
8pub mod planned_resource_schedule;
9pub mod stammdaten;
10pub mod status_request;
11pub mod unavailability;
12
13pub use acknowledgement::AcknowledgementDocument;
14pub use activation::ActivationDocument;
15pub use kaskade::Kaskade;
16pub use kostenblatt::Kostenblatt;
17pub use network_constraint::NetworkConstraintDocument;
18pub use planned_resource_schedule::PlannedResourceScheduleDocument;
19pub use stammdaten::Stammdaten;
20pub use status_request::StatusRequestMarketDocument;
21pub use unavailability::UnavailabilityMarketDocument;
22
23#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
29pub enum DocumentType {
30 Activation,
32 PlannedResourceSchedule,
34 Acknowledgement,
36 Stammdaten,
38 StatusRequest,
40 Unavailability,
42 Kaskade,
44 NetworkConstraint,
46 Kostenblatt,
48}
49
50impl DocumentType {
51 pub fn root_element_name(self) -> &'static str {
53 match self {
54 Self::Activation => "ActivationDocument",
55 Self::PlannedResourceSchedule => "PlannedResourceScheduleDocument",
56 Self::Acknowledgement => "AcknowledgementDocument",
57 Self::Stammdaten => "Stammdaten",
58 Self::StatusRequest => "StatusRequest_MarketDocument",
59 Self::Unavailability => "Unavailability_MarketDocument",
60 Self::Kaskade => "Kaskade",
61 Self::NetworkConstraint => "NetworkConstraintDocument",
62 Self::Kostenblatt => "Kostenblatt",
63 }
64 }
65
66 pub fn expected_namespace(self) -> Option<&'static str> {
68 match self {
69 Self::Activation => Some(activation::NAMESPACE),
70 Self::StatusRequest => Some(status_request::NAMESPACE),
71 Self::Unavailability | Self::Kaskade => Some(kaskade::NAMESPACE),
72 Self::Stammdaten => Some("urn:kwep_stammdaten:1:0"),
73 _ => None,
74 }
75 }
76
77 pub fn from_root_element(name: &str) -> Option<Self> {
82 match name {
83 "ActivationDocument" => Some(Self::Activation),
84 "PlannedResourceScheduleDocument" => Some(Self::PlannedResourceSchedule),
85 "AcknowledgementDocument" => Some(Self::Acknowledgement),
86 "Stammdaten" => Some(Self::Stammdaten),
87 "StatusRequest_MarketDocument" => Some(Self::StatusRequest),
88 "Unavailability_MarketDocument" => Some(Self::Unavailability),
89 "Kaskade" => Some(Self::Kaskade),
90 "NetworkConstraintDocument" => Some(Self::NetworkConstraint),
91 "Kostenblatt" => Some(Self::Kostenblatt),
92 _ => None,
93 }
94 }
95}