/*
* Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.groupbasedpolicy.renderer.util;
import java.util.Optional;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.address.endpoints.AddressEndpointKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.absolute.location.LocationType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.absolute.location.location.type.ExternalLocationCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocationKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.RendererEndpointKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.renderer.endpoint.PeerEndpointKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.renderer.endpoint.PeerExternalEndpointKey;
public class AddressEndpointUtils {
public static RendererEndpointKey toRendererEpKey(AddressEndpointKey rendererAdrEpKey) {
return new RendererEndpointKey(rendererAdrEpKey.getAddress(), rendererAdrEpKey.getAddressType(),
rendererAdrEpKey.getContextId(), rendererAdrEpKey.getContextType());
}
public static PeerEndpointKey toPeerEpKey(AddressEndpointKey peerAdrEpKey) {
return new PeerEndpointKey(peerAdrEpKey.getAddress(), peerAdrEpKey.getAddressType(),
peerAdrEpKey.getContextId(), peerAdrEpKey.getContextType());
}
public static PeerExternalEndpointKey toPeerExtEpKey(AddressEndpointKey peerAdrEpKey) {
return new PeerExternalEndpointKey(peerAdrEpKey.getAddress(), peerAdrEpKey.getAddressType(),
peerAdrEpKey.getContextId(), peerAdrEpKey.getContextType());
}
public static AddressEndpointKey fromRendererEpKey(RendererEndpointKey rendererEpKey) {
return new AddressEndpointKey(rendererEpKey.getAddress(), rendererEpKey.getAddressType(),
rendererEpKey.getContextId(), rendererEpKey.getContextType());
}
public static AddressEndpointKey fromPeerEpKey(PeerEndpointKey peerEpKey) {
return new AddressEndpointKey(peerEpKey.getAddress(), peerEpKey.getAddressType(), peerEpKey.getContextId(),
peerEpKey.getContextType());
}
public static AddressEndpointKey fromAddressEndpointWithLocationKey(AddressEndpointWithLocationKey key) {
return new AddressEndpointKey(key.getAddress(), key.getAddressType(), key.getContextId(), key.getContextType());
}
public static AddressEndpointKey fromPeerExtEpKey(PeerExternalEndpointKey peerExtEpKey) {
return new AddressEndpointKey(peerExtEpKey.getAddress(), peerExtEpKey.getAddressType(),
peerExtEpKey.getContextId(), peerExtEpKey.getContextType());
}
/**
* Compares absolute external locations of address end-points in the arguments.
*/
public static boolean sameExternalLocationCase(AddressEndpointWithLocation ae0, AddressEndpointWithLocation ae1) {
if (ae0.getAbsoluteLocation() == null || ae1.getAbsoluteLocation() == null) {
return false;
}
Optional<LocationType> loc0Type = Optional.ofNullable(ae0.getAbsoluteLocation().getLocationType());
Optional<LocationType> loc1Type = Optional.ofNullable(ae1.getAbsoluteLocation().getLocationType());
if (!(loc0Type.isPresent() && loc0Type.get() instanceof ExternalLocationCase)
|| !(loc1Type.isPresent() && loc1Type.get() instanceof ExternalLocationCase)) {
return false;
}
ExternalLocationCase loc0 = (ExternalLocationCase) loc0Type.get();
ExternalLocationCase loc1 = (ExternalLocationCase) loc1Type.get();
return (loc0.getExternalNodeMountPoint() == null || loc1.getExternalNodeMountPoint() == null
|| loc0.getExternalNodeConnector() == null || loc1.getExternalNodeConnector() == null) ? false : loc0
.getExternalNodeMountPoint().toString().equals(loc1.getExternalNodeMountPoint().toString())
&& loc0.getExternalNodeConnector().equals(loc1.getExternalNodeConnector());
}
}