08cec8c6e8f14bdb208f6c229a34f6db907a7410
[groupbasedpolicy.git] / groupbasedpolicy / src / main / java / org / opendaylight / groupbasedpolicy / renderer / RendererUtils.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;
10
11 import java.util.List;
12
13 import javax.annotation.Nonnull;
14 import javax.annotation.Nullable;
15
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.RendererName;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.Renderer;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.nodes.RendererNode;
19 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
20
21 import com.google.common.collect.ImmutableMap;
22 import com.google.common.collect.ImmutableMultimap;
23 import com.google.common.collect.ImmutableMultimap.Builder;
24 import com.google.common.collect.Maps;
25
26 public class RendererUtils {
27
28     public static @Nonnull ImmutableMultimap<InstanceIdentifier<?>, RendererName> resolveRenderersByNodes(
29             @Nullable List<Renderer> renderers) {
30         if (renderers == null) {
31             return ImmutableMultimap.of();
32         }
33         Builder<InstanceIdentifier<?>, RendererName> renderersByNodeBuilder = ImmutableMultimap.builder();
34         for (Renderer renderer : renderers) {
35             List<RendererNode> rendererNodes = renderer.getRendererNodes().getRendererNode();
36             if (rendererNodes == null) {
37                 continue;
38             }
39             for (RendererNode rendererNode : rendererNodes) {
40                 if (rendererNode.getNodePath() != null) {
41                     renderersByNodeBuilder.put(rendererNode.getNodePath(), renderer.getName());
42                 }
43             }
44         }
45         return renderersByNodeBuilder.build();
46     }
47
48     public static @Nonnull ImmutableMap<RendererName, Renderer> resolveRendererByName(
49             @Nullable List<Renderer> renderers) {
50         if (renderers == null) {
51             return ImmutableMap.of();
52         }
53         return Maps.uniqueIndex(renderers, Renderer::getName);
54     }
55 }