@@ -86,14 +86,14 @@ private static Descriptor ConvertBQTableSchemaToProtoDescriptorImpl(
8686 List <FieldDescriptorProto > fields = new ArrayList <FieldDescriptorProto >();
8787 int index = 1 ;
8888 for (Table .TableFieldSchema BQTableField : BQTableSchema .getFieldsList ()) {
89+ String currentScope = scope + "__" + BQTableField .getName ();
8990 if (BQTableField .getType () == Table .TableFieldSchema .Type .STRUCT ) {
9091 ImmutableList <Table .TableFieldSchema > fieldList =
9192 ImmutableList .copyOf (BQTableField .getFieldsList ());
92- String currentScope = scope + "__" + BQTableField .getName ();
9393 if (dependencyMap .containsKey (fieldList )) {
9494 Descriptor descriptor = dependencyMap .get (fieldList );
9595 dependenciesList .add (descriptor .getFile ());
96- fields .add (ConvertBQStructToProtoMessage (BQTableField , index ++, descriptor .getName ()));
96+ fields .add (ConvertBQTableFieldToProtoField (BQTableField , index ++, descriptor .getName ()));
9797 } else {
9898 Descriptor descriptor =
9999 ConvertBQTableSchemaToProtoDescriptorImpl (
@@ -102,10 +102,10 @@ private static Descriptor ConvertBQTableSchemaToProtoDescriptorImpl(
102102 dependencyMap );
103103 dependenciesList .add (descriptor .getFile ());
104104 dependencyMap .put (fieldList , descriptor );
105- fields .add (ConvertBQStructToProtoMessage (BQTableField , index ++, currentScope ));
105+ fields .add (ConvertBQTableFieldToProtoField (BQTableField , index ++, currentScope ));
106106 }
107107 } else {
108- fields .add (ConvertBQTableFieldToProtoField (BQTableField , index ++));
108+ fields .add (ConvertBQTableFieldToProtoField (BQTableField , index ++, currentScope ));
109109 }
110110 }
111111 FileDescriptor [] dependenciesArray = new FileDescriptor [dependenciesList .size ()];
@@ -121,37 +121,27 @@ private static Descriptor ConvertBQTableSchemaToProtoDescriptorImpl(
121121 }
122122
123123 /**
124- * Constructs a FieldDescriptorProto for non-struct BQ fields.
124+ * Converts a BQTableField to ProtoField
125125 *
126126 * @param BQTableField BQ Field used to construct a FieldDescriptorProto
127127 * @param index Index for protobuf fields.
128+ * @param scope used to name descriptors
128129 */
129130 private static FieldDescriptorProto ConvertBQTableFieldToProtoField (
130- Table .TableFieldSchema BQTableField , int index ) {
131- String fieldName = BQTableField .getName ();
132- Table .TableFieldSchema .Mode mode = BQTableField .getMode ();
133- return FieldDescriptorProto .newBuilder ()
134- .setName (fieldName )
135- .setType ((FieldDescriptorProto .Type ) BQTableSchemaTypeMap .get (BQTableField .getType ()))
136- .setLabel ((FieldDescriptorProto .Label ) BQTableSchemaModeMap .get (mode ))
137- .setNumber (index )
138- .build ();
139- }
140-
141- /**
142- * Constructs a FieldDescriptorProto for a Struct type BQ field.
143- *
144- * @param BQTableField BQ Field used to construct a FieldDescriptorProto
145- * @param index Index for protobuf fields.
146- * @param scope Need scope to prevent naming issues
147- */
148- private static FieldDescriptorProto ConvertBQStructToProtoMessage (
149131 Table .TableFieldSchema BQTableField , int index , String scope ) {
150- String fieldName = BQTableField .getName ();
151132 Table .TableFieldSchema .Mode mode = BQTableField .getMode ();
133+ String fieldName = BQTableField .getName ();
134+ if (BQTableField .getType () == Table .TableFieldSchema .Type .STRUCT ) {
135+ return FieldDescriptorProto .newBuilder ()
136+ .setName (fieldName )
137+ .setTypeName (scope )
138+ .setLabel ((FieldDescriptorProto .Label ) BQTableSchemaModeMap .get (mode ))
139+ .setNumber (index )
140+ .build ();
141+ }
152142 return FieldDescriptorProto .newBuilder ()
153143 .setName (fieldName )
154- .setTypeName ( scope )
144+ .setType (( FieldDescriptorProto . Type ) BQTableSchemaTypeMap . get ( BQTableField . getType ()) )
155145 .setLabel ((FieldDescriptorProto .Label ) BQTableSchemaModeMap .get (mode ))
156146 .setNumber (index )
157147 .build ();
0 commit comments