Browse Source

add: equals method to aggregation and aggregation ops

pull/4693/head
therealansh 2 years ago
parent
commit
973247aa2a
  1. 6
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AddFieldsOperation.java
  2. 15
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Aggregation.java
  3. 2
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOperation.java
  4. 17
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOptions.java
  5. 12
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationPipeline.java
  6. 12
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BasicAggregationOperation.java
  7. 17
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketAutoOperation.java

6
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AddFieldsOperation.java

@ -104,6 +104,12 @@ public class AddFieldsOperation extends DocumentEnhancingOperation { @@ -104,6 +104,12 @@ public class AddFieldsOperation extends DocumentEnhancingOperation {
return "$addFields";
}
@Override
public boolean equals(Object obj) {
AddFieldsOperation that = obj instanceof AddFieldsOperation ? (AddFieldsOperation) obj : null;
return that != null && this.getValueMap().equals(that.getValueMap());
}
/**
* @author Christoph Strobl
* @since 3.0

15
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Aggregation.java

@ -19,6 +19,7 @@ import static org.springframework.data.mongodb.core.aggregation.Fields.*; @@ -19,6 +19,7 @@ import static org.springframework.data.mongodb.core.aggregation.Fields.*;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import org.bson.Document;
import org.bson.conversions.Bson;
@ -785,4 +786,18 @@ public class Aggregation { @@ -785,4 +786,18 @@ public class Aggregation {
public String toString() {
return SerializationUtils.serializeToJsonSafely(toDocument("__collection__", DEFAULT_CONTEXT));
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof Aggregation)) {
return false;
}
Aggregation that = (Aggregation) o;
return Objects.equals(pipeline, that.pipeline) && Objects.equals(options, that.options);
}
}

2
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOperation.java

@ -65,4 +65,6 @@ public interface AggregationOperation { @@ -65,4 +65,6 @@ public interface AggregationOperation {
default String getOperator() {
return toDocument(Aggregation.DEFAULT_CONTEXT).keySet().iterator().next();
}
boolean equals(Object obj);
}

17
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOptions.java

@ -16,6 +16,7 @@ @@ -16,6 +16,7 @@
package org.springframework.data.mongodb.core.aggregation;
import java.time.Duration;
import java.util.Objects;
import java.util.Optional;
import org.bson.Document;
@ -696,4 +697,20 @@ public class AggregationOptions implements ReadConcernAware, ReadPreferenceAware @@ -696,4 +697,20 @@ public class AggregationOptions implements ReadConcernAware, ReadPreferenceAware
*/
NONE
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
AggregationOptions that = (AggregationOptions) o;
return allowDiskUse == that.allowDiskUse && explain == that.explain && Objects.equals(cursor, that.cursor)
&& Objects.equals(collation, that.collation) && Objects.equals(comment, that.comment)
&& Objects.equals(hint, that.hint) && Objects.equals(maxTime, that.maxTime)
&& resultOptions == that.resultOptions && domainTypeMapping == that.domainTypeMapping
&& Objects.equals(readConcern, that.readConcern) && Objects.equals(readPreference, that.readPreference);
}
}

12
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationPipeline.java

@ -164,4 +164,16 @@ public class AggregationPipeline { @@ -164,4 +164,16 @@ public class AggregationPipeline {
private static boolean isOut(AggregationOperation operator) {
return operator instanceof OutOperation || operator.getOperator().equals("$out");
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof AggregationPipeline)) {
return false;
}
AggregationPipeline that = (AggregationPipeline) o;
return pipeline.equals(that.pipeline);
}
}

12
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BasicAggregationOperation.java

@ -44,4 +44,16 @@ record BasicAggregationOperation(Object value) implements AggregationOperation { @@ -44,4 +44,16 @@ record BasicAggregationOperation(Object value) implements AggregationOperation {
throw new IllegalStateException(
String.format("%s cannot be converted to org.bson.Document", ObjectUtils.nullSafeClassName(value)));
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
BasicAggregationOperation that = (BasicAggregationOperation) o;
return ObjectUtils.nullSafeEquals(value, that.value);
}
}

17
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketAutoOperation.java

@ -20,6 +20,8 @@ import org.springframework.data.mongodb.core.aggregation.BucketAutoOperation.Buc @@ -20,6 +20,8 @@ import org.springframework.data.mongodb.core.aggregation.BucketAutoOperation.Buc
import org.springframework.data.mongodb.core.aggregation.BucketOperationSupport.OutputBuilder;
import org.springframework.util.Assert;
import java.util.Objects;
/**
* Encapsulates the aggregation framework {@code $bucketAuto}-operation. <br />
* Bucket stage is typically used with {@link Aggregation} and {@code $facet}. Categorizes incoming documents into a
@ -157,6 +159,21 @@ public class BucketAutoOperation extends BucketOperationSupport<BucketAutoOperat @@ -157,6 +159,21 @@ public class BucketAutoOperation extends BucketOperationSupport<BucketAutoOperat
return new BucketAutoOperationOutputBuilder(Fields.field(fieldName), this);
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof BucketAutoOperation)) {
return false;
}
if (!super.equals(o)) {
return false;
}
BucketAutoOperation that = (BucketAutoOperation) o;
return buckets == that.buckets && Objects.equals(granularity, that.granularity);
}
/**
* {@link OutputBuilder} implementation for {@link BucketAutoOperation}.
*/

Loading…
Cancel
Save