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