|
16 | 16 |
|
17 | 17 | package com.google.cloud.bigquery; |
18 | 18 |
|
| 19 | +import com.google.api.services.bigquery.model.JobConfiguration; |
19 | 20 | import com.google.api.services.bigquery.model.JobStatistics2; |
20 | 21 | import com.google.api.services.bigquery.model.JobStatistics3; |
21 | 22 | import com.google.api.services.bigquery.model.JobStatistics4; |
22 | 23 | import com.google.common.base.MoreObjects; |
23 | 24 | import com.google.common.base.MoreObjects.ToStringHelper; |
24 | 25 | import com.google.common.collect.Lists; |
25 | | - |
26 | 26 | import java.io.Serializable; |
27 | 27 | import java.util.List; |
28 | 28 | import java.util.Objects; |
@@ -104,7 +104,9 @@ private Builder() {} |
104 | 104 |
|
105 | 105 | private Builder(com.google.api.services.bigquery.model.JobStatistics statisticsPb) { |
106 | 106 | super(statisticsPb); |
107 | | - this.destinationUriFileCounts = statisticsPb.getExtract().getDestinationUriFileCounts(); |
| 107 | + if (statisticsPb.getExtract() != null) { |
| 108 | + this.destinationUriFileCounts = statisticsPb.getExtract().getDestinationUriFileCounts(); |
| 109 | + } |
108 | 110 | } |
109 | 111 |
|
110 | 112 | Builder setDestinationUriFileCounts(List<Long> destinationUriFileCounts) { |
@@ -192,10 +194,12 @@ private Builder() {} |
192 | 194 |
|
193 | 195 | private Builder(com.google.api.services.bigquery.model.JobStatistics statisticsPb) { |
194 | 196 | super(statisticsPb); |
195 | | - this.inputBytes = statisticsPb.getLoad().getInputFileBytes(); |
196 | | - this.inputFiles = statisticsPb.getLoad().getInputFiles(); |
197 | | - this.outputBytes = statisticsPb.getLoad().getOutputBytes(); |
198 | | - this.outputRows = statisticsPb.getLoad().getOutputRows(); |
| 197 | + if (statisticsPb.getLoad() != null) { |
| 198 | + this.inputBytes = statisticsPb.getLoad().getInputFileBytes(); |
| 199 | + this.inputFiles = statisticsPb.getLoad().getInputFiles(); |
| 200 | + this.outputBytes = statisticsPb.getLoad().getOutputBytes(); |
| 201 | + this.outputRows = statisticsPb.getLoad().getOutputRows(); |
| 202 | + } |
199 | 203 | } |
200 | 204 |
|
201 | 205 | Builder setInputBytes(Long inputBytes) { |
@@ -332,13 +336,16 @@ private Builder() {} |
332 | 336 |
|
333 | 337 | private Builder(com.google.api.services.bigquery.model.JobStatistics statisticsPb) { |
334 | 338 | super(statisticsPb); |
335 | | - this.billingTier = statisticsPb.getQuery().getBillingTier(); |
336 | | - this.cacheHit = statisticsPb.getQuery().getCacheHit(); |
337 | | - this.totalBytesBilled = statisticsPb.getQuery().getTotalBytesBilled(); |
338 | | - this.totalBytesProcessed = statisticsPb.getQuery().getTotalBytesProcessed(); |
339 | | - if (statisticsPb.getQuery().getQueryPlan() != null) { |
340 | | - this.queryPlan = |
341 | | - Lists.transform(statisticsPb.getQuery().getQueryPlan(), QueryStage.FROM_PB_FUNCTION); |
| 339 | + if (statisticsPb.getQuery() != null) { |
| 340 | + this.billingTier = statisticsPb.getQuery().getBillingTier(); |
| 341 | + this.cacheHit = statisticsPb.getQuery().getCacheHit(); |
| 342 | + this.totalBytesBilled = statisticsPb.getQuery().getTotalBytesBilled(); |
| 343 | + this.totalBytesProcessed = statisticsPb.getQuery().getTotalBytesProcessed(); |
| 344 | + if (statisticsPb.getQuery().getQueryPlan() != null) { |
| 345 | + this.queryPlan = |
| 346 | + Lists.transform( |
| 347 | + statisticsPb.getQuery().getQueryPlan(), QueryStage.FROM_PB_FUNCTION); |
| 348 | + } |
342 | 349 | } |
343 | 350 | } |
344 | 351 |
|
@@ -577,16 +584,19 @@ com.google.api.services.bigquery.model.JobStatistics toPb() { |
577 | 584 | } |
578 | 585 |
|
579 | 586 | @SuppressWarnings("unchecked") |
580 | | - static <T extends JobStatistics> T fromPb( |
581 | | - com.google.api.services.bigquery.model.JobStatistics statisticPb) { |
582 | | - if (statisticPb.getLoad() != null) { |
| 587 | + static <T extends JobStatistics> T fromPb(com.google.api.services.bigquery.model.Job jobPb) { |
| 588 | + JobConfiguration jobConfigPb = jobPb.getConfiguration(); |
| 589 | + com.google.api.services.bigquery.model.JobStatistics statisticPb = jobPb.getStatistics(); |
| 590 | + if (jobConfigPb.getLoad() != null) { |
583 | 591 | return (T) LoadStatistics.fromPb(statisticPb); |
584 | | - } else if (statisticPb.getExtract() != null) { |
| 592 | + } else if (jobConfigPb.getExtract() != null) { |
585 | 593 | return (T) ExtractStatistics.fromPb(statisticPb); |
586 | | - } else if (statisticPb.getQuery() != null) { |
| 594 | + } else if (jobConfigPb.getQuery() != null) { |
587 | 595 | return (T) QueryStatistics.fromPb(statisticPb); |
588 | | - } else { |
| 596 | + } else if (jobConfigPb.getCopy() != null) { |
589 | 597 | return (T) CopyStatistics.fromPb(statisticPb); |
| 598 | + } else { |
| 599 | + throw new IllegalArgumentException("unknown job configuration: " + jobConfigPb); |
590 | 600 | } |
591 | 601 | } |
592 | 602 | } |
0 commit comments