Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 9b37941

Browse files
authoredDec 18, 2019
feat: add StandardSQLTypeName factory methods to Field (#43)
1 parent 61f9465 commit 9b37941

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed
 

‎google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/Field.java

+12
Original file line numberDiff line numberDiff line change
@@ -268,12 +268,24 @@ public static Field of(String name, LegacySQLTypeName type, Field... subFields)
268268
return newBuilder(name, type, subFields).build();
269269
}
270270

271+
/** Returns a Field object with given name and type. */
272+
public static Field of(String name, StandardSQLTypeName type, Field... subFields) {
273+
checkArgument(!isNullOrEmpty(name), "Provided name is null or empty");
274+
return newBuilder(name, type, subFields).build();
275+
}
276+
271277
/** Returns a Field object with given name and type. */
272278
public static Field of(String name, LegacySQLTypeName type, FieldList subFields) {
273279
checkArgument(!isNullOrEmpty(name), "Provided name is null or empty");
274280
return newBuilder(name, type, subFields).build();
275281
}
276282

283+
/** Returns a Field object with given name and type. */
284+
public static Field of(String name, StandardSQLTypeName type, FieldList subFields) {
285+
checkArgument(!isNullOrEmpty(name), "Provided name is null or empty");
286+
return newBuilder(name, type, subFields).build();
287+
}
288+
277289
/** Returns a builder for a Field object with given name and type. */
278290
public static Builder newBuilder(String name, LegacySQLTypeName type, Field... subFields) {
279291
return new Builder().setName(name).setType(type, subFields);

‎google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/FieldTest.java

+18
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public class FieldTest {
3232
private static final String FIELD_NAME3 = "RecordField";
3333
private static final LegacySQLTypeName FIELD_TYPE1 = LegacySQLTypeName.STRING;
3434
private static final LegacySQLTypeName FIELD_TYPE2 = LegacySQLTypeName.INTEGER;
35+
private static final StandardSQLTypeName FIELD_TYPE1_STANDARD = StandardSQLTypeName.STRING;
3536
private static final Field.Mode FIELD_MODE1 = Field.Mode.NULLABLE;
3637
private static final Field.Mode FIELD_MODE2 = Field.Mode.REPEATED;
3738
private static final Field.Mode FIELD_MODE3 = Field.Mode.REQUIRED;
@@ -49,6 +50,7 @@ public class FieldTest {
4950
.setDescription(FIELD_DESCRIPTION2)
5051
.build();
5152
private static final LegacySQLTypeName FIELD_TYPE3 = LegacySQLTypeName.RECORD;
53+
private static final StandardSQLTypeName FIELD_TYPE3_STANDARD = StandardSQLTypeName.STRUCT;
5254
private static final Field FIELD_SCHEMA3 =
5355
Field.newBuilder(FIELD_NAME3, FIELD_TYPE3, FIELD_SCHEMA1, FIELD_SCHEMA2)
5456
.setMode(FIELD_MODE3)
@@ -112,6 +114,22 @@ public void testToBuilderIncompleteWithStandardSQLTypeName() {
112114
compareFieldSchemas(field, field.toBuilder().build());
113115
}
114116

117+
@Test
118+
public void testToBuilderIncompleteStandard() {
119+
Field field = Field.of(FIELD_NAME1, FIELD_TYPE1_STANDARD);
120+
compareFieldSchemas(field, field.toBuilder().build());
121+
field = Field.of(FIELD_NAME2, FIELD_TYPE3_STANDARD, FIELD_SCHEMA1, FIELD_SCHEMA2);
122+
compareFieldSchemas(field, field.toBuilder().build());
123+
}
124+
125+
@Test
126+
public void testToBuilderIncompleteStandardWithStandardSQLTypeName() {
127+
Field field = Field.of(FIELD_NAME1, FIELD_TYPE1_STANDARD);
128+
compareFieldSchemas(field, field.toBuilder().build());
129+
field = Field.of(FIELD_NAME2, FIELD_TYPE3_STANDARD, STANDARD_FIELD_SCHEMA1, STANDARD_FIELD_SCHEMA2);
130+
compareFieldSchemas(field, field.toBuilder().build());
131+
}
132+
115133
@Test
116134
public void testBuilder() {
117135
assertEquals(FIELD_NAME1, FIELD_SCHEMA1.getName());

0 commit comments

Comments
 (0)
Failed to load comments.