Skip to content

Commit 8bac33a

Browse files
feat: Add getStringOrDefault method to FieldValue (#3255)
* feat: Add getStringOrDefault method to FieldValue * feat: Add getStringOrDefault method to FieldValue * Add null case to FieldValueTest unit test * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
1 parent c2e3283 commit 8bac33a

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/FieldValue.java

+14
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,20 @@ public String getStringValue() {
123123
return (String) value;
124124
}
125125

126+
/**
127+
* Returns this field's value as a {@link String}, or defaultValue if {@link #isNull()} returns
128+
* {@code true}. See {@link #getStringValue()} for more details.
129+
*
130+
* @throws ClassCastException if the field is not a primitive type
131+
*/
132+
@SuppressWarnings("unchecked")
133+
public String getStringValueOrDefault(String defaultValue) {
134+
if (isNull()) {
135+
return defaultValue;
136+
}
137+
return getStringValue();
138+
}
139+
126140
/**
127141
* Returns this field's value as a byte array. This method should only be used if the
128142
* corresponding field has primitive type ({@link LegacySQLTypeName#BYTES}.

google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/FieldValueTest.java

+9
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import static org.junit.Assert.assertEquals;
2121
import static org.junit.Assert.assertFalse;
2222
import static org.junit.Assert.assertNull;
23+
import static org.junit.Assert.assertTrue;
2324

2425
import com.google.api.client.util.Data;
2526
import com.google.api.services.bigquery.model.TableCell;
@@ -77,12 +78,14 @@ public void testFromPb() {
7778
value = FieldValue.fromPb(GEOGRAPHY_FIELD);
7879
assertEquals(FieldValue.Attribute.PRIMITIVE, value.getAttribute());
7980
assertEquals("POINT(-122.350220 47.649154)", value.getStringValue());
81+
assertEquals("POINT(-122.350220 47.649154)", value.getStringValueOrDefault(null));
8082
value = FieldValue.fromPb(NUMERIC_FIELD);
8183
assertEquals(FieldValue.Attribute.PRIMITIVE, value.getAttribute());
8284
assertEquals(new BigDecimal("123456789.123456789"), value.getNumericValue());
8385
value = FieldValue.fromPb(STRING_FIELD);
8486
assertEquals(FieldValue.Attribute.PRIMITIVE, value.getAttribute());
8587
assertEquals("string", value.getStringValue());
88+
assertEquals("string", value.getStringValueOrDefault(null));
8689
value = FieldValue.fromPb(TIMESTAMP_FIELD);
8790
assertEquals(FieldValue.Attribute.PRIMITIVE, value.getAttribute());
8891
assertEquals(42000000, value.getTimestampValue());
@@ -92,11 +95,13 @@ public void testFromPb() {
9295
PeriodDuration.of(Period.of(3, 2, 1), Duration.parse("PT12H34M56.789S"));
9396
assertEquals(periodDuration, value.getPeriodDuration());
9497
assertEquals("P3Y2M1DT12H34M56.789S", value.getStringValue());
98+
assertEquals("P3Y2M1DT12H34M56.789S", value.getStringValueOrDefault(null));
9599
value = FieldValue.fromPb(INTERVAL_FIELD_2);
96100
assertEquals(FieldValue.Attribute.PRIMITIVE, value.getAttribute());
97101
periodDuration = PeriodDuration.of(Period.of(3, 2, 1), Duration.parse("PT12H34M56.789S"));
98102
assertEquals(periodDuration, value.getPeriodDuration());
99103
assertEquals("3-2 1 12:34:56.789", value.getStringValue());
104+
assertEquals("3-2 1 12:34:56.789", value.getStringValueOrDefault(null));
100105
value = FieldValue.fromPb(BYTES_FIELD);
101106
assertEquals(FieldValue.Attribute.PRIMITIVE, value.getAttribute());
102107
assertArrayEquals(BYTES, value.getBytesValue());
@@ -113,6 +118,10 @@ public void testFromPb() {
113118
assertEquals(FieldValue.Attribute.RECORD, value.getAttribute());
114119
assertEquals(FieldValue.fromPb(FLOAT_FIELD), value.getRepeatedValue().get(0));
115120
assertEquals(FieldValue.fromPb(TIMESTAMP_FIELD), value.getRepeatedValue().get(1));
121+
value = FieldValue.fromPb(NULL_FIELD);
122+
assertTrue(value.isNull());
123+
assertEquals(null, value.getStringValueOrDefault(null));
124+
assertEquals("defaultValue", value.getStringValueOrDefault("defaultValue"));
116125
}
117126

118127
@Test

0 commit comments

Comments
 (0)