Bug 8228 - metadata service fix made cleaner
[groupbasedpolicy.git] / groupbasedpolicy / src / main / java / org / opendaylight / groupbasedpolicy / renderer / util / AddressEndpointUtils.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. 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
9 package org.opendaylight.groupbasedpolicy.renderer.util;
10
11 import java.util.Optional;
12
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.address.endpoints.AddressEndpointKey;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.absolute.location.LocationType;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.absolute.location.location.type.ExternalLocationCase;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocation;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocationKey;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.RendererEndpointKey;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.renderer.endpoint.PeerEndpointKey;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.renderer.endpoint.PeerExternalEndpointKey;
21
22 public class AddressEndpointUtils {
23
24     public static RendererEndpointKey toRendererEpKey(AddressEndpointKey rendererAdrEpKey) {
25         return new RendererEndpointKey(rendererAdrEpKey.getAddress(), rendererAdrEpKey.getAddressType(),
26                 rendererAdrEpKey.getContextId(), rendererAdrEpKey.getContextType());
27     }
28
29     public static PeerEndpointKey toPeerEpKey(AddressEndpointKey peerAdrEpKey) {
30         return new PeerEndpointKey(peerAdrEpKey.getAddress(), peerAdrEpKey.getAddressType(),
31                 peerAdrEpKey.getContextId(), peerAdrEpKey.getContextType());
32     }
33
34     public static PeerExternalEndpointKey toPeerExtEpKey(AddressEndpointKey peerAdrEpKey) {
35         return new PeerExternalEndpointKey(peerAdrEpKey.getAddress(), peerAdrEpKey.getAddressType(),
36                 peerAdrEpKey.getContextId(), peerAdrEpKey.getContextType());
37     }
38
39     public static AddressEndpointKey fromRendererEpKey(RendererEndpointKey rendererEpKey) {
40         return new AddressEndpointKey(rendererEpKey.getAddress(), rendererEpKey.getAddressType(),
41                 rendererEpKey.getContextId(), rendererEpKey.getContextType());
42     }
43
44     public static AddressEndpointKey fromPeerEpKey(PeerEndpointKey peerEpKey) {
45         return new AddressEndpointKey(peerEpKey.getAddress(), peerEpKey.getAddressType(), peerEpKey.getContextId(),
46                 peerEpKey.getContextType());
47     }
48
49     public static AddressEndpointKey fromAddressEndpointWithLocationKey(AddressEndpointWithLocationKey key) {
50         return new AddressEndpointKey(key.getAddress(), key.getAddressType(), key.getContextId(), key.getContextType());
51     }
52
53     public static AddressEndpointKey fromPeerExtEpKey(PeerExternalEndpointKey peerExtEpKey) {
54         return new AddressEndpointKey(peerExtEpKey.getAddress(), peerExtEpKey.getAddressType(),
55                 peerExtEpKey.getContextId(), peerExtEpKey.getContextType());
56     }
57
58     /**
59      * Compares absolute external locations of address end-points in the arguments.
60      */
61     public static boolean sameExternalLocationCase(AddressEndpointWithLocation ae0, AddressEndpointWithLocation ae1) {
62         if (ae0.getAbsoluteLocation() == null || ae1.getAbsoluteLocation() == null) {
63             return false;
64         }
65         Optional<LocationType> loc0Type = Optional.ofNullable(ae0.getAbsoluteLocation().getLocationType());
66         Optional<LocationType> loc1Type = Optional.ofNullable(ae1.getAbsoluteLocation().getLocationType());
67         if (!(loc0Type.isPresent() && loc0Type.get() instanceof ExternalLocationCase)
68                 || !(loc1Type.isPresent() && loc1Type.get() instanceof ExternalLocationCase)) {
69             return false;
70         }
71         ExternalLocationCase loc0 = (ExternalLocationCase) loc0Type.get();
72         ExternalLocationCase loc1 = (ExternalLocationCase) loc1Type.get();
73         return (loc0.getExternalNodeMountPoint() == null || loc1.getExternalNodeMountPoint() == null
74                 || loc0.getExternalNodeConnector() == null || loc1.getExternalNodeConnector() == null) ? false : loc0
75                     .getExternalNodeMountPoint().toString().equals(loc1.getExternalNodeMountPoint().toString())
76                         && loc0.getExternalNodeConnector().equals(loc1.getExternalNodeConnector());
77     }
78 }