automapper_validation/generated/fv2504/
comdis_conditions_fv2504.rs1#[allow(unused_imports)]
8use crate::eval::format_validators::*;
9use crate::eval::{ConditionEvaluator, ConditionResult, EvaluationContext};
10
11pub struct ComdisConditionEvaluatorFV2504 {
13 external_conditions: std::collections::HashSet<u32>,
15}
16
17impl Default for ComdisConditionEvaluatorFV2504 {
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 ComdisConditionEvaluatorFV2504 {
38 fn message_type(&self) -> &str {
39 "COMDIS"
40 }
41
42 fn format_version(&self) -> &str {
43 "FV2504"
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 ComdisConditionEvaluatorFV2504 {
144 fn evaluate_23(&self, ctx: &EvaluationContext) -> ConditionResult {
147 ctx.external.evaluate("sender_is_msb")
148 }
149
150 fn evaluate_24(&self, ctx: &EvaluationContext) -> ConditionResult {
153 ctx.external.evaluate("recipient_is_esa")
154 }
155
156 fn evaluate_25(&self, ctx: &EvaluationContext) -> ConditionResult {
159 ctx.external.evaluate("recipient_is_lf")
160 }
161
162 fn evaluate_26(&self, ctx: &EvaluationContext) -> ConditionResult {
165 ctx.external.evaluate("recipient_is_nb")
166 }
167
168 fn evaluate_27(&self, ctx: &EvaluationContext) -> ConditionResult {
171 ctx.external.evaluate("sender_is_nb")
172 }
173
174 fn evaluate_1(&self, ctx: &EvaluationContext) -> ConditionResult {
176 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
177 let q = seg
178 .elements
179 .first()
180 .and_then(|e| e.first())
181 .map(|s| s.as_str());
182 let p = seg
183 .elements
184 .get(1)
185 .and_then(|e| e.first())
186 .map(|s| s.as_str());
187 matches!(q, Some("Z61") | Some("Z62")) && p == Some("S")
188 }))
189 }
190
191 fn evaluate_2(&self, ctx: &EvaluationContext) -> ConditionResult {
193 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
194 let q = seg
195 .elements
196 .first()
197 .and_then(|e| e.first())
198 .map(|s| s.as_str());
199 let p = seg
200 .elements
201 .get(1)
202 .and_then(|e| e.first())
203 .map(|s| s.as_str());
204 matches!(q, Some("Z58") | Some("Z59") | Some("Z60")) && p == Some("S")
205 }))
206 }
207
208 fn evaluate_3(&self, ctx: &EvaluationContext) -> ConditionResult {
211 ctx.external.evaluate("mp_id_from_electricity_sector")
212 }
213
214 fn evaluate_4(&self, ctx: &EvaluationContext) -> ConditionResult {
216 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
217 let q = seg
218 .elements
219 .first()
220 .and_then(|e| e.first())
221 .map(|s| s.as_str());
222 let p = seg
223 .elements
224 .get(1)
225 .and_then(|e| e.first())
226 .map(|s| s.as_str());
227 matches!(
228 q,
229 Some("Z58") | Some("Z59") | Some("Z60") | Some("Z61") | Some("Z62")
230 ) && p == Some("S")
231 }))
232 }
233
234 fn evaluate_5(&self, ctx: &EvaluationContext) -> ConditionResult {
236 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
237 let q = seg
238 .elements
239 .first()
240 .and_then(|e| e.first())
241 .map(|s| s.as_str());
242 let p = seg
243 .elements
244 .get(1)
245 .and_then(|e| e.first())
246 .map(|s| s.as_str());
247 matches!(
248 q,
249 Some("A01")
250 | Some("A02")
251 | Some("A03")
252 | Some("A04")
253 | Some("A06")
254 | Some("A07")
255 | Some("A09")
256 | Some("A12")
257 | Some("A15")
258 ) && p == Some("E")
259 }))
260 }
261
262 fn evaluate_6(&self, ctx: &EvaluationContext) -> ConditionResult {
264 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
265 let q = seg
266 .elements
267 .first()
268 .and_then(|e| e.first())
269 .map(|s| s.as_str());
270 let p = seg
271 .elements
272 .get(1)
273 .and_then(|e| e.first())
274 .map(|s| s.as_str());
275 q == Some("A07") && p == Some("E")
276 }))
277 }
278
279 fn evaluate_7(&self, ctx: &EvaluationContext) -> ConditionResult {
281 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
282 let q = seg
283 .elements
284 .first()
285 .and_then(|e| e.first())
286 .map(|s| s.as_str());
287 let p = seg
288 .elements
289 .get(1)
290 .and_then(|e| e.first())
291 .map(|s| s.as_str());
292 q == Some("A02") && p == Some("E")
293 }))
294 }
295
296 fn evaluate_8(&self, ctx: &EvaluationContext) -> ConditionResult {
298 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
299 let q = seg
300 .elements
301 .first()
302 .and_then(|e| e.first())
303 .map(|s| s.as_str());
304 let p = seg
305 .elements
306 .get(1)
307 .and_then(|e| e.first())
308 .map(|s| s.as_str());
309 matches!(
310 q,
311 Some("A01") | Some("A04") | Some("A06") | Some("A09") | Some("A12")
312 ) && p == Some("E")
313 }))
314 }
315
316 fn evaluate_9(&self, ctx: &EvaluationContext) -> ConditionResult {
318 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
319 let q = seg
320 .elements
321 .first()
322 .and_then(|e| e.first())
323 .map(|s| s.as_str());
324 let p = seg
325 .elements
326 .get(1)
327 .and_then(|e| e.first())
328 .map(|s| s.as_str());
329 matches!(q, Some("A05") | Some("A10") | Some("A11") | Some("A14")) && p == Some("E")
330 }))
331 }
332
333 fn evaluate_10(&self, ctx: &EvaluationContext) -> ConditionResult {
335 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
336 let q = seg
337 .elements
338 .first()
339 .and_then(|e| e.first())
340 .map(|s| s.as_str());
341 let p = seg
342 .elements
343 .get(1)
344 .and_then(|e| e.first())
345 .map(|s| s.as_str());
346 q == Some("A03") && p == Some("E")
347 }))
348 }
349
350 fn evaluate_11(&self, ctx: &EvaluationContext) -> ConditionResult {
352 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
353 let q = seg
354 .elements
355 .first()
356 .and_then(|e| e.first())
357 .map(|s| s.as_str());
358 let p = seg
359 .elements
360 .get(1)
361 .and_then(|e| e.first())
362 .map(|s| s.as_str());
363 q == Some("A15") && p == Some("E")
364 }))
365 }
366
367 fn evaluate_12(&self, ctx: &EvaluationContext) -> ConditionResult {
369 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
370 let q = seg
371 .elements
372 .first()
373 .and_then(|e| e.first())
374 .map(|s| s.as_str());
375 let p = seg
376 .elements
377 .get(1)
378 .and_then(|e| e.first())
379 .map(|s| s.as_str());
380 q == Some("A99") && p == Some("S")
381 }))
382 }
383
384 fn evaluate_13(&self, ctx: &EvaluationContext) -> ConditionResult {
386 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
387 let q = seg
388 .elements
389 .first()
390 .and_then(|e| e.first())
391 .map(|s| s.as_str());
392 let p = seg
393 .elements
394 .get(1)
395 .and_then(|e| e.first())
396 .map(|s| s.as_str());
397 q == Some("A07") && p == Some("E")
398 }))
399 }
400
401 fn evaluate_14(&self, ctx: &EvaluationContext) -> ConditionResult {
403 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
404 let q = seg
405 .elements
406 .first()
407 .and_then(|e| e.first())
408 .map(|s| s.as_str());
409 let p = seg
410 .elements
411 .get(1)
412 .and_then(|e| e.first())
413 .map(|s| s.as_str());
414 q == Some("A02") && p == Some("E")
415 }))
416 }
417
418 fn evaluate_15(&self, ctx: &EvaluationContext) -> ConditionResult {
420 ConditionResult::from(ctx.find_segments("AJT").iter().any(|seg| {
421 let q = seg
422 .elements
423 .first()
424 .and_then(|e| e.first())
425 .map(|s| s.as_str());
426 let p = seg
427 .elements
428 .get(1)
429 .and_then(|e| e.first())
430 .map(|s| s.as_str());
431 matches!(q, Some("A01") | Some("A04") | Some("A06") | Some("A09")) && p == Some("E")
432 }))
433 }
434
435 fn evaluate_16(&self, ctx: &EvaluationContext) -> ConditionResult {
437 ctx.has_qualified_value("AJT", 0, "A03", 1, 0, &["E_1008"])
438 }
439
440 fn evaluate_17(&self, ctx: &EvaluationContext) -> ConditionResult {
442 ctx.has_qualified_value("AJT", 0, "A15", 1, 0, &["E_1008"])
443 }
444
445 fn evaluate_18(&self, ctx: &EvaluationContext) -> ConditionResult {
447 let ajt_segments = ctx.find_segments("AJT");
448 let found = ajt_segments.iter().any(|seg| {
449 let qual = seg
450 .elements
451 .first()
452 .and_then(|e| e.first())
453 .map(|s| s.as_str());
454 let pos = seg
455 .elements
456 .get(1)
457 .and_then(|e| e.first())
458 .map(|s| s.as_str());
459 matches!(qual, Some("A05") | Some("A10") | Some("A11")) && pos == Some("E_1008")
460 });
461 ConditionResult::from(found)
462 }
463
464 fn evaluate_19(&self, ctx: &EvaluationContext) -> ConditionResult {
466 ctx.has_qualified_value(
467 "AJT",
468 0,
469 "A99",
470 1,
471 0,
472 &["E_0265", "E_0516", "E_0520", "E_0567"],
473 )
474 }
475
476 fn evaluate_20(&self, ctx: &EvaluationContext) -> ConditionResult {
478 let ajt_segments = ctx.find_segments("AJT");
479 let found = ajt_segments.iter().any(|seg| {
480 let qual = seg
481 .elements
482 .first()
483 .and_then(|e| e.first())
484 .map(|s| s.as_str());
485 let pos = seg
486 .elements
487 .get(1)
488 .and_then(|e| e.first())
489 .map(|s| s.as_str());
490 matches!(
491 qual,
492 Some("A01")
493 | Some("A02")
494 | Some("A03")
495 | Some("A04")
496 | Some("A06")
497 | Some("A07")
498 | Some("A09")
499 | Some("A15")
500 ) && pos == Some("E_1008")
501 });
502 ConditionResult::from(found)
503 }
504
505 fn evaluate_21(&self, ctx: &EvaluationContext) -> ConditionResult {
507 let com_segments = ctx.find_segments("COM");
508 ConditionResult::from(com_segments.iter().any(|seg| {
509 seg.elements
510 .first()
511 .and_then(|e| e.get(1))
512 .map(|s| s.as_str())
513 == Some("EM")
514 }))
515 }
516
517 fn evaluate_22(&self, ctx: &EvaluationContext) -> ConditionResult {
519 let com_segments = ctx.find_segments("COM");
520 ConditionResult::from(com_segments.iter().any(|seg| {
521 matches!(
522 seg.elements
523 .first()
524 .and_then(|e| e.get(1))
525 .map(|s| s.as_str()),
526 Some("TE") | Some("FX") | Some("AJ") | Some("AL")
527 )
528 }))
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}