automapper_validation/generated/fv2510/
comdis_conditions_fv2510.rs1#[allow(unused_imports)]
8use crate::eval::format_validators::*;
9use crate::eval::{ConditionEvaluator, ConditionResult, EvaluationContext};
10
11pub struct ComdisConditionEvaluatorFV2510 {
13 external_conditions: std::collections::HashSet<u32>,
15}
16
17impl Default for ComdisConditionEvaluatorFV2510 {
18 fn default() -> Self {
19 let mut external_conditions = std::collections::HashSet::new();
20 external_conditions.insert(3);
21 external_conditions.insert(23);
22 external_conditions.insert(24);
23 external_conditions.insert(25);
24 external_conditions.insert(26);
25 external_conditions.insert(27);
26 external_conditions.insert(28);
27 external_conditions.insert(29);
28 external_conditions.insert(30);
29 external_conditions.insert(492);
30 external_conditions.insert(493);
31 Self {
32 external_conditions,
33 }
34 }
35}
36
37impl ConditionEvaluator for ComdisConditionEvaluatorFV2510 {
38 fn message_type(&self) -> &str {
39 "COMDIS"
40 }
41
42 fn format_version(&self) -> &str {
43 "FV2510"
44 }
45
46 fn evaluate(&self, condition: u32, ctx: &EvaluationContext) -> ConditionResult {
47 match condition {
48 1 => self.evaluate_1(ctx),
49 2 => self.evaluate_2(ctx),
50 3 => self.evaluate_3(ctx),
51 4 => self.evaluate_4(ctx),
52 5 => self.evaluate_5(ctx),
53 6 => self.evaluate_6(ctx),
54 7 => self.evaluate_7(ctx),
55 8 => self.evaluate_8(ctx),
56 9 => self.evaluate_9(ctx),
57 10 => self.evaluate_10(ctx),
58 11 => self.evaluate_11(ctx),
59 12 => self.evaluate_12(ctx),
60 13 => self.evaluate_13(ctx),
61 14 => self.evaluate_14(ctx),
62 15 => self.evaluate_15(ctx),
63 16 => self.evaluate_16(ctx),
64 17 => self.evaluate_17(ctx),
65 18 => self.evaluate_18(ctx),
66 19 => self.evaluate_19(ctx),
67 20 => self.evaluate_20(ctx),
68 21 => self.evaluate_21(ctx),
69 22 => self.evaluate_22(ctx),
70 23 => self.evaluate_23(ctx),
71 24 => self.evaluate_24(ctx),
72 25 => self.evaluate_25(ctx),
73 26 => self.evaluate_26(ctx),
74 27 => self.evaluate_27(ctx),
75 28 => self.evaluate_28(ctx),
76 29 => self.evaluate_29(ctx),
77 30 => self.evaluate_30(ctx),
78 492 => self.evaluate_492(ctx),
79 493 => self.evaluate_493(ctx),
80 505 => self.evaluate_505(ctx),
81 506 => self.evaluate_506(ctx),
82 508 => self.evaluate_508(ctx),
83 509 => self.evaluate_509(ctx),
84 510 => self.evaluate_510(ctx),
85 930 => self.evaluate_930(ctx),
86 931 => self.evaluate_931(ctx),
87 939 => self.evaluate_939(ctx),
88 940 => self.evaluate_940(ctx),
89 _ => ConditionResult::Unknown,
90 }
91 }
92
93 fn is_external(&self, condition: u32) -> bool {
94 self.external_conditions.contains(&condition)
95 }
96 fn is_known(&self, condition: u32) -> bool {
97 matches!(
98 condition,
99 1 | 2
100 | 3
101 | 4
102 | 5
103 | 6
104 | 7
105 | 8
106 | 9
107 | 10
108 | 11
109 | 12
110 | 13
111 | 14
112 | 15
113 | 16
114 | 17
115 | 18
116 | 19
117 | 20
118 | 21
119 | 22
120 | 23
121 | 24
122 | 25
123 | 26
124 | 27
125 | 28
126 | 29
127 | 30
128 | 492
129 | 493
130 | 505
131 | 506
132 | 508
133 | 509
134 | 510
135 | 930
136 | 931
137 | 939
138 | 940
139 )
140 }
141}
142
143impl ComdisConditionEvaluatorFV2510 {
144 fn evaluate_19(&self, ctx: &EvaluationContext) -> ConditionResult {
146 ctx.has_qualified_value(
147 "AJT",
148 0,
149 "A99",
150 1,
151 0,
152 &["E_0265", "E_0271", "E_0274", "E_0516", "E_0520", "E_0567"],
153 )
154 }
155
156 fn evaluate_1(&self, ctx: &EvaluationContext) -> ConditionResult {
158 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
159 let q = seg
160 .elements
161 .first()
162 .and_then(|e| e.first())
163 .map(|s| s.as_str());
164 let p = seg
165 .elements
166 .get(1)
167 .and_then(|e| e.first())
168 .map(|s| s.as_str());
169 matches!(q, Some("Z61") | Some("Z62")) && p == Some("S")
170 }))
171 }
172
173 fn evaluate_2(&self, ctx: &EvaluationContext) -> ConditionResult {
175 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
176 let q = seg
177 .elements
178 .first()
179 .and_then(|e| e.first())
180 .map(|s| s.as_str());
181 let p = seg
182 .elements
183 .get(1)
184 .and_then(|e| e.first())
185 .map(|s| s.as_str());
186 matches!(q, Some("Z58") | Some("Z59") | Some("Z60")) && p == Some("S")
187 }))
188 }
189
190 fn evaluate_3(&self, ctx: &EvaluationContext) -> ConditionResult {
193 ctx.external.evaluate("mp_id_from_electricity_sector")
194 }
195
196 fn evaluate_4(&self, ctx: &EvaluationContext) -> ConditionResult {
198 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
199 let q = seg
200 .elements
201 .first()
202 .and_then(|e| e.first())
203 .map(|s| s.as_str());
204 let p = seg
205 .elements
206 .get(1)
207 .and_then(|e| e.first())
208 .map(|s| s.as_str());
209 matches!(
210 q,
211 Some("Z58") | Some("Z59") | Some("Z60") | Some("Z61") | Some("Z62")
212 ) && p == Some("S")
213 }))
214 }
215
216 fn evaluate_5(&self, ctx: &EvaluationContext) -> ConditionResult {
218 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
219 let q = seg
220 .elements
221 .first()
222 .and_then(|e| e.first())
223 .map(|s| s.as_str());
224 let p = seg
225 .elements
226 .get(1)
227 .and_then(|e| e.first())
228 .map(|s| s.as_str());
229 matches!(
230 q,
231 Some("A01")
232 | Some("A02")
233 | Some("A03")
234 | Some("A04")
235 | Some("A06")
236 | Some("A07")
237 | Some("A09")
238 | Some("A12")
239 | Some("A15")
240 ) && p == Some("E")
241 }))
242 }
243
244 fn evaluate_6(&self, ctx: &EvaluationContext) -> ConditionResult {
246 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
247 let q = seg
248 .elements
249 .first()
250 .and_then(|e| e.first())
251 .map(|s| s.as_str());
252 let p = seg
253 .elements
254 .get(1)
255 .and_then(|e| e.first())
256 .map(|s| s.as_str());
257 q == Some("A07") && p == Some("E")
258 }))
259 }
260
261 fn evaluate_7(&self, ctx: &EvaluationContext) -> ConditionResult {
263 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
264 let q = seg
265 .elements
266 .first()
267 .and_then(|e| e.first())
268 .map(|s| s.as_str());
269 let p = seg
270 .elements
271 .get(1)
272 .and_then(|e| e.first())
273 .map(|s| s.as_str());
274 q == Some("A02") && p == Some("E")
275 }))
276 }
277
278 fn evaluate_8(&self, ctx: &EvaluationContext) -> ConditionResult {
280 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
281 let q = seg
282 .elements
283 .first()
284 .and_then(|e| e.first())
285 .map(|s| s.as_str());
286 let p = seg
287 .elements
288 .get(1)
289 .and_then(|e| e.first())
290 .map(|s| s.as_str());
291 matches!(
292 q,
293 Some("A01") | Some("A04") | Some("A06") | Some("A09") | Some("A12")
294 ) && p == Some("E")
295 }))
296 }
297
298 fn evaluate_9(&self, ctx: &EvaluationContext) -> ConditionResult {
300 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
301 let q = seg
302 .elements
303 .first()
304 .and_then(|e| e.first())
305 .map(|s| s.as_str());
306 let p = seg
307 .elements
308 .get(1)
309 .and_then(|e| e.first())
310 .map(|s| s.as_str());
311 matches!(q, Some("A05") | Some("A10") | Some("A11") | Some("A14")) && p == Some("E")
312 }))
313 }
314
315 fn evaluate_10(&self, ctx: &EvaluationContext) -> ConditionResult {
317 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
318 let q = seg
319 .elements
320 .first()
321 .and_then(|e| e.first())
322 .map(|s| s.as_str());
323 let p = seg
324 .elements
325 .get(1)
326 .and_then(|e| e.first())
327 .map(|s| s.as_str());
328 q == Some("A03") && p == Some("E")
329 }))
330 }
331
332 fn evaluate_11(&self, ctx: &EvaluationContext) -> ConditionResult {
334 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
335 let q = seg
336 .elements
337 .first()
338 .and_then(|e| e.first())
339 .map(|s| s.as_str());
340 let p = seg
341 .elements
342 .get(1)
343 .and_then(|e| e.first())
344 .map(|s| s.as_str());
345 q == Some("A15") && p == Some("E")
346 }))
347 }
348
349 fn evaluate_12(&self, ctx: &EvaluationContext) -> ConditionResult {
351 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
352 let q = seg
353 .elements
354 .first()
355 .and_then(|e| e.first())
356 .map(|s| s.as_str());
357 let p = seg
358 .elements
359 .get(1)
360 .and_then(|e| e.first())
361 .map(|s| s.as_str());
362 q == Some("A99") && p == Some("S")
363 }))
364 }
365
366 fn evaluate_13(&self, ctx: &EvaluationContext) -> ConditionResult {
368 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
369 let q = seg
370 .elements
371 .first()
372 .and_then(|e| e.first())
373 .map(|s| s.as_str());
374 let p = seg
375 .elements
376 .get(1)
377 .and_then(|e| e.first())
378 .map(|s| s.as_str());
379 q == Some("A07") && p == Some("E")
380 }))
381 }
382
383 fn evaluate_14(&self, ctx: &EvaluationContext) -> ConditionResult {
385 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
386 let q = seg
387 .elements
388 .first()
389 .and_then(|e| e.first())
390 .map(|s| s.as_str());
391 let p = seg
392 .elements
393 .get(1)
394 .and_then(|e| e.first())
395 .map(|s| s.as_str());
396 q == Some("A02") && p == Some("E")
397 }))
398 }
399
400 fn evaluate_15(&self, ctx: &EvaluationContext) -> ConditionResult {
402 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
403 let q = seg
404 .elements
405 .first()
406 .and_then(|e| e.first())
407 .map(|s| s.as_str());
408 let p = seg
409 .elements
410 .get(1)
411 .and_then(|e| e.first())
412 .map(|s| s.as_str());
413 matches!(q, Some("A01") | Some("A04") | Some("A06") | Some("A09")) && p == Some("E")
414 }))
415 }
416
417 fn evaluate_16(&self, ctx: &EvaluationContext) -> ConditionResult {
419 ctx.has_qualified_value("AJT", 0, "A03", 1, 0, &["E_1008"])
420 }
421
422 fn evaluate_17(&self, ctx: &EvaluationContext) -> ConditionResult {
424 ctx.has_qualified_value("AJT", 0, "A15", 1, 0, &["E_1008"])
425 }
426
427 fn evaluate_18(&self, ctx: &EvaluationContext) -> ConditionResult {
429 let ajt_segments = ctx.find_segments("AJT");
430 let found = ajt_segments.iter().any(|seg| {
431 let qual = seg
432 .elements
433 .first()
434 .and_then(|e| e.first())
435 .map(|s| s.as_str());
436 let pos = seg
437 .elements
438 .get(1)
439 .and_then(|e| e.first())
440 .map(|s| s.as_str());
441 matches!(qual, Some("A05") | Some("A10") | Some("A11")) && pos == Some("E_1008")
442 });
443 ConditionResult::from(found)
444 }
445
446 fn evaluate_20(&self, ctx: &EvaluationContext) -> ConditionResult {
448 let ajt_segments = ctx.find_segments("AJT");
449 let found = ajt_segments.iter().any(|seg| {
450 let qual = seg
451 .elements
452 .first()
453 .and_then(|e| e.first())
454 .map(|s| s.as_str());
455 let pos = seg
456 .elements
457 .get(1)
458 .and_then(|e| e.first())
459 .map(|s| s.as_str());
460 matches!(
461 qual,
462 Some("A01")
463 | Some("A02")
464 | Some("A03")
465 | Some("A04")
466 | Some("A06")
467 | Some("A07")
468 | Some("A09")
469 | Some("A15")
470 ) && pos == Some("E_1008")
471 });
472 ConditionResult::from(found)
473 }
474
475 fn evaluate_21(&self, ctx: &EvaluationContext) -> ConditionResult {
477 let com_segments = ctx.find_segments("COM");
478 ConditionResult::from(com_segments.iter().any(|seg| {
479 seg.elements
480 .first()
481 .and_then(|e| e.get(1))
482 .map(|s| s.as_str())
483 == Some("EM")
484 }))
485 }
486
487 fn evaluate_22(&self, ctx: &EvaluationContext) -> ConditionResult {
489 let com_segments = ctx.find_segments("COM");
490 ConditionResult::from(com_segments.iter().any(|seg| {
491 matches!(
492 seg.elements
493 .first()
494 .and_then(|e| e.get(1))
495 .map(|s| s.as_str()),
496 Some("TE") | Some("FX") | Some("AJ") | Some("AL")
497 )
498 }))
499 }
500
501 fn evaluate_23(&self, ctx: &EvaluationContext) -> ConditionResult {
504 ctx.external.evaluate("sender_is_msb")
505 }
506
507 fn evaluate_24(&self, ctx: &EvaluationContext) -> ConditionResult {
510 ctx.external.evaluate("recipient_is_esa")
511 }
512
513 fn evaluate_25(&self, ctx: &EvaluationContext) -> ConditionResult {
516 ctx.external.evaluate("recipient_is_lf")
517 }
518
519 fn evaluate_26(&self, ctx: &EvaluationContext) -> ConditionResult {
522 ctx.external.evaluate("recipient_is_nb")
523 }
524
525 fn evaluate_27(&self, ctx: &EvaluationContext) -> ConditionResult {
528 ctx.external.evaluate("sender_is_nb")
529 }
530
531 fn evaluate_28(&self, ctx: &EvaluationContext) -> ConditionResult {
535 ctx.external.evaluate("responding_to_contrl")
536 }
537
538 fn evaluate_29(&self, ctx: &EvaluationContext) -> ConditionResult {
542 ctx.external.evaluate("responding_to_aperak")
543 }
544
545 fn evaluate_30(&self, ctx: &EvaluationContext) -> ConditionResult {
549 ctx.external.evaluate("responding_to_aperak")
550 }
551
552 fn evaluate_492(&self, ctx: &EvaluationContext) -> ConditionResult {
556 ctx.external.evaluate("recipient_is_electricity_sector")
557 }
558
559 fn evaluate_493(&self, ctx: &EvaluationContext) -> ConditionResult {
563 ctx.external.evaluate("recipient_is_gas_sector")
564 }
565
566 fn evaluate_505(&self, _ctx: &EvaluationContext) -> ConditionResult {
568 ConditionResult::True
569 }
570
571 fn evaluate_506(&self, _ctx: &EvaluationContext) -> ConditionResult {
573 ConditionResult::True
574 }
575
576 fn evaluate_508(&self, _ctx: &EvaluationContext) -> ConditionResult {
578 ConditionResult::True
580 }
581
582 fn evaluate_509(&self, _ctx: &EvaluationContext) -> ConditionResult {
584 ConditionResult::True
586 }
587
588 fn evaluate_510(&self, _ctx: &EvaluationContext) -> ConditionResult {
590 ConditionResult::True
592 }
593
594 fn evaluate_930(&self, ctx: &EvaluationContext) -> ConditionResult {
597 let segs = ctx.find_segments("MOA");
599 match segs
600 .first()
601 .and_then(|s| s.elements.first())
602 .and_then(|e| e.get(1))
603 {
604 Some(val) => validate_max_decimal_places(val, 2),
605 None => ConditionResult::False, }
607 }
608
609 fn evaluate_931(&self, ctx: &EvaluationContext) -> ConditionResult {
611 let dtm_segs = ctx.find_segments("DTM");
613 match dtm_segs
614 .first()
615 .and_then(|s| s.elements.first())
616 .and_then(|e| e.get(1))
617 {
618 Some(val) => validate_timezone_utc(val),
619 None => ConditionResult::False, }
621 }
622
623 fn evaluate_939(&self, ctx: &EvaluationContext) -> ConditionResult {
625 let segs = ctx.find_segments("COM");
626 match segs
627 .first()
628 .and_then(|s| s.elements.first())
629 .and_then(|e| e.first())
630 {
631 Some(val) => validate_email(val),
632 None => ConditionResult::False, }
634 }
635
636 fn evaluate_940(&self, ctx: &EvaluationContext) -> ConditionResult {
638 let segs = ctx.find_segments("COM");
639 match segs
640 .first()
641 .and_then(|s| s.elements.first())
642 .and_then(|e| e.first())
643 {
644 Some(val) => validate_phone(val),
645 None => ConditionResult::False, }
647 }
648}