Skip to content

Commit

Permalink
Merge ConvertBQTableFieldToProtoField and ConvertBQStructToProtoMsg
Browse files Browse the repository at this point in the history
  • Loading branch information
allenc3 committed Jul 7, 2020
1 parent bdcaa22 commit c8569dc
Showing 1 changed file with 16 additions and 26 deletions.
Expand Up @@ -86,14 +86,14 @@ private static Descriptor ConvertBQTableSchemaToProtoDescriptorImpl(
List<FieldDescriptorProto> fields = new ArrayList<FieldDescriptorProto>();
int index = 1;
for (Table.TableFieldSchema BQTableField : BQTableSchema.getFieldsList()) {
String currentScope = scope + "__" + BQTableField.getName();
if (BQTableField.getType() == Table.TableFieldSchema.Type.STRUCT) {
ImmutableList<Table.TableFieldSchema> fieldList =
ImmutableList.copyOf(BQTableField.getFieldsList());
String currentScope = scope + "__" + BQTableField.getName();
if (dependencyMap.containsKey(fieldList)) {
Descriptor descriptor = dependencyMap.get(fieldList);
dependenciesList.add(descriptor.getFile());
fields.add(ConvertBQStructToProtoMessage(BQTableField, index++, descriptor.getName()));
fields.add(ConvertBQTableFieldToProtoField(BQTableField, index++, descriptor.getName()));
} else {
Descriptor descriptor =
ConvertBQTableSchemaToProtoDescriptorImpl(
Expand All @@ -102,10 +102,10 @@ private static Descriptor ConvertBQTableSchemaToProtoDescriptorImpl(
dependencyMap);
dependenciesList.add(descriptor.getFile());
dependencyMap.put(fieldList, descriptor);
fields.add(ConvertBQStructToProtoMessage(BQTableField, index++, currentScope));
fields.add(ConvertBQTableFieldToProtoField(BQTableField, index++, currentScope));
}
} else {
fields.add(ConvertBQTableFieldToProtoField(BQTableField, index++));
fields.add(ConvertBQTableFieldToProtoField(BQTableField, index++, currentScope));
}
}
FileDescriptor[] dependenciesArray = new FileDescriptor[dependenciesList.size()];
Expand All @@ -121,37 +121,27 @@ private static Descriptor ConvertBQTableSchemaToProtoDescriptorImpl(
}

/**
* Constructs a FieldDescriptorProto for non-struct BQ fields.
* Converts a BQTableField to ProtoField
*
* @param BQTableField BQ Field used to construct a FieldDescriptorProto
* @param index Index for protobuf fields.
* @param scope used to name descriptors
*/
private static FieldDescriptorProto ConvertBQTableFieldToProtoField(
Table.TableFieldSchema BQTableField, int index) {
String fieldName = BQTableField.getName();
Table.TableFieldSchema.Mode mode = BQTableField.getMode();
return FieldDescriptorProto.newBuilder()
.setName(fieldName)
.setType((FieldDescriptorProto.Type) BQTableSchemaTypeMap.get(BQTableField.getType()))
.setLabel((FieldDescriptorProto.Label) BQTableSchemaModeMap.get(mode))
.setNumber(index)
.build();
}

/**
* Constructs a FieldDescriptorProto for a Struct type BQ field.
*
* @param BQTableField BQ Field used to construct a FieldDescriptorProto
* @param index Index for protobuf fields.
* @param scope Need scope to prevent naming issues
*/
private static FieldDescriptorProto ConvertBQStructToProtoMessage(
Table.TableFieldSchema BQTableField, int index, String scope) {
String fieldName = BQTableField.getName();
Table.TableFieldSchema.Mode mode = BQTableField.getMode();
String fieldName = BQTableField.getName();
if (BQTableField.getType() == Table.TableFieldSchema.Type.STRUCT) {
return FieldDescriptorProto.newBuilder()
.setName(fieldName)
.setTypeName(scope)
.setLabel((FieldDescriptorProto.Label) BQTableSchemaModeMap.get(mode))
.setNumber(index)
.build();
}
return FieldDescriptorProto.newBuilder()
.setName(fieldName)
.setTypeName(scope)
.setType((FieldDescriptorProto.Type) BQTableSchemaTypeMap.get(BQTableField.getType()))
.setLabel((FieldDescriptorProto.Label) BQTableSchemaModeMap.get(mode))
.setNumber(index)
.build();
Expand Down

0 comments on commit c8569dc

Please sign in to comment.