e61e356ab637a071c666d106b227584ef81c37ea
[mdsal.git] / model / ietf / rfc8294-ietf-routing-types / src / main / java / org / opendaylight / yang / gen / v1 / urn / ietf / params / xml / ns / yang / ietf / routing / types / rev171204 / IetfRoutingUtils.java
1 /*
2  * Copyright (c) 2018, 2022 PANTHEON.tech, s.r.o. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204;
9
10 import static com.google.common.base.Verify.verify;
11 import static com.google.common.base.Verify.verifyNotNull;
12 import static java.util.Objects.requireNonNull;
13
14 import com.google.common.annotations.Beta;
15 import com.google.common.base.Verify;
16 import com.google.common.collect.ImmutableMap;
17 import com.google.common.collect.Maps;
18 import java.util.Arrays;
19 import java.util.regex.Pattern;
20 import org.eclipse.jdt.annotation.NonNullByDefault;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
23 import org.opendaylight.yangtools.yang.common.Uint16;
24 import org.opendaylight.yangtools.yang.common.Uint32;
25
26 /**
27  * Utility methods for dealing with unions in {@code ietf-routing-types.yang}.
28  */
29 @Beta
30 @NonNullByDefault
31 public final class IetfRoutingUtils {
32     private static final ImmutableMap<Ipv4MulticastSourceAddress.Enumeration, Ipv4MulticastSourceAddress>
33         ENUMERATED_IPV4_MCAST_SRC = Arrays.stream(Ipv4MulticastSourceAddress.Enumeration.values()).collect(
34             Maps.toImmutableEnumMap(Verify::verifyNotNull, Ipv4MulticastSourceAddress::new));
35     private static final ImmutableMap<Ipv6MulticastSourceAddress.Enumeration, Ipv6MulticastSourceAddress>
36         ENUMERATED_IPV6_MCAST_SRC = Arrays.stream(Ipv6MulticastSourceAddress.Enumeration.values()).collect(
37             Maps.toImmutableEnumMap(Verify::verifyNotNull, Ipv6MulticastSourceAddress::new));
38     private static final ImmutableMap<TimerValueMilliseconds.Enumeration, TimerValueMilliseconds>
39         ENUMERATED_TIMERVAR_MS = Arrays.stream(TimerValueMilliseconds.Enumeration.values())
40         .collect(Maps.toImmutableEnumMap(Verify::verifyNotNull, TimerValueMilliseconds::new));
41     private static final ImmutableMap<TimerValueSeconds16.Enumeration, TimerValueSeconds16> ENUMERATED_TIMERVAL_16 =
42         Arrays.stream(TimerValueSeconds16.Enumeration.values())
43             .collect(Maps.toImmutableEnumMap(Verify::verifyNotNull, TimerValueSeconds16::new));
44     private static final ImmutableMap<TimerValueSeconds32.Enumeration, TimerValueSeconds32> ENUMERATED_TIMERVAL_32 =
45         Arrays.stream(TimerValueSeconds32.Enumeration.values())
46             .collect(Maps.toImmutableEnumMap(Verify::verifyNotNull, TimerValueSeconds32::new));
47
48     private static final Pattern IP_MCAST_GRP_ADDR_IPV4_PATTERN;
49
50     static {
51         verify(Ipv4Address.PATTERN_CONSTANTS.size() == 1);
52         IP_MCAST_GRP_ADDR_IPV4_PATTERN = Pattern.compile(Ipv4MulticastGroupAddress.PATTERN_CONSTANTS.get(0));
53     }
54
55     private IetfRoutingUtils() {
56         // Hidden on purpose
57     }
58
59     public static IpMulticastGroupAddress ipMulticastGroupAddressFor(final String str) {
60         return IP_MCAST_GRP_ADDR_IPV4_PATTERN.matcher(str).matches()
61             ? new IpMulticastGroupAddress(new Ipv4MulticastGroupAddress(str))
62                 : new IpMulticastGroupAddress(new Ipv6MulticastGroupAddress(str));
63     }
64
65     public static Ipv4MulticastSourceAddress ipv4MulticastSourceAddressFor(final String str) {
66         final var enumeration = Ipv4MulticastSourceAddress.Enumeration.forName(str);
67         return enumeration != null ? ipv4MulticastSourceAddressFor(enumeration)
68             : new Ipv4MulticastSourceAddress(new Ipv4Address(str));
69     }
70
71     public static Ipv4MulticastSourceAddress ipv4MulticastSourceAddressFor(
72             final Ipv4MulticastSourceAddress.Enumeration enumeration) {
73         return verifyNotNull(ENUMERATED_IPV4_MCAST_SRC.get(requireNonNull(enumeration)));
74     }
75
76     public static Ipv6MulticastSourceAddress ipv6MulticastSourceAddressFor(final String str) {
77         final var enumeration = Ipv6MulticastSourceAddress.Enumeration.forName(str);
78         return enumeration != null ? ipv6MulticastSourceAddressFor(enumeration)
79             : new Ipv6MulticastSourceAddress(new Ipv6Address(str));
80     }
81
82     public static Ipv6MulticastSourceAddress ipv6MulticastSourceAddressFor(
83             final Ipv6MulticastSourceAddress.Enumeration enumeration) {
84         return verifyNotNull(ENUMERATED_IPV6_MCAST_SRC.get(requireNonNull(enumeration)));
85     }
86
87     public static TimerValueMilliseconds timerValueMillisecondsFor(final String str) {
88         final var enumeration = TimerValueMilliseconds.Enumeration.forName(str);
89         return enumeration != null ? timerValueMillisecondsFor(enumeration)
90             : new TimerValueMilliseconds(Uint32.valueOf(str));
91     }
92
93     public static TimerValueMilliseconds timerValueMillisecondsFor(
94             final TimerValueMilliseconds.Enumeration enumeration) {
95         return verifyNotNull(ENUMERATED_TIMERVAR_MS.get(requireNonNull(enumeration)));
96     }
97
98     public static TimerValueSeconds16 timerValueSeconds16For(final String str) {
99         final var enumeration = TimerValueSeconds16.Enumeration.forName(str);
100         return enumeration != null ? timerValueSeconds16For(enumeration) : new TimerValueSeconds16(Uint16.valueOf(str));
101     }
102
103     public static TimerValueSeconds16 timerValueSeconds16For(
104             final TimerValueSeconds16.Enumeration enumeration) {
105         return verifyNotNull(ENUMERATED_TIMERVAL_16.get(requireNonNull(enumeration)));
106     }
107
108     public static TimerValueSeconds32 timerValueSeconds32For(final String str) {
109         final var enumeration = TimerValueSeconds32.Enumeration.forName(str);
110         return enumeration != null ? timerValueSeconds32For(enumeration) : new TimerValueSeconds32(Uint32.valueOf(str));
111     }
112
113     public static TimerValueSeconds32 timerValueSeconds32For(final TimerValueSeconds32.Enumeration enumeration) {
114         return verifyNotNull(ENUMERATED_TIMERVAL_32.get(requireNonNull(enumeration)));
115     }
116 }