/** Update the ACLs for a dataset. */ // [TARGET getAcl()] // [VARIABLE bigquery.getDataset(DatasetId.of("my_dataset"))] public List<Acl> updateDatasetAccess(DatasetInfo dataset) { // [START bigquery_update_dataset_access] List<Acl> beforeAcls = dataset.getAcl(); // Make a copy of the ACLs so that they can be modified. ArrayList<Acl> acls = new ArrayList<>(beforeAcls); acls.add(Acl.of(new Acl.User("sample.bigquery.dev@gmail.com"), Acl.Role.READER)); DatasetInfo.Builder builder = dataset.toBuilder(); builder.setAcl(acls); bigquery.update(builder.build()); // API request. // [END bigquery_update_dataset_access] return beforeAcls; }
/** Update the default table expiration time for a dataset. */ // [TARGET getDefaultTableLifetime()] // [VARIABLE bigquery.getDataset(DatasetId.of("my_dataset"))] public Long updateDatasetExpiration(DatasetInfo dataset) { // [START bigquery_update_dataset_expiration] Long beforeExpiration = dataset.getDefaultTableLifetime(); Long oneDayMilliseconds = 24 * 60 * 60 * 1000L; DatasetInfo.Builder builder = dataset.toBuilder(); builder.setDefaultTableLifetime(oneDayMilliseconds); bigquery.update(builder.build()); // API request. // [END bigquery_update_dataset_expiration] return beforeExpiration; } }
DatasetInfo setProjectId(String projectId) { Builder builder = toBuilder(); builder.setDatasetId(getDatasetId().setProjectId(projectId)); if (getAcl() != null) { List<Acl> acls = Lists.newArrayListWithCapacity(getAcl().size()); for (Acl acl : getAcl()) { if (acl.getEntity().getType() == Acl.Entity.Type.VIEW) { Dataset.Access accessPb = acl.toPb(); TableReference viewReferencePb = accessPb.getView(); if (viewReferencePb.getProjectId() == null) { viewReferencePb.setProjectId(projectId); } acls.add(Acl.of(new Acl.View(TableId.fromPb(viewReferencePb)))); } else { acls.add(acl); } } builder.setAcl(acls); } return builder.build(); }
@Test public void testToBuilderIncomplete() { DatasetInfo datasetInfo = DatasetInfo.newBuilder(DATASET_ID).build(); assertEquals(datasetInfo, datasetInfo.toBuilder().build()); }
@Test public void testReload() throws Exception { initializeExpectedDataset(4); DatasetInfo updatedInfo = DATASET_INFO.toBuilder().setDescription("Description").build(); Dataset expectedDataset = new Dataset(serviceMockReturnsOptions, new DatasetInfo.BuilderImpl(updatedInfo)); expect(bigquery.getOptions()).andReturn(mockOptions); expect(bigquery.getDataset(DATASET_INFO.getDatasetId().getDataset())) .andReturn(expectedDataset); replay(bigquery); initializeDataset(); Dataset updatedDataset = dataset.reload(); compareDataset(expectedDataset, updatedDataset); }
@Test public void testToBuilder() { compareDatasets(DATASET_INFO, DATASET_INFO.toBuilder().build()); DatasetInfo datasetInfo = DATASET_INFO .toBuilder() .setDatasetId(DatasetId.of("dataset2")) .setDescription("description2") .build(); assertEquals(DatasetId.of("dataset2"), datasetInfo.getDatasetId()); assertEquals("description2", datasetInfo.getDescription()); datasetInfo = datasetInfo.toBuilder().setDatasetId(DATASET_ID).setDescription("description").build(); compareDatasets(DATASET_INFO, datasetInfo); }
@Test public void testReloadWithOptions() throws Exception { initializeExpectedDataset(4); DatasetInfo updatedInfo = DATASET_INFO.toBuilder().setDescription("Description").build(); Dataset expectedDataset = new Dataset(serviceMockReturnsOptions, new DatasetInfo.BuilderImpl(updatedInfo)); expect(bigquery.getOptions()).andReturn(mockOptions); expect( bigquery.getDataset( DATASET_INFO.getDatasetId().getDataset(), BigQuery.DatasetOption.fields())) .andReturn(expectedDataset); replay(bigquery); initializeDataset(); Dataset updatedDataset = dataset.reload(BigQuery.DatasetOption.fields()); compareDataset(expectedDataset, updatedDataset); }
@Test public void testUpdateDatasetWithSelectedFields() { Capture<Map<BigQueryRpc.Option, Object>> capturedOptions = Capture.newInstance(); DatasetInfo updatedDatasetInfo = DATASET_INFO.toBuilder().setDescription("newDescription").build(); DatasetInfo updatedDatasetInfoWithProject = DATASET_INFO_WITH_PROJECT.toBuilder().setDescription("newDescription").build(); EasyMock.expect( bigqueryRpcMock.patch( eq(updatedDatasetInfoWithProject.toPb()), capture(capturedOptions))) .andReturn(updatedDatasetInfoWithProject.toPb()); EasyMock.replay(bigqueryRpcMock); bigquery = options.getService(); Dataset dataset = bigquery.update(updatedDatasetInfo, DATASET_OPTION_FIELDS); String selector = (String) capturedOptions.getValue().get(DATASET_OPTION_FIELDS.getRpcOption()); assertTrue(selector.contains("datasetReference")); assertTrue(selector.contains("access")); assertTrue(selector.contains("etag")); assertEquals(28, selector.length()); assertEquals( new Dataset(bigquery, new DatasetInfo.BuilderImpl(updatedDatasetInfoWithProject)), dataset); }
@Test public void testUpdateDataset() { DatasetInfo updatedDatasetInfo = DATASET_INFO .setProjectId(OTHER_PROJECT) .toBuilder() .setDescription("newDescription") .build(); EasyMock.expect(bigqueryRpcMock.patch(updatedDatasetInfo.toPb(), EMPTY_RPC_OPTIONS)) .andReturn(updatedDatasetInfo.toPb()); EasyMock.replay(bigqueryRpcMock); bigquery = options.getService(); Dataset dataset = bigquery.update(updatedDatasetInfo); assertEquals(new Dataset(bigquery, new DatasetInfo.BuilderImpl(updatedDatasetInfo)), dataset); }
DatasetInfo setProjectId(String projectId) { Builder builder = toBuilder(); builder.datasetId(datasetId().setProjectId(projectId)); if (acl() != null) { List<Acl> acls = Lists.newArrayListWithCapacity(acl().size()); for (Acl acl : acl()) { if (acl.entity().type() == Acl.Entity.Type.VIEW) { Dataset.Access accessPb = acl.toPb(); TableReference viewReferencePb = accessPb.getView(); if (viewReferencePb.getProjectId() == null) { viewReferencePb.setProjectId(projectId); } acls.add(Acl.of(new Acl.View(TableId.fromPb(viewReferencePb)))); } else { acls.add(acl); } } builder.acl(acls); } return builder.build(); }
DatasetInfo setProjectId(String projectId) { Builder builder = toBuilder(); builder.setDatasetId(getDatasetId().setProjectId(projectId)); if (getAcl() != null) { List<Acl> acls = Lists.newArrayListWithCapacity(getAcl().size()); for (Acl acl : getAcl()) { if (acl.getEntity().getType() == Acl.Entity.Type.VIEW) { Dataset.Access accessPb = acl.toPb(); TableReference viewReferencePb = accessPb.getView(); if (viewReferencePb.getProjectId() == null) { viewReferencePb.setProjectId(projectId); } acls.add(Acl.of(new Acl.View(TableId.fromPb(viewReferencePb)))); } else { acls.add(acl); } } builder.setAcl(acls); } return builder.build(); }