in tools/query_verification/src/main/java/com/google/bigquery/BigQueryManager.java [205:243]
public List<TableInfo> getTableInfoFromJsonSchema() {
List<TableInfo> tableInfos = new ArrayList<TableInfo>();
for (JsonElement schemaElement : schema.getJsonArray()) {
if (schema.getJsonArray().size() == 0) {
return null;
}
JsonObject schemaObject = schemaElement.getAsJsonObject();
if (schemaObject.has("tableReference")) {
JsonObject tableReference = schemaObject.get("tableReference").getAsJsonObject();
if (tableReference.has("datasetId") && tableReference.has("tableId")) {
TableId tableId = TableId.of(tableReference.get("datasetId").getAsString(), tableReference.get("tableId").getAsString());
// Deserialize fields
FieldList fieldList = null;
try {
JsonArray schemaFields = schemaObject.getAsJsonArray("fields");
Gson gson = new GsonBuilder()
.registerTypeAdapter(FieldList.class, new BigQuerySchemaJsonDeserializer())
.create();
fieldList = gson.fromJson(schemaFields, FieldList.class);
} finally {
if (fieldList == null || fieldList.isEmpty()) {
// Error in formatting of fields
throw new IllegalArgumentException(tableId.getTable() + " is not correctly formatted.");
}
Schema tableSchema = Schema.of(fieldList);
TableDefinition tableDefinition = StandardTableDefinition.of(tableSchema);
tableInfos.add(TableInfo.newBuilder(tableId, tableDefinition).build());
}
}
}
}
return tableInfos;
}