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