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