/*
* 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;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.RendererName;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.Renderer;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.nodes.RendererNode;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.ImmutableMultimap.Builder;
import com.google.common.collect.Maps;
public class RendererUtils {
public static @Nonnull ImmutableMultimap<InstanceIdentifier<?>, RendererName> resolveRenderersByNodes(
@Nullable List<Renderer> renderers) {
if (renderers == null) {
return ImmutableMultimap.of();
}
Builder<InstanceIdentifier<?>, RendererName> renderersByNodeBuilder = ImmutableMultimap.builder();
for (Renderer renderer : renderers) {
if (renderer.getRendererNodes() == null) {
continue;
}
List<RendererNode> rendererNodes = renderer.getRendererNodes().getRendererNode();
if (rendererNodes == null) {
continue;
}
for (RendererNode rendererNode : rendererNodes) {
if (rendererNode.getNodePath() != null) {
renderersByNodeBuilder.put(rendererNode.getNodePath(), renderer.getName());
}
}
}
return renderersByNodeBuilder.build();
}
public static @Nonnull ImmutableMap<RendererName, Renderer> resolveRendererByName(
@Nullable List<Renderer> renderers) {
if (renderers == null) {
return ImmutableMap.of();
}
return Maps.uniqueIndex(renderers, Renderer::getName);
}
}