[CCSDK-1985]GR Toolkit Refactor
[ccsdk/sli/plugins.git] / grToolkit / provider / src / main / java / org / onap / ccsdk / sli / plugins / grtoolkit / data / MemberBuilder.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * openECOMP : SDN-C
4  * ================================================================================
5  * Copyright (C) 2018 AT&T Intellectual Property. All rights
6  *                      reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.ccsdk.sli.plugins.grtoolkit.data;
23
24 import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.plugins.gr.toolkit.rev180926.cluster.health.output.MembersBuilder;
25 import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.plugins.gr.toolkit.rev180926.member.CommitStatusBuilder;
26 import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.plugins.gr.toolkit.rev180926.member.ReplicasBuilder;
27 import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.plugins.gr.toolkit.rev180926.member.LeaderBuilder;
28
29 import java.util.ArrayList;
30 import java.util.List;
31 import java.util.Map;
32
33 /**
34  * Extends the {@code MembersBuilder} generated from the gr-toolkit.yang model.
35  * Uses information from a {@code ClusterActor} to populate the builder fields.
36  *
37  * @author Anthony Haddox
38  * @see ClusterActor
39  * @see org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.plugins.gr.toolkit.rev180926.cluster.health.output.MembersBuilder
40  */
41 public class MemberBuilder extends MembersBuilder {
42     public MemberBuilder(ClusterActor actor) {
43         super();
44         this.setAddress(actor.getNode());
45         this.setRole(actor.getMember());
46         this.setVoting(actor.isVoting());
47         this.setUp(actor.isUp());
48         this.setUnreachable(actor.isUnreachable());
49         populateReplicas(actor.getReplicaShards());
50         populateCommits(actor.getCommits());
51         populateLeader(actor.getShardLeader());
52     }
53
54     private void populateLeader(List<String> shardLeader) {
55         LeaderBuilder builder;
56         this.setLeader(new ArrayList<>());
57         for(String leader : shardLeader) {
58             builder = new LeaderBuilder();
59             builder.setShard(leader);
60             this.getLeader().add(builder.build());
61         }
62     }
63
64     private void populateCommits(Map<String, Integer> commits) {
65         CommitStatusBuilder builder;
66         this.setCommitStatus(new ArrayList<>());
67         for(Map.Entry<String, Integer> entry : commits.entrySet()) {
68             String key = entry.getKey();
69             Integer value = entry.getValue();
70             if(value != 0) {
71                 builder = new CommitStatusBuilder();
72                 builder.setShard(key);
73                 builder.setDelta(value);
74                 this.getCommitStatus().add(builder.build());
75             }
76         }
77     }
78
79     private void populateReplicas(List<String> replicaShards) {
80         ReplicasBuilder builder;
81         this.setReplicas(new ArrayList<>());
82         for(String shard : replicaShards) {
83             builder = new ReplicasBuilder();
84             builder.setShard(shard);
85             this.getReplicas().add(builder.build());
86         }
87     }
88 }