c38e8eaeb65eadbe10c22bfd42eba8f9f6538584
[genius.git] / mdsalutil / mdsalutil-api / src / main / java / org / opendaylight / genius / mdsalutil / GroupEntity.java
1 /*
2  * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. 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 package org.opendaylight.genius.mdsalutil;
9
10 import java.math.BigInteger;
11 import java.util.List;
12 import java.util.Objects;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupBuilder;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupKey;
17 import org.opendaylight.yangtools.util.EvenMoreObjects;
18
19 public class GroupEntity extends AbstractSwitchEntity {
20     private static final long serialVersionUID = 1L;
21
22     private long groupId;
23     private String groupName;
24     private GroupTypes groupType;
25     private List<BucketInfo> bucketInfos;
26
27     private transient GroupBuilder groupBuilder;
28
29     public GroupEntity(BigInteger dpnId) {
30         super(dpnId);
31     }
32
33     public GroupEntity(long dpnId) {
34         this(BigInteger.valueOf(dpnId));
35     }
36
37     @Override
38     public String toString() {
39         return "GroupEntity [dpnId=" + getDpnId() + ", groupId=" + groupId + ", groupName=" + groupName
40                 + ", groupType=" + groupType + ", bucketInfo=" + bucketInfos + "]";
41     }
42
43     public List<BucketInfo> getBucketInfoList() {
44         return bucketInfos;
45     }
46
47     public GroupBuilder getGroupBuilder() {
48         if (groupBuilder == null) {
49             groupBuilder = new GroupBuilder();
50
51             GroupId groupId = new GroupId(getGroupId());
52             groupBuilder.setKey(new GroupKey(groupId));
53             groupBuilder.setGroupId(groupId);
54
55             groupBuilder.setGroupName(getGroupName());
56             groupBuilder.setGroupType(getGroupType());
57             groupBuilder.setBuckets(MDSALUtil.buildBuckets(getBucketInfoList()));
58         }
59
60         return groupBuilder;
61     }
62
63     public long getGroupId() {
64         return groupId;
65     }
66
67     public String getGroupName() {
68         return groupName;
69     }
70
71     public GroupTypes getGroupType() {
72         return groupType;
73     }
74
75     public void setBucketInfoList(List<BucketInfo> listBucketInfo) {
76         this.bucketInfos = listBucketInfo;
77     }
78
79     public void setGroupId(long groupIdAsLong) {
80         this.groupId = groupIdAsLong;
81         if (this.groupBuilder != null) {
82             GroupId groupId = new GroupId(getGroupId());
83             this.groupBuilder.setKey(new GroupKey(groupId));
84             this.groupBuilder.setGroupId(groupId);
85         }
86     }
87
88     public void setGroupName(String groupName) {
89         this.groupName = groupName;
90         this.groupBuilder = null;
91     }
92
93     public void setGroupType(GroupTypes groupType) {
94         this.groupType = groupType;
95         this.groupBuilder = null;
96     }
97
98     @Override
99     public int hashCode() {
100         return Objects.hash(getDpnId(), groupId, groupName, groupType, bucketInfos);
101     }
102
103     @Override
104     public boolean equals(Object obj) {
105         return EvenMoreObjects.equalsHelper(this, obj,
106             (self, other) -> Objects.equals(self.getDpnId(), other.getDpnId())
107                           && Objects.equals(this.groupId, other.groupId)
108                           && Objects.equals(this.groupName, other.groupName)
109                           && Objects.equals(this.groupType, other.groupType)
110                           && Objects.equals(this.bucketInfos, other.bucketInfos));
111     }
112 }