Browse Source

Polishing.

Reformat code.

See #4004
Original pull request: #4006.
pull/4177/head
Mark Paluch 3 years ago
parent
commit
68ab74a5bf
No known key found for this signature in database
GPG Key ID: 4406B84C1661DCD1
  1. 29
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/CountQuery.java
  2. 8
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/MetricConversion.java

29
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/CountQuery.java

@ -38,7 +38,7 @@ import org.springframework.util.ObjectUtils;
*/ */
class CountQuery { class CountQuery {
private Document source; private final Document source;
private CountQuery(Document source) { private CountQuery(Document source) {
this.source = source; this.source = source;
@ -101,7 +101,7 @@ class CountQuery {
} }
if (valueToInspect instanceof Collection) { if (valueToInspect instanceof Collection) {
return requiresRewrite((Collection) valueToInspect); return requiresRewrite((Collection<?>) valueToInspect);
} }
return false; return false;
@ -157,6 +157,7 @@ class CountQuery {
* @param $and potentially existing {@code $and} condition. * @param $and potentially existing {@code $and} condition.
* @return the rewritten query {@link Document}. * @return the rewritten query {@link Document}.
*/ */
@SuppressWarnings("unchecked")
private static Document createGeoWithin(String key, Document source, @Nullable Object $and) { private static Document createGeoWithin(String key, Document source, @Nullable Object $and) {
boolean spheric = source.containsKey("$nearSphere"); boolean spheric = source.containsKey("$nearSphere");
@ -181,7 +182,7 @@ class CountQuery {
if ($and != null) { if ($and != null) {
if ($and instanceof Collection) { if ($and instanceof Collection) {
Collection andElements = (Collection) $and; Collection<Document> andElements = (Collection<Document>) $and;
criteria = new ArrayList<>(andElements.size() + 2); criteria = new ArrayList<>(andElements.size() + 2);
criteria.addAll(andElements); criteria.addAll(andElements);
} else { } else {
@ -195,17 +196,22 @@ class CountQuery {
criteria.add(new Document("$nor", Collections.singletonList(new Document(key, $geoWithinMin)))); criteria.add(new Document("$nor", Collections.singletonList(new Document(key, $geoWithinMin))));
criteria.add(new Document(key, $geoWithinMax)); criteria.add(new Document(key, $geoWithinMax));
return new Document("$and", criteria); return new Document("$and", criteria);
} }
private static Number getMaxDistance(Document source, Object $near, boolean spheric) { private static Number getMaxDistance(Document source, Object $near, boolean spheric) {
Number maxDistance = Double.MAX_VALUE; Number maxDistance = Double.MAX_VALUE;
if (source.containsKey("$maxDistance")) { // legacy coordinate pair if (source.containsKey("$maxDistance")) { // legacy coordinate pair
maxDistance = (Number) source.get("$maxDistance"); return (Number) source.get("$maxDistance");
} else if ($near instanceof Document) { }
Document nearDoc = (Document)$near;
if ($near instanceof Document nearDoc) {
if (nearDoc.containsKey("$maxDistance")) { if (nearDoc.containsKey("$maxDistance")) {
maxDistance = (Number) nearDoc.get("$maxDistance"); maxDistance = (Number) nearDoc.get("$maxDistance");
// geojson is in Meters but we need radians x/(6378.1*1000) // geojson is in Meters but we need radians x/(6378.1*1000)
if (spheric && nearDoc.containsKey("$geometry")) { if (spheric && nearDoc.containsKey("$geometry")) {
@ -213,6 +219,7 @@ class CountQuery {
} }
} }
} }
return maxDistance; return maxDistance;
} }
@ -239,13 +246,13 @@ class CountQuery {
return Arrays.asList(((Point) value).getX(), ((Point) value).getY()); return Arrays.asList(((Point) value).getX(), ((Point) value).getY());
} }
if (value instanceof Document ) { if (value instanceof Document document) {
Document document = (Document) value;
if (document.containsKey("x")) { if (document.containsKey("x")) {
Document point = document; return Arrays.asList(document.get("x"), document.get("y"));
return Arrays.asList(point.get("x"), point.get("y"));
} }
else if (document.containsKey("$geometry")) {
if (document.containsKey("$geometry")) {
Document geoJsonPoint = document.get("$geometry", Document.class); Document geoJsonPoint = document.get("$geometry", Document.class);
return geoJsonPoint.get("coordinates"); return geoJsonPoint.get("coordinates");
} }

8
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/MetricConversion.java

@ -67,8 +67,8 @@ public class MetricConversion {
* Return {@code distance} in radians (on an earth like sphere). * Return {@code distance} in radians (on an earth like sphere).
* *
* @param distance must not be {@literal null}. * @param distance must not be {@literal null}.
* @return distance in rads. * @return distance in radians.
* @since 3.4 * @since 3.4.4
*/ */
public static double toRadians(Distance distance) { public static double toRadians(Distance distance) {
return metersToRadians(getDistanceInMeters(distance)); return metersToRadians(getDistanceInMeters(distance));
@ -78,8 +78,8 @@ public class MetricConversion {
* Return {@code distance} in radians (on an earth like sphere). * Return {@code distance} in radians (on an earth like sphere).
* *
* @param meters * @param meters
* @return distance in rads. * @return distance in radians.
* @since 3.4 * @since 3.4.4
*/ */
public static double metersToRadians(double meters) { public static double metersToRadians(double meters) {
return BigDecimal.valueOf(meters).divide(METERS_MULTIPLIER, MathContext.DECIMAL64).doubleValue(); return BigDecimal.valueOf(meters).divide(METERS_MULTIPLIER, MathContext.DECIMAL64).doubleValue();

Loading…
Cancel
Save