Skip to content

Commit 51f5f5e

Browse files
author
Daniil Zulin
committed
Introduce equals/hashCode methods to classes used for the topic description
1 parent 54ea1d5 commit 51f5f5e

12 files changed

+248
-0
lines changed

topic/src/main/java/tech/ydb/topic/description/Consumer.java

+20
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.HashMap;
66
import java.util.List;
77
import java.util.Map;
8+
import java.util.Objects;
89
import java.util.stream.Collectors;
910

1011
import javax.annotation.Nonnull;
@@ -140,4 +141,23 @@ public Consumer build() {
140141
return new Consumer(this);
141142
}
142143
}
144+
145+
@Override
146+
public boolean equals(Object o) {
147+
if (o == null || getClass() != o.getClass()) {
148+
return false;
149+
}
150+
Consumer consumer = (Consumer) o;
151+
return important == consumer.important &&
152+
Objects.equals(name, consumer.name) &&
153+
Objects.equals(readFrom, consumer.readFrom) &&
154+
Objects.equals(supportedCodecs, consumer.supportedCodecs) &&
155+
Objects.equals(attributes, consumer.attributes) &&
156+
Objects.equals(stats, consumer.stats);
157+
}
158+
159+
@Override
160+
public int hashCode() {
161+
return Objects.hash(name, important, readFrom, supportedCodecs, attributes, stats);
162+
}
143163
}

topic/src/main/java/tech/ydb/topic/description/ConsumerDescription.java

+15
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33

44
import java.util.List;
5+
import java.util.Objects;
56
import java.util.stream.Collectors;
67

78
import tech.ydb.proto.topic.YdbTopic;
@@ -28,4 +29,18 @@ public Consumer getConsumer() {
2829
public List<ConsumerPartitionInfo> getPartitions() {
2930
return partitions;
3031
}
32+
33+
@Override
34+
public boolean equals(Object o) {
35+
if (o == null || getClass() != o.getClass()) {
36+
return false;
37+
}
38+
ConsumerDescription that = (ConsumerDescription) o;
39+
return Objects.equals(consumer, that.consumer) && Objects.equals(partitions, that.partitions);
40+
}
41+
42+
@Override
43+
public int hashCode() {
44+
return Objects.hash(consumer, partitions);
45+
}
3146
}

topic/src/main/java/tech/ydb/topic/description/ConsumerPartitionInfo.java

+29
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.time.Duration;
44
import java.time.Instant;
55
import java.util.List;
6+
import java.util.Objects;
67

78
import tech.ydb.core.utils.ProtobufUtils;
89
import tech.ydb.proto.topic.YdbTopic;
@@ -178,4 +179,32 @@ public int getConnectionNodeId() {
178179
return connectionNodeId;
179180
}
180181
}
182+
183+
@Override
184+
public boolean equals(Object o) {
185+
if (o == null || getClass() != o.getClass()) {
186+
return false;
187+
}
188+
ConsumerPartitionInfo that = (ConsumerPartitionInfo) o;
189+
return partitionId == that.partitionId &&
190+
active == that.active &&
191+
Objects.equals(childPartitionIds, that.childPartitionIds) &&
192+
Objects.equals(parentPartitionIds, that.parentPartitionIds) &&
193+
Objects.equals(partitionStats, that.partitionStats) &&
194+
Objects.equals(consumerStats, that.consumerStats) &&
195+
Objects.equals(location, that.location);
196+
}
197+
198+
@Override
199+
public int hashCode() {
200+
return Objects.hash(
201+
partitionId,
202+
active,
203+
childPartitionIds,
204+
parentPartitionIds,
205+
partitionStats,
206+
consumerStats,
207+
location
208+
);
209+
}
181210
}

topic/src/main/java/tech/ydb/topic/description/MultipleWindowsStat.java

+16
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package tech.ydb.topic.description;
22

3+
import java.util.Objects;
4+
35
import tech.ydb.proto.topic.YdbTopic;
46

