Skip to content

Commit c9caa61

Browse files
Merge pull request #452 from apjanke/model-value-based-toStrings
Add value-based toString()s for model objects
2 parents 5ee3669 + 0a2986a commit c9caa61

42 files changed

Lines changed: 561 additions & 10 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/main/java/com/google/maps/internal/StringJoin.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
package com.google.maps.internal;
1717

18+
import java.util.Objects;
19+
1820
/** Utility class to join strings. */
1921
public class StringJoin {
2022

@@ -30,6 +32,10 @@ public interface UrlValue {
3032
private StringJoin() {}
3133

3234
public static String join(char delim, String... parts) {
35+
return join(new String(new char[] {delim}), parts);
36+
}
37+
38+
public static String join(CharSequence delim, String... parts) {
3339
StringBuilder result = new StringBuilder();
3440
for (int i = 0; i < parts.length; i++) {
3541
if (i != 0) {
@@ -40,6 +46,21 @@ public static String join(char delim, String... parts) {
4046
return result.toString();
4147
}
4248

49+
public static String join(char delim, Object... parts) {
50+
return join(new String(new char[] {delim}), parts);
51+
}
52+
53+
public static String join(CharSequence delim, Object... parts) {
54+
StringBuilder result = new StringBuilder();
55+
for (int i = 0; i < parts.length; i++) {
56+
if (i != 0) {
57+
result.append(delim);
58+
}
59+
result.append(Objects.toString(parts[i]));
60+
}
61+
return result.toString();
62+
}
63+
4364
public static String join(char delim, UrlValue... parts) {
4465
String[] strings = new String[parts.length];
4566
int i = 0;

src/main/java/com/google/maps/model/AddressComponent.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
package com.google.maps.model;
1717

18+
import static com.google.maps.internal.StringJoin.join;
19+
1820
import java.io.Serializable;
1921

2022
/**
@@ -41,4 +43,15 @@ public class AddressComponent implements Serializable {
4143

4244
/** Indicates the type of each part of the address. Examples include street number or country. */
4345
public AddressComponentType[] types;
46+
47+
public String toString() {
48+
StringBuilder sb = new StringBuilder("[AddressComponent: ");
49+
sb.append("\"").append(longName).append("\"");
50+
if (shortName != null) {
51+
sb.append(" (\"").append(shortName).append("\")");
52+
}
53+
sb.append(" (").append(join(", ", (Object[]) types)).append(")");
54+
sb.append("]");
55+
return sb.toString();
56+
}
4457
}

src/main/java/com/google/maps/model/AutocompletePrediction.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
package com.google.maps.model;
1717

1818
import java.io.Serializable;
19+
import java.util.Arrays;
20+
import java.util.Objects;
1921

2022
/**
2123
* Represents a single Autocomplete result returned from the Google Places API Web Service.
@@ -61,6 +63,10 @@ public static class MatchedSubstring {
6163

6264
/** The start position of the matched substring, measured in Unicode characters. */
6365
public int offset;
66+
67+
public String toString() {
68+
return String.format("(offset=%d, length=%d)", offset, length);
69+
}
6470
}
6571

6672
/**
@@ -83,5 +89,21 @@ public static class Term {
8389

8490
/** The text of the matched term. */
8591
public String value;
92+
93+
public String toString() {
94+
return String.format("(offset=%d, value=%s)", offset, value);
95+
}
96+
}
97+
98+
public String toString() {
99+
return String.format(
100+
"[AutocompletePrediction: \"%s\", placeId=%s, types=%s, terms=%s, "
101+
+ "matchedSubstrings=%s, structuredFormatting=%s]",
102+
description,
103+
placeId,
104+
Arrays.toString(types),
105+
Arrays.toString(terms),
106+
Arrays.toString(matchedSubstrings),
107+
Objects.toString(structuredFormatting));
86108
}
87109
}

src/main/java/com/google/maps/model/AutocompleteStructuredFormatting.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package com.google.maps.model;
1717

1818
import java.io.Serializable;
19+
import java.util.Arrays;
1920

2021
/** The structured formatting info for a {@link com.google.maps.model.AutocompletePrediction}. */
2122
public class AutocompleteStructuredFormatting implements Serializable {
@@ -30,4 +31,15 @@ public class AutocompleteStructuredFormatting implements Serializable {
3031

3132
/** The secondary text of a prediction, usually the location of the place. */
3233
public String secondaryText;
34+
35+
public String toString() {
36+
StringBuilder sb = new StringBuilder("(");
37+
sb.append("\"").append(mainText).append("\"");
38+
sb.append(" at ").append(Arrays.toString(mainTextMatchedSubstrings));
39+
if (secondaryText != null) {
40+
sb.append(", secondaryText=\"").append(secondaryText).append("\"");
41+
}
42+
sb.append(")");
43+
return sb.toString();
44+
}
3345
}

src/main/java/com/google/maps/model/Bounds.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,8 @@ public class Bounds implements Serializable {
2525
public LatLng northeast;
2626
/** The southwest corner of the bounding box. */
2727
public LatLng southwest;
28+
29+
public String toString() {
30+
return String.format("[%s, %s]", northeast, southwest);
31+
}
2832
}

src/main/java/com/google/maps/model/CellTower.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,19 @@ private CellTower(
7979
/** The timing advance value. */
8080
public Integer timingAdvance = null;
8181

82+
public String toString() {
83+
return String.format(
84+
"[CellTower: cellId=%s, locationAreaCode=%s, mobileCountryCode=%s, "
85+
+ "mobileNetworkCode=%s, age=%s, signalStrength=%s, timingAdvance=%s]",
86+
cellId,
87+
locationAreaCode,
88+
mobileCountryCode,
89+
mobileNetworkCode,
90+
age,
91+
signalStrength,
92+
timingAdvance);
93+
}
94+
8295
public static class CellTowerBuilder {
8396
private Integer _cellId = null;
8497
private Integer _locationAreaCode = null;

src/main/java/com/google/maps/model/DirectionsLeg.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,25 @@ public class DirectionsLeg implements Serializable {
9393
* leg.
9494
*/
9595
public String endAddress;
96+
97+
public String toString() {
98+
StringBuilder sb =
99+
new StringBuilder(
100+
String.format(
101+
"[DirectionsLeg: \"%s\" -> \"%s\" (%s -> %s)",
102+
startAddress, endAddress, startLocation, endLocation));
103+
if (departureTime != null) {
104+
sb.append(", departureTime=").append(departureTime);
105+
}
106+
if (arrivalTime != null) {
107+
sb.append(", arrivalTime=").append(arrivalTime);
108+
}
109+
if (durationInTraffic != null) {
110+
sb.append(", durationInTraffic=").append(durationInTraffic);
111+
}
112+
sb.append(", duration=").append(duration);
113+
sb.append(", distance=").append(distance);
114+
sb.append(": ").append(steps.length).append(" steps]");
115+
return sb.toString();
116+
}
96117
}

src/main/java/com/google/maps/model/DirectionsRoute.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package com.google.maps.model;
1717

1818
import java.io.Serializable;
19+
import java.util.Arrays;
1920

2021
/**
2122
* A Directions API result. When the Directions API returns results, it places them within a routes
@@ -71,4 +72,19 @@ public class DirectionsRoute implements Serializable {
7172
* warnings yourself.
7273
*/
7374
public String[] warnings;
75+
76+
public String toString() {
77+
String str =
78+
String.format(
79+
"[DirectionsRoute: \"%s\", %d legs, waypointOrder=%s, bounds=%s",
80+
summary, legs.length, Arrays.toString(waypointOrder), bounds);
81+
if (fare != null) {
82+
str = str + ", fare=" + fare;
83+
}
84+
if (warnings != null && warnings.length > 0) {
85+
str = str + ", " + warnings.length + " warnings";
86+
}
87+
str = str + "]";
88+
return str;
89+
}
7490
}

src/main/java/com/google/maps/model/DirectionsStep.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,19 @@ public class DirectionsStep implements Serializable {
8484
* Details</a> for more detail.
8585
*/
8686
public TransitDetails transitDetails;
87+
88+
public String toString() {
89+
StringBuilder sb = new StringBuilder("[DirectionsStep: ");
90+
sb.append("\"").append(htmlInstructions).append("\"");
91+
sb.append(String.format(" (%s -> %s", startLocation, endLocation)).append(")");
92+
sb.append(" ").append(travelMode);
93+
sb.append(", duration=").append(duration);
94+
sb.append(", distance=").append(distance);
95+
sb.append(", ").append(steps.length).append(" steps");
96+
if (transitDetails != null) {
97+
sb.append(", transitDetails=").append(transitDetails);
98+
}
99+
sb.append("]");
100+
return sb.toString();
101+
}
87102
}

src/main/java/com/google/maps/model/DistanceMatrix.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,10 @@ public DistanceMatrix(
5151
this.destinationAddresses = destinationAddresses;
5252
this.rows = rows;
5353
}
54+
55+
public String toString() {
56+
return String.format(
57+
"DistanceMatrix: %d origins x %d destinations, %d rows",
58+
originAddresses.length, destinationAddresses.length, rows.length);
59+
}
5460
}

0 commit comments

Comments
 (0)