57
/**
@@ -33,4 +35,18 @@ public long getPerHour() {
3335
public long getPerDay() {
3436
return perDay;
3537
}
38+
39+
@Override
40+
public boolean equals(Object o) {
41+
if (o == null || getClass() != o.getClass()) {
42+
return false;
43+
}
44+
MultipleWindowsStat that = (MultipleWindowsStat) o;
45+
return perMinute == that.perMinute && perHour == that.perHour && perDay == that.perDay;
46+
}
47+
48+
@Override
49+
public int hashCode() {
50+
return Objects.hash(perMinute, perHour, perDay);
51+
}
3652
}

topic/src/main/java/tech/ydb/topic/description/PartitionInfo.java

+19
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.ArrayList;
44
import java.util.List;
5+
import java.util.Objects;
56

67
import com.google.common.collect.ImmutableList;
78

@@ -86,4 +87,22 @@ public PartitionInfo build() {
8687
return new PartitionInfo(this);
8788
}
8889
}
90+
91+
@Override
92+
public boolean equals(Object o) {
93+
if (o == null || getClass() != o.getClass()) {
94+
return false;
95+
}
96+
PartitionInfo that = (PartitionInfo) o;
97+
return partitionId == that.partitionId &&
98+
active == that.active &&
99+
Objects.equals(childPartitionIds, that.childPartitionIds) &&
100+
Objects.equals(parentPartitionIds, that.parentPartitionIds) &&
101+
Objects.equals(partitionStats, that.partitionStats);
102+
}
103+
104+
@Override
105+
public int hashCode() {
106+
return Objects.hash(partitionId, active, childPartitionIds, parentPartitionIds, partitionStats);
107+
}
89108
}

topic/src/main/java/tech/ydb/topic/description/PartitionStats.java

+27
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.time.Duration;
44
import java.time.Instant;
5+
import java.util.Objects;
56

67
import javax.annotation.Nullable;
78

@@ -126,4 +127,30 @@ public PartitionStats build() {
126127
return new PartitionStats(this);
127128
}
128129
}
130+
131+
@Override
132+
public boolean equals(Object o) {
133+
if (o == null || getClass() != o.getClass()) {
134+
return false;
135+
}
136+
PartitionStats that = (PartitionStats) o;
137+
return storeSizeBytes == that.storeSizeBytes &&
138+
partitionNodeId == that.partitionNodeId &&
139+
Objects.equals(partitionOffsets, that.partitionOffsets) &&
140+
Objects.equals(lastWriteTime, that.lastWriteTime) &&
141+
Objects.equals(maxWriteTimeLag, that.maxWriteTimeLag) &&
142+
Objects.equals(bytesWritten, that.bytesWritten);
143+
}
144+
145+
@Override
146+
public int hashCode() {
147+
return Objects.hash(
148+
partitionOffsets,
149+
storeSizeBytes,
150+
lastWriteTime,
151+
maxWriteTimeLag,
152+
bytesWritten,
153+
partitionNodeId
154+
);
155+
}
129156
}

topic/src/main/java/tech/ydb/topic/description/SupportedCodecs.java

+15
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.ArrayList;
44
import java.util.List;
5+
import java.util.Objects;
56

67
import com.google.common.collect.ImmutableList;
78

@@ -47,4 +48,18 @@ public SupportedCodecs build() {
4748
return new SupportedCodecs(this);
4849
}
4950
}
51+
52+
@Override
53+
public boolean equals(Object o) {
54+
if (o == null || getClass() != o.getClass()) {
55+
return false;
56+
}
57+
SupportedCodecs that = (SupportedCodecs) o;
58+
return Objects.equals(codecs, that.codecs);
59+
}
60+
61+
@Override
62+
public int hashCode() {
63+
return Objects.hashCode(codecs);
64+
}
5065
}

topic/src/main/java/tech/ydb/topic/description/TopicDescription.java

+37
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.ArrayList;
55
import java.util.List;
66
import java.util.Map;
7+
import java.util.Objects;
78

89
import javax.annotation.Nonnull;
910
import javax.annotation.Nullable;
@@ -179,4 +180,40 @@ public TopicDescription build() {
179180
return new TopicDescription(this);
180181
}
181182
}
183+
184+
@Override
185+
public boolean equals(Object o) {
186+
if (o == null || getClass() != o.getClass()) {
187+
return false;
188+
}
189+
TopicDescription that = (TopicDescription) o;
190+
return retentionStorageMb == that.retentionStorageMb &&
191+
partitionWriteSpeedBytesPerSecond == that.partitionWriteSpeedBytesPerSecond &&
192+
partitionWriteBurstBytes == that.partitionWriteBurstBytes &&
193+
Objects.equals(partitioningSettings, that.partitioningSettings) &&
194+
Objects.equals(partitions, that.partitions) &&
195+
Objects.equals(retentionPeriod, that.retentionPeriod) &&
196+
Objects.equals(supportedCodecs, that.supportedCodecs) &&
197+
Objects.equals(attributes, that.attributes) &&
198+
Objects.equals(consumers, that.consumers) &&
199+
meteringMode == that.meteringMode &&
200+
Objects.equals(topicStats, that.topicStats);
201+
}
202+
203+
@Override
204+
public int hashCode() {
205+
return Objects.hash(
206+
partitioningSettings,
207+
partitions,
208+
retentionPeriod,
209+
retentionStorageMb,
210+
supportedCodecs,
211+
partitionWriteSpeedBytesPerSecond,
212+
partitionWriteBurstBytes,
213+
attributes,
214+
consumers,
215+
meteringMode,
216+
topicStats
217+
);
218+
}
182219
}

topic/src/main/java/tech/ydb/topic/description/TopicStats.java

+18
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.time.Duration;
44
import java.time.Instant;
5+
import java.util.Objects;
56

67
import javax.annotation.Nullable;
78

@@ -76,4 +77,21 @@ public TopicStats build() {
7677
return new TopicStats(this);
7778
}
7879
}
80+
81+
@Override
82+
public boolean equals(Object o) {
83+
if (o == null || getClass() != o.getClass()) {
84+
return false;
85+
}
86+
TopicStats that = (TopicStats) o;
87+
return storeSizeBytes == that.storeSizeBytes &&
88+
Objects.equals(minLastWriteTime, that.minLastWriteTime) &&
89+
Objects.equals(maxWriteTimeLag, that.maxWriteTimeLag) &&
90+
Objects.equals(bytesWritten, that.bytesWritten);
91+
}
92+
93+
@Override
94+
public int hashCode() {
95+
return Objects.hash(storeSizeBytes, minLastWriteTime, maxWriteTimeLag, bytesWritten);
96+
}
7997
}

topic/src/main/java/tech/ydb/topic/read/impl/OffsetsRangeImpl.java

+16
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package tech.ydb.topic.read.impl;
22

3+
import java.util.Objects;
4+
35
import tech.ydb.topic.description.OffsetsRange;
46

57
/**
@@ -36,4 +38,18 @@ public void setStart(long start) {
3638
public void setEnd(long end) {
3739
this.end = end;
3840
}
41+
42+
@Override
43+
public boolean equals(Object o) {
44+
if (o == null || getClass() != o.getClass()) {
45+
return false;
46+
}
47+
OffsetsRangeImpl that = (OffsetsRangeImpl) o;
48+
return start == that.start && end == that.end;
49+
}
50+
51+
@Override
52+
public int hashCode() {
53+
return Objects.hash(start, end);
54+
}
3955
}

topic/src/main/java/tech/ydb/topic/settings/AutoPartitioningWriteStrategySettings.java

+17
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package tech.ydb.topic.settings;
22

33
import java.time.Duration;
4+
import java.util.Objects;
45

56
public class AutoPartitioningWriteStrategySettings {
67
private final Duration stabilizationWindow;
@@ -69,4 +70,20 @@ public AutoPartitioningWriteStrategySettings build() {
6970
return new AutoPartitioningWriteStrategySettings(this);
7071
}
7172
}
73+
74+
@Override
75+
public boolean equals(Object o) {
76+
if (o == null || getClass() != o.getClass()) {
77+
return false;
78+
}
79+
AutoPartitioningWriteStrategySettings that = (AutoPartitioningWriteStrategySettings) o;
80+
return upUtilizationPercent == that.upUtilizationPercent &&
81+
downUtilizationPercent == that.downUtilizationPercent &&
82+
Objects.equals(stabilizationWindow, that.stabilizationWindow);
83+
}
84+
85+
@Override
86+
public int hashCode() {
87+
return Objects.hash(stabilizationWindow, upUtilizationPercent, downUtilizationPercent);
88+
}
7289
}

topic/src/main/java/tech/ydb/topic/settings/PartitioningSettings.java

+19
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package tech.ydb.topic.settings;
22

3+
import java.util.Objects;
4+
35
/**
46
* @author Nikolay Perfilov
57
*/
@@ -107,4 +109,21 @@ public PartitioningSettings build() {
107109
return new PartitioningSettings(this);
108110
}
109111
}
112+
113+
@Override
114+
public boolean equals(Object o) {
115+
if (o == null || getClass() != o.getClass()) {
116+
return false;
117+
}
118+
PartitioningSettings that = (PartitioningSettings) o;
119+
return minActivePartitions == that.minActivePartitions &&
120+
partitionCountLimit == that.partitionCountLimit &&
121+
autoPartitioningStrategy == that.autoPartitioningStrategy &&
122+
Objects.equals(writeStrategySettings, that.writeStrategySettings);
123+
}
124+
125+
@Override
126+
public int hashCode() {
127+
return Objects.hash(minActivePartitions, partitionCountLimit, autoPartitioningStrategy, writeStrategySettings);
128+
}
110129
}

0 commit comments

Comments
 (0)