diff --git a/README.md b/README.md index 1bae92df..40a6cd24 100644 --- a/README.md +++ b/README.md @@ -18,31 +18,8 @@ The Maven artifact coordinates (`com.google.cloud:google-cloud-dlp`) remain the ## Quickstart -If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file: -```xml - - - - com.google.cloud - libraries-bom - 26.1.4 - pom - import - - - - - - - com.google.cloud - google-cloud-dlp - - - -``` - -If you are using Maven without BOM, add this to your dependencies: +If you are using Maven, add this to your pom.xml file: ```xml @@ -54,23 +31,16 @@ If you are using Maven without BOM, add this to your dependencies: ``` -If you are using Gradle 5.x or later, add this to your dependencies: - -```Groovy -implementation platform('com.google.cloud:libraries-bom:26.6.0') - -implementation 'com.google.cloud:google-cloud-dlp' -``` If you are using Gradle without BOM, add this to your dependencies: ```Groovy -implementation 'com.google.cloud:google-cloud-dlp:3.14.0' +implementation 'com.google.cloud:google-cloud-dlp:3.15.0' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-dlp" % "3.14.0" +libraryDependencies += "com.google.cloud" % "google-cloud-dlp" % "3.15.0" ``` ## Authentication @@ -108,77 +78,6 @@ use this Cloud Data Loss Prevention Client Library. -## Samples - -Samples are in the [`samples/`](https://github.com/googleapis/java-dlp/tree/main/samples) directory. - -| Sample | Source Code | Try it | -| --------------------------- | --------------------------------- | ------ | -| De Identify Table Bucketing | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableBucketing.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableBucketing.java) | -| De Identify Table Condition Info Types | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableConditionInfoTypes.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableConditionInfoTypes.java) | -| De Identify Table Condition Masking | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableConditionMasking.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableConditionMasking.java) | -| De Identify Table Info Types | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableInfoTypes.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableInfoTypes.java) | -| De Identify Table Row Suppress | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableRowSuppress.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableRowSuppress.java) | -| De Identify Table With Fpe | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableWithFpe.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableWithFpe.java) | -| De Identify Text With Fpe | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTextWithFpe.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/DeIdentifyTextWithFpe.java) | -| De Identify With Date Shift | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithDateShift.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithDateShift.java) | -| De Identify With Exception List | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithExceptionList.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithExceptionList.java) | -| De Identify With Fpe | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithFpe.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithFpe.java) | -| De Identify With Info Type | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithInfoType.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithInfoType.java) | -| De Identify With Masking | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithMasking.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithMasking.java) | -| De Identify With Redaction | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithRedaction.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithRedaction.java) | -| De Identify With Replacement | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithReplacement.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithReplacement.java) | -| De Identify With Simple Word List | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithSimpleWordList.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithSimpleWordList.java) | -| Info Types List | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InfoTypesList.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InfoTypesList.java) | -| Inspect Big Query Table | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectBigQueryTable.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectBigQueryTable.java) | -| Inspect Big Query Table With Sampling | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectBigQueryTableWithSampling.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectBigQueryTableWithSampling.java) | -| Inspect Datastore Entity | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectDatastoreEntity.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectDatastoreEntity.java) | -| Inspect Gcs File | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectGcsFile.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectGcsFile.java) | -| Inspect Gcs File With Sampling | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectGcsFileWithSampling.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectGcsFileWithSampling.java) | -| Inspect Image File | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectImageFile.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectImageFile.java) | -| Inspect Image File All Info Types | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectImageFileAllInfoTypes.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectImageFileAllInfoTypes.java) | -| Inspect Image File Listed Info Types | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectImageFileListedInfoTypes.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectImageFileListedInfoTypes.java) | -| Inspect Phone Number | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectPhoneNumber.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectPhoneNumber.java) | -| Inspect String | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectString.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectString.java) | -| Inspect String Custom Excluding Substring | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectStringCustomExcludingSubstring.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectStringCustomExcludingSubstring.java) | -| Inspect String Custom Hotword | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectStringCustomHotword.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectStringCustomHotword.java) | -| Inspect String Custom Omit Overlap | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectStringCustomOmitOverlap.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectStringCustomOmitOverlap.java) | -| Inspect String Multiple Rules | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectStringMultipleRules.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectStringMultipleRules.java) | -| Inspect String Omit Overlap | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectStringOmitOverlap.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectStringOmitOverlap.java) | -| Inspect String With Exclusion Dict | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectStringWithExclusionDict.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectStringWithExclusionDict.java) | -| Inspect String With Exclusion Dict Substring | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectStringWithExclusionDictSubstring.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectStringWithExclusionDictSubstring.java) | -| Inspect String With Exclusion Regex | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectStringWithExclusionRegex.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectStringWithExclusionRegex.java) | -| Inspect String Without Overlap | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectStringWithoutOverlap.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectStringWithoutOverlap.java) | -| Inspect Table | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectTable.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectTable.java) | -| Inspect Text File | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectTextFile.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectTextFile.java) | -| Inspect With Custom Regex | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectWithCustomRegex.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectWithCustomRegex.java) | -| Inspect With Hotword Rules | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/InspectWithHotwordRules.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/InspectWithHotwordRules.java) | -| Jobs Create | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/JobsCreate.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/JobsCreate.java) | -| Jobs Delete | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/JobsDelete.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/JobsDelete.java) | -| Jobs Get | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/JobsGet.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/JobsGet.java) | -| Jobs List | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/JobsList.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/JobsList.java) | -| Quick Start | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/QuickStart.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/QuickStart.java) | -| Re Identify Table With Fpe | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/ReIdentifyTableWithFpe.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/ReIdentifyTableWithFpe.java) | -| Re Identify Text With Fpe | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/ReIdentifyTextWithFpe.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/ReIdentifyTextWithFpe.java) | -| Re Identify With Fpe | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/ReIdentifyWithFpe.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/ReIdentifyWithFpe.java) | -| Redact Image File | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/RedactImageFile.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/RedactImageFile.java) | -| Redact Image File All Info Types | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/RedactImageFileAllInfoTypes.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/RedactImageFileAllInfoTypes.java) | -| Redact Image File All Text | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/RedactImageFileAllText.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/RedactImageFileAllText.java) | -| Redact Image File Colored Info Types | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/RedactImageFileColoredInfoTypes.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/RedactImageFileColoredInfoTypes.java) | -| Redact Image File Listed Info Types | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/RedactImageFileListedInfoTypes.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/RedactImageFileListedInfoTypes.java) | -| Risk Analysis Categorical Stats | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisCategoricalStats.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/RiskAnalysisCategoricalStats.java) | -| Risk Analysis K Anonymity | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisKAnonymity.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/RiskAnalysisKAnonymity.java) | -| Risk Analysis K Map | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisKMap.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/RiskAnalysisKMap.java) | -| Risk Analysis L Diversity | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisLDiversity.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/RiskAnalysisLDiversity.java) | -| Risk Analysis Numerical Stats | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisNumericalStats.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/RiskAnalysisNumericalStats.java) | -| Templates Create | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/TemplatesCreate.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/TemplatesCreate.java) | -| Templates Delete | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/TemplatesDelete.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/TemplatesDelete.java) | -| Templates List | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/TemplatesList.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/TemplatesList.java) | -| Triggers Create | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/TriggersCreate.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/TriggersCreate.java) | -| Triggers Delete | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/TriggersDelete.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/TriggersDelete.java) | -| Triggers List | [source code](https://github.com/googleapis/java-dlp/blob/main/samples/snippets/src/main/java/dlp/snippets/TriggersList.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-dlp&page=editor&open_in_editor=samples/snippets/src/main/java/dlp/snippets/TriggersList.java) | - - ## Troubleshooting diff --git a/samples/snippets/README.md b/samples/snippets/README.md index 2fa66e24..9da7cbc1 100644 --- a/samples/snippets/README.md +++ b/samples/snippets/README.md @@ -1,59 +1 @@ -# Cloud Data Loss Prevention (DLP) API Samples - - -Open in Cloud Shell - -The [Data Loss Prevention API](https://cloud.google.com/dlp/docs/) provides programmatic access to -a powerful detection engine for personally identifiable information and other privacy-sensitive data - in unstructured data streams. - -## Setup -- A Google Cloud project with billing enabled -- [Enable](https://console.cloud.google.com/launcher/details/google/dlp.googleapis.com) the DLP API. -- [Create a service account](https://cloud.google.com/docs/authentication/getting-started) -and set the `GOOGLE_APPLICATION_CREDENTIALS` environment variable pointing to the downloaded credentials file. - -## Running - -To run a specific sample, edit any variables under the `TODO(developer):` in the -function at the top of each sample, and then execute the function as convenient. - -For example, if using the command line you might use the following (replacing -`` with the name of the sample): -```bash -mvn exec:java -Dexec.mainClass="dlp.snippets." -``` - - -## Testing - -### Setup -- Ensure that `GOOGLE_APPLICATION_CREDENTIALS` points to authorized service account credentials file. -- Set the `DLP_DEID_WRAPPED_KEY` environment variable to an AES-256 key encrypted ('wrapped') [with a Cloud Key Management Service (KMS) key](https://cloud.google.com/kms/docs/encrypt-decrypt). -- Set the `DLP_DEID_KEY_NAME` environment variable to the path-name of the Cloud KMS key you wrapped `DLP_DEID_WRAPPED_KEY` with. -- [Create a Google Cloud Storage bucket](https://console.cloud.google.com/storage) and upload [test.txt](src/test/resources/test.txt). - - Set the `GCS_PATH` environment variable to point to the path for the bucket. -- Copy and paste the data below into a CSV file and [create a BigQuery table](https://cloud.google.com/bigquery/docs/loading-data-local) from the file: - ```$xslt - Name,TelephoneNumber,Mystery,Age,Gender - James,(567) 890-1234,8291 3627 8250 1234,19,Male - Gandalf,(223) 456-7890,4231 5555 6781 9876,27,Male - Dumbledore,(313) 337-1337,6291 8765 1095 7629,27,Male - Joe,(452) 223-1234,3782 2288 1166 3030,35,Male - Marie,(452) 223-1234,8291 3627 8250 1234,35,Female - Carrie,(567) 890-1234,2253 5218 4251 4526,35,Female - ``` - - Set the `BIGQUERY_DATASET` and `BIGQUERY_TABLE` environment values. -- [Create a Google Cloud Pub/Sub](https://console.cloud.google.com/datastore) topic and and a subscription that is subscribed to the topic. - - Set the `PUB_SUB_TOPIC` and `PUB_SUB_SUBSCRIPTION` environment variables to the corresponding values. -- [Create a Google Cloud Datastore](https://console.cloud.google.com/datastore) kind and add an entity with properties: - - `property1` : john@doe.com - - `property2` : 343-343-3435 -- Update the Datastore kind in [InspectTests.java](src/test/java/dlp/snippets/InspectTests.java). - - -### Run -Run all tests: -``` - mvn clean verify -``` +The samples have been moved to [GoogleCloudPlatform/java-docs-samples](https://github.com/GoogleCloudPlatform/java-docs-samples) in PR: https://github.com/GoogleCloudPlatform/java-docs-samples/pull/7664 \ No newline at end of file diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index c25e5189..dcf6fbe0 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -2,14 +2,14 @@ 4.0.0 com.google.cloud - dlp-snippets + -snippets jar Google Cloud Data Loss Prevention Snippets https://github.com/googleapis/java-dlp com.google.cloud.samples @@ -23,30 +23,14 @@ UTF-8 - - - - - - com.google.cloud - libraries-bom - 26.1.4 - pom - import - - - - + com.google.cloud google-cloud-dlp + 3.15.0 - - - com.google.cloud - google-cloud-pubsub - + junit junit @@ -59,7 +43,5 @@ 1.1.3 test - - diff --git a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableBucketing.java b/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableBucketing.java deleted file mode 100644 index bf3d7082..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableBucketing.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_deidentify_table_bucketing] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.DeidentifyContentRequest; -import com.google.privacy.dlp.v2.DeidentifyContentResponse; -import com.google.privacy.dlp.v2.FieldId; -import com.google.privacy.dlp.v2.FieldTransformation; -import com.google.privacy.dlp.v2.FixedSizeBucketingConfig; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrimitiveTransformation; -import com.google.privacy.dlp.v2.RecordTransformations; -import com.google.privacy.dlp.v2.Table; -import com.google.privacy.dlp.v2.Table.Row; -import com.google.privacy.dlp.v2.Value; -import java.io.IOException; - -public class DeIdentifyTableBucketing { - - public static void deIdentifyTableBucketing() throws IOException { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - Table tableToDeIdentify = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("AGE").build()) - .addHeaders(FieldId.newBuilder().setName("PATIENT").build()) - .addHeaders(FieldId.newBuilder().setName("HAPPINESS SCORE").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("101").build()) - .addValues(Value.newBuilder().setStringValue("Charles Dickens").build()) - .addValues(Value.newBuilder().setStringValue("95").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("22").build()) - .addValues(Value.newBuilder().setStringValue("Jane Austen").build()) - .addValues(Value.newBuilder().setStringValue("21").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("55").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain").build()) - .addValues(Value.newBuilder().setStringValue("75").build()) - .build()) - .build(); - - deIdentifyTableBucketing(projectId, tableToDeIdentify); - } - - public static Table deIdentifyTableBucketing(String projectId, Table tableToDeIdentify) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify what content you want the service to de-identify. - ContentItem contentItem = ContentItem.newBuilder().setTable(tableToDeIdentify).build(); - - // Specify how the content should be de-identified. - FixedSizeBucketingConfig fixedSizeBucketingConfig = - FixedSizeBucketingConfig.newBuilder() - .setBucketSize(10) - .setLowerBound(Value.newBuilder().setIntegerValue(0).build()) - .setUpperBound(Value.newBuilder().setIntegerValue(100).build()) - .build(); - PrimitiveTransformation primitiveTransformation = - PrimitiveTransformation.newBuilder() - .setFixedSizeBucketingConfig(fixedSizeBucketingConfig) - .build(); - - // Specify field to be encrypted. - FieldId fieldId = FieldId.newBuilder().setName("HAPPINESS SCORE").build(); - - // Associate the encryption with the specified field. - FieldTransformation fieldTransformation = - FieldTransformation.newBuilder() - .setPrimitiveTransformation(primitiveTransformation) - .addFields(fieldId) - .build(); - RecordTransformations transformations = - RecordTransformations.newBuilder().addFieldTransformations(fieldTransformation).build(); - - DeidentifyConfig deidentifyConfig = - DeidentifyConfig.newBuilder().setRecordTransformations(transformations).build(); - - // Combine configurations into a request for the service. - DeidentifyContentRequest request = - DeidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(contentItem) - .setDeidentifyConfig(deidentifyConfig) - .build(); - - // Send the request and receive response from the service. - DeidentifyContentResponse response = dlp.deidentifyContent(request); - - // Print the results. - System.out.println("Table after de-identification: " + response.getItem().getTable()); - - return response.getItem().getTable(); - } - } -} -// [END dlp_deidentify_table_bucketing] diff --git a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableConditionInfoTypes.java b/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableConditionInfoTypes.java deleted file mode 100644 index 4fe50794..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableConditionInfoTypes.java +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_deidentify_table_condition_infotypes] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.DeidentifyContentRequest; -import com.google.privacy.dlp.v2.DeidentifyContentResponse; -import com.google.privacy.dlp.v2.FieldId; -import com.google.privacy.dlp.v2.FieldTransformation; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InfoTypeTransformations; -import com.google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrimitiveTransformation; -import com.google.privacy.dlp.v2.RecordCondition; -import com.google.privacy.dlp.v2.RecordCondition.Condition; -import com.google.privacy.dlp.v2.RecordCondition.Conditions; -import com.google.privacy.dlp.v2.RecordCondition.Expressions; -import com.google.privacy.dlp.v2.RecordTransformations; -import com.google.privacy.dlp.v2.RelationalOperator; -import com.google.privacy.dlp.v2.ReplaceWithInfoTypeConfig; -import com.google.privacy.dlp.v2.Table; -import com.google.privacy.dlp.v2.Table.Row; -import com.google.privacy.dlp.v2.Value; -import java.io.IOException; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -public class DeIdentifyTableConditionInfoTypes { - - public static void deIdentifyTableConditionInfoTypes() throws IOException { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - Table tableToDeIdentify = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("AGE").build()) - .addHeaders(FieldId.newBuilder().setName("PATIENT").build()) - .addHeaders(FieldId.newBuilder().setName("HAPPINESS SCORE").build()) - .addHeaders(FieldId.newBuilder().setName("FACTOID").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("101").build()) - .addValues(Value.newBuilder().setStringValue("Charles Dickens").build()) - .addValues(Value.newBuilder().setStringValue("95").build()) - .addValues( - Value.newBuilder() - .setStringValue( - "Charles Dickens name was a curse invented by Shakespeare.") - .build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("22").build()) - .addValues(Value.newBuilder().setStringValue("Jane Austen").build()) - .addValues(Value.newBuilder().setStringValue("21").build()) - .addValues( - Value.newBuilder() - .setStringValue("There are 14 kisses in Jane Austen's novels.") - .build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("55").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain").build()) - .addValues(Value.newBuilder().setStringValue("75").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain loved cats.").build()) - .build()) - .build(); - - deIdentifyTableConditionInfoTypes(projectId, tableToDeIdentify); - } - - public static Table deIdentifyTableConditionInfoTypes(String projectId, Table tableToDeIdentify) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify what content you want the service to de-identify. - ContentItem contentItem = ContentItem.newBuilder().setTable(tableToDeIdentify).build(); - - // Specify how the content should be de-identified. - // Select type of info to be replaced. - InfoType infoType = InfoType.newBuilder().setName("PERSON_NAME").build(); - // Specify that findings should be replaced with corresponding info type name. - ReplaceWithInfoTypeConfig replaceWithInfoTypeConfig = - ReplaceWithInfoTypeConfig.getDefaultInstance(); - PrimitiveTransformation primitiveTransformation = - PrimitiveTransformation.newBuilder() - .setReplaceWithInfoTypeConfig(replaceWithInfoTypeConfig) - .build(); - // Associate info type with the replacement strategy - InfoTypeTransformation infoTypeTransformation = - InfoTypeTransformation.newBuilder() - .addInfoTypes(infoType) - .setPrimitiveTransformation(primitiveTransformation) - .build(); - InfoTypeTransformations infoTypeTransformations = - InfoTypeTransformations.newBuilder().addTransformations(infoTypeTransformation).build(); - - // Specify fields to be de-identified. - List fieldIds = - Stream.of("PATIENT", "FACTOID") - .map(id -> FieldId.newBuilder().setName(id).build()) - .collect(Collectors.toList()); - - // Specify when the above fields should be de-identified. - Condition condition = - Condition.newBuilder() - .setField(FieldId.newBuilder().setName("AGE").build()) - .setOperator(RelationalOperator.GREATER_THAN) - .setValue(Value.newBuilder().setIntegerValue(89).build()) - .build(); - // Apply the condition to records - RecordCondition recordCondition = - RecordCondition.newBuilder() - .setExpressions( - Expressions.newBuilder() - .setConditions(Conditions.newBuilder().addConditions(condition).build()) - .build()) - .build(); - - // Associate the de-identification and conditions with the specified fields. - FieldTransformation fieldTransformation = - FieldTransformation.newBuilder() - .setInfoTypeTransformations(infoTypeTransformations) - .addAllFields(fieldIds) - .setCondition(recordCondition) - .build(); - RecordTransformations transformations = - RecordTransformations.newBuilder().addFieldTransformations(fieldTransformation).build(); - - DeidentifyConfig deidentifyConfig = - DeidentifyConfig.newBuilder().setRecordTransformations(transformations).build(); - - // Combine configurations into a request for the service. - DeidentifyContentRequest request = - DeidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(contentItem) - .setDeidentifyConfig(deidentifyConfig) - .build(); - - // Send the request and receive response from the service. - DeidentifyContentResponse response = dlp.deidentifyContent(request); - - // Print the results. - System.out.println("Table after de-identification: " + response.getItem().getTable()); - - return response.getItem().getTable(); - } - } -} -// [END dlp_deidentify_table_condition_infotypes] diff --git a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableConditionMasking.java b/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableConditionMasking.java deleted file mode 100644 index 4da5db4b..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableConditionMasking.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_deidentify_table_condition_masking] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.CharacterMaskConfig; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.DeidentifyContentRequest; -import com.google.privacy.dlp.v2.DeidentifyContentResponse; -import com.google.privacy.dlp.v2.FieldId; -import com.google.privacy.dlp.v2.FieldTransformation; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrimitiveTransformation; -import com.google.privacy.dlp.v2.RecordCondition; -import com.google.privacy.dlp.v2.RecordCondition.Condition; -import com.google.privacy.dlp.v2.RecordCondition.Conditions; -import com.google.privacy.dlp.v2.RecordCondition.Expressions; -import com.google.privacy.dlp.v2.RecordTransformations; -import com.google.privacy.dlp.v2.RelationalOperator; -import com.google.privacy.dlp.v2.Table; -import com.google.privacy.dlp.v2.Table.Row; -import com.google.privacy.dlp.v2.Value; -import java.io.IOException; - -public class DeIdentifyTableConditionMasking { - - public static void deIdentifyTableConditionMasking() throws IOException { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - Table tableToDeIdentify = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("AGE").build()) - .addHeaders(FieldId.newBuilder().setName("PATIENT").build()) - .addHeaders(FieldId.newBuilder().setName("HAPPINESS SCORE").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("101").build()) - .addValues(Value.newBuilder().setStringValue("Charles Dickens").build()) - .addValues(Value.newBuilder().setStringValue("95").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("22").build()) - .addValues(Value.newBuilder().setStringValue("Jane Austen").build()) - .addValues(Value.newBuilder().setStringValue("21").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("55").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain").build()) - .addValues(Value.newBuilder().setStringValue("75").build()) - .build()) - .build(); - - deIdentifyTableConditionMasking(projectId, tableToDeIdentify); - } - - public static Table deIdentifyTableConditionMasking(String projectId, Table tableToDeIdentify) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify what content you want the service to de-identify. - ContentItem contentItem = ContentItem.newBuilder().setTable(tableToDeIdentify).build(); - - // Specify how the content should be de-identified. - CharacterMaskConfig characterMaskConfig = - CharacterMaskConfig.newBuilder().setMaskingCharacter("*").build(); - PrimitiveTransformation primitiveTransformation = - PrimitiveTransformation.newBuilder().setCharacterMaskConfig(characterMaskConfig).build(); - - // Specify field to be de-identified. - FieldId fieldId = FieldId.newBuilder().setName("HAPPINESS SCORE").build(); - - // Specify when the above field should be de-identified. - Condition condition = - Condition.newBuilder() - .setField(FieldId.newBuilder().setName("AGE").build()) - .setOperator(RelationalOperator.GREATER_THAN) - .setValue(Value.newBuilder().setIntegerValue(89).build()) - .build(); - // Apply the condition to records - RecordCondition recordCondition = - RecordCondition.newBuilder() - .setExpressions( - Expressions.newBuilder() - .setConditions(Conditions.newBuilder().addConditions(condition).build()) - .build()) - .build(); - - // Associate the de-identification and conditions with the specified field. - FieldTransformation fieldTransformation = - FieldTransformation.newBuilder() - .setPrimitiveTransformation(primitiveTransformation) - .addFields(fieldId) - .setCondition(recordCondition) - .build(); - RecordTransformations transformations = - RecordTransformations.newBuilder().addFieldTransformations(fieldTransformation).build(); - - DeidentifyConfig deidentifyConfig = - DeidentifyConfig.newBuilder().setRecordTransformations(transformations).build(); - - // Combine configurations into a request for the service. - DeidentifyContentRequest request = - DeidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(contentItem) - .setDeidentifyConfig(deidentifyConfig) - .build(); - - // Send the request and receive response from the service. - DeidentifyContentResponse response = dlp.deidentifyContent(request); - - // Print the results. - System.out.println("Table after de-identification: " + response.getItem().getTable()); - - return response.getItem().getTable(); - } - } -} -// [END dlp_deidentify_table_condition_masking] diff --git a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableInfoTypes.java b/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableInfoTypes.java deleted file mode 100644 index 3ea48cdb..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableInfoTypes.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_deidentify_table_infotypes] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.DeidentifyContentRequest; -import com.google.privacy.dlp.v2.DeidentifyContentResponse; -import com.google.privacy.dlp.v2.FieldId; -import com.google.privacy.dlp.v2.FieldTransformation; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InfoTypeTransformations; -import com.google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrimitiveTransformation; -import com.google.privacy.dlp.v2.RecordTransformations; -import com.google.privacy.dlp.v2.ReplaceWithInfoTypeConfig; -import com.google.privacy.dlp.v2.Table; -import com.google.privacy.dlp.v2.Table.Row; -import com.google.privacy.dlp.v2.Value; -import java.io.IOException; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -public class DeIdentifyTableInfoTypes { - - public static void deIdentifyTableInfoTypes() throws IOException { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - Table tableToDeIdentify = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("AGE").build()) - .addHeaders(FieldId.newBuilder().setName("PATIENT").build()) - .addHeaders(FieldId.newBuilder().setName("HAPPINESS SCORE").build()) - .addHeaders(FieldId.newBuilder().setName("FACTOID").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("101").build()) - .addValues(Value.newBuilder().setStringValue("Charles Dickens").build()) - .addValues(Value.newBuilder().setStringValue("95").build()) - .addValues( - Value.newBuilder() - .setStringValue( - "Charles Dickens name was a curse invented by Shakespeare.") - .build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("22").build()) - .addValues(Value.newBuilder().setStringValue("Jane Austen").build()) - .addValues(Value.newBuilder().setStringValue("21").build()) - .addValues( - Value.newBuilder() - .setStringValue("There are 14 kisses in Jane Austen's novels.") - .build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("55").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain").build()) - .addValues(Value.newBuilder().setStringValue("75").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain loved cats.").build()) - .build()) - .build(); - - deIdentifyTableInfoTypes(projectId, tableToDeIdentify); - } - - public static Table deIdentifyTableInfoTypes(String projectId, Table tableToDeIdentify) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify what content you want the service to de-identify. - ContentItem contentItem = ContentItem.newBuilder().setTable(tableToDeIdentify).build(); - - // Specify how the content should be de-identified. - // Select type of info to be replaced. - InfoType infoType = InfoType.newBuilder().setName("PERSON_NAME").build(); - // Specify that findings should be replaced with corresponding info type name. - ReplaceWithInfoTypeConfig replaceWithInfoTypeConfig = - ReplaceWithInfoTypeConfig.getDefaultInstance(); - PrimitiveTransformation primitiveTransformation = - PrimitiveTransformation.newBuilder() - .setReplaceWithInfoTypeConfig(replaceWithInfoTypeConfig) - .build(); - // Associate info type with the replacement strategy - InfoTypeTransformation infoTypeTransformation = - InfoTypeTransformation.newBuilder() - .addInfoTypes(infoType) - .setPrimitiveTransformation(primitiveTransformation) - .build(); - InfoTypeTransformations infoTypeTransformations = - InfoTypeTransformations.newBuilder().addTransformations(infoTypeTransformation).build(); - - // Specify fields to be de-identified. - List fieldIds = - Stream.of("PATIENT", "FACTOID") - .map(id -> FieldId.newBuilder().setName(id).build()) - .collect(Collectors.toList()); - - // Associate the de-identification and conditions with the specified field. - FieldTransformation fieldTransformation = - FieldTransformation.newBuilder() - .setInfoTypeTransformations(infoTypeTransformations) - .addAllFields(fieldIds) - .build(); - RecordTransformations transformations = - RecordTransformations.newBuilder().addFieldTransformations(fieldTransformation).build(); - - DeidentifyConfig deidentifyConfig = - DeidentifyConfig.newBuilder().setRecordTransformations(transformations).build(); - - // Combine configurations into a request for the service. - DeidentifyContentRequest request = - DeidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(contentItem) - .setDeidentifyConfig(deidentifyConfig) - .build(); - - // Send the request and receive response from the service. - DeidentifyContentResponse response = dlp.deidentifyContent(request); - - // Print the results. - System.out.println("Table after de-identification: " + response.getItem().getTable()); - - return response.getItem().getTable(); - } - } -} -// [END dlp_deidentify_table_infotypes] diff --git a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableRowSuppress.java b/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableRowSuppress.java deleted file mode 100644 index 0c02dc16..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableRowSuppress.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_deidentify_table_row_suppress] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.DeidentifyContentRequest; -import com.google.privacy.dlp.v2.DeidentifyContentResponse; -import com.google.privacy.dlp.v2.FieldId; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.RecordCondition; -import com.google.privacy.dlp.v2.RecordCondition.Condition; -import com.google.privacy.dlp.v2.RecordCondition.Conditions; -import com.google.privacy.dlp.v2.RecordCondition.Expressions; -import com.google.privacy.dlp.v2.RecordSuppression; -import com.google.privacy.dlp.v2.RecordTransformations; -import com.google.privacy.dlp.v2.RelationalOperator; -import com.google.privacy.dlp.v2.Table; -import com.google.privacy.dlp.v2.Table.Row; -import com.google.privacy.dlp.v2.Value; -import java.io.IOException; - -public class DeIdentifyTableRowSuppress { - - public static void deIdentifyTableRowSuppress() throws IOException { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - Table tableToDeIdentify = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("AGE").build()) - .addHeaders(FieldId.newBuilder().setName("PATIENT").build()) - .addHeaders(FieldId.newBuilder().setName("HAPPINESS SCORE").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("101").build()) - .addValues(Value.newBuilder().setStringValue("Charles Dickens").build()) - .addValues(Value.newBuilder().setStringValue("95").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("22").build()) - .addValues(Value.newBuilder().setStringValue("Jane Austen").build()) - .addValues(Value.newBuilder().setStringValue("21").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("55").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain").build()) - .addValues(Value.newBuilder().setStringValue("75").build()) - .build()) - .build(); - - deIdentifyTableRowSuppress(projectId, tableToDeIdentify); - } - - public static Table deIdentifyTableRowSuppress(String projectId, Table tableToDeIdentify) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify what content you want the service to de-identify. - ContentItem contentItem = ContentItem.newBuilder().setTable(tableToDeIdentify).build(); - - // Specify when the content should be de-identified. - Condition condition = - Condition.newBuilder() - .setField(FieldId.newBuilder().setName("AGE").build()) - .setOperator(RelationalOperator.GREATER_THAN) - .setValue(Value.newBuilder().setIntegerValue(89).build()) - .build(); - // Apply the condition to record suppression. - RecordSuppression recordSuppressions = - RecordSuppression.newBuilder() - .setCondition( - RecordCondition.newBuilder() - .setExpressions( - Expressions.newBuilder() - .setConditions( - Conditions.newBuilder().addConditions(condition).build()) - .build()) - .build()) - .build(); - // Use record suppression as the only transformation - RecordTransformations transformations = - RecordTransformations.newBuilder().addRecordSuppressions(recordSuppressions).build(); - - DeidentifyConfig deidentifyConfig = - DeidentifyConfig.newBuilder().setRecordTransformations(transformations).build(); - - // Combine configurations into a request for the service. - DeidentifyContentRequest request = - DeidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(contentItem) - .setDeidentifyConfig(deidentifyConfig) - .build(); - - // Send the request and receive response from the service. - DeidentifyContentResponse response = dlp.deidentifyContent(request); - - // Print the results. - System.out.println("Table after de-identification: " + response.getItem().getTable()); - - return response.getItem().getTable(); - } - } -} -// [END dlp_deidentify_table_row_suppress] diff --git a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableWithFpe.java b/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableWithFpe.java deleted file mode 100644 index 7fb249f6..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTableWithFpe.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_deidentify_table_fpe] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.common.io.BaseEncoding; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CryptoKey; -import com.google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig; -import com.google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.FfxCommonNativeAlphabet; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.DeidentifyContentRequest; -import com.google.privacy.dlp.v2.DeidentifyContentResponse; -import com.google.privacy.dlp.v2.FieldId; -import com.google.privacy.dlp.v2.FieldTransformation; -import com.google.privacy.dlp.v2.KmsWrappedCryptoKey; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrimitiveTransformation; -import com.google.privacy.dlp.v2.RecordTransformations; -import com.google.privacy.dlp.v2.Table; -import com.google.privacy.dlp.v2.Table.Row; -import com.google.privacy.dlp.v2.Value; -import com.google.protobuf.ByteString; -import java.io.IOException; - -public class DeIdentifyTableWithFpe { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String kmsKeyName = - "projects/YOUR_PROJECT/" - + "locations/YOUR_KEYRING_REGION/" - + "keyRings/YOUR_KEYRING_NAME/" - + "cryptoKeys/YOUR_KEY_NAME"; - String wrappedAesKey = "YOUR_ENCRYPTED_AES_256_KEY"; - Table tableToDeIdentify = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("Employee ID").build()) - .addHeaders(FieldId.newBuilder().setName("Date").build()) - .addHeaders(FieldId.newBuilder().setName("Compensation").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("11111").build()) - .addValues(Value.newBuilder().setStringValue("2015").build()) - .addValues(Value.newBuilder().setStringValue("$10").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("11111").build()) - .addValues(Value.newBuilder().setStringValue("2016").build()) - .addValues(Value.newBuilder().setStringValue("$20").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("22222").build()) - .addValues(Value.newBuilder().setStringValue("2016").build()) - .addValues(Value.newBuilder().setStringValue("$15").build()) - .build()) - .build(); - deIdentifyTableWithFpe(projectId, tableToDeIdentify, kmsKeyName, wrappedAesKey); - } - - public static void deIdentifyTableWithFpe( - String projectId, Table tableToDeIdentify, String kmsKeyName, String wrappedAesKey) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify what content you want the service to de-identify. - ContentItem contentItem = ContentItem.newBuilder().setTable(tableToDeIdentify).build(); - - // Specify an encrypted AES-256 key and the name of the Cloud KMS key that encrypted it - KmsWrappedCryptoKey kmsWrappedCryptoKey = - KmsWrappedCryptoKey.newBuilder() - .setWrappedKey(ByteString.copyFrom(BaseEncoding.base64().decode(wrappedAesKey))) - .setCryptoKeyName(kmsKeyName) - .build(); - CryptoKey cryptoKey = CryptoKey.newBuilder().setKmsWrapped(kmsWrappedCryptoKey).build(); - - // Specify how the content should be encrypted. - CryptoReplaceFfxFpeConfig cryptoReplaceFfxFpeConfig = - CryptoReplaceFfxFpeConfig.newBuilder() - .setCryptoKey(cryptoKey) - // Set of characters in the input text. For more info, see - // https://cloud.google.com/dlp/docs/reference/rest/v2/organizations.deidentifyTemplates#DeidentifyTemplate.FfxCommonNativeAlphabet - .setCommonAlphabet(FfxCommonNativeAlphabet.NUMERIC) - .build(); - PrimitiveTransformation primitiveTransformation = - PrimitiveTransformation.newBuilder() - .setCryptoReplaceFfxFpeConfig(cryptoReplaceFfxFpeConfig) - .build(); - - // Specify field to be encrypted. - FieldId fieldId = FieldId.newBuilder().setName("Employee ID").build(); - - // Associate the encryption with the specified field. - FieldTransformation fieldTransformation = - FieldTransformation.newBuilder() - .setPrimitiveTransformation(primitiveTransformation) - .addFields(fieldId) - .build(); - RecordTransformations transformations = - RecordTransformations.newBuilder().addFieldTransformations(fieldTransformation).build(); - - DeidentifyConfig deidentifyConfig = - DeidentifyConfig.newBuilder().setRecordTransformations(transformations).build(); - - // Combine configurations into a request for the service. - DeidentifyContentRequest request = - DeidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(contentItem) - .setDeidentifyConfig(deidentifyConfig) - .build(); - - // Send the request and receive response from the service. - DeidentifyContentResponse response = dlp.deidentifyContent(request); - - // Print the results. - System.out.println( - "Table after format-preserving encryption: " + response.getItem().getTable()); - } - } -} -// [END dlp_deidentify_table_fpe] diff --git a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTextWithFpe.java b/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTextWithFpe.java deleted file mode 100644 index 8922db0b..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyTextWithFpe.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_deidentify_text_fpe] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.common.io.BaseEncoding; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CryptoKey; -import com.google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig; -import com.google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.FfxCommonNativeAlphabet; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.DeidentifyContentRequest; -import com.google.privacy.dlp.v2.DeidentifyContentResponse; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InfoTypeTransformations; -import com.google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.KmsWrappedCryptoKey; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrimitiveTransformation; -import com.google.protobuf.ByteString; -import java.io.IOException; -import java.util.Arrays; - -public class DeIdentifyTextWithFpe { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToDeIdentify = "I'm Gary and my email is gary@example.com"; - String kmsKeyName = - "projects/YOUR_PROJECT/" - + "locations/YOUR_KEYRING_REGION/" - + "keyRings/YOUR_KEYRING_NAME/" - + "cryptoKeys/YOUR_KEY_NAME"; - String wrappedAesKey = "YOUR_ENCRYPTED_AES_256_KEY"; - deIdentifyTextWithFpe(projectId, textToDeIdentify, kmsKeyName, wrappedAesKey); - } - - public static void deIdentifyTextWithFpe( - String projectId, String textToDeIdentify, String kmsKeyName, String wrappedAesKey) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify what content you want the service to de-identify. - ContentItem contentItem = ContentItem.newBuilder().setValue(textToDeIdentify).build(); - - // Specify the type of info you want the service to de-identify. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types. - InfoType infoType = InfoType.newBuilder().setName("PHONE_NUMBER").build(); - InspectConfig inspectConfig = - InspectConfig.newBuilder().addAllInfoTypes(Arrays.asList(infoType)).build(); - - // Specify an encrypted AES-256 key and the name of the Cloud KMS key that encrypted it. - KmsWrappedCryptoKey kmsWrappedCryptoKey = - KmsWrappedCryptoKey.newBuilder() - .setWrappedKey(ByteString.copyFrom(BaseEncoding.base64().decode(wrappedAesKey))) - .setCryptoKeyName(kmsKeyName) - .build(); - CryptoKey cryptoKey = CryptoKey.newBuilder().setKmsWrapped(kmsWrappedCryptoKey).build(); - - // Specify how the info from the inspection should be encrypted. - InfoType surrogateInfoType = InfoType.newBuilder().setName("PHONE_TOKEN").build(); - CryptoReplaceFfxFpeConfig cryptoReplaceFfxFpeConfig = - CryptoReplaceFfxFpeConfig.newBuilder() - .setCryptoKey(cryptoKey) - // Set of characters in the input text. For more info, see - // https://cloud.google.com/dlp/docs/reference/rest/v2/organizations.deidentifyTemplates#DeidentifyTemplate.FfxCommonNativeAlphabet - .setCommonAlphabet(FfxCommonNativeAlphabet.NUMERIC) - .setSurrogateInfoType(surrogateInfoType) - .build(); - PrimitiveTransformation primitiveTransformation = - PrimitiveTransformation.newBuilder() - .setCryptoReplaceFfxFpeConfig(cryptoReplaceFfxFpeConfig) - .build(); - InfoTypeTransformation infoTypeTransformation = - InfoTypeTransformation.newBuilder() - .setPrimitiveTransformation(primitiveTransformation) - .build(); - InfoTypeTransformations transformations = - InfoTypeTransformations.newBuilder().addTransformations(infoTypeTransformation).build(); - - DeidentifyConfig deidentifyConfig = - DeidentifyConfig.newBuilder().setInfoTypeTransformations(transformations).build(); - - // Combine configurations into a request for the service. - DeidentifyContentRequest request = - DeidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(contentItem) - .setInspectConfig(inspectConfig) - .setDeidentifyConfig(deidentifyConfig) - .build(); - - // Send the request and receive response from the service. - DeidentifyContentResponse response = dlp.deidentifyContent(request); - - // Print the results. - System.out.println( - "Text after format-preserving encryption: " + response.getItem().getValue()); - } - } -} -// [END dlp_deidentify_text_fpe] diff --git a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithDateShift.java b/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithDateShift.java deleted file mode 100644 index abbc2dae..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithDateShift.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_deidentify_date_shift] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.common.base.Splitter; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.DateShiftConfig; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.DeidentifyContentRequest; -import com.google.privacy.dlp.v2.DeidentifyContentResponse; -import com.google.privacy.dlp.v2.FieldId; -import com.google.privacy.dlp.v2.FieldTransformation; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrimitiveTransformation; -import com.google.privacy.dlp.v2.RecordTransformations; -import com.google.privacy.dlp.v2.Table; -import com.google.privacy.dlp.v2.Value; -import com.google.type.Date; -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -public class DeIdentifyWithDateShift { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - Path inputCsvFile = Paths.get("path/to/your/input/file.csv"); - Path outputCsvFile = Paths.get("path/to/your/output/file.csv"); - deIdentifyWithDateShift(projectId, inputCsvFile, outputCsvFile); - } - - public static void deIdentifyWithDateShift( - String projectId, Path inputCsvFile, Path outputCsvFile) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Read the contents of the CSV file into a Table - List headers; - List rows; - try (BufferedReader input = Files.newBufferedReader(inputCsvFile)) { - // Parse and convert the first line into header names - headers = - Arrays.stream(input.readLine().split(",")) - .map(header -> FieldId.newBuilder().setName(header).build()) - .collect(Collectors.toList()); - // Parse the remainder of the file as Table.Rows - rows = - input.lines().map(DeIdentifyWithDateShift::parseLineAsRow).collect(Collectors.toList()); - } - Table table = Table.newBuilder().addAllHeaders(headers).addAllRows(rows).build(); - ContentItem item = ContentItem.newBuilder().setTable(table).build(); - - // Set the maximum days to shift dates backwards (lower bound) or forward (upper bound) - DateShiftConfig dateShiftConfig = - DateShiftConfig.newBuilder().setLowerBoundDays(5).setUpperBoundDays(5).build(); - PrimitiveTransformation transformation = - PrimitiveTransformation.newBuilder().setDateShiftConfig(dateShiftConfig).build(); - // Specify which fields the DateShift should apply too - List dateFields = Arrays.asList(headers.get(1), headers.get(3)); - FieldTransformation fieldTransformation = - FieldTransformation.newBuilder() - .addAllFields(dateFields) - .setPrimitiveTransformation(transformation) - .build(); - RecordTransformations recordTransformations = - RecordTransformations.newBuilder().addFieldTransformations(fieldTransformation).build(); - // Specify the config for the de-identify request - DeidentifyConfig deidentifyConfig = - DeidentifyConfig.newBuilder().setRecordTransformations(recordTransformations).build(); - - // Combine configurations into a request for the service. - DeidentifyContentRequest request = - DeidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setDeidentifyConfig(deidentifyConfig) - .build(); - - // Send the request and receive response from the service - DeidentifyContentResponse response = dlp.deidentifyContent(request); - - // Write the results to the target CSV file - try (BufferedWriter writer = Files.newBufferedWriter(outputCsvFile)) { - Table outTable = response.getItem().getTable(); - String headerOut = - outTable.getHeadersList().stream() - .map(FieldId::getName) - .collect(Collectors.joining(",")); - writer.write(headerOut + "\n"); - - List rowOutput = - outTable.getRowsList().stream() - .map(row -> joinRow(row.getValuesList())) - .collect(Collectors.toList()); - for (String line : rowOutput) { - writer.write(line + "\n"); - } - System.out.println("Content written to file: " + outputCsvFile.toString()); - } - } - } - - // Convert the string from the csv file into com.google.type.Date - public static Date parseAsDate(String s) { - LocalDate date = LocalDate.parse(s, DateTimeFormatter.ofPattern("MM/dd/yyyy")); - return Date.newBuilder() - .setDay(date.getDayOfMonth()) - .setMonth(date.getMonthValue()) - .setYear(date.getYear()) - .build(); - } - - // Each row is in the format: Name,BirthDate,CreditCardNumber,RegisterDate - public static Table.Row parseLineAsRow(String line) { - List values = Splitter.on(",").splitToList(line); - Value name = Value.newBuilder().setStringValue(values.get(0)).build(); - Value birthDate = Value.newBuilder().setDateValue(parseAsDate(values.get(1))).build(); - Value creditCardNumber = Value.newBuilder().setStringValue(values.get(2)).build(); - Value registerDate = Value.newBuilder().setDateValue(parseAsDate(values.get(3))).build(); - return Table.Row.newBuilder() - .addValues(name) - .addValues(birthDate) - .addValues(creditCardNumber) - .addValues(registerDate) - .build(); - } - - public static String formatDate(Date d) { - return String.format("%s/%s/%s", d.getMonth(), d.getDay(), d.getYear()); - } - - public static String joinRow(List values) { - String name = values.get(0).getStringValue(); - String birthDate = formatDate(values.get(1).getDateValue()); - String creditCardNumber = values.get(2).getStringValue(); - String registerDate = formatDate(values.get(3).getDateValue()); - return String.join(",", name, birthDate, creditCardNumber, registerDate); - } -} -// [END dlp_deidentify_date_shift] diff --git a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithExceptionList.java b/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithExceptionList.java deleted file mode 100644 index 42c5c25d..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithExceptionList.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_deidentify_exception_list] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CustomInfoType; -import com.google.privacy.dlp.v2.CustomInfoType.Dictionary; -import com.google.privacy.dlp.v2.CustomInfoType.Dictionary.WordList; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.DeidentifyContentRequest; -import com.google.privacy.dlp.v2.DeidentifyContentResponse; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InfoTypeTransformations; -import com.google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrimitiveTransformation; -import com.google.privacy.dlp.v2.ReplaceWithInfoTypeConfig; -import java.io.IOException; - -public class DeIdentifyWithExceptionList { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToDeIdentify = "jack@example.org accessed customer record of user5@example.com"; - deIdentifyWithExceptionList(projectId, textToDeIdentify); - } - - public static void deIdentifyWithExceptionList(String projectId, String textToDeIdentify) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - - // Specify what content you want the service to DeIdentify. - ContentItem contentItem = ContentItem.newBuilder().setValue(textToDeIdentify).build(); - - // Construct the custom word list to be detected. - Dictionary wordList = - Dictionary.newBuilder() - .setWordList( - WordList.newBuilder() - .addWords("jack@example.org") - .addWords("jill@example.org") - .build()) - .build(); - - // Construct the custom dictionary detector associated with the word list. - InfoType developerEmail = InfoType.newBuilder().setName("DEVELOPER_EMAIL").build(); - CustomInfoType customInfoType = - CustomInfoType.newBuilder().setInfoType(developerEmail).setDictionary(wordList).build(); - - // Specify the word list custom info type and build-in info type the inspection will look for. - InfoType emailAddress = InfoType.newBuilder().setName("EMAIL_ADDRESS").build(); - InspectConfig inspectConfig = - InspectConfig.newBuilder() - .addInfoTypes(emailAddress) - .addCustomInfoTypes(customInfoType) - .build(); - - // Define type of deidentification as replacement. - PrimitiveTransformation primitiveTransformation = - PrimitiveTransformation.newBuilder() - .setReplaceWithInfoTypeConfig(ReplaceWithInfoTypeConfig.getDefaultInstance()) - .build(); - - // Associate de-identification type with info type. - InfoTypeTransformation transformation = - InfoTypeTransformation.newBuilder() - .addInfoTypes(emailAddress) - .setPrimitiveTransformation(primitiveTransformation) - .build(); - - // Construct the configuration for the de-id request and list all desired transformations. - DeidentifyConfig deidentifyConfig = - DeidentifyConfig.newBuilder() - .setInfoTypeTransformations( - InfoTypeTransformations.newBuilder().addTransformations(transformation)) - .build(); - - // Combine configurations into a request for the service. - DeidentifyContentRequest request = - DeidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(contentItem) - .setInspectConfig(inspectConfig) - .setDeidentifyConfig(deidentifyConfig) - .build(); - - // Send the request and receive response from the service - DeidentifyContentResponse response = dlp.deidentifyContent(request); - - // Print the results - System.out.println( - "Text after replace with infotype config: " + response.getItem().getValue()); - } - } -} -// [END dlp_deidentify_exception_list] diff --git a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithFpe.java b/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithFpe.java deleted file mode 100644 index bb947c9a..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithFpe.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_deidentify_fpe] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.common.io.BaseEncoding; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CryptoKey; -import com.google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig; -import com.google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.FfxCommonNativeAlphabet; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.DeidentifyContentRequest; -import com.google.privacy.dlp.v2.DeidentifyContentResponse; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InfoTypeTransformations; -import com.google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.KmsWrappedCryptoKey; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrimitiveTransformation; -import com.google.protobuf.ByteString; -import java.io.IOException; -import java.util.Arrays; - -public class DeIdentifyWithFpe { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToDeIdentify = "I'm Gary and my email is gary@example.com"; - String kmsKeyName = - "projects/YOUR_PROJECT/" - + "locations/YOUR_KEYRING_REGION/" - + "keyRings/YOUR_KEYRING_NAME/" - + "cryptoKeys/YOUR_KEY_NAME"; - String wrappedAesKey = "YOUR_ENCRYPTED_AES_256_KEY"; - deIdentifyWithFpe(projectId, textToDeIdentify, kmsKeyName, wrappedAesKey); - } - - public static void deIdentifyWithFpe( - String projectId, String textToDeIdentify, String kmsKeyName, String wrappedAesKey) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify what content you want the service to DeIdentify - ContentItem contentItem = ContentItem.newBuilder().setValue(textToDeIdentify).build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - InfoType infoType = InfoType.newBuilder().setName("US_SOCIAL_SECURITY_NUMBER").build(); - InspectConfig inspectConfig = - InspectConfig.newBuilder().addAllInfoTypes(Arrays.asList(infoType)).build(); - - // Specify an encrypted AES-256 key and the name of the Cloud KMS key that encrypted it - KmsWrappedCryptoKey kmsWrappedCryptoKey = - KmsWrappedCryptoKey.newBuilder() - .setWrappedKey(ByteString.copyFrom(BaseEncoding.base64().decode(wrappedAesKey))) - .setCryptoKeyName(kmsKeyName) - .build(); - CryptoKey cryptoKey = CryptoKey.newBuilder().setKmsWrapped(kmsWrappedCryptoKey).build(); - - // Specify how the info from the inspection should be encrypted. - InfoType surrogateInfoType = InfoType.newBuilder().setName("SSN_TOKEN").build(); - CryptoReplaceFfxFpeConfig cryptoReplaceFfxFpeConfig = - CryptoReplaceFfxFpeConfig.newBuilder() - .setCryptoKey(cryptoKey) - // Set of characters in the input text. For more info, see - // https://cloud.google.com/dlp/docs/reference/rest/v2/organizations.deidentifyTemplates#DeidentifyTemplate.FfxCommonNativeAlphabet - .setCommonAlphabet(FfxCommonNativeAlphabet.NUMERIC) - .setSurrogateInfoType(surrogateInfoType) - .build(); - PrimitiveTransformation primitiveTransformation = - PrimitiveTransformation.newBuilder() - .setCryptoReplaceFfxFpeConfig(cryptoReplaceFfxFpeConfig) - .build(); - InfoTypeTransformation infoTypeTransformation = - InfoTypeTransformation.newBuilder() - .setPrimitiveTransformation(primitiveTransformation) - .build(); - InfoTypeTransformations transformations = - InfoTypeTransformations.newBuilder().addTransformations(infoTypeTransformation).build(); - - DeidentifyConfig deidentifyConfig = - DeidentifyConfig.newBuilder().setInfoTypeTransformations(transformations).build(); - - // Combine configurations into a request for the service. - DeidentifyContentRequest request = - DeidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(contentItem) - .setInspectConfig(inspectConfig) - .setDeidentifyConfig(deidentifyConfig) - .build(); - - // Send the request and receive response from the service - DeidentifyContentResponse response = dlp.deidentifyContent(request); - - // Print the results - System.out.println( - "Text after format-preserving encryption: " + response.getItem().getValue()); - } - } -} -// [END dlp_deidentify_fpe] diff --git a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithInfoType.java b/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithInfoType.java deleted file mode 100644 index bc830dcd..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithInfoType.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_deidentify_infotype] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.DeidentifyContentRequest; -import com.google.privacy.dlp.v2.DeidentifyContentResponse; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InfoTypeTransformations; -import com.google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrimitiveTransformation; -import com.google.privacy.dlp.v2.ReplaceWithInfoTypeConfig; -import java.io.IOException; - -public class DeIdentifyWithInfoType { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToInspect = "My email is test@example.com"; - deIdentifyWithInfoType(projectId, textToInspect); - } - - public static void deIdentifyWithInfoType(String projectId, String textToRedact) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the content to be inspected. - ContentItem item = ContentItem.newBuilder().setValue(textToRedact).build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - InfoType infoType = InfoType.newBuilder().setName("EMAIL_ADDRESS").build(); - InspectConfig inspectConfig = InspectConfig.newBuilder().addInfoTypes(infoType).build(); - // Specify replacement string to be used for the finding. - ReplaceWithInfoTypeConfig replaceWithInfoTypeConfig = - ReplaceWithInfoTypeConfig.newBuilder().build(); - // Define type of deidentification as replacement with info type. - PrimitiveTransformation primitiveTransformation = - PrimitiveTransformation.newBuilder() - .setReplaceWithInfoTypeConfig(replaceWithInfoTypeConfig) - .build(); - // Associate deidentification type with info type. - InfoTypeTransformation transformation = - InfoTypeTransformation.newBuilder() - .addInfoTypes(infoType) - .setPrimitiveTransformation(primitiveTransformation) - .build(); - // Construct the configuration for the Redact request and list all desired transformations. - DeidentifyConfig redactConfig = - DeidentifyConfig.newBuilder() - .setInfoTypeTransformations( - InfoTypeTransformations.newBuilder().addTransformations(transformation)) - .build(); - - // Construct the Redact request to be sent by the client. - DeidentifyContentRequest request = - DeidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setDeidentifyConfig(redactConfig) - .setInspectConfig(inspectConfig) - .build(); - - // Use the client to send the API request. - DeidentifyContentResponse response = dlp.deidentifyContent(request); - - // Parse the response and process results - System.out.println("Text after redaction: " + response.getItem().getValue()); - } - } -} -// [END dlp_deidentify_replace] diff --git a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithMasking.java b/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithMasking.java deleted file mode 100644 index 5d387688..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithMasking.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_deidentify_masking] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.CharacterMaskConfig; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.DeidentifyContentRequest; -import com.google.privacy.dlp.v2.DeidentifyContentResponse; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InfoTypeTransformations; -import com.google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrimitiveTransformation; -import com.google.privacy.dlp.v2.ReplaceWithInfoTypeConfig; -import java.io.IOException; -import java.util.Arrays; - -public class DeIdentifyWithMasking { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToDeIdentify = "My SSN is 372819127"; - deIdentifyWithMasking(projectId, textToDeIdentify); - } - - public static void deIdentifyWithMasking(String projectId, String textToDeIdentify) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - - // Specify what content you want the service to DeIdentify - ContentItem contentItem = ContentItem.newBuilder().setValue(textToDeIdentify).build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - InfoType infoType = InfoType.newBuilder().setName("US_SOCIAL_SECURITY_NUMBER").build(); - InspectConfig inspectConfig = - InspectConfig.newBuilder().addAllInfoTypes(Arrays.asList(infoType)).build(); - - // Specify how the info from the inspection should be masked. - CharacterMaskConfig characterMaskConfig = - CharacterMaskConfig.newBuilder() - .setMaskingCharacter("X") // Character to replace the found info with - .setNumberToMask(5) // How many characters should be masked - .build(); - PrimitiveTransformation primitiveTransformation = - PrimitiveTransformation.newBuilder() - .setReplaceWithInfoTypeConfig(ReplaceWithInfoTypeConfig.getDefaultInstance()) - .build(); - InfoTypeTransformation infoTypeTransformation = - InfoTypeTransformation.newBuilder() - .setPrimitiveTransformation(primitiveTransformation) - .build(); - InfoTypeTransformations transformations = - InfoTypeTransformations.newBuilder().addTransformations(infoTypeTransformation).build(); - - DeidentifyConfig deidentifyConfig = - DeidentifyConfig.newBuilder().setInfoTypeTransformations(transformations).build(); - - // Combine configurations into a request for the service. - DeidentifyContentRequest request = - DeidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(contentItem) - .setInspectConfig(inspectConfig) - .setDeidentifyConfig(deidentifyConfig) - .build(); - - // Send the request and receive response from the service - DeidentifyContentResponse response = dlp.deidentifyContent(request); - - // Print the results - System.out.println("Text after masking: " + response.getItem().getValue()); - } - } -} -// [END dlp_deidentify_masking] diff --git a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithRedaction.java b/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithRedaction.java deleted file mode 100644 index 4c7f748b..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithRedaction.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_deidentify_redact] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.DeidentifyContentRequest; -import com.google.privacy.dlp.v2.DeidentifyContentResponse; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InfoTypeTransformations; -import com.google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrimitiveTransformation; -import com.google.privacy.dlp.v2.RedactConfig; - -public class DeIdentifyWithRedaction { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToInspect = - "My name is Alicia Abernathy, and my email address is aabernathy@example.com."; - deIdentifyWithRedaction(projectId, textToInspect); - } - - // Inspects the provided text. - public static void deIdentifyWithRedaction(String projectId, String textToRedact) { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the content to be inspected. - ContentItem item = ContentItem.newBuilder().setValue(textToRedact).build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - InfoType infoType = InfoType.newBuilder().setName("EMAIL_ADDRESS").build(); - InspectConfig inspectConfig = InspectConfig.newBuilder().addInfoTypes(infoType).build(); - // Define type of deidentification. - PrimitiveTransformation primitiveTransformation = - PrimitiveTransformation.newBuilder() - .setRedactConfig(RedactConfig.getDefaultInstance()) - .build(); - // Associate deidentification type with info type. - InfoTypeTransformation transformation = - InfoTypeTransformation.newBuilder() - .addInfoTypes(infoType) - .setPrimitiveTransformation(primitiveTransformation) - .build(); - // Construct the configuration for the Redact request and list all desired transformations. - DeidentifyConfig redactConfig = - DeidentifyConfig.newBuilder() - .setInfoTypeTransformations( - InfoTypeTransformations.newBuilder().addTransformations(transformation)) - .build(); - - // Construct the Redact request to be sent by the client. - DeidentifyContentRequest request = - DeidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setDeidentifyConfig(redactConfig) - .setInspectConfig(inspectConfig) - .build(); - - // Use the client to send the API request. - DeidentifyContentResponse response = dlp.deidentifyContent(request); - - // Parse the response and process results - System.out.println("Text after redaction: " + response.getItem().getValue()); - } catch (Exception e) { - System.out.println("Error during inspectString: \n" + e.toString()); - } - } -} -// [END dlp_deidentify_redact] diff --git a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithReplacement.java b/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithReplacement.java deleted file mode 100644 index 3a578f05..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithReplacement.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_deidentify_replace] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.DeidentifyContentRequest; -import com.google.privacy.dlp.v2.DeidentifyContentResponse; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InfoTypeTransformations; -import com.google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrimitiveTransformation; -import com.google.privacy.dlp.v2.ReplaceValueConfig; -import com.google.privacy.dlp.v2.Value; - -public class DeIdentifyWithReplacement { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToInspect = - "My name is Alicia Abernathy, and my email address is aabernathy@example.com."; - deIdentifyWithReplacement(projectId, textToInspect); - } - - // Inspects the provided text. - public static void deIdentifyWithReplacement(String projectId, String textToRedact) { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the content to be inspected. - ContentItem item = ContentItem.newBuilder().setValue(textToRedact).build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - InfoType infoType = InfoType.newBuilder().setName("EMAIL_ADDRESS").build(); - InspectConfig inspectConfig = InspectConfig.newBuilder().addInfoTypes(infoType).build(); - // Specify replacement string to be used for the finding. - ReplaceValueConfig replaceValueConfig = - ReplaceValueConfig.newBuilder() - .setNewValue(Value.newBuilder().setStringValue("[email-address]").build()) - .build(); - // Define type of deidentification as replacement. - PrimitiveTransformation primitiveTransformation = - PrimitiveTransformation.newBuilder().setReplaceConfig(replaceValueConfig).build(); - // Associate deidentification type with info type. - InfoTypeTransformation transformation = - InfoTypeTransformation.newBuilder() - .addInfoTypes(infoType) - .setPrimitiveTransformation(primitiveTransformation) - .build(); - // Construct the configuration for the Redact request and list all desired transformations. - DeidentifyConfig redactConfig = - DeidentifyConfig.newBuilder() - .setInfoTypeTransformations( - InfoTypeTransformations.newBuilder().addTransformations(transformation)) - .build(); - - // Construct the Redact request to be sent by the client. - DeidentifyContentRequest request = - DeidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setDeidentifyConfig(redactConfig) - .setInspectConfig(inspectConfig) - .build(); - - // Use the client to send the API request. - DeidentifyContentResponse response = dlp.deidentifyContent(request); - - // Parse the response and process results - System.out.println("Text after redaction: " + response.getItem().getValue()); - } catch (Exception e) { - System.out.println("Error during inspectString: \n" + e.toString()); - } - } -} -// [END dlp_deidentify_replace] diff --git a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithSimpleWordList.java b/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithSimpleWordList.java deleted file mode 100644 index 993277a0..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/DeIdentifyWithSimpleWordList.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_deidentify_simple_word_list] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CustomInfoType; -import com.google.privacy.dlp.v2.CustomInfoType.Dictionary; -import com.google.privacy.dlp.v2.CustomInfoType.Dictionary.WordList; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.DeidentifyContentRequest; -import com.google.privacy.dlp.v2.DeidentifyContentResponse; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InfoTypeTransformations; -import com.google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrimitiveTransformation; -import com.google.privacy.dlp.v2.ReplaceWithInfoTypeConfig; -import java.io.IOException; - -public class DeIdentifyWithSimpleWordList { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToDeIdentify = "Patient was seen in RM-YELLOW then transferred to rm green."; - deidentifyWithSimpleWordList(projectId, textToDeIdentify); - } - - public static void deidentifyWithSimpleWordList(String projectId, String textToDeIdentify) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - - // Specify what content you want the service to DeIdentify. - ContentItem contentItem = ContentItem.newBuilder().setValue(textToDeIdentify).build(); - - // Construct the word list to be detected - Dictionary wordList = - Dictionary.newBuilder() - .setWordList( - WordList.newBuilder() - .addWords("RM-GREEN") - .addWords("RM-YELLOW") - .addWords("RM-ORANGE") - .build()) - .build(); - - // Specify the word list custom info type the inspection will look for. - InfoType infoType = InfoType.newBuilder().setName("CUSTOM_ROOM_ID").build(); - CustomInfoType customInfoType = - CustomInfoType.newBuilder().setInfoType(infoType).setDictionary(wordList).build(); - InspectConfig inspectConfig = - InspectConfig.newBuilder().addCustomInfoTypes(customInfoType).build(); - - // Define type of deidentification as replacement. - PrimitiveTransformation primitiveTransformation = - PrimitiveTransformation.newBuilder() - .setReplaceWithInfoTypeConfig(ReplaceWithInfoTypeConfig.getDefaultInstance()) - .build(); - - // Associate deidentification type with info type. - InfoTypeTransformation transformation = - InfoTypeTransformation.newBuilder() - .addInfoTypes(infoType) - .setPrimitiveTransformation(primitiveTransformation) - .build(); - - // Construct the configuration for the Redact request and list all desired transformations. - DeidentifyConfig deidentifyConfig = - DeidentifyConfig.newBuilder() - .setInfoTypeTransformations( - InfoTypeTransformations.newBuilder().addTransformations(transformation)) - .build(); - - // Combine configurations into a request for the service. - DeidentifyContentRequest request = - DeidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(contentItem) - .setInspectConfig(inspectConfig) - .setDeidentifyConfig(deidentifyConfig) - .build(); - - // Send the request and receive response from the service - DeidentifyContentResponse response = dlp.deidentifyContent(request); - - // Print the results - System.out.println( - "Text after replace with infotype config: " + response.getItem().getValue()); - } - } -} -// [END dlp_deidentify_simple_word_list] diff --git a/samples/snippets/src/main/java/dlp/snippets/InfoTypesList.java b/samples/snippets/src/main/java/dlp/snippets/InfoTypesList.java deleted file mode 100644 index 43a304ea..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InfoTypesList.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_list_info_types] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.InfoTypeDescription; -import com.google.privacy.dlp.v2.ListInfoTypesRequest; -import com.google.privacy.dlp.v2.ListInfoTypesResponse; -import java.io.IOException; - -public class InfoTypesList { - - public static void main(String[] args) throws IOException { - listInfoTypes(); - } - - // Lists the types of sensitive information the DLP API supports. - public static void listInfoTypes() throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlpClient = DlpServiceClient.create()) { - - // Construct the request to be sent by the client - ListInfoTypesRequest listInfoTypesRequest = - ListInfoTypesRequest.newBuilder() - // Only return infoTypes supported by certain parts of the API. - // Supported filters are "supported_by=INSPECT" and "supported_by=RISK_ANALYSIS" - // Defaults to "supported_by=INSPECT" - .setFilter("supported_by=INSPECT") - // BCP-47 language code for localized infoType friendly names. - // Defaults to "en_US" - .setLanguageCode("en-US") - .build(); - - // Use the client to send the API request. - ListInfoTypesResponse response = dlpClient.listInfoTypes(listInfoTypesRequest); - - // Parse the response and process the results - System.out.println("Infotypes found:"); - for (InfoTypeDescription infoTypeDescription : response.getInfoTypesList()) { - System.out.println("Name : " + infoTypeDescription.getName()); - System.out.println("Display name : " + infoTypeDescription.getDisplayName()); - } - } - } -} -// [END dlp_list_info_types] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectBigQueryTable.java b/samples/snippets/src/main/java/dlp/snippets/InspectBigQueryTable.java deleted file mode 100644 index ac6335c8..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectBigQueryTable.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_bigquery] - -import com.google.api.core.SettableApiFuture; -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.cloud.pubsub.v1.AckReplyConsumer; -import com.google.cloud.pubsub.v1.MessageReceiver; -import com.google.cloud.pubsub.v1.Subscriber; -import com.google.privacy.dlp.v2.Action; -import com.google.privacy.dlp.v2.BigQueryOptions; -import com.google.privacy.dlp.v2.BigQueryTable; -import com.google.privacy.dlp.v2.CreateDlpJobRequest; -import com.google.privacy.dlp.v2.DlpJob; -import com.google.privacy.dlp.v2.GetDlpJobRequest; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InfoTypeStats; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectDataSourceDetails; -import com.google.privacy.dlp.v2.InspectJobConfig; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.StorageConfig; -import com.google.pubsub.v1.ProjectSubscriptionName; -import com.google.pubsub.v1.PubsubMessage; -import java.io.IOException; -import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -public class InspectBigQueryTable { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String bigQueryDatasetId = "your-bigquery-dataset-id"; - String bigQueryTableId = "your-bigquery-table-id"; - String topicId = "your-pubsub-topic-id"; - String subscriptionId = "your-pubsub-subscription-id"; - inspectBigQueryTable(projectId, bigQueryDatasetId, bigQueryTableId, topicId, subscriptionId); - } - - // Inspects a BigQuery Table - public static void inspectBigQueryTable( - String projectId, - String bigQueryDatasetId, - String bigQueryTableId, - String topicId, - String subscriptionId) - throws ExecutionException, InterruptedException, IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the BigQuery table to be inspected. - BigQueryTable tableReference = - BigQueryTable.newBuilder() - .setProjectId(projectId) - .setDatasetId(bigQueryDatasetId) - .setTableId(bigQueryTableId) - .build(); - - BigQueryOptions bigQueryOptions = - BigQueryOptions.newBuilder().setTableReference(tableReference).build(); - - StorageConfig storageConfig = - StorageConfig.newBuilder().setBigQueryOptions(bigQueryOptions).build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - List infoTypes = - Stream.of("PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD_NUMBER") - .map(it -> InfoType.newBuilder().setName(it).build()) - .collect(Collectors.toList()); - - // Specify how the content should be inspected. - InspectConfig inspectConfig = - InspectConfig.newBuilder().addAllInfoTypes(infoTypes).setIncludeQuote(true).build(); - - // Specify the action that is triggered when the job completes. - String pubSubTopic = String.format("projects/%s/topics/%s", projectId, topicId); - Action.PublishToPubSub publishToPubSub = - Action.PublishToPubSub.newBuilder().setTopic(pubSubTopic).build(); - Action action = Action.newBuilder().setPubSub(publishToPubSub).build(); - - // Configure the long running job we want the service to perform. - InspectJobConfig inspectJobConfig = - InspectJobConfig.newBuilder() - .setStorageConfig(storageConfig) - .setInspectConfig(inspectConfig) - .addActions(action) - .build(); - - // Create the request for the job configured above. - CreateDlpJobRequest createDlpJobRequest = - CreateDlpJobRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setInspectJob(inspectJobConfig) - .build(); - - // Use the client to send the request. - final DlpJob dlpJob = dlp.createDlpJob(createDlpJobRequest); - System.out.println("Job created: " + dlpJob.getName()); - - // Set up a Pub/Sub subscriber to listen on the job completion status - final SettableApiFuture done = SettableApiFuture.create(); - - ProjectSubscriptionName subscriptionName = - ProjectSubscriptionName.of(projectId, subscriptionId); - - MessageReceiver messageHandler = - (PubsubMessage pubsubMessage, AckReplyConsumer ackReplyConsumer) -> { - handleMessage(dlpJob, done, pubsubMessage, ackReplyConsumer); - }; - Subscriber subscriber = Subscriber.newBuilder(subscriptionName, messageHandler).build(); - subscriber.startAsync(); - - // Wait for job completion semi-synchronously - // For long jobs, consider using a truly asynchronous execution model such as Cloud Functions - try { - done.get(15, TimeUnit.MINUTES); - } catch (TimeoutException e) { - System.out.println("Job was not completed after 15 minutes."); - return; - } finally { - subscriber.stopAsync(); - subscriber.awaitTerminated(); - } - - // Get the latest state of the job from the service - GetDlpJobRequest request = GetDlpJobRequest.newBuilder().setName(dlpJob.getName()).build(); - DlpJob completedJob = dlp.getDlpJob(request); - - // Parse the response and process results. - System.out.println("Job status: " + completedJob.getState()); - InspectDataSourceDetails.Result result = completedJob.getInspectDetails().getResult(); - System.out.println("Findings: "); - for (InfoTypeStats infoTypeStat : result.getInfoTypeStatsList()) { - System.out.print("\tInfo type: " + infoTypeStat.getInfoType().getName()); - System.out.println("\tCount: " + infoTypeStat.getCount()); - } - } - } - - // handleMessage injects the job and settableFuture into the message reciever interface - private static void handleMessage( - DlpJob job, - SettableApiFuture done, - PubsubMessage pubsubMessage, - AckReplyConsumer ackReplyConsumer) { - String messageAttribute = pubsubMessage.getAttributesMap().get("DlpJobName"); - if (job.getName().equals(messageAttribute)) { - done.set(true); - ackReplyConsumer.ack(); - } else { - ackReplyConsumer.nack(); - } - } -} -// [END dlp_inspect_bigquery] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectBigQueryTableWithSampling.java b/samples/snippets/src/main/java/dlp/snippets/InspectBigQueryTableWithSampling.java deleted file mode 100644 index 0c560653..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectBigQueryTableWithSampling.java +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_bigquery_with_sampling] - -import com.google.api.core.SettableApiFuture; -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.cloud.pubsub.v1.AckReplyConsumer; -import com.google.cloud.pubsub.v1.MessageReceiver; -import com.google.cloud.pubsub.v1.Subscriber; -import com.google.privacy.dlp.v2.Action; -import com.google.privacy.dlp.v2.BigQueryOptions; -import com.google.privacy.dlp.v2.BigQueryOptions.SampleMethod; -import com.google.privacy.dlp.v2.BigQueryTable; -import com.google.privacy.dlp.v2.CreateDlpJobRequest; -import com.google.privacy.dlp.v2.DlpJob; -import com.google.privacy.dlp.v2.FieldId; -import com.google.privacy.dlp.v2.GetDlpJobRequest; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InfoTypeStats; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectDataSourceDetails; -import com.google.privacy.dlp.v2.InspectJobConfig; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.StorageConfig; -import com.google.pubsub.v1.ProjectSubscriptionName; -import com.google.pubsub.v1.PubsubMessage; -import java.io.IOException; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -public class InspectBigQueryTableWithSampling { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String topicId = "your-pubsub-topic-id"; - String subscriptionId = "your-pubsub-subscription-id"; - inspectBigQueryTableWithSampling(projectId, topicId, subscriptionId); - } - - // Inspects a BigQuery Table - public static void inspectBigQueryTableWithSampling( - String projectId, String topicId, String subscriptionId) - throws ExecutionException, InterruptedException, IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the BigQuery table to be inspected. - BigQueryTable tableReference = - BigQueryTable.newBuilder() - .setProjectId("bigquery-public-data") - .setDatasetId("usa_names") - .setTableId("usa_1910_current") - .build(); - - BigQueryOptions bigQueryOptions = - BigQueryOptions.newBuilder() - .setTableReference(tableReference) - .setRowsLimit(1000) - .setSampleMethod(SampleMethod.RANDOM_START) - .addIdentifyingFields(FieldId.newBuilder().setName("name")) - .build(); - - StorageConfig storageConfig = - StorageConfig.newBuilder().setBigQueryOptions(bigQueryOptions).build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - InfoType infoType = InfoType.newBuilder().setName("PERSON_NAME").build(); - - // Specify how the content should be inspected. - InspectConfig inspectConfig = - InspectConfig.newBuilder().addInfoTypes(infoType).setIncludeQuote(true).build(); - - // Specify the action that is triggered when the job completes. - String pubSubTopic = String.format("projects/%s/topics/%s", projectId, topicId); - Action.PublishToPubSub publishToPubSub = - Action.PublishToPubSub.newBuilder().setTopic(pubSubTopic).build(); - Action action = Action.newBuilder().setPubSub(publishToPubSub).build(); - - // Configure the long running job we want the service to perform. - InspectJobConfig inspectJobConfig = - InspectJobConfig.newBuilder() - .setStorageConfig(storageConfig) - .setInspectConfig(inspectConfig) - .addActions(action) - .build(); - - // Create the request for the job configured above. - CreateDlpJobRequest createDlpJobRequest = - CreateDlpJobRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setInspectJob(inspectJobConfig) - .build(); - - // Use the client to send the request. - final DlpJob dlpJob = dlp.createDlpJob(createDlpJobRequest); - System.out.println("Job created: " + dlpJob.getName()); - - // Set up a Pub/Sub subscriber to listen on the job completion status - final SettableApiFuture done = SettableApiFuture.create(); - - ProjectSubscriptionName subscriptionName = - ProjectSubscriptionName.of(projectId, subscriptionId); - - MessageReceiver messageHandler = - (PubsubMessage pubsubMessage, AckReplyConsumer ackReplyConsumer) -> { - handleMessage(dlpJob, done, pubsubMessage, ackReplyConsumer); - }; - Subscriber subscriber = Subscriber.newBuilder(subscriptionName, messageHandler).build(); - subscriber.startAsync(); - - // Wait for job completion semi-synchronously - // For long jobs, consider using a truly asynchronous execution model such as Cloud Functions - try { - done.get(15, TimeUnit.MINUTES); - } catch (TimeoutException e) { - System.out.println("Job was not completed after 15 minutes."); - return; - } finally { - subscriber.stopAsync(); - subscriber.awaitTerminated(); - } - - // Get the latest state of the job from the service - GetDlpJobRequest request = GetDlpJobRequest.newBuilder().setName(dlpJob.getName()).build(); - DlpJob completedJob = dlp.getDlpJob(request); - - // Parse the response and process results. - System.out.println("Job status: " + completedJob.getState()); - InspectDataSourceDetails.Result result = completedJob.getInspectDetails().getResult(); - System.out.println("Findings: "); - for (InfoTypeStats infoTypeStat : result.getInfoTypeStatsList()) { - System.out.print("\tInfo type: " + infoTypeStat.getInfoType().getName()); - System.out.println("\tCount: " + infoTypeStat.getCount()); - } - } - } - - // handleMessage injects the job and settableFuture into the message reciever interface - private static void handleMessage( - DlpJob job, - SettableApiFuture done, - PubsubMessage pubsubMessage, - AckReplyConsumer ackReplyConsumer) { - String messageAttribute = pubsubMessage.getAttributesMap().get("DlpJobName"); - if (job.getName().equals(messageAttribute)) { - done.set(true); - ackReplyConsumer.ack(); - } else { - ackReplyConsumer.nack(); - } - } -} -// [END dlp_inspect_bigquery_with_sampling] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectDatastoreEntity.java b/samples/snippets/src/main/java/dlp/snippets/InspectDatastoreEntity.java deleted file mode 100644 index a37d2f18..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectDatastoreEntity.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_datastore] - -import com.google.api.core.SettableApiFuture; -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.cloud.pubsub.v1.AckReplyConsumer; -import com.google.cloud.pubsub.v1.MessageReceiver; -import com.google.cloud.pubsub.v1.Subscriber; -import com.google.privacy.dlp.v2.Action; -import com.google.privacy.dlp.v2.CreateDlpJobRequest; -import com.google.privacy.dlp.v2.DatastoreOptions; -import com.google.privacy.dlp.v2.DlpJob; -import com.google.privacy.dlp.v2.GetDlpJobRequest; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InfoTypeStats; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectDataSourceDetails; -import com.google.privacy.dlp.v2.InspectJobConfig; -import com.google.privacy.dlp.v2.KindExpression; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PartitionId; -import com.google.privacy.dlp.v2.StorageConfig; -import com.google.pubsub.v1.ProjectSubscriptionName; -import com.google.pubsub.v1.PubsubMessage; -import java.io.IOException; -import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -public class InspectDatastoreEntity { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String datastoreNamespace = "your-datastore-namespace"; - String datastoreKind = "your-datastore-kind"; - String topicId = "your-pubsub-topic-id"; - String subscriptionId = "your-pubsub-subscription-id"; - insepctDatastoreEntity(projectId, datastoreNamespace, datastoreKind, topicId, subscriptionId); - } - - // Inspects a Datastore Entity. - public static void insepctDatastoreEntity( - String projectId, - String datastoreNamespce, - String datastoreKind, - String topicId, - String subscriptionId) - throws ExecutionException, InterruptedException, IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the Datastore entity to be inspected. - PartitionId partitionId = - PartitionId.newBuilder() - .setProjectId(projectId) - .setNamespaceId(datastoreNamespce) - .build(); - KindExpression kindExpression = KindExpression.newBuilder().setName(datastoreKind).build(); - - DatastoreOptions datastoreOptions = - DatastoreOptions.newBuilder().setKind(kindExpression).setPartitionId(partitionId).build(); - - StorageConfig storageConfig = - StorageConfig.newBuilder().setDatastoreOptions(datastoreOptions).build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - List infoTypes = - Stream.of("PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD_NUMBER") - .map(it -> InfoType.newBuilder().setName(it).build()) - .collect(Collectors.toList()); - - // Specify how the content should be inspected. - InspectConfig inspectConfig = - InspectConfig.newBuilder().addAllInfoTypes(infoTypes).setIncludeQuote(true).build(); - - // Specify the action that is triggered when the job completes. - String pubSubTopic = String.format("projects/%s/topics/%s", projectId, topicId); - Action.PublishToPubSub publishToPubSub = - Action.PublishToPubSub.newBuilder().setTopic(pubSubTopic).build(); - Action action = Action.newBuilder().setPubSub(publishToPubSub).build(); - - // Configure the long running job we want the service to perform. - InspectJobConfig inspectJobConfig = - InspectJobConfig.newBuilder() - .setStorageConfig(storageConfig) - .setInspectConfig(inspectConfig) - .addActions(action) - .build(); - - // Create the request for the job configured above. - CreateDlpJobRequest createDlpJobRequest = - CreateDlpJobRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setInspectJob(inspectJobConfig) - .build(); - - // Use the client to send the request. - final DlpJob dlpJob = dlp.createDlpJob(createDlpJobRequest); - System.out.println("Job created: " + dlpJob.getName()); - - // Set up a Pub/Sub subscriber to listen on the job completion status - final SettableApiFuture done = SettableApiFuture.create(); - - ProjectSubscriptionName subscriptionName = - ProjectSubscriptionName.of(projectId, subscriptionId); - - MessageReceiver messageHandler = - (PubsubMessage pubsubMessage, AckReplyConsumer ackReplyConsumer) -> { - handleMessage(dlpJob, done, pubsubMessage, ackReplyConsumer); - }; - Subscriber subscriber = Subscriber.newBuilder(subscriptionName, messageHandler).build(); - subscriber.startAsync(); - - // Wait for job completion semi-synchronously - // For long jobs, consider using a truly asynchronous execution model such as Cloud Functions - try { - done.get(15, TimeUnit.MINUTES); - } catch (TimeoutException e) { - System.out.println("Job was not completed after 15 minutes."); - return; - } finally { - subscriber.stopAsync(); - subscriber.awaitTerminated(); - } - - // Get the latest state of the job from the service - GetDlpJobRequest request = GetDlpJobRequest.newBuilder().setName(dlpJob.getName()).build(); - DlpJob completedJob = dlp.getDlpJob(request); - - // Parse the response and process results. - System.out.println("Job status: " + completedJob.getState()); - InspectDataSourceDetails.Result result = completedJob.getInspectDetails().getResult(); - System.out.println("Findings: "); - for (InfoTypeStats infoTypeStat : result.getInfoTypeStatsList()) { - System.out.print("\tInfo type: " + infoTypeStat.getInfoType().getName()); - System.out.println("\tCount: " + infoTypeStat.getCount()); - } - } - } - - // handleMessage injects the job and settableFuture into the message reciever interface - private static void handleMessage( - DlpJob job, - SettableApiFuture done, - PubsubMessage pubsubMessage, - AckReplyConsumer ackReplyConsumer) { - String messageAttribute = pubsubMessage.getAttributesMap().get("DlpJobName"); - if (job.getName().equals(messageAttribute)) { - done.set(true); - ackReplyConsumer.ack(); - } else { - ackReplyConsumer.nack(); - } - } -} -// [END dlp_inspect_datastore] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectGcsFile.java b/samples/snippets/src/main/java/dlp/snippets/InspectGcsFile.java deleted file mode 100644 index d6efdfa9..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectGcsFile.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_gcs] - -import com.google.api.core.SettableApiFuture; -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.cloud.pubsub.v1.AckReplyConsumer; -import com.google.cloud.pubsub.v1.MessageReceiver; -import com.google.cloud.pubsub.v1.Subscriber; -import com.google.privacy.dlp.v2.Action; -import com.google.privacy.dlp.v2.CloudStorageOptions; -import com.google.privacy.dlp.v2.CloudStorageOptions.FileSet; -import com.google.privacy.dlp.v2.CreateDlpJobRequest; -import com.google.privacy.dlp.v2.DlpJob; -import com.google.privacy.dlp.v2.GetDlpJobRequest; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InfoTypeStats; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectDataSourceDetails; -import com.google.privacy.dlp.v2.InspectJobConfig; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.StorageConfig; -import com.google.pubsub.v1.ProjectSubscriptionName; -import com.google.pubsub.v1.PubsubMessage; -import java.io.IOException; -import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -public class InspectGcsFile { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String gcsUri = "gs://" + "your-bucket-name" + "/path/to/your/file.txt"; - String topicId = "your-pubsub-topic-id"; - String subscriptionId = "your-pubsub-subscription-id"; - inspectGcsFile(projectId, gcsUri, topicId, subscriptionId); - } - - // Inspects a file in a Google Cloud Storage Bucket. - public static void inspectGcsFile( - String projectId, String gcsUri, String topicId, String subscriptionId) - throws ExecutionException, InterruptedException, IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the GCS file to be inspected. - CloudStorageOptions cloudStorageOptions = - CloudStorageOptions.newBuilder().setFileSet(FileSet.newBuilder().setUrl(gcsUri)).build(); - - StorageConfig storageConfig = - StorageConfig.newBuilder().setCloudStorageOptions(cloudStorageOptions).build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - List infoTypes = - Stream.of("PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD_NUMBER") - .map(it -> InfoType.newBuilder().setName(it).build()) - .collect(Collectors.toList()); - - // Specify how the content should be inspected. - InspectConfig inspectConfig = - InspectConfig.newBuilder().addAllInfoTypes(infoTypes).setIncludeQuote(true).build(); - - // Specify the action that is triggered when the job completes. - String pubSubTopic = String.format("projects/%s/topics/%s", projectId, topicId); - Action.PublishToPubSub publishToPubSub = - Action.PublishToPubSub.newBuilder().setTopic(pubSubTopic).build(); - Action action = Action.newBuilder().setPubSub(publishToPubSub).build(); - - // Configure the long running job we want the service to perform. - InspectJobConfig inspectJobConfig = - InspectJobConfig.newBuilder() - .setStorageConfig(storageConfig) - .setInspectConfig(inspectConfig) - .addActions(action) - .build(); - - // Create the request for the job configured above. - CreateDlpJobRequest createDlpJobRequest = - CreateDlpJobRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setInspectJob(inspectJobConfig) - .build(); - - // Use the client to send the request. - final DlpJob dlpJob = dlp.createDlpJob(createDlpJobRequest); - System.out.println("Job created: " + dlpJob.getName()); - - // Set up a Pub/Sub subscriber to listen on the job completion status - final SettableApiFuture done = SettableApiFuture.create(); - - ProjectSubscriptionName subscriptionName = - ProjectSubscriptionName.of(projectId, subscriptionId); - - MessageReceiver messageHandler = - (PubsubMessage pubsubMessage, AckReplyConsumer ackReplyConsumer) -> { - handleMessage(dlpJob, done, pubsubMessage, ackReplyConsumer); - }; - Subscriber subscriber = Subscriber.newBuilder(subscriptionName, messageHandler).build(); - subscriber.startAsync(); - - // Wait for job completion semi-synchronously - // For long jobs, consider using a truly asynchronous execution model such as Cloud Functions - try { - done.get(15, TimeUnit.MINUTES); - } catch (TimeoutException e) { - System.out.println("Job was not completed after 15 minutes."); - return; - } finally { - subscriber.stopAsync(); - subscriber.awaitTerminated(); - } - - // Get the latest state of the job from the service - GetDlpJobRequest request = GetDlpJobRequest.newBuilder().setName(dlpJob.getName()).build(); - DlpJob completedJob = dlp.getDlpJob(request); - - // Parse the response and process results. - System.out.println("Job status: " + completedJob.getState()); - InspectDataSourceDetails.Result result = completedJob.getInspectDetails().getResult(); - System.out.println("Findings: "); - for (InfoTypeStats infoTypeStat : result.getInfoTypeStatsList()) { - System.out.print("\tInfo type: " + infoTypeStat.getInfoType().getName()); - System.out.println("\tCount: " + infoTypeStat.getCount()); - } - } - } - - // handleMessage injects the job and settableFuture into the message reciever interface - private static void handleMessage( - DlpJob job, - SettableApiFuture done, - PubsubMessage pubsubMessage, - AckReplyConsumer ackReplyConsumer) { - String messageAttribute = pubsubMessage.getAttributesMap().get("DlpJobName"); - if (job.getName().equals(messageAttribute)) { - done.set(true); - ackReplyConsumer.ack(); - } else { - ackReplyConsumer.nack(); - } - } -} -// [END dlp_inspect_gcs] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectGcsFileWithSampling.java b/samples/snippets/src/main/java/dlp/snippets/InspectGcsFileWithSampling.java deleted file mode 100644 index 1c08e508..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectGcsFileWithSampling.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_gcs_with_sampling] - -import com.google.api.core.SettableApiFuture; -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.cloud.pubsub.v1.AckReplyConsumer; -import com.google.cloud.pubsub.v1.MessageReceiver; -import com.google.cloud.pubsub.v1.Subscriber; -import com.google.privacy.dlp.v2.Action; -import com.google.privacy.dlp.v2.CloudStorageOptions; -import com.google.privacy.dlp.v2.CloudStorageOptions.FileSet; -import com.google.privacy.dlp.v2.CloudStorageOptions.SampleMethod; -import com.google.privacy.dlp.v2.CreateDlpJobRequest; -import com.google.privacy.dlp.v2.DlpJob; -import com.google.privacy.dlp.v2.FileType; -import com.google.privacy.dlp.v2.GetDlpJobRequest; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InfoTypeStats; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectDataSourceDetails; -import com.google.privacy.dlp.v2.InspectJobConfig; -import com.google.privacy.dlp.v2.Likelihood; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.StorageConfig; -import com.google.pubsub.v1.ProjectSubscriptionName; -import com.google.pubsub.v1.PubsubMessage; -import java.io.IOException; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -public class InspectGcsFileWithSampling { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String gcsUri = "gs://" + "your-bucket-name" + "/path/to/your/file.txt"; - String topicId = "your-pubsub-topic-id"; - String subscriptionId = "your-pubsub-subscription-id"; - inspectGcsFileWithSampling(projectId, gcsUri, topicId, subscriptionId); - } - - // Inspects a file in a Google Cloud Storage Bucket. - public static void inspectGcsFileWithSampling( - String projectId, String gcsUri, String topicId, String subscriptionId) - throws ExecutionException, InterruptedException, IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the GCS file to be inspected and sampling configuration - CloudStorageOptions cloudStorageOptions = - CloudStorageOptions.newBuilder() - .setFileSet(FileSet.newBuilder().setUrl(gcsUri)) - .setBytesLimitPerFile(200) - .addFileTypes(FileType.TEXT_FILE) - .setFilesLimitPercent(90) - .setSampleMethod(SampleMethod.RANDOM_START) - .build(); - - StorageConfig storageConfig = - StorageConfig.newBuilder().setCloudStorageOptions(cloudStorageOptions).build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - InfoType infoType = InfoType.newBuilder().setName("PERSON_NAME").build(); - - // Specify how the content should be inspected. - InspectConfig inspectConfig = - InspectConfig.newBuilder() - .addInfoTypes(infoType) - .setExcludeInfoTypes(true) - .setIncludeQuote(true) - .setMinLikelihood(Likelihood.POSSIBLE) - .build(); - - // Specify the action that is triggered when the job completes. - String pubSubTopic = String.format("projects/%s/topics/%s", projectId, topicId); - Action.PublishToPubSub publishToPubSub = - Action.PublishToPubSub.newBuilder().setTopic(pubSubTopic).build(); - Action action = Action.newBuilder().setPubSub(publishToPubSub).build(); - - // Configure the long running job we want the service to perform. - InspectJobConfig inspectJobConfig = - InspectJobConfig.newBuilder() - .setStorageConfig(storageConfig) - .setInspectConfig(inspectConfig) - .addActions(action) - .build(); - - // Create the request for the job configured above. - CreateDlpJobRequest createDlpJobRequest = - CreateDlpJobRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setInspectJob(inspectJobConfig) - .build(); - - // Use the client to send the request. - final DlpJob dlpJob = dlp.createDlpJob(createDlpJobRequest); - System.out.println("Job created: " + dlpJob.getName()); - - // Set up a Pub/Sub subscriber to listen on the job completion status - final SettableApiFuture done = SettableApiFuture.create(); - - ProjectSubscriptionName subscriptionName = - ProjectSubscriptionName.of(projectId, subscriptionId); - - MessageReceiver messageHandler = - (PubsubMessage pubsubMessage, AckReplyConsumer ackReplyConsumer) -> { - handleMessage(dlpJob, done, pubsubMessage, ackReplyConsumer); - }; - Subscriber subscriber = Subscriber.newBuilder(subscriptionName, messageHandler).build(); - subscriber.startAsync(); - - // Wait for job completion semi-synchronously - // For long jobs, consider using a truly asynchronous execution model such as Cloud Functions - try { - done.get(15, TimeUnit.MINUTES); - } catch (TimeoutException e) { - System.out.println("Job was not completed after 15 minutes."); - return; - } finally { - subscriber.stopAsync(); - subscriber.awaitTerminated(); - } - - // Get the latest state of the job from the service - GetDlpJobRequest request = GetDlpJobRequest.newBuilder().setName(dlpJob.getName()).build(); - DlpJob completedJob = dlp.getDlpJob(request); - - // Parse the response and process results. - System.out.println("Job status: " + completedJob.getState()); - InspectDataSourceDetails.Result result = completedJob.getInspectDetails().getResult(); - System.out.println("Findings: "); - for (InfoTypeStats infoTypeStat : result.getInfoTypeStatsList()) { - System.out.print("\tInfo type: " + infoTypeStat.getInfoType().getName()); - System.out.println("\tCount: " + infoTypeStat.getCount()); - } - } - } - - // handleMessage injects the job and settableFuture into the message reciever interface - private static void handleMessage( - DlpJob job, - SettableApiFuture done, - PubsubMessage pubsubMessage, - AckReplyConsumer ackReplyConsumer) { - String messageAttribute = pubsubMessage.getAttributesMap().get("DlpJobName"); - if (job.getName().equals(messageAttribute)) { - done.set(true); - ackReplyConsumer.ack(); - } else { - ackReplyConsumer.nack(); - } - } -} -// [END dlp_inspect_gcs_with_sampling] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectImageFile.java b/samples/snippets/src/main/java/dlp/snippets/InspectImageFile.java deleted file mode 100644 index 2251abbf..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectImageFile.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_image_file] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.LocationName; -import com.google.protobuf.ByteString; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -public class InspectImageFile { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String filePath = "path/to/image.png"; - inspectImageFile(projectId, filePath); - } - - // Inspects the specified image file. - public static void inspectImageFile(String projectId, String filePath) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the type and content to be inspected. - ByteString fileBytes = ByteString.readFrom(new FileInputStream(filePath)); - ByteContentItem byteItem = - ByteContentItem.newBuilder().setType(BytesType.IMAGE).setData(fileBytes).build(); - ContentItem item = ContentItem.newBuilder().setByteItem(byteItem).build(); - - // Specify the type of info the inspection will look for. - List infoTypes = new ArrayList<>(); - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - for (String typeName : new String[] {"PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD_NUMBER"}) { - infoTypes.add(InfoType.newBuilder().setName(typeName).build()); - } - - // Construct the configuration for the Inspect request. - InspectConfig config = - InspectConfig.newBuilder().addAllInfoTypes(infoTypes).setIncludeQuote(true).build(); - - // Construct the Inspect request to be sent by the client. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results. - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } - } -} -// [END dlp_inspect_image_file] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectImageFileAllInfoTypes.java b/samples/snippets/src/main/java/dlp/snippets/InspectImageFileAllInfoTypes.java deleted file mode 100644 index 87847fb7..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectImageFileAllInfoTypes.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_image_all_infotypes] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.LocationName; -import com.google.protobuf.ByteString; -import java.io.FileInputStream; -import java.io.IOException; - -class InspectImageFileAllInfoTypes { - - public static void main(String[] args) throws IOException { - // TODO(developer): Replace these variables before running the sample. - String projectId = "my-project-id"; - String inputPath = "src/test/resources/sensitive-data-image.jpeg"; - inspectImageFileAllInfoTypes(projectId, inputPath); - } - - static void inspectImageFileAllInfoTypes(String projectId, String inputPath) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the content to be inspected. - ByteString fileBytes = ByteString.readFrom(new FileInputStream(inputPath)); - ByteContentItem byteItem = - ByteContentItem.newBuilder().setType(BytesType.IMAGE_JPEG).setData(fileBytes).build(); - - // Construct the Inspect request to be sent by the client. - // Do not specify the type of info to inspect. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(ContentItem.newBuilder().setByteItem(byteItem).build()) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results. - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } - } -} -// [END dlp_inspect_image_all_infotypes] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectImageFileListedInfoTypes.java b/samples/snippets/src/main/java/dlp/snippets/InspectImageFileListedInfoTypes.java deleted file mode 100644 index 85aa82ac..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectImageFileListedInfoTypes.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_image_listed_infotypes] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.LocationName; -import com.google.protobuf.ByteString; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -class InspectImageFileListedInfoTypes { - - public static void main(String[] args) throws IOException { - // TODO(developer): Replace these variables before running the sample. - String projectId = "my-project-id"; - String inputPath = "src/test/resources/sensitive-data-image.jpeg"; - inspectImageFileListedInfoTypes(projectId, inputPath); - } - - static void inspectImageFileListedInfoTypes(String projectId, String inputPath) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the content to be inspected. - ByteString fileBytes = ByteString.readFrom(new FileInputStream(inputPath)); - ByteContentItem byteItem = - ByteContentItem.newBuilder().setType(BytesType.IMAGE_JPEG).setData(fileBytes).build(); - - // Specify the type of info the inspection will look for. - List infoTypes = new ArrayList<>(); - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - for (String typeName : - new String[] {"US_SOCIAL_SECURITY_NUMBER", "EMAIL_ADDRESS", "PHONE_NUMBER"}) { - infoTypes.add(InfoType.newBuilder().setName(typeName).build()); - } - - // Construct the configuration for the Inspect request. - InspectConfig inspectConfig = InspectConfig.newBuilder().addAllInfoTypes(infoTypes).build(); - - // Construct the Inspect request to be sent by the client. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(ContentItem.newBuilder().setByteItem(byteItem).build()) - .setInspectConfig(inspectConfig) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results. - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } - } -} -// [END dlp_inspect_image_listed_infotypes] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectPhoneNumber.java b/samples/snippets/src/main/java/dlp/snippets/InspectPhoneNumber.java deleted file mode 100644 index c707088c..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectPhoneNumber.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_phone_number] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.Likelihood; -import com.google.privacy.dlp.v2.LocationName; -import java.io.IOException; - -public class InspectPhoneNumber { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToInspect = "My name is Gary and my email is gary@example.com"; - inspectString(projectId, textToInspect); - } - - // Inspects the provided text. - public static void inspectString(String projectId, String textToInspect) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the type and content to be inspected. - ContentItem item = ContentItem.newBuilder().setValue(textToInspect).build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - InfoType infoType = InfoType.newBuilder().setName("PHONE_NUMBER").build(); - - // Construct the configuration for the Inspect request. - InspectConfig config = - InspectConfig.newBuilder() - .setIncludeQuote(true) - .setMinLikelihood(Likelihood.POSSIBLE) - .addInfoTypes(infoType) - .build(); - - // Construct the Inspect request to be sent by the client. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } - } -} -// [END dlp_inspect_phone_number] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectString.java b/samples/snippets/src/main/java/dlp/snippets/InspectString.java deleted file mode 100644 index 28f0d086..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectString.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_string] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.LocationName; -import com.google.protobuf.ByteString; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -public class InspectString { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToInspect = "My name is Gary and my email is gary@example.com"; - inspectString(projectId, textToInspect); - } - - // Inspects the provided text. - public static void inspectString(String projectId, String textToInspect) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the type and content to be inspected. - ByteContentItem byteItem = - ByteContentItem.newBuilder() - .setType(BytesType.TEXT_UTF8) - .setData(ByteString.copyFromUtf8(textToInspect)) - .build(); - ContentItem item = ContentItem.newBuilder().setByteItem(byteItem).build(); - - // Specify the type of info the inspection will look for. - List infoTypes = new ArrayList<>(); - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - for (String typeName : new String[] {"PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD_NUMBER"}) { - infoTypes.add(InfoType.newBuilder().setName(typeName).build()); - } - - // Construct the configuration for the Inspect request. - InspectConfig config = - InspectConfig.newBuilder().addAllInfoTypes(infoTypes).setIncludeQuote(true).build(); - - // Construct the Inspect request to be sent by the client. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } - } -} -// [END dlp_inspect_string] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectStringCustomExcludingSubstring.java b/samples/snippets/src/main/java/dlp/snippets/InspectStringCustomExcludingSubstring.java deleted file mode 100644 index 015367d9..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectStringCustomExcludingSubstring.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_string_custom_excluding_substring] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CustomInfoType; -import com.google.privacy.dlp.v2.CustomInfoType.Dictionary; -import com.google.privacy.dlp.v2.CustomInfoType.Dictionary.WordList; -import com.google.privacy.dlp.v2.CustomInfoType.Regex; -import com.google.privacy.dlp.v2.ExclusionRule; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.InspectionRule; -import com.google.privacy.dlp.v2.InspectionRuleSet; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.MatchingType; -import com.google.protobuf.ByteString; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; - -public class InspectStringCustomExcludingSubstring { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToInspect = "Name: Doe, John. Name: Example, Jimmy"; - String customDetectorPattern = "[A-Z][a-z]{1,15}, [A-Z][a-z]{1,15}"; - List excludedSubstringList = Arrays.asList("Jimmy"); - inspectStringCustomExcludingSubstring( - projectId, textToInspect, customDetectorPattern, excludedSubstringList); - } - - // Inspects the provided text, avoiding matches specified in the exclusion list. - public static void inspectStringCustomExcludingSubstring( - String projectId, - String textToInspect, - String customDetectorPattern, - List excludedSubstringList) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the type and content to be inspected. - ByteContentItem byteItem = - ByteContentItem.newBuilder() - .setType(BytesType.TEXT_UTF8) - .setData(ByteString.copyFromUtf8(textToInspect)) - .build(); - ContentItem item = ContentItem.newBuilder().setByteItem(byteItem).build(); - - // Specify the type of info the inspection will look for. - InfoType infoType = InfoType.newBuilder().setName("CUSTOM_NAME_DETECTOR").build(); - CustomInfoType customInfoType = - CustomInfoType.newBuilder() - .setInfoType(infoType) - .setRegex(Regex.newBuilder().setPattern(customDetectorPattern)) - .build(); - - // Exclude partial matches from the specified excludedSubstringList. - ExclusionRule exclusionRule = - ExclusionRule.newBuilder() - .setMatchingType(MatchingType.MATCHING_TYPE_PARTIAL_MATCH) - .setDictionary( - Dictionary.newBuilder() - .setWordList(WordList.newBuilder().addAllWords(excludedSubstringList))) - .build(); - - // Construct a ruleset that applies the exclusion rule to the EMAIL_ADDRESSES infotype. - InspectionRuleSet ruleSet = - InspectionRuleSet.newBuilder() - .addInfoTypes(infoType) - .addRules(InspectionRule.newBuilder().setExclusionRule(exclusionRule)) - .build(); - - // Construct the configuration for the Inspect request, including the ruleset. - InspectConfig config = - InspectConfig.newBuilder() - .addCustomInfoTypes(customInfoType) - .setIncludeQuote(true) - .addRuleSet(ruleSet) - .build(); - - // Construct the Inspect request to be sent by the client. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } - } -} -// [END dlp_inspect_string_custom_excluding_substring] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectStringCustomHotword.java b/samples/snippets/src/main/java/dlp/snippets/InspectStringCustomHotword.java deleted file mode 100644 index 254d8f86..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectStringCustomHotword.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_string_custom_hotword] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule; -import com.google.privacy.dlp.v2.CustomInfoType.DetectionRule.LikelihoodAdjustment; -import com.google.privacy.dlp.v2.CustomInfoType.DetectionRule.Proximity; -import com.google.privacy.dlp.v2.CustomInfoType.Regex; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.InspectionRule; -import com.google.privacy.dlp.v2.InspectionRuleSet; -import com.google.privacy.dlp.v2.Likelihood; -import com.google.privacy.dlp.v2.LocationName; -import com.google.protobuf.ByteString; -import java.io.IOException; - -public class InspectStringCustomHotword { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToInspect = "patient name: John Doe"; - String customHotword = "patient"; - inspectStringCustomHotword(projectId, textToInspect, customHotword); - } - - // Inspects the provided text. - public static void inspectStringCustomHotword( - String projectId, String textToInspect, String customHotword) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the type and content to be inspected. - ByteContentItem byteItem = - ByteContentItem.newBuilder() - .setType(BytesType.TEXT_UTF8) - .setData(ByteString.copyFromUtf8(textToInspect)) - .build(); - ContentItem item = ContentItem.newBuilder().setByteItem(byteItem).build(); - - // Increase likelihood of matches that have customHotword nearby - HotwordRule hotwordRule = - HotwordRule.newBuilder() - .setHotwordRegex(Regex.newBuilder().setPattern(customHotword)) - .setProximity(Proximity.newBuilder().setWindowBefore(50)) - .setLikelihoodAdjustment( - LikelihoodAdjustment.newBuilder().setFixedLikelihood(Likelihood.VERY_LIKELY)) - .build(); - - // Construct a ruleset that applies the hotword rule to the PERSON_NAME infotype. - InspectionRuleSet ruleSet = - InspectionRuleSet.newBuilder() - .addInfoTypes(InfoType.newBuilder().setName("PERSON_NAME").build()) - .addRules(InspectionRule.newBuilder().setHotwordRule(hotwordRule)) - .build(); - - // Construct the configuration for the Inspect request. - InspectConfig config = - InspectConfig.newBuilder() - .addInfoTypes(InfoType.newBuilder().setName("PERSON_NAME").build()) - .setIncludeQuote(true) - .addRuleSet(ruleSet) - .setMinLikelihood(Likelihood.VERY_LIKELY) - .build(); - - // Construct the Inspect request to be sent by the client. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } - } -} -// [END dlp_inspect_string_custom_hotword] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectStringCustomOmitOverlap.java b/samples/snippets/src/main/java/dlp/snippets/InspectStringCustomOmitOverlap.java deleted file mode 100644 index 0cf017f3..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectStringCustomOmitOverlap.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_string_custom_omit_overlap] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CustomInfoType; -import com.google.privacy.dlp.v2.CustomInfoType.ExclusionType; -import com.google.privacy.dlp.v2.CustomInfoType.Regex; -import com.google.privacy.dlp.v2.ExcludeInfoTypes; -import com.google.privacy.dlp.v2.ExclusionRule; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.InspectionRule; -import com.google.privacy.dlp.v2.InspectionRuleSet; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.MatchingType; -import com.google.protobuf.ByteString; -import java.io.IOException; - -public class InspectStringCustomOmitOverlap { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToInspect = "Name: Jane Doe. Name: Larry Page."; - inspectStringCustomOmitOverlap(projectId, textToInspect); - } - - // Inspects the provided text, avoiding matches specified in the exclusion list. - public static void inspectStringCustomOmitOverlap(String projectId, String textToInspect) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the type and content to be inspected. - ByteContentItem byteItem = - ByteContentItem.newBuilder() - .setType(BytesType.TEXT_UTF8) - .setData(ByteString.copyFromUtf8(textToInspect)) - .build(); - ContentItem item = ContentItem.newBuilder().setByteItem(byteItem).build(); - - // Construct the custom infotype. - CustomInfoType customInfoType = - CustomInfoType.newBuilder() - .setInfoType(InfoType.newBuilder().setName("VIP_DETECTOR")) - .setRegex(Regex.newBuilder().setPattern("Larry Page|Sergey Brin")) - .setExclusionType(ExclusionType.EXCLUSION_TYPE_EXCLUDE) - .build(); - - // Exclude matches that also match the custom infotype. - ExclusionRule exclusionRule = - ExclusionRule.newBuilder() - .setExcludeInfoTypes( - ExcludeInfoTypes.newBuilder().addInfoTypes(customInfoType.getInfoType())) - .setMatchingType(MatchingType.MATCHING_TYPE_FULL_MATCH) - .build(); - - // Construct a ruleset that applies the exclusion rule to the PERSON_NAME infotype. - InspectionRuleSet ruleSet = - InspectionRuleSet.newBuilder() - .addInfoTypes(InfoType.newBuilder().setName("PERSON_NAME")) - .addRules(InspectionRule.newBuilder().setExclusionRule(exclusionRule)) - .build(); - - // Construct the configuration for the Inspect request, including the ruleset. - InspectConfig config = - InspectConfig.newBuilder() - .addInfoTypes(InfoType.newBuilder().setName("PERSON_NAME")) - .addCustomInfoTypes(customInfoType) - .setIncludeQuote(true) - .addRuleSet(ruleSet) - .build(); - - // Construct the Inspect request to be sent by the client. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } - } -} -// [END dlp_inspect_string_custom_omit_overlap] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectStringMultipleRules.java b/samples/snippets/src/main/java/dlp/snippets/InspectStringMultipleRules.java deleted file mode 100644 index 821cfab1..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectStringMultipleRules.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_string_multiple_rules] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule; -import com.google.privacy.dlp.v2.CustomInfoType.DetectionRule.LikelihoodAdjustment; -import com.google.privacy.dlp.v2.CustomInfoType.DetectionRule.Proximity; -import com.google.privacy.dlp.v2.CustomInfoType.Dictionary; -import com.google.privacy.dlp.v2.CustomInfoType.Dictionary.WordList; -import com.google.privacy.dlp.v2.CustomInfoType.Regex; -import com.google.privacy.dlp.v2.ExclusionRule; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.InspectionRule; -import com.google.privacy.dlp.v2.InspectionRuleSet; -import com.google.privacy.dlp.v2.Likelihood; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.MatchingType; -import com.google.protobuf.ByteString; -import java.io.IOException; - -public class InspectStringMultipleRules { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToInspect = "patient: Jane Doe"; - inspectStringMultipleRules(projectId, textToInspect); - } - - // Inspects the provided text, avoiding matches specified in the exclusion list. - public static void inspectStringMultipleRules(String projectId, String textToInspect) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the type and content to be inspected. - ByteContentItem byteItem = - ByteContentItem.newBuilder() - .setType(BytesType.TEXT_UTF8) - .setData(ByteString.copyFromUtf8(textToInspect)) - .build(); - ContentItem item = ContentItem.newBuilder().setByteItem(byteItem).build(); - - // Construct hotword rules - HotwordRule patientRule = - HotwordRule.newBuilder() - .setHotwordRegex(Regex.newBuilder().setPattern("patient")) - .setProximity(Proximity.newBuilder().setWindowBefore(10)) - .setLikelihoodAdjustment( - LikelihoodAdjustment.newBuilder().setFixedLikelihood(Likelihood.VERY_LIKELY)) - .build(); - - HotwordRule doctorRule = - HotwordRule.newBuilder() - .setHotwordRegex(Regex.newBuilder().setPattern("doctor")) - .setProximity(Proximity.newBuilder().setWindowBefore(10)) - .setLikelihoodAdjustment( - LikelihoodAdjustment.newBuilder().setFixedLikelihood(Likelihood.UNLIKELY)) - .build(); - - // Construct exclusion rules - ExclusionRule quasimodoRule = - ExclusionRule.newBuilder() - .setDictionary( - Dictionary.newBuilder().setWordList(WordList.newBuilder().addWords("Quasimodo"))) - .setMatchingType(MatchingType.MATCHING_TYPE_PARTIAL_MATCH) - .build(); - - ExclusionRule redactedRule = - ExclusionRule.newBuilder() - .setRegex(Regex.newBuilder().setPattern("REDACTED")) - .setMatchingType(MatchingType.MATCHING_TYPE_PARTIAL_MATCH) - .build(); - - // Construct a ruleset that applies the rules to the PERSON_NAME infotype. - InspectionRuleSet ruleSet = - InspectionRuleSet.newBuilder() - .addInfoTypes(InfoType.newBuilder().setName("PERSON_NAME")) - .addRules(InspectionRule.newBuilder().setHotwordRule(patientRule)) - .addRules(InspectionRule.newBuilder().setHotwordRule(doctorRule)) - .addRules(InspectionRule.newBuilder().setExclusionRule(quasimodoRule)) - .addRules(InspectionRule.newBuilder().setExclusionRule(redactedRule)) - .build(); - - // Construct the configuration for the Inspect request, including the ruleset. - InspectConfig config = - InspectConfig.newBuilder() - .addInfoTypes(InfoType.newBuilder().setName("PERSON_NAME")) - .setIncludeQuote(true) - .addRuleSet(ruleSet) - .build(); - - // Construct the Inspect request to be sent by the client. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } - } -} -// [END dlp_inspect_string_multiple_rules] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectStringOmitOverlap.java b/samples/snippets/src/main/java/dlp/snippets/InspectStringOmitOverlap.java deleted file mode 100644 index 83e83076..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectStringOmitOverlap.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_string_omit_overlap] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.ExcludeInfoTypes; -import com.google.privacy.dlp.v2.ExclusionRule; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.InspectionRule; -import com.google.privacy.dlp.v2.InspectionRuleSet; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.MatchingType; -import com.google.protobuf.ByteString; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -public class InspectStringOmitOverlap { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToInspect = "james@example.com"; - inspectStringOmitOverlap(projectId, textToInspect); - } - - // Inspects the provided text, avoiding matches specified in the exclusion list. - public static void inspectStringOmitOverlap(String projectId, String textToInspect) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the type and content to be inspected. - ByteContentItem byteItem = - ByteContentItem.newBuilder() - .setType(BytesType.TEXT_UTF8) - .setData(ByteString.copyFromUtf8(textToInspect)) - .build(); - ContentItem item = ContentItem.newBuilder().setByteItem(byteItem).build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types. - List infoTypes = new ArrayList<>(); - for (String typeName : new String[] {"PERSON_NAME", "EMAIL_ADDRESS"}) { - infoTypes.add(InfoType.newBuilder().setName(typeName).build()); - } - - // Exclude EMAIL_ADDRESS matches - ExclusionRule exclusionRule = - ExclusionRule.newBuilder() - .setExcludeInfoTypes( - ExcludeInfoTypes.newBuilder() - .addInfoTypes(InfoType.newBuilder().setName("EMAIL_ADDRESS"))) - .setMatchingType(MatchingType.MATCHING_TYPE_PARTIAL_MATCH) - .build(); - - // Construct a ruleset that applies the exclusion rule to the PERSON_NAME infotype. - // If a PERSON_NAME match overlaps with an EMAIL_ADDRESS match, the PERSON_NAME match will - // be excluded. - InspectionRuleSet ruleSet = - InspectionRuleSet.newBuilder() - .addInfoTypes(InfoType.newBuilder().setName("PERSON_NAME")) - .addRules(InspectionRule.newBuilder().setExclusionRule(exclusionRule)) - .build(); - - // Construct the configuration for the Inspect request, including the ruleset. - InspectConfig config = - InspectConfig.newBuilder() - .addAllInfoTypes(infoTypes) - .setIncludeQuote(true) - .addRuleSet(ruleSet) - .build(); - - // Construct the Inspect request to be sent by the client. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } - } -} -// [END dlp_inspect_string_omit_overlap] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectStringWithExclusionDict.java b/samples/snippets/src/main/java/dlp/snippets/InspectStringWithExclusionDict.java deleted file mode 100644 index 3db32581..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectStringWithExclusionDict.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_string_with_exclusion_dict] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CustomInfoType.Dictionary; -import com.google.privacy.dlp.v2.CustomInfoType.Dictionary.WordList; -import com.google.privacy.dlp.v2.ExclusionRule; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.InspectionRule; -import com.google.privacy.dlp.v2.InspectionRuleSet; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.MatchingType; -import com.google.protobuf.ByteString; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class InspectStringWithExclusionDict { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToInspect = "Some email addresses: gary@example.com, example@example.com"; - List excludedMatchList = Arrays.asList("example@example.com"); - inspectStringWithExclusionDict(projectId, textToInspect, excludedMatchList); - } - - // Inspects the provided text, avoiding matches specified in the exclusion list. - public static void inspectStringWithExclusionDict( - String projectId, String textToInspect, List excludedMatchList) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the type and content to be inspected. - ByteContentItem byteItem = - ByteContentItem.newBuilder() - .setType(BytesType.TEXT_UTF8) - .setData(ByteString.copyFromUtf8(textToInspect)) - .build(); - ContentItem item = ContentItem.newBuilder().setByteItem(byteItem).build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types. - List infoTypes = new ArrayList<>(); - for (String typeName : new String[] {"PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD_NUMBER"}) { - infoTypes.add(InfoType.newBuilder().setName(typeName).build()); - } - - // Exclude matches from the specified excludedMatchList. - ExclusionRule exclusionRule = - ExclusionRule.newBuilder() - .setMatchingType(MatchingType.MATCHING_TYPE_FULL_MATCH) - .setDictionary( - Dictionary.newBuilder() - .setWordList(WordList.newBuilder().addAllWords(excludedMatchList))) - .build(); - - // Construct a ruleset that applies the exclusion rule to the EMAIL_ADDRESSES infotype. - InspectionRuleSet ruleSet = - InspectionRuleSet.newBuilder() - .addInfoTypes(InfoType.newBuilder().setName("EMAIL_ADDRESS")) - .addRules(InspectionRule.newBuilder().setExclusionRule(exclusionRule)) - .build(); - - // Construct the configuration for the Inspect request, including the ruleset. - InspectConfig config = - InspectConfig.newBuilder() - .addAllInfoTypes(infoTypes) - .setIncludeQuote(true) - .addRuleSet(ruleSet) - .build(); - - // Construct the Inspect request to be sent by the client. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } - } -} -// [END dlp_inspect_string_with_exclusion_dict] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectStringWithExclusionDictSubstring.java b/samples/snippets/src/main/java/dlp/snippets/InspectStringWithExclusionDictSubstring.java deleted file mode 100644 index 0fc065f0..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectStringWithExclusionDictSubstring.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_string_with_exclusion_dict_substring] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CustomInfoType.Dictionary; -import com.google.privacy.dlp.v2.CustomInfoType.Dictionary.WordList; -import com.google.privacy.dlp.v2.ExclusionRule; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.InspectionRule; -import com.google.privacy.dlp.v2.InspectionRuleSet; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.MatchingType; -import com.google.protobuf.ByteString; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class InspectStringWithExclusionDictSubstring { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToInspect = "Some email addresses: gary@example.com, TEST@example.com"; - List excludedSubstringList = Arrays.asList("TEST"); - inspectStringWithExclusionDictSubstring(projectId, textToInspect, excludedSubstringList); - } - - // Inspects the provided text, avoiding matches specified in the exclusion list. - public static void inspectStringWithExclusionDictSubstring( - String projectId, String textToInspect, List excludedSubstringList) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the type and content to be inspected. - ByteContentItem byteItem = - ByteContentItem.newBuilder() - .setType(BytesType.TEXT_UTF8) - .setData(ByteString.copyFromUtf8(textToInspect)) - .build(); - ContentItem item = ContentItem.newBuilder().setByteItem(byteItem).build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types. - List infoTypes = new ArrayList<>(); - for (String typeName : - new String[] {"EMAIL_ADDRESS", "DOMAIN_NAME", "PHONE_NUMBER", "PERSON_NAME"}) { - infoTypes.add(InfoType.newBuilder().setName(typeName).build()); - } - - // Exclude partial matches from the specified excludedSubstringList. - ExclusionRule exclusionRule = - ExclusionRule.newBuilder() - .setMatchingType(MatchingType.MATCHING_TYPE_PARTIAL_MATCH) - .setDictionary( - Dictionary.newBuilder() - .setWordList(WordList.newBuilder().addAllWords(excludedSubstringList))) - .build(); - - // Construct a ruleset that applies the exclusion rule to the EMAIL_ADDRESSES infotype. - InspectionRuleSet ruleSet = - InspectionRuleSet.newBuilder() - .addAllInfoTypes(infoTypes) - .addRules(InspectionRule.newBuilder().setExclusionRule(exclusionRule)) - .build(); - - // Construct the configuration for the Inspect request, including the ruleset. - InspectConfig config = - InspectConfig.newBuilder() - .addAllInfoTypes(infoTypes) - .setIncludeQuote(true) - .addRuleSet(ruleSet) - .build(); - - // Construct the Inspect request to be sent by the client. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } - } -} -// [END dlp_inspect_string_with_exclusion_dict_substring] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectStringWithExclusionRegex.java b/samples/snippets/src/main/java/dlp/snippets/InspectStringWithExclusionRegex.java deleted file mode 100644 index f609a752..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectStringWithExclusionRegex.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_string_with_exclusion_regex] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CustomInfoType.Regex; -import com.google.privacy.dlp.v2.ExclusionRule; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.InspectionRule; -import com.google.privacy.dlp.v2.InspectionRuleSet; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.MatchingType; -import com.google.protobuf.ByteString; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -public class InspectStringWithExclusionRegex { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToInspect = "Some email addresses: gary@example.com, bob@example.org"; - String excludedRegex = ".+@example.com"; - inspectStringWithExclusionRegex(projectId, textToInspect, excludedRegex); - } - - // Inspects the provided text, avoiding matches specified in the exclusion list. - public static void inspectStringWithExclusionRegex( - String projectId, String textToInspect, String excludedRegex) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the type and content to be inspected. - ByteContentItem byteItem = - ByteContentItem.newBuilder() - .setType(BytesType.TEXT_UTF8) - .setData(ByteString.copyFromUtf8(textToInspect)) - .build(); - ContentItem item = ContentItem.newBuilder().setByteItem(byteItem).build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types. - List infoTypes = new ArrayList<>(); - for (String typeName : new String[] {"PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD_NUMBER"}) { - infoTypes.add(InfoType.newBuilder().setName(typeName).build()); - } - - // Exclude matches from the specified excludedMatchList. - ExclusionRule exclusionRule = - ExclusionRule.newBuilder() - .setMatchingType(MatchingType.MATCHING_TYPE_FULL_MATCH) - .setRegex(Regex.newBuilder().setPattern(excludedRegex)) - .build(); - - // Construct a ruleset that applies the exclusion rule to the EMAIL_ADDRESSES infotype. - InspectionRuleSet ruleSet = - InspectionRuleSet.newBuilder() - .addInfoTypes(InfoType.newBuilder().setName("EMAIL_ADDRESS")) - .addRules(InspectionRule.newBuilder().setExclusionRule(exclusionRule)) - .build(); - - // Construct the configuration for the Inspect request, including the ruleset. - InspectConfig config = - InspectConfig.newBuilder() - .addAllInfoTypes(infoTypes) - .setIncludeQuote(true) - .addRuleSet(ruleSet) - .build(); - - // Construct the Inspect request to be sent by the client. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } - } -} -// [END dlp_inspect_string_with_exclusion_regex] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectStringWithoutOverlap.java b/samples/snippets/src/main/java/dlp/snippets/InspectStringWithoutOverlap.java deleted file mode 100644 index a1fc60e2..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectStringWithoutOverlap.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_string_without_overlap] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CustomInfoType; -import com.google.privacy.dlp.v2.CustomInfoType.ExclusionType; -import com.google.privacy.dlp.v2.ExcludeInfoTypes; -import com.google.privacy.dlp.v2.ExclusionRule; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.InspectionRule; -import com.google.privacy.dlp.v2.InspectionRuleSet; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.MatchingType; -import com.google.protobuf.ByteString; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -public class InspectStringWithoutOverlap { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToInspect = "example.com is a domain, james@example.org is an email."; - inspectStringWithoutOverlap(projectId, textToInspect); - } - - // Inspects the provided text, avoiding matches specified in the exclusion list. - public static void inspectStringWithoutOverlap(String projectId, String textToInspect) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the type and content to be inspected. - ByteContentItem byteItem = - ByteContentItem.newBuilder() - .setType(BytesType.TEXT_UTF8) - .setData(ByteString.copyFromUtf8(textToInspect)) - .build(); - ContentItem item = ContentItem.newBuilder().setByteItem(byteItem).build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types. - List infoTypes = new ArrayList<>(); - for (String typeName : new String[] {"DOMAIN_NAME", "EMAIL_ADDRESS"}) { - infoTypes.add(InfoType.newBuilder().setName(typeName).build()); - } - - // Define a custom info type to exclude email addresses - CustomInfoType customInfoType = - CustomInfoType.newBuilder() - .setInfoType(InfoType.newBuilder().setName("EMAIL_ADDRESS")) - .setExclusionType(ExclusionType.EXCLUSION_TYPE_EXCLUDE) - .build(); - - // Exclude EMAIL_ADDRESS matches - ExclusionRule exclusionRule = - ExclusionRule.newBuilder() - .setExcludeInfoTypes( - ExcludeInfoTypes.newBuilder() - .addInfoTypes(InfoType.newBuilder().setName("EMAIL_ADDRESS"))) - .setMatchingType(MatchingType.MATCHING_TYPE_PARTIAL_MATCH) - .build(); - - // Construct a ruleset that applies the exclusion rule to the DOMAIN_NAME infotype. - // If a DOMAIN_NAME match is part of an EMAIL_ADDRESS match, the DOMAIN_NAME match will - // be excluded. - InspectionRuleSet ruleSet = - InspectionRuleSet.newBuilder() - .addInfoTypes(InfoType.newBuilder().setName("DOMAIN_NAME")) - .addRules(InspectionRule.newBuilder().setExclusionRule(exclusionRule)) - .build(); - - // Construct the configuration for the Inspect request, including the ruleset. - InspectConfig config = - InspectConfig.newBuilder() - .addAllInfoTypes(infoTypes) - .addCustomInfoTypes(customInfoType) - .setIncludeQuote(true) - .addRuleSet(ruleSet) - .build(); - - // Construct the Inspect request to be sent by the client. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } - } -} -// [END dlp_inspect_string_without_overlap] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectTable.java b/samples/snippets/src/main/java/dlp/snippets/InspectTable.java deleted file mode 100644 index ad015500..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectTable.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_table] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.FieldId; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.Table; -import com.google.privacy.dlp.v2.Table.Row; -import com.google.privacy.dlp.v2.Value; - -public class InspectTable { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - Table tableToInspect = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("name").build()) - .addHeaders(FieldId.newBuilder().setName("phone").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("John Doe").build()) - .addValues(Value.newBuilder().setStringValue("(206) 555-0123").build())) - .build(); - - inspectTable(projectId, tableToInspect); - } - - // Inspects the provided text. - public static void inspectTable(String projectId, Table tableToInspect) { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the table to be inspected. - ContentItem item = ContentItem.newBuilder().setTable(tableToInspect).build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - InfoType infoType = InfoType.newBuilder().setName("PHONE_NUMBER").build(); - - // Construct the configuration for the Inspect request. - InspectConfig config = - InspectConfig.newBuilder().addInfoTypes(infoType).setIncludeQuote(true).build(); - - // Construct the Inspect request to be sent by the client. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } catch (Exception e) { - System.out.println("Error during inspectString: \n" + e.toString()); - } - } -} -// [END dlp_inspect_table] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectTextFile.java b/samples/snippets/src/main/java/dlp/snippets/InspectTextFile.java deleted file mode 100644 index 872ecd94..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectTextFile.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_file] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.LocationName; -import com.google.protobuf.ByteString; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -public class InspectTextFile { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String filePath = "path/to/file.txt"; - inspectTextFile(projectId, filePath); - } - - // Inspects the specified text file. - public static void inspectTextFile(String projectId, String filePath) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the type and content to be inspected. - ByteString fileBytes = ByteString.readFrom(new FileInputStream(filePath)); - ByteContentItem byteItem = - ByteContentItem.newBuilder().setType(BytesType.TEXT_UTF8).setData(fileBytes).build(); - ContentItem item = ContentItem.newBuilder().setByteItem(byteItem).build(); - - // Specify the type of info the inspection will look for. - List infoTypes = new ArrayList<>(); - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - for (String typeName : new String[] {"PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD_NUMBER"}) { - infoTypes.add(InfoType.newBuilder().setName(typeName).build()); - } - - // Construct the configuration for the Inspect request. - InspectConfig config = - InspectConfig.newBuilder().addAllInfoTypes(infoTypes).setIncludeQuote(true).build(); - - // Construct the Inspect request to be sent by the client. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } - } -} -// [END dlp_inspect_file] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectWithCustomRegex.java b/samples/snippets/src/main/java/dlp/snippets/InspectWithCustomRegex.java deleted file mode 100644 index 16aba55c..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectWithCustomRegex.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_custom_regex] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CustomInfoType; -import com.google.privacy.dlp.v2.CustomInfoType.Regex; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.Likelihood; -import com.google.privacy.dlp.v2.LocationName; -import com.google.protobuf.ByteString; -import java.io.IOException; - -public class InspectWithCustomRegex { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToInspect = "Patients MRN 444-5-22222"; - String customRegexPattern = "[1-9]{3}-[1-9]{1}-[1-9]{5}"; - inspectWithCustomRegex(projectId, textToInspect, customRegexPattern); - } - - // Inspects a BigQuery Table - public static void inspectWithCustomRegex( - String projectId, String textToInspect, String customRegexPattern) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the type and content to be inspected. - ByteContentItem byteItem = - ByteContentItem.newBuilder() - .setType(BytesType.TEXT_UTF8) - .setData(ByteString.copyFromUtf8(textToInspect)) - .build(); - ContentItem item = ContentItem.newBuilder().setByteItem(byteItem).build(); - - // Specify the regex pattern the inspection will look for. - Regex regex = Regex.newBuilder().setPattern(customRegexPattern).build(); - - // Construct the custom regex detector. - InfoType infoType = InfoType.newBuilder().setName("C_MRN").build(); - CustomInfoType customInfoType = - CustomInfoType.newBuilder().setInfoType(infoType).setRegex(regex).build(); - - // Construct the configuration for the Inspect request. - InspectConfig config = - InspectConfig.newBuilder() - .addCustomInfoTypes(customInfoType) - .setIncludeQuote(true) - .setMinLikelihood(Likelihood.POSSIBLE) - .build(); - - // Construct the Inspect request to be sent by the client. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } - } -} -// [END dlp_inspect_custom_regex] diff --git a/samples/snippets/src/main/java/dlp/snippets/InspectWithHotwordRules.java b/samples/snippets/src/main/java/dlp/snippets/InspectWithHotwordRules.java deleted file mode 100644 index 39c25327..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/InspectWithHotwordRules.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_inspect_hotword_rule] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CustomInfoType; -import com.google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule; -import com.google.privacy.dlp.v2.CustomInfoType.DetectionRule.LikelihoodAdjustment; -import com.google.privacy.dlp.v2.CustomInfoType.DetectionRule.Proximity; -import com.google.privacy.dlp.v2.CustomInfoType.Regex; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.InspectionRule; -import com.google.privacy.dlp.v2.InspectionRuleSet; -import com.google.privacy.dlp.v2.Likelihood; -import com.google.privacy.dlp.v2.LocationName; -import com.google.protobuf.ByteString; -import java.io.IOException; - -public class InspectWithHotwordRules { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToInspect = "Patient's MRN 444-5-22222 and just a number 333-2-33333"; - String customRegexPattern = "[1-9]{3}-[1-9]{1}-[1-9]{5}"; - String hotwordRegexPattern = "(?i)(mrn|medical)(?-i)"; - inspectWithHotwordRules(projectId, textToInspect, customRegexPattern, hotwordRegexPattern); - } - - // Inspects a BigQuery Table - public static void inspectWithHotwordRules( - String projectId, String textToInspect, String customRegexPattern, String hotwordRegexPattern) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the type and content to be inspected. - ByteContentItem byteItem = - ByteContentItem.newBuilder() - .setType(BytesType.TEXT_UTF8) - .setData(ByteString.copyFromUtf8(textToInspect)) - .build(); - ContentItem item = ContentItem.newBuilder().setByteItem(byteItem).build(); - - // Specify the regex pattern the inspection will look for. - Regex regex = Regex.newBuilder().setPattern(customRegexPattern).build(); - - // Construct the custom regex detector. - InfoType infoType = InfoType.newBuilder().setName("C_MRN").build(); - CustomInfoType customInfoType = - CustomInfoType.newBuilder().setInfoType(infoType).setRegex(regex).build(); - - // Specify hotword likelihood adjustment. - LikelihoodAdjustment likelihoodAdjustment = - LikelihoodAdjustment.newBuilder().setFixedLikelihood(Likelihood.VERY_LIKELY).build(); - - // Specify a window around a finding to apply a detection rule. - Proximity proximity = Proximity.newBuilder().setWindowBefore(10).build(); - - // Construct hotword rule. - HotwordRule hotwordRule = - HotwordRule.newBuilder() - .setHotwordRegex(Regex.newBuilder().setPattern(hotwordRegexPattern).build()) - .setLikelihoodAdjustment(likelihoodAdjustment) - .setProximity(proximity) - .build(); - - // Construct rule set for the inspect config. - InspectionRuleSet inspectionRuleSet = - InspectionRuleSet.newBuilder() - .addInfoTypes(infoType) - .addRules(InspectionRule.newBuilder().setHotwordRule(hotwordRule)) - .build(); - - // Construct the configuration for the Inspect request. - InspectConfig config = - InspectConfig.newBuilder() - .addCustomInfoTypes(customInfoType) - .setIncludeQuote(true) - .setMinLikelihood(Likelihood.POSSIBLE) - .addRuleSet(inspectionRuleSet) - .build(); - - // Construct the Inspect request to be sent by the client. - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(item) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - InspectContentResponse response = dlp.inspectContent(request); - - // Parse the response and process results - System.out.println("Findings: " + response.getResult().getFindingsCount()); - for (Finding f : response.getResult().getFindingsList()) { - System.out.println("\tQuote: " + f.getQuote()); - System.out.println("\tInfo type: " + f.getInfoType().getName()); - System.out.println("\tLikelihood: " + f.getLikelihood()); - } - } - } -} -// [END dlp_inspect_hotword_rule] diff --git a/samples/snippets/src/main/java/dlp/snippets/JobsCreate.java b/samples/snippets/src/main/java/dlp/snippets/JobsCreate.java deleted file mode 100644 index 54325579..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/JobsCreate.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_create_job] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.Action; -import com.google.privacy.dlp.v2.CloudStorageOptions; -import com.google.privacy.dlp.v2.CreateDlpJobRequest; -import com.google.privacy.dlp.v2.DlpJob; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectJobConfig; -import com.google.privacy.dlp.v2.Likelihood; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.StorageConfig; -import com.google.privacy.dlp.v2.StorageConfig.TimespanConfig; -import java.io.IOException; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -public class JobsCreate { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String gcsPath = "gs://" + "your-bucket-name" + "path/to/file.txt"; - createJobs(projectId, gcsPath); - } - - // Creates a DLP Job - public static void createJobs(String projectId, String gcsPath) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) { - - // Set autoPopulateTimespan to true to scan only new content - boolean autoPopulateTimespan = true; - TimespanConfig timespanConfig = - TimespanConfig.newBuilder() - .setEnableAutoPopulationOfTimespanConfig(autoPopulateTimespan) - .build(); - - // Specify the GCS file to be inspected. - CloudStorageOptions cloudStorageOptions = - CloudStorageOptions.newBuilder() - .setFileSet(CloudStorageOptions.FileSet.newBuilder().setUrl(gcsPath)) - .build(); - StorageConfig storageConfig = - StorageConfig.newBuilder() - .setCloudStorageOptions(cloudStorageOptions) - .setTimespanConfig(timespanConfig) - .build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - List infoTypes = - Stream.of("EMAIL_ADDRESS", "PERSON_NAME", "LOCATION", "PHONE_NUMBER") - .map(it -> InfoType.newBuilder().setName(it).build()) - .collect(Collectors.toList()); - // The minimum likelihood required before returning a match: - // See: https://cloud.google.com/dlp/docs/likelihood - Likelihood minLikelihood = Likelihood.UNLIKELY; - - // The maximum number of findings to report (0 = server maximum) - InspectConfig.FindingLimits findingLimits = - InspectConfig.FindingLimits.newBuilder().setMaxFindingsPerItem(100).build(); - - InspectConfig inspectConfig = - InspectConfig.newBuilder() - .addAllInfoTypes(infoTypes) - .setIncludeQuote(true) - .setMinLikelihood(minLikelihood) - .setLimits(findingLimits) - .build(); - - // Specify the action that is triggered when the job completes. - Action.PublishSummaryToCscc publishSummaryToCscc = - Action.PublishSummaryToCscc.getDefaultInstance(); - Action action = Action.newBuilder().setPublishSummaryToCscc(publishSummaryToCscc).build(); - - // Configure the inspection job we want the service to perform. - InspectJobConfig inspectJobConfig = - InspectJobConfig.newBuilder() - .setInspectConfig(inspectConfig) - .setStorageConfig(storageConfig) - .addActions(action) - .build(); - - // Construct the job creation request to be sent by the client. - CreateDlpJobRequest createDlpJobRequest = - CreateDlpJobRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setInspectJob(inspectJobConfig) - .build(); - - // Send the job creation request and process the response. - DlpJob createdDlpJob = dlpServiceClient.createDlpJob(createDlpJobRequest); - System.out.println("Job created successfully: " + createdDlpJob.getName()); - } - } -} -// [END dlp_create_job] diff --git a/samples/snippets/src/main/java/dlp/snippets/JobsDelete.java b/samples/snippets/src/main/java/dlp/snippets/JobsDelete.java deleted file mode 100644 index c3000d69..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/JobsDelete.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_delete_job] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.DeleteDlpJobRequest; -import com.google.privacy.dlp.v2.DlpJobName; -import java.io.IOException; - -public class JobsDelete { - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String jobId = "your-job-id"; - deleteJobs(projectId, jobId); - } - - // Deletes a DLP Job with the given jobId - public static void deleteJobs(String projectId, String jobId) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) { - - // Construct the complete job name from the projectId and jobId - DlpJobName jobName = DlpJobName.of(projectId, jobId); - - // Construct the job deletion request to be sent by the client. - DeleteDlpJobRequest deleteDlpJobRequest = - DeleteDlpJobRequest.newBuilder().setName(jobName.toString()).build(); - - // Send the job deletion request - dlpServiceClient.deleteDlpJob(deleteDlpJobRequest); - System.out.println("Job deleted successfully."); - } - } -} -// [END dlp_delete_job] diff --git a/samples/snippets/src/main/java/dlp/snippets/JobsGet.java b/samples/snippets/src/main/java/dlp/snippets/JobsGet.java deleted file mode 100644 index 9f43eccc..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/JobsGet.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_get_job] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.DlpJobName; -import com.google.privacy.dlp.v2.GetDlpJobRequest; -import java.io.IOException; - -public class JobsGet { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String jobId = "your-job-id"; - getJobs(projectId, jobId); - } - - // Gets a DLP Job with the given jobId - public static void getJobs(String projectId, String jobId) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) { - - // Construct the complete job name from the projectId and jobId - DlpJobName jobName = DlpJobName.of(projectId, jobId); - - // Construct the get job request to be sent by the client. - GetDlpJobRequest getDlpJobRequest = - GetDlpJobRequest.newBuilder().setName(jobName.toString()).build(); - - // Send the get job request - dlpServiceClient.getDlpJob(getDlpJobRequest); - System.out.println("Job got successfully."); - } - } -} -// [END dlp_get_job] diff --git a/samples/snippets/src/main/java/dlp/snippets/JobsList.java b/samples/snippets/src/main/java/dlp/snippets/JobsList.java deleted file mode 100644 index 892f58e1..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/JobsList.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_list_jobs] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.DlpJob; -import com.google.privacy.dlp.v2.DlpJobType; -import com.google.privacy.dlp.v2.ListDlpJobsRequest; -import com.google.privacy.dlp.v2.LocationName; -import java.io.IOException; - -public class JobsList { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - listJobs(projectId); - } - - // Lists DLP jobs - public static void listJobs(String projectId) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) { - - // Construct the request to be sent by the client. - // For more info on filters and job types, - // see https://cloud.google.com/dlp/docs/reference/rest/v2/projects.dlpJobs/list - ListDlpJobsRequest listDlpJobsRequest = - ListDlpJobsRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setFilter("state=DONE") - .setType(DlpJobType.valueOf("INSPECT_JOB")) - .build(); - - // Send the request to list jobs and process the response - DlpServiceClient.ListDlpJobsPagedResponse response = - dlpServiceClient.listDlpJobs(listDlpJobsRequest); - - System.out.println("DLP jobs found:"); - for (DlpJob dlpJob : response.getPage().getValues()) { - System.out.println(dlpJob.getName() + " -- " + dlpJob.getState()); - } - } - } -} -// [END dlp_list_jobs] diff --git a/samples/snippets/src/main/java/dlp/snippets/QuickStart.java b/samples/snippets/src/main/java/dlp/snippets/QuickStart.java deleted file mode 100644 index b4b724de..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/QuickStart.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2017 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_quickstart] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.Finding; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectContentRequest; -import com.google.privacy.dlp.v2.InspectContentResponse; -import com.google.privacy.dlp.v2.InspectResult; -import com.google.privacy.dlp.v2.Likelihood; -import com.google.privacy.dlp.v2.LocationName; -import com.google.protobuf.ByteString; -import java.io.IOException; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -public class QuickStart { - - public static void main(String[] args) throws IOException { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - quickstart(projectId); - } - - public static void quickstart(String projectId) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) { - // Configure that content that will be inspected - String text = "His name was Robert Frost"; - ByteContentItem byteContentItem = - ByteContentItem.newBuilder() - .setType(ByteContentItem.BytesType.TEXT_UTF8) - .setData(ByteString.copyFromUtf8(text)) - .build(); - ContentItem contentItem = ContentItem.newBuilder().setByteItem(byteContentItem).build(); - - // The types of information to match: - // See: https://cloud.google.com/dlp/docs/infotypes-reference - List infoTypes = - Stream.of("PERSON_NAME", "US_STATE") - .map(it -> InfoType.newBuilder().setName(it).build()) - .collect(Collectors.toList()); - - // The minimum likelihood required before returning a match: - // See: https://cloud.google.com/dlp/docs/likelihood - Likelihood minLikelihood = Likelihood.POSSIBLE; - - // The maximum number of findings to report (0 = server maximum) - InspectConfig.FindingLimits findingLimits = - InspectConfig.FindingLimits.newBuilder().setMaxFindingsPerItem(0).build(); - - // Specify the inspection configuration - InspectConfig inspectConfig = - InspectConfig.newBuilder() - .addAllInfoTypes(infoTypes) - .setMinLikelihood(minLikelihood) - .setLimits(findingLimits) - .setIncludeQuote(true) - .build(); - - // Create the request from previous configs - InspectContentRequest request = - InspectContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setInspectConfig(inspectConfig) - .setItem(contentItem) - .build(); - - // Send the request to the service and receive the results - InspectContentResponse response = dlpServiceClient.inspectContent(request); - - // Process the results - System.out.println("Inspect of text complete: "); - InspectResult result = response.getResult(); - if (result.getFindingsCount() < 0) { - System.out.println("No findings."); - return; - } - System.out.println("Findings: "); - for (Finding finding : result.getFindingsList()) { - System.out.println("\tQuote: " + finding.getQuote()); - System.out.println("\tInfo type: " + finding.getInfoType().getName()); - System.out.println("\tLikelihood: " + finding.getLikelihood()); - } - } - } -} - -// [END dlp_quickstart] diff --git a/samples/snippets/src/main/java/dlp/snippets/ReIdentifyTableWithFpe.java b/samples/snippets/src/main/java/dlp/snippets/ReIdentifyTableWithFpe.java deleted file mode 100644 index 2838d96d..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/ReIdentifyTableWithFpe.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_reidentify_table_fpe] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.common.io.BaseEncoding; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CryptoKey; -import com.google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig; -import com.google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.FfxCommonNativeAlphabet; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.FieldId; -import com.google.privacy.dlp.v2.FieldTransformation; -import com.google.privacy.dlp.v2.KmsWrappedCryptoKey; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrimitiveTransformation; -import com.google.privacy.dlp.v2.RecordTransformations; -import com.google.privacy.dlp.v2.ReidentifyContentRequest; -import com.google.privacy.dlp.v2.ReidentifyContentResponse; -import com.google.privacy.dlp.v2.Table; -import com.google.privacy.dlp.v2.Table.Row; -import com.google.privacy.dlp.v2.Value; -import com.google.protobuf.ByteString; -import java.io.IOException; - -public class ReIdentifyTableWithFpe { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String kmsKeyName = - "projects/YOUR_PROJECT/" - + "locations/YOUR_KEYRING_REGION/" - + "keyRings/YOUR_KEYRING_NAME/" - + "cryptoKeys/YOUR_KEY_NAME"; - String wrappedAesKey = "YOUR_ENCRYPTED_AES_256_KEY"; - Table tableToReIdentify = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("Employee ID").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("28777").build()) - .build()) - .build(); - reIdentifyTableWithFpe(projectId, tableToReIdentify, kmsKeyName, wrappedAesKey); - } - - public static void reIdentifyTableWithFpe( - String projectId, Table tableToReIdentify, String kmsKeyName, String wrappedAesKey) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify what content you want the service to re-identify. - ContentItem contentItem = ContentItem.newBuilder().setTable(tableToReIdentify).build(); - - // Specify an encrypted AES-256 key and the name of the Cloud KMS key that encrypted it. - KmsWrappedCryptoKey kmsWrappedCryptoKey = - KmsWrappedCryptoKey.newBuilder() - .setWrappedKey(ByteString.copyFrom(BaseEncoding.base64().decode(wrappedAesKey))) - .setCryptoKeyName(kmsKeyName) - .build(); - CryptoKey cryptoKey = CryptoKey.newBuilder().setKmsWrapped(kmsWrappedCryptoKey).build(); - - // Specify how to un-encrypt the previously de-identified information. - CryptoReplaceFfxFpeConfig cryptoReplaceFfxFpeConfig = - CryptoReplaceFfxFpeConfig.newBuilder() - .setCryptoKey(cryptoKey) - // Set of characters in the input text. For more info, see - // https://cloud.google.com/dlp/docs/reference/rest/v2/organizations.deidentifyTemplates#DeidentifyTemplate.FfxCommonNativeAlphabet - .setCommonAlphabet(FfxCommonNativeAlphabet.NUMERIC) - .build(); - PrimitiveTransformation primitiveTransformation = - PrimitiveTransformation.newBuilder() - .setCryptoReplaceFfxFpeConfig(cryptoReplaceFfxFpeConfig) - .build(); - - // Specify field to be decrypted. - FieldId fieldId = FieldId.newBuilder().setName("Employee ID").build(); - - // Associate the decryption with the specified field. - FieldTransformation fieldTransformation = - FieldTransformation.newBuilder() - .setPrimitiveTransformation(primitiveTransformation) - .addFields(fieldId) - .build(); - RecordTransformations transformations = - RecordTransformations.newBuilder().addFieldTransformations(fieldTransformation).build(); - - DeidentifyConfig reidentifyConfig = - DeidentifyConfig.newBuilder().setRecordTransformations(transformations).build(); - - // Combine configurations into a request for the service. - ReidentifyContentRequest request = - ReidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(contentItem) - .setReidentifyConfig(reidentifyConfig) - .build(); - - // Send the request and receive response from the service - ReidentifyContentResponse response = dlp.reidentifyContent(request); - - // Print the results - System.out.println("Table after re-identification: " + response.getItem().getValue()); - } - } -} -// [END dlp_reidentify_table_fpe] diff --git a/samples/snippets/src/main/java/dlp/snippets/ReIdentifyTextWithFpe.java b/samples/snippets/src/main/java/dlp/snippets/ReIdentifyTextWithFpe.java deleted file mode 100644 index 1ccdb58e..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/ReIdentifyTextWithFpe.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_reidentify_text_fpe] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.common.io.BaseEncoding; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CryptoKey; -import com.google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig; -import com.google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.FfxCommonNativeAlphabet; -import com.google.privacy.dlp.v2.CustomInfoType; -import com.google.privacy.dlp.v2.CustomInfoType.SurrogateType; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InfoTypeTransformations; -import com.google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.KmsWrappedCryptoKey; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrimitiveTransformation; -import com.google.privacy.dlp.v2.ReidentifyContentRequest; -import com.google.privacy.dlp.v2.ReidentifyContentResponse; -import com.google.protobuf.ByteString; -import java.io.IOException; - -public class ReIdentifyTextWithFpe { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToReIdentify = "My phone number is PHONE_TOKEN(10):9617256398"; - String kmsKeyName = - "projects/YOUR_PROJECT/" - + "locations/YOUR_KEYRING_REGION/" - + "keyRings/YOUR_KEYRING_NAME/" - + "cryptoKeys/YOUR_KEY_NAME"; - String wrappedAesKey = "YOUR_ENCRYPTED_AES_256_KEY"; - reIdentifyTextWithFpe(projectId, textToReIdentify, kmsKeyName, wrappedAesKey); - } - - public static void reIdentifyTextWithFpe( - String projectId, String textToReIdentify, String kmsKeyName, String wrappedAesKey) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify what content you want the service to re-identify. - ContentItem contentItem = ContentItem.newBuilder().setValue(textToReIdentify).build(); - - // Specify the type of info the inspection will re-identify. This must use the same custom - // into type that was used as a surrogate during the initial encryption. - InfoType surrogateInfoType = InfoType.newBuilder().setName("PHONE_NUMBER").build(); - - CustomInfoType customInfoType = - CustomInfoType.newBuilder() - .setInfoType(surrogateInfoType) - .setSurrogateType(SurrogateType.getDefaultInstance()) - .build(); - InspectConfig inspectConfig = - InspectConfig.newBuilder().addCustomInfoTypes(customInfoType).build(); - - // Specify an encrypted AES-256 key and the name of the Cloud KMS key that encrypted it. - KmsWrappedCryptoKey kmsWrappedCryptoKey = - KmsWrappedCryptoKey.newBuilder() - .setWrappedKey(ByteString.copyFrom(BaseEncoding.base64().decode(wrappedAesKey))) - .setCryptoKeyName(kmsKeyName) - .build(); - CryptoKey cryptoKey = CryptoKey.newBuilder().setKmsWrapped(kmsWrappedCryptoKey).build(); - - // Specify how to un-encrypt the previously de-identified information. - CryptoReplaceFfxFpeConfig cryptoReplaceFfxFpeConfig = - CryptoReplaceFfxFpeConfig.newBuilder() - .setCryptoKey(cryptoKey) - // Set of characters in the input text. For more info, see - // https://cloud.google.com/dlp/docs/reference/rest/v2/organizations.deidentifyTemplates#DeidentifyTemplate.FfxCommonNativeAlphabet - .setCommonAlphabet(FfxCommonNativeAlphabet.NUMERIC) - .setSurrogateInfoType(surrogateInfoType) - .build(); - PrimitiveTransformation primitiveTransformation = - PrimitiveTransformation.newBuilder() - .setCryptoReplaceFfxFpeConfig(cryptoReplaceFfxFpeConfig) - .build(); - InfoTypeTransformation infoTypeTransformation = - InfoTypeTransformation.newBuilder() - .setPrimitiveTransformation(primitiveTransformation) - .addInfoTypes(surrogateInfoType) - .build(); - InfoTypeTransformations transformations = - InfoTypeTransformations.newBuilder().addTransformations(infoTypeTransformation).build(); - - DeidentifyConfig reidentifyConfig = - DeidentifyConfig.newBuilder().setInfoTypeTransformations(transformations).build(); - - // Combine configurations into a request for the service. - ReidentifyContentRequest request = - ReidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(contentItem) - .setInspectConfig(inspectConfig) - .setReidentifyConfig(reidentifyConfig) - .build(); - - // Send the request and receive response from the service - ReidentifyContentResponse response = dlp.reidentifyContent(request); - - // Print the results - System.out.println("Text after re-identification: " + response.getItem().getValue()); - } - } -} -// [END dlp_reidentify_text_fpe] diff --git a/samples/snippets/src/main/java/dlp/snippets/ReIdentifyWithFpe.java b/samples/snippets/src/main/java/dlp/snippets/ReIdentifyWithFpe.java deleted file mode 100644 index 02c436cd..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/ReIdentifyWithFpe.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_reidentify_fpe] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.common.io.BaseEncoding; -import com.google.privacy.dlp.v2.ContentItem; -import com.google.privacy.dlp.v2.CryptoKey; -import com.google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig; -import com.google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.FfxCommonNativeAlphabet; -import com.google.privacy.dlp.v2.CustomInfoType; -import com.google.privacy.dlp.v2.CustomInfoType.SurrogateType; -import com.google.privacy.dlp.v2.DeidentifyConfig; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InfoTypeTransformations; -import com.google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.KmsWrappedCryptoKey; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrimitiveTransformation; -import com.google.privacy.dlp.v2.ReidentifyContentRequest; -import com.google.privacy.dlp.v2.ReidentifyContentResponse; -import com.google.protobuf.ByteString; -import java.io.IOException; - -public class ReIdentifyWithFpe { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String textToReIdentify = "My SSN is SSN_TOKEN(9):731997681"; - String kmsKeyName = - "projects/YOUR_PROJECT/" - + "locations/YOUR_KEYRING_REGION/" - + "keyRings/YOUR_KEYRING_NAME/" - + "cryptoKeys/YOUR_KEY_NAME"; - String wrappedAesKey = "YOUR_ENCRYPTED_AES_256_KEY"; - reIdentifyWithFpe(projectId, textToReIdentify, kmsKeyName, wrappedAesKey); - } - - public static void reIdentifyWithFpe( - String projectId, String textToReIdentify, String kmsKeyName, String wrappedAesKey) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify what content you want the service to re-identify - ContentItem contentItem = ContentItem.newBuilder().setValue(textToReIdentify).build(); - - // Specify the type of info the inspection will re-identify. This must use the same custom - // into type that was used as a surrogate during the initial encryption. - InfoType surrogateInfoType = InfoType.newBuilder().setName("SSN_TOKEN").build(); - - CustomInfoType customInfoType = - CustomInfoType.newBuilder() - .setInfoType(surrogateInfoType) - .setSurrogateType(SurrogateType.getDefaultInstance()) - .build(); - InspectConfig inspectConfig = - InspectConfig.newBuilder().addCustomInfoTypes(customInfoType).build(); - - // Specify an encrypted AES-256 key and the name of the Cloud KMS key that encrypted it - KmsWrappedCryptoKey kmsWrappedCryptoKey = - KmsWrappedCryptoKey.newBuilder() - .setWrappedKey(ByteString.copyFrom(BaseEncoding.base64().decode(wrappedAesKey))) - .setCryptoKeyName(kmsKeyName) - .build(); - CryptoKey cryptoKey = CryptoKey.newBuilder().setKmsWrapped(kmsWrappedCryptoKey).build(); - - // Specify how to un-encrypt the previously de-identified information - CryptoReplaceFfxFpeConfig cryptoReplaceFfxFpeConfig = - CryptoReplaceFfxFpeConfig.newBuilder() - .setCryptoKey(cryptoKey) - // Set of characters in the input text. For more info, see - // https://cloud.google.com/dlp/docs/reference/rest/v2/organizations.deidentifyTemplates#DeidentifyTemplate.FfxCommonNativeAlphabet - .setCommonAlphabet(FfxCommonNativeAlphabet.NUMERIC) - .setSurrogateInfoType(surrogateInfoType) - .build(); - PrimitiveTransformation primitiveTransformation = - PrimitiveTransformation.newBuilder() - .setCryptoReplaceFfxFpeConfig(cryptoReplaceFfxFpeConfig) - .build(); - InfoTypeTransformation infoTypeTransformation = - InfoTypeTransformation.newBuilder() - .setPrimitiveTransformation(primitiveTransformation) - .addInfoTypes(surrogateInfoType) - .build(); - InfoTypeTransformations transformations = - InfoTypeTransformations.newBuilder().addTransformations(infoTypeTransformation).build(); - - DeidentifyConfig reidentifyConfig = - DeidentifyConfig.newBuilder().setInfoTypeTransformations(transformations).build(); - - // Combine configurations into a request for the service. - ReidentifyContentRequest request = - ReidentifyContentRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setItem(contentItem) - .setInspectConfig(inspectConfig) - .setReidentifyConfig(reidentifyConfig) - .build(); - - // Send the request and receive response from the service - ReidentifyContentResponse response = dlp.reidentifyContent(request); - - // Print the results - System.out.println("Text after re-identification: " + response.getItem().getValue()); - } - } -} -// [END dlp_reidentify_fpe] diff --git a/samples/snippets/src/main/java/dlp/snippets/RedactImageFile.java b/samples/snippets/src/main/java/dlp/snippets/RedactImageFile.java deleted file mode 100644 index a872ef79..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/RedactImageFile.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_redact_image] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.Likelihood; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.RedactImageRequest; -import com.google.privacy.dlp.v2.RedactImageResponse; -import com.google.protobuf.ByteString; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -class RedactImageFile { - - public static void main(String[] args) throws IOException { - // TODO(developer): Replace these variables before running the sample. - String projectId = "my-project-id"; - String inputPath = "src/test/resources/test.png"; - String outputPath = "redacted.png"; - redactImageFile(projectId, inputPath, outputPath); - } - - static void redactImageFile(String projectId, String inputPath, String outputPath) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the content to be inspected. - ByteString fileBytes = ByteString.readFrom(new FileInputStream(inputPath)); - ByteContentItem byteItem = - ByteContentItem.newBuilder().setType(BytesType.IMAGE).setData(fileBytes).build(); - - // Specify the type of info and likelihood necessary to redact. - List infoTypes = new ArrayList<>(); - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - for (String typeName : new String[] {"PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD_NUMBER"}) { - infoTypes.add(InfoType.newBuilder().setName(typeName).build()); - } - InspectConfig config = - InspectConfig.newBuilder() - .addAllInfoTypes(infoTypes) - .setMinLikelihood(Likelihood.LIKELY) - .build(); - - // Construct the Redact request to be sent by the client. - RedactImageRequest request = - RedactImageRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setByteItem(byteItem) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - RedactImageResponse response = dlp.redactImage(request); - - // Parse the response and process results. - FileOutputStream redacted = new FileOutputStream(outputPath); - redacted.write(response.getRedactedImage().toByteArray()); - redacted.close(); - System.out.println("Redacted image written to " + outputPath); - } - } -} -// [END dlp_redact_image] diff --git a/samples/snippets/src/main/java/dlp/snippets/RedactImageFileAllInfoTypes.java b/samples/snippets/src/main/java/dlp/snippets/RedactImageFileAllInfoTypes.java deleted file mode 100644 index c7223fcf..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/RedactImageFileAllInfoTypes.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_redact_image_all_infotypes] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.RedactImageRequest; -import com.google.privacy.dlp.v2.RedactImageResponse; -import com.google.protobuf.ByteString; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; - -class RedactImageFileAllInfoTypes { - - public static void main(String[] args) throws IOException { - // TODO(developer): Replace these variables before running the sample. - String projectId = "my-project-id"; - String inputPath = "src/test/resources/sensitive-data-image.jpeg"; - String outputPath = "sensitive-data-image-redacted.jpeg"; - redactImageFileAllInfoTypes(projectId, inputPath, outputPath); - } - - static void redactImageFileAllInfoTypes(String projectId, String inputPath, String outputPath) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the content to be redacted. - ByteString fileBytes = ByteString.readFrom(new FileInputStream(inputPath)); - ByteContentItem byteItem = - ByteContentItem.newBuilder().setType(BytesType.IMAGE_JPEG).setData(fileBytes).build(); - - // Construct the Redact request to be sent by the client. - // Do not specify the type of info to redact. - RedactImageRequest request = - RedactImageRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setByteItem(byteItem) - .build(); - - // Use the client to send the API request. - RedactImageResponse response = dlp.redactImage(request); - - // Parse the response and process results. - FileOutputStream redacted = new FileOutputStream(outputPath); - redacted.write(response.getRedactedImage().toByteArray()); - redacted.close(); - System.out.println("Redacted image written to " + outputPath); - } - } -} -// [END dlp_redact_image_all_infotypes] diff --git a/samples/snippets/src/main/java/dlp/snippets/RedactImageFileAllText.java b/samples/snippets/src/main/java/dlp/snippets/RedactImageFileAllText.java deleted file mode 100644 index c875f2e0..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/RedactImageFileAllText.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_redact_image_all_text] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.RedactImageRequest; -import com.google.privacy.dlp.v2.RedactImageRequest.ImageRedactionConfig; -import com.google.privacy.dlp.v2.RedactImageResponse; -import com.google.protobuf.ByteString; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; - -class RedactImageFileAllText { - - public static void main(String[] args) throws IOException { - // TODO(developer): Replace these variables before running the sample. - String projectId = "my-project-id"; - String inputPath = "src/test/resources/sensitive-data-image.jpeg"; - String outputPath = "sensitive-data-image-redacted.jpeg"; - redactImageFileAllText(projectId, inputPath, outputPath); - } - - static void redactImageFileAllText(String projectId, String inputPath, String outputPath) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the content to be redacted. - ByteString fileBytes = ByteString.readFrom(new FileInputStream(inputPath)); - ByteContentItem byteItem = - ByteContentItem.newBuilder().setType(BytesType.IMAGE_JPEG).setData(fileBytes).build(); - - // Enable redaction of all text. - ImageRedactionConfig imageRedactionConfig = - ImageRedactionConfig.newBuilder().setRedactAllText(true).build(); - - // Construct the Redact request to be sent by the client. - // Do not specify the type of info to redact. - RedactImageRequest request = - RedactImageRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setByteItem(byteItem) - .addImageRedactionConfigs(imageRedactionConfig) - .build(); - - // Use the client to send the API request. - RedactImageResponse response = dlp.redactImage(request); - - // Parse the response and process results. - FileOutputStream redacted = new FileOutputStream(outputPath); - redacted.write(response.getRedactedImage().toByteArray()); - redacted.close(); - System.out.println("Redacted image written to " + outputPath); - } - } -} -// [END dlp_redact_image_all_text] diff --git a/samples/snippets/src/main/java/dlp/snippets/RedactImageFileColoredInfoTypes.java b/samples/snippets/src/main/java/dlp/snippets/RedactImageFileColoredInfoTypes.java deleted file mode 100644 index 3ed79863..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/RedactImageFileColoredInfoTypes.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_redact_image_colored_infotypes] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.Color; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.RedactImageRequest; -import com.google.privacy.dlp.v2.RedactImageRequest.ImageRedactionConfig; -import com.google.privacy.dlp.v2.RedactImageResponse; -import com.google.protobuf.ByteString; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -class RedactImageFileColoredInfoTypes { - - public static void main(String[] args) throws IOException { - // TODO(developer): Replace these variables before running the sample. - String projectId = "my-project-id"; - String inputPath = "src/test/resources/test.png"; - String outputPath = "redacted.png"; - redactImageFileColoredInfoTypes(projectId, inputPath, outputPath); - } - - static void redactImageFileColoredInfoTypes(String projectId, String inputPath, String outputPath) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the content to be redacted. - ByteString fileBytes = ByteString.readFrom(new FileInputStream(inputPath)); - ByteContentItem byteItem = - ByteContentItem.newBuilder().setType(BytesType.IMAGE_JPEG).setData(fileBytes).build(); - - // Define types of info to redact associate each one with a different color. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - ImageRedactionConfig ssnRedactionConfig = - ImageRedactionConfig.newBuilder() - .setInfoType(InfoType.newBuilder().setName("US_SOCIAL_SECURITY_NUMBER").build()) - .setRedactionColor(Color.newBuilder().setRed(.3f).setGreen(.1f).setBlue(.6f).build()) - .build(); - ImageRedactionConfig emailRedactionConfig = - ImageRedactionConfig.newBuilder() - .setInfoType(InfoType.newBuilder().setName("EMAIL_ADDRESS").build()) - .setRedactionColor(Color.newBuilder().setRed(.5f).setGreen(.5f).setBlue(1).build()) - .build(); - ImageRedactionConfig phoneRedactionConfig = - ImageRedactionConfig.newBuilder() - .setInfoType(InfoType.newBuilder().setName("PHONE_NUMBER").build()) - .setRedactionColor(Color.newBuilder().setRed(1).setGreen(0).setBlue(.6f).build()) - .build(); - - // Create collection of all redact configurations. - List imageRedactionConfigs = - Arrays.asList(ssnRedactionConfig, emailRedactionConfig, phoneRedactionConfig); - - // List types of info to search for. - InspectConfig config = - InspectConfig.newBuilder() - .addAllInfoTypes( - imageRedactionConfigs.stream() - .map(ImageRedactionConfig::getInfoType) - .collect(Collectors.toList())) - .build(); - - // Construct the Redact request to be sent by the client. - RedactImageRequest request = - RedactImageRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setByteItem(byteItem) - .addAllImageRedactionConfigs(imageRedactionConfigs) - .setInspectConfig(config) - .build(); - - // Use the client to send the API request. - RedactImageResponse response = dlp.redactImage(request); - - // Parse the response and process results. - FileOutputStream redacted = new FileOutputStream(outputPath); - redacted.write(response.getRedactedImage().toByteArray()); - redacted.close(); - System.out.println("Redacted image written to " + outputPath); - } - } -} -// [END dlp_redact_image_colored_infotypes] diff --git a/samples/snippets/src/main/java/dlp/snippets/RedactImageFileListedInfoTypes.java b/samples/snippets/src/main/java/dlp/snippets/RedactImageFileListedInfoTypes.java deleted file mode 100644 index e7b909b3..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/RedactImageFileListedInfoTypes.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_redact_image_listed_infotypes] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.ByteContentItem; -import com.google.privacy.dlp.v2.ByteContentItem.BytesType; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.RedactImageRequest; -import com.google.privacy.dlp.v2.RedactImageRequest.ImageRedactionConfig; -import com.google.privacy.dlp.v2.RedactImageResponse; -import com.google.protobuf.ByteString; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -class RedactImageFileListedInfoTypes { - - public static void main(String[] args) throws IOException { - // TODO(developer): Replace these variables before running the sample. - String projectId = "my-project-id"; - String inputPath = "src/test/resources/sensitive-data-image.jpeg"; - String outputPath = "sensitive-data-image-redacted.jpeg"; - redactImageFileListedInfoTypes(projectId, inputPath, outputPath); - } - - static void redactImageFileListedInfoTypes(String projectId, String inputPath, String outputPath) - throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlp = DlpServiceClient.create()) { - // Specify the content to be redacted. - ByteString fileBytes = ByteString.readFrom(new FileInputStream(inputPath)); - ByteContentItem byteItem = - ByteContentItem.newBuilder().setType(BytesType.IMAGE_JPEG).setData(fileBytes).build(); - - // Specify the types of info necessary to redact. - List infoTypes = new ArrayList<>(); - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - for (String typeName : - new String[] {"US_SOCIAL_SECURITY_NUMBER", "EMAIL_ADDRESS", "PHONE_NUMBER"}) { - infoTypes.add(InfoType.newBuilder().setName(typeName).build()); - } - InspectConfig inspectConfig = InspectConfig.newBuilder().addAllInfoTypes(infoTypes).build(); - - // Prepare redaction configs. - List imageRedactionConfigs = - infoTypes.stream() - .map(infoType -> ImageRedactionConfig.newBuilder().setInfoType(infoType).build()) - .collect(Collectors.toList()); - - // Construct the Redact request to be sent by the client. - RedactImageRequest request = - RedactImageRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setByteItem(byteItem) - .addAllImageRedactionConfigs(imageRedactionConfigs) - .setInspectConfig(inspectConfig) - .build(); - - // Use the client to send the API request. - RedactImageResponse response = dlp.redactImage(request); - - // Parse the response and process results. - FileOutputStream redacted = new FileOutputStream(outputPath); - redacted.write(response.getRedactedImage().toByteArray()); - redacted.close(); - System.out.println("Redacted image written to " + outputPath); - } - } -} -// [END dlp_redact_image_listed_infotypes] diff --git a/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisCategoricalStats.java b/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisCategoricalStats.java deleted file mode 100644 index 3a80fb2e..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisCategoricalStats.java +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_categorical_stats] - -import com.google.api.core.SettableApiFuture; -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.cloud.pubsub.v1.AckReplyConsumer; -import com.google.cloud.pubsub.v1.MessageReceiver; -import com.google.cloud.pubsub.v1.Subscriber; -import com.google.privacy.dlp.v2.Action; -import com.google.privacy.dlp.v2.Action.PublishToPubSub; -import com.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult; -import com.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult.CategoricalStatsHistogramBucket; -import com.google.privacy.dlp.v2.BigQueryTable; -import com.google.privacy.dlp.v2.CreateDlpJobRequest; -import com.google.privacy.dlp.v2.DlpJob; -import com.google.privacy.dlp.v2.FieldId; -import com.google.privacy.dlp.v2.GetDlpJobRequest; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrivacyMetric; -import com.google.privacy.dlp.v2.PrivacyMetric.CategoricalStatsConfig; -import com.google.privacy.dlp.v2.RiskAnalysisJobConfig; -import com.google.privacy.dlp.v2.ValueFrequency; -import com.google.pubsub.v1.ProjectSubscriptionName; -import com.google.pubsub.v1.ProjectTopicName; -import com.google.pubsub.v1.PubsubMessage; -import java.io.IOException; -import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -class RiskAnalysisCategoricalStats { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String datasetId = "your-bigquery-dataset-id"; - String tableId = "your-bigquery-table-id"; - String topicId = "pub-sub-topic"; - String subscriptionId = "pub-sub-subscription"; - categoricalStatsAnalysis(projectId, datasetId, tableId, topicId, subscriptionId); - } - - public static void categoricalStatsAnalysis( - String projectId, String datasetId, String tableId, String topicId, String subscriptionId) - throws ExecutionException, InterruptedException, IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) { - // Specify the BigQuery table to analyze - BigQueryTable bigQueryTable = - BigQueryTable.newBuilder() - .setProjectId(projectId) - .setDatasetId(datasetId) - .setTableId(tableId) - .build(); - - // The name of the column to analyze, which doesn't need to contain numerical data - String columnName = "Mystery"; - - // Configure the privacy metric for the job - FieldId fieldId = FieldId.newBuilder().setName(columnName).build(); - CategoricalStatsConfig categoricalStatsConfig = - CategoricalStatsConfig.newBuilder().setField(fieldId).build(); - PrivacyMetric privacyMetric = - PrivacyMetric.newBuilder().setCategoricalStatsConfig(categoricalStatsConfig).build(); - - // Create action to publish job status notifications over Google Cloud Pub/Sub - ProjectTopicName topicName = ProjectTopicName.of(projectId, topicId); - PublishToPubSub publishToPubSub = - PublishToPubSub.newBuilder().setTopic(topicName.toString()).build(); - Action action = Action.newBuilder().setPubSub(publishToPubSub).build(); - - // Configure the risk analysis job to perform - RiskAnalysisJobConfig riskAnalysisJobConfig = - RiskAnalysisJobConfig.newBuilder() - .setSourceTable(bigQueryTable) - .setPrivacyMetric(privacyMetric) - .addActions(action) - .build(); - - // Build the job creation request to be sent by the client - CreateDlpJobRequest createDlpJobRequest = - CreateDlpJobRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setRiskJob(riskAnalysisJobConfig) - .build(); - - // Send the request to the API using the client - DlpJob dlpJob = dlpServiceClient.createDlpJob(createDlpJobRequest); - - // Set up a Pub/Sub subscriber to listen on the job completion status - final SettableApiFuture done = SettableApiFuture.create(); - - ProjectSubscriptionName subscriptionName = - ProjectSubscriptionName.of(projectId, subscriptionId); - - MessageReceiver messageHandler = - (PubsubMessage pubsubMessage, AckReplyConsumer ackReplyConsumer) -> { - handleMessage(dlpJob, done, pubsubMessage, ackReplyConsumer); - }; - Subscriber subscriber = Subscriber.newBuilder(subscriptionName, messageHandler).build(); - subscriber.startAsync(); - - // Wait for job completion semi-synchronously - // For long jobs, consider using a truly asynchronous execution model such as Cloud Functions - try { - done.get(15, TimeUnit.MINUTES); - } catch (TimeoutException e) { - System.out.println("Job was not completed after 15 minutes."); - return; - } finally { - subscriber.stopAsync(); - subscriber.awaitTerminated(); - } - - // Build a request to get the completed job - GetDlpJobRequest getDlpJobRequest = - GetDlpJobRequest.newBuilder().setName(dlpJob.getName()).build(); - - // Retrieve completed job status - DlpJob completedJob = dlpServiceClient.getDlpJob(getDlpJobRequest); - System.out.println("Job status: " + completedJob.getState()); - - // Get the result and parse through and process the information - CategoricalStatsResult result = completedJob.getRiskDetails().getCategoricalStatsResult(); - List histogramBucketList = - result.getValueFrequencyHistogramBucketsList(); - - for (CategoricalStatsHistogramBucket bucket : histogramBucketList) { - long mostCommonFrequency = bucket.getValueFrequencyUpperBound(); - System.out.printf("Most common value occurs %d time(s).\n", mostCommonFrequency); - - long leastCommonFrequency = bucket.getValueFrequencyLowerBound(); - System.out.printf("Least common value occurs %d time(s).\n", leastCommonFrequency); - - for (ValueFrequency valueFrequency : bucket.getBucketValuesList()) { - System.out.printf( - "Value %s occurs %d time(s).\n", - valueFrequency.getValue().toString(), valueFrequency.getCount()); - } - } - } - } - - // handleMessage injects the job and settableFuture into the message reciever interface - private static void handleMessage( - DlpJob job, - SettableApiFuture done, - PubsubMessage pubsubMessage, - AckReplyConsumer ackReplyConsumer) { - String messageAttribute = pubsubMessage.getAttributesMap().get("DlpJobName"); - if (job.getName().equals(messageAttribute)) { - done.set(true); - ackReplyConsumer.ack(); - } else { - ackReplyConsumer.nack(); - } - } -} - -// [END dlp_categorical_stats] diff --git a/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisKAnonymity.java b/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisKAnonymity.java deleted file mode 100644 index d0ac6b75..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisKAnonymity.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_k_anonymity] - -import com.google.api.core.SettableApiFuture; -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.cloud.pubsub.v1.AckReplyConsumer; -import com.google.cloud.pubsub.v1.MessageReceiver; -import com.google.cloud.pubsub.v1.Subscriber; -import com.google.privacy.dlp.v2.Action; -import com.google.privacy.dlp.v2.Action.PublishToPubSub; -import com.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult; -import com.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityEquivalenceClass; -import com.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityHistogramBucket; -import com.google.privacy.dlp.v2.BigQueryTable; -import com.google.privacy.dlp.v2.CreateDlpJobRequest; -import com.google.privacy.dlp.v2.DlpJob; -import com.google.privacy.dlp.v2.FieldId; -import com.google.privacy.dlp.v2.GetDlpJobRequest; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrivacyMetric; -import com.google.privacy.dlp.v2.PrivacyMetric.KAnonymityConfig; -import com.google.privacy.dlp.v2.RiskAnalysisJobConfig; -import com.google.privacy.dlp.v2.Value; -import com.google.pubsub.v1.ProjectSubscriptionName; -import com.google.pubsub.v1.ProjectTopicName; -import com.google.pubsub.v1.PubsubMessage; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; -import java.util.stream.Collectors; - -@SuppressWarnings("checkstyle:AbbreviationAsWordInName") -class RiskAnalysisKAnonymity { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String datasetId = "your-bigquery-dataset-id"; - String tableId = "your-bigquery-table-id"; - String topicId = "pub-sub-topic"; - String subscriptionId = "pub-sub-subscription"; - calculateKAnonymity(projectId, datasetId, tableId, topicId, subscriptionId); - } - - public static void calculateKAnonymity( - String projectId, String datasetId, String tableId, String topicId, String subscriptionId) - throws ExecutionException, InterruptedException, IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) { - - // Specify the BigQuery table to analyze - BigQueryTable bigQueryTable = - BigQueryTable.newBuilder() - .setProjectId(projectId) - .setDatasetId(datasetId) - .setTableId(tableId) - .build(); - - // These values represent the column names of quasi-identifiers to analyze - List quasiIds = Arrays.asList("Age", "Mystery"); - - // Configure the privacy metric for the job - List quasiIdFields = - quasiIds.stream() - .map(columnName -> FieldId.newBuilder().setName(columnName).build()) - .collect(Collectors.toList()); - KAnonymityConfig kanonymityConfig = - KAnonymityConfig.newBuilder().addAllQuasiIds(quasiIdFields).build(); - PrivacyMetric privacyMetric = - PrivacyMetric.newBuilder().setKAnonymityConfig(kanonymityConfig).build(); - - // Create action to publish job status notifications over Google Cloud Pub/Sub - ProjectTopicName topicName = ProjectTopicName.of(projectId, topicId); - PublishToPubSub publishToPubSub = - PublishToPubSub.newBuilder().setTopic(topicName.toString()).build(); - Action action = Action.newBuilder().setPubSub(publishToPubSub).build(); - - // Configure the risk analysis job to perform - RiskAnalysisJobConfig riskAnalysisJobConfig = - RiskAnalysisJobConfig.newBuilder() - .setSourceTable(bigQueryTable) - .setPrivacyMetric(privacyMetric) - .addActions(action) - .build(); - - // Build the request to be sent by the client - CreateDlpJobRequest createDlpJobRequest = - CreateDlpJobRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setRiskJob(riskAnalysisJobConfig) - .build(); - - // Send the request to the API using the client - DlpJob dlpJob = dlpServiceClient.createDlpJob(createDlpJobRequest); - - // Set up a Pub/Sub subscriber to listen on the job completion status - final SettableApiFuture done = SettableApiFuture.create(); - - ProjectSubscriptionName subscriptionName = - ProjectSubscriptionName.of(projectId, subscriptionId); - - MessageReceiver messageHandler = - (PubsubMessage pubsubMessage, AckReplyConsumer ackReplyConsumer) -> { - handleMessage(dlpJob, done, pubsubMessage, ackReplyConsumer); - }; - Subscriber subscriber = Subscriber.newBuilder(subscriptionName, messageHandler).build(); - subscriber.startAsync(); - - // Wait for job completion semi-synchronously - // For long jobs, consider using a truly asynchronous execution model such as Cloud Functions - try { - done.get(15, TimeUnit.MINUTES); - } catch (TimeoutException e) { - System.out.println("Job was not completed after 15 minutes."); - return; - } finally { - subscriber.stopAsync(); - subscriber.awaitTerminated(); - } - - // Build a request to get the completed job - GetDlpJobRequest getDlpJobRequest = - GetDlpJobRequest.newBuilder().setName(dlpJob.getName()).build(); - - // Retrieve completed job status - DlpJob completedJob = dlpServiceClient.getDlpJob(getDlpJobRequest); - System.out.println("Job status: " + completedJob.getState()); - - // Get the result and parse through and process the information - KAnonymityResult kanonymityResult = completedJob.getRiskDetails().getKAnonymityResult(); - List histogramBucketList = - kanonymityResult.getEquivalenceClassHistogramBucketsList(); - for (KAnonymityHistogramBucket result : histogramBucketList) { - System.out.printf( - "Bucket size range: [%d, %d]\n", - result.getEquivalenceClassSizeLowerBound(), result.getEquivalenceClassSizeUpperBound()); - - for (KAnonymityEquivalenceClass bucket : result.getBucketValuesList()) { - List quasiIdValues = - bucket.getQuasiIdsValuesList().stream() - .map(Value::toString) - .collect(Collectors.toList()); - - System.out.println("\tQuasi-ID values: " + String.join(", ", quasiIdValues)); - System.out.println("\tClass size: " + bucket.getEquivalenceClassSize()); - } - } - } - } - - // handleMessage injects the job and settableFuture into the message reciever interface - private static void handleMessage( - DlpJob job, - SettableApiFuture done, - PubsubMessage pubsubMessage, - AckReplyConsumer ackReplyConsumer) { - String messageAttribute = pubsubMessage.getAttributesMap().get("DlpJobName"); - if (job.getName().equals(messageAttribute)) { - done.set(true); - ackReplyConsumer.ack(); - } else { - ackReplyConsumer.nack(); - } - } -} -// [END dlp_k_anonymity] diff --git a/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisKMap.java b/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisKMap.java deleted file mode 100644 index 5bafb93b..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisKMap.java +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_k_map] - -import com.google.api.core.SettableApiFuture; -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.cloud.pubsub.v1.AckReplyConsumer; -import com.google.cloud.pubsub.v1.MessageReceiver; -import com.google.cloud.pubsub.v1.Subscriber; -import com.google.privacy.dlp.v2.Action; -import com.google.privacy.dlp.v2.Action.PublishToPubSub; -import com.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult; -import com.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationHistogramBucket; -import com.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationQuasiIdValues; -import com.google.privacy.dlp.v2.BigQueryTable; -import com.google.privacy.dlp.v2.CreateDlpJobRequest; -import com.google.privacy.dlp.v2.DlpJob; -import com.google.privacy.dlp.v2.FieldId; -import com.google.privacy.dlp.v2.GetDlpJobRequest; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrivacyMetric; -import com.google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig; -import com.google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.TaggedField; -import com.google.privacy.dlp.v2.RiskAnalysisJobConfig; -import com.google.pubsub.v1.ProjectSubscriptionName; -import com.google.pubsub.v1.ProjectTopicName; -import com.google.pubsub.v1.PubsubMessage; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; -import java.util.stream.Collectors; - -@SuppressWarnings("checkstyle:AbbreviationAsWordInName") -class RiskAnalysisKMap { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String datasetId = "your-bigquery-dataset-id"; - String tableId = "your-bigquery-table-id"; - String topicId = "pub-sub-topic"; - String subscriptionId = "pub-sub-subscription"; - calculateKMap(projectId, datasetId, tableId, topicId, subscriptionId); - } - - public static void calculateKMap( - String projectId, String datasetId, String tableId, String topicId, String subscriptionId) - throws ExecutionException, InterruptedException, IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) { - // Specify the BigQuery table to analyze - BigQueryTable bigQueryTable = - BigQueryTable.newBuilder() - .setProjectId(projectId) - .setDatasetId(datasetId) - .setTableId(tableId) - .build(); - - // These values represent the column names of quasi-identifiers to analyze - List quasiIds = Arrays.asList("Age", "Gender"); - - // These values represent the info types corresponding to the quasi-identifiers above - List infoTypeNames = Arrays.asList("AGE", "GENDER"); - - // Tag each of the quasiId column names with its corresponding infoType - List infoTypes = - infoTypeNames.stream() - .map(it -> InfoType.newBuilder().setName(it).build()) - .collect(Collectors.toList()); - - if (quasiIds.size() != infoTypes.size()) { - throw new IllegalArgumentException("The numbers of quasi-IDs and infoTypes must be equal!"); - } - - List taggedFields = new ArrayList(); - for (int i = 0; i < quasiIds.size(); i++) { - TaggedField taggedField = - TaggedField.newBuilder() - .setField(FieldId.newBuilder().setName(quasiIds.get(i)).build()) - .setInfoType(infoTypes.get(i)) - .build(); - taggedFields.add(taggedField); - } - - // The k-map distribution region can be specified by any ISO-3166-1 region code. - String regionCode = "US"; - - // Configure the privacy metric for the job - KMapEstimationConfig kmapConfig = - KMapEstimationConfig.newBuilder() - .addAllQuasiIds(taggedFields) - .setRegionCode(regionCode) - .build(); - PrivacyMetric privacyMetric = - PrivacyMetric.newBuilder().setKMapEstimationConfig(kmapConfig).build(); - - // Create action to publish job status notifications over Google Cloud Pub/Sub - ProjectTopicName topicName = ProjectTopicName.of(projectId, topicId); - PublishToPubSub publishToPubSub = - PublishToPubSub.newBuilder().setTopic(topicName.toString()).build(); - Action action = Action.newBuilder().setPubSub(publishToPubSub).build(); - - // Configure the risk analysis job to perform - RiskAnalysisJobConfig riskAnalysisJobConfig = - RiskAnalysisJobConfig.newBuilder() - .setSourceTable(bigQueryTable) - .setPrivacyMetric(privacyMetric) - .addActions(action) - .build(); - - // Build the request to be sent by the client - CreateDlpJobRequest createDlpJobRequest = - CreateDlpJobRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setRiskJob(riskAnalysisJobConfig) - .build(); - - // Send the request to the API using the client - DlpJob dlpJob = dlpServiceClient.createDlpJob(createDlpJobRequest); - - // Set up a Pub/Sub subscriber to listen on the job completion status - final SettableApiFuture done = SettableApiFuture.create(); - - ProjectSubscriptionName subscriptionName = - ProjectSubscriptionName.of(projectId, subscriptionId); - - MessageReceiver messageHandler = - (PubsubMessage pubsubMessage, AckReplyConsumer ackReplyConsumer) -> { - handleMessage(dlpJob, done, pubsubMessage, ackReplyConsumer); - }; - Subscriber subscriber = Subscriber.newBuilder(subscriptionName, messageHandler).build(); - subscriber.startAsync(); - - // Wait for job completion semi-synchronously - // For long jobs, consider using a truly asynchronous execution model such as Cloud Functions - try { - done.get(15, TimeUnit.MINUTES); - } catch (TimeoutException e) { - System.out.println("Job was not completed after 15 minutes."); - return; - } finally { - subscriber.stopAsync(); - subscriber.awaitTerminated(); - } - - // Build a request to get the completed job - GetDlpJobRequest getDlpJobRequest = - GetDlpJobRequest.newBuilder().setName(dlpJob.getName()).build(); - - // Retrieve completed job status - DlpJob completedJob = dlpServiceClient.getDlpJob(getDlpJobRequest); - System.out.println("Job status: " + completedJob.getState()); - - // Get the result and parse through and process the information - KMapEstimationResult kmapResult = completedJob.getRiskDetails().getKMapEstimationResult(); - - for (KMapEstimationHistogramBucket result : kmapResult.getKMapEstimationHistogramList()) { - System.out.printf( - "\tAnonymity range: [%d, %d]\n", result.getMinAnonymity(), result.getMaxAnonymity()); - System.out.printf("\tSize: %d\n", result.getBucketSize()); - - for (KMapEstimationQuasiIdValues valueBucket : result.getBucketValuesList()) { - List quasiIdValues = - valueBucket.getQuasiIdsValuesList().stream() - .map( - value -> { - String s = value.toString(); - return s.substring(s.indexOf(':') + 1).trim(); - }) - .collect(Collectors.toList()); - - System.out.printf("\tValues: {%s}\n", String.join(", ", quasiIdValues)); - System.out.printf( - "\tEstimated k-map anonymity: %d\n", valueBucket.getEstimatedAnonymity()); - } - } - } - } - - // handleMessage injects the job and settableFuture into the message reciever interface - private static void handleMessage( - DlpJob job, - SettableApiFuture done, - PubsubMessage pubsubMessage, - AckReplyConsumer ackReplyConsumer) { - String messageAttribute = pubsubMessage.getAttributesMap().get("DlpJobName"); - if (job.getName().equals(messageAttribute)) { - done.set(true); - ackReplyConsumer.ack(); - } else { - ackReplyConsumer.nack(); - } - } -} -// [END dlp_k_map] diff --git a/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisLDiversity.java b/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisLDiversity.java deleted file mode 100644 index 48fdbf70..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisLDiversity.java +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_l_diversity] - -import com.google.api.core.SettableApiFuture; -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.cloud.dlp.v2.DlpServiceSettings; -import com.google.cloud.pubsub.v1.AckReplyConsumer; -import com.google.cloud.pubsub.v1.MessageReceiver; -import com.google.cloud.pubsub.v1.Subscriber; -import com.google.privacy.dlp.v2.Action; -import com.google.privacy.dlp.v2.Action.PublishToPubSub; -import com.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult; -import com.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityEquivalenceClass; -import com.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityHistogramBucket; -import com.google.privacy.dlp.v2.BigQueryTable; -import com.google.privacy.dlp.v2.CreateDlpJobRequest; -import com.google.privacy.dlp.v2.DlpJob; -import com.google.privacy.dlp.v2.FieldId; -import com.google.privacy.dlp.v2.GetDlpJobRequest; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrivacyMetric; -import com.google.privacy.dlp.v2.PrivacyMetric.LDiversityConfig; -import com.google.privacy.dlp.v2.RiskAnalysisJobConfig; -import com.google.privacy.dlp.v2.Value; -import com.google.privacy.dlp.v2.ValueFrequency; -import com.google.pubsub.v1.ProjectSubscriptionName; -import com.google.pubsub.v1.ProjectTopicName; -import com.google.pubsub.v1.PubsubMessage; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; -import java.util.stream.Collectors; -import org.threeten.bp.Duration; - -@SuppressWarnings("checkstyle:AbbreviationAsWordInName") -class RiskAnalysisLDiversity { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String datasetId = "your-bigquery-dataset-id"; - String tableId = "your-bigquery-table-id"; - String topicId = "pub-sub-topic"; - String subscriptionId = "pub-sub-subscription"; - calculateLDiversity(projectId, datasetId, tableId, topicId, subscriptionId); - } - - public static void calculateLDiversity( - String projectId, String datasetId, String tableId, String topicId, String subscriptionId) - throws ExecutionException, InterruptedException, IOException { - - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - DlpServiceSettings.Builder dlpServiceSettingsBuilder = DlpServiceSettings.newBuilder(); - dlpServiceSettingsBuilder - .getDlpJobSettings() - .setRetrySettings( - dlpServiceSettingsBuilder - .getDlpJobSettings() - .getRetrySettings() - .toBuilder() - .setTotalTimeout(Duration.ofSeconds(600)) - .build()); - try (DlpServiceClient dlpServiceClient = - DlpServiceClient.create(dlpServiceSettingsBuilder.build())) { - // Specify the BigQuery table to analyze - BigQueryTable bigQueryTable = - BigQueryTable.newBuilder() - .setProjectId(projectId) - .setDatasetId(datasetId) - .setTableId(tableId) - .build(); - - // These values represent the column names of quasi-identifiers to analyze - List quasiIds = Arrays.asList("Age", "Mystery"); - - // This value represents the column name to compare the quasi-identifiers against - String sensitiveAttribute = "Name"; - - // Configure the privacy metric for the job - FieldId sensitiveAttributeField = FieldId.newBuilder().setName(sensitiveAttribute).build(); - List quasiIdFields = - quasiIds.stream() - .map(columnName -> FieldId.newBuilder().setName(columnName).build()) - .collect(Collectors.toList()); - LDiversityConfig ldiversityConfig = - LDiversityConfig.newBuilder() - .addAllQuasiIds(quasiIdFields) - .setSensitiveAttribute(sensitiveAttributeField) - .build(); - PrivacyMetric privacyMetric = - PrivacyMetric.newBuilder().setLDiversityConfig(ldiversityConfig).build(); - - // Create action to publish job status notifications over Google Cloud Pub/ - ProjectTopicName topicName = ProjectTopicName.of(projectId, topicId); - PublishToPubSub publishToPubSub = - PublishToPubSub.newBuilder().setTopic(topicName.toString()).build(); - Action action = Action.newBuilder().setPubSub(publishToPubSub).build(); - - // Configure the risk analysis job to perform - RiskAnalysisJobConfig riskAnalysisJobConfig = - RiskAnalysisJobConfig.newBuilder() - .setSourceTable(bigQueryTable) - .setPrivacyMetric(privacyMetric) - .addActions(action) - .build(); - - // Build the request to be sent by the client - CreateDlpJobRequest createDlpJobRequest = - CreateDlpJobRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setRiskJob(riskAnalysisJobConfig) - .build(); - - // Send the request to the API using the client - DlpJob dlpJob = dlpServiceClient.createDlpJob(createDlpJobRequest); - - // Set up a Pub/Sub subscriber to listen on the job completion status - final SettableApiFuture done = SettableApiFuture.create(); - - ProjectSubscriptionName subscriptionName = - ProjectSubscriptionName.of(projectId, subscriptionId); - - MessageReceiver messageHandler = - (PubsubMessage pubsubMessage, AckReplyConsumer ackReplyConsumer) -> { - handleMessage(dlpJob, done, pubsubMessage, ackReplyConsumer); - }; - Subscriber subscriber = Subscriber.newBuilder(subscriptionName, messageHandler).build(); - subscriber.startAsync(); - - // Wait for job completion semi-synchronously - // For long jobs, consider using a truly asynchronous execution model such as Cloud Functions - try { - done.get(15, TimeUnit.MINUTES); - } catch (TimeoutException e) { - System.out.println("Job was not completed after 15 minutes."); - return; - } finally { - subscriber.stopAsync(); - subscriber.awaitTerminated(); - } - - // Build a request to get the completed job - GetDlpJobRequest getDlpJobRequest = - GetDlpJobRequest.newBuilder().setName(dlpJob.getName()).build(); - - // Retrieve completed job status - DlpJob completedJob = dlpServiceClient.getDlpJob(getDlpJobRequest); - System.out.println("Job status: " + completedJob.getState()); - - // Get the result and parse through and process the information - LDiversityResult ldiversityResult = completedJob.getRiskDetails().getLDiversityResult(); - List histogramBucketList = - ldiversityResult.getSensitiveValueFrequencyHistogramBucketsList(); - for (LDiversityHistogramBucket result : histogramBucketList) { - for (LDiversityEquivalenceClass bucket : result.getBucketValuesList()) { - List quasiIdValues = - bucket.getQuasiIdsValuesList().stream() - .map(Value::toString) - .collect(Collectors.toList()); - - System.out.println("\tQuasi-ID values: " + String.join(", ", quasiIdValues)); - System.out.println("\tClass size: " + bucket.getEquivalenceClassSize()); - - for (ValueFrequency valueFrequency : bucket.getTopSensitiveValuesList()) { - System.out.printf( - "\t\tSensitive value %s occurs %d time(s).\n", - valueFrequency.getValue().toString(), valueFrequency.getCount()); - } - } - } - } - } - - // handleMessage injects the job and settableFuture into the message reciever interface - private static void handleMessage( - DlpJob job, - SettableApiFuture done, - PubsubMessage pubsubMessage, - AckReplyConsumer ackReplyConsumer) { - String messageAttribute = pubsubMessage.getAttributesMap().get("DlpJobName"); - if (job.getName().equals(messageAttribute)) { - done.set(true); - ackReplyConsumer.ack(); - } else { - ackReplyConsumer.nack(); - } - } -} -// [END dlp_l_diversity] diff --git a/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisNumericalStats.java b/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisNumericalStats.java deleted file mode 100644 index dde9467f..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/RiskAnalysisNumericalStats.java +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_numerical_stats] - -import com.google.api.core.SettableApiFuture; -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.cloud.pubsub.v1.AckReplyConsumer; -import com.google.cloud.pubsub.v1.MessageReceiver; -import com.google.cloud.pubsub.v1.Subscriber; -import com.google.privacy.dlp.v2.Action; -import com.google.privacy.dlp.v2.Action.PublishToPubSub; -import com.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.NumericalStatsResult; -import com.google.privacy.dlp.v2.BigQueryTable; -import com.google.privacy.dlp.v2.CreateDlpJobRequest; -import com.google.privacy.dlp.v2.DlpJob; -import com.google.privacy.dlp.v2.FieldId; -import com.google.privacy.dlp.v2.GetDlpJobRequest; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.PrivacyMetric; -import com.google.privacy.dlp.v2.PrivacyMetric.NumericalStatsConfig; -import com.google.privacy.dlp.v2.RiskAnalysisJobConfig; -import com.google.privacy.dlp.v2.Value; -import com.google.pubsub.v1.ProjectSubscriptionName; -import com.google.pubsub.v1.ProjectTopicName; -import com.google.pubsub.v1.PubsubMessage; -import java.io.IOException; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -class RiskAnalysisNumericalStats { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String datasetId = "your-bigquery-dataset-id"; - String tableId = "your-bigquery-table-id"; - String topicId = "pub-sub-topic"; - String subscriptionId = "pub-sub-subscription"; - numericalStatsAnalysis(projectId, datasetId, tableId, topicId, subscriptionId); - } - - public static void numericalStatsAnalysis( - String projectId, String datasetId, String tableId, String topicId, String subscriptionId) - throws ExecutionException, InterruptedException, IOException { - - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) { - - // Specify the BigQuery table to analyze - BigQueryTable bigQueryTable = - BigQueryTable.newBuilder() - .setTableId(tableId) - .setDatasetId(datasetId) - .setProjectId(projectId) - .build(); - - // This represents the name of the column to analyze, which must contain numerical data - String columnName = "Age"; - - // Configure the privacy metric for the job - FieldId fieldId = FieldId.newBuilder().setName(columnName).build(); - NumericalStatsConfig numericalStatsConfig = - NumericalStatsConfig.newBuilder().setField(fieldId).build(); - PrivacyMetric privacyMetric = - PrivacyMetric.newBuilder().setNumericalStatsConfig(numericalStatsConfig).build(); - - // Create action to publish job status notifications over Google Cloud Pub/Sub - ProjectTopicName topicName = ProjectTopicName.of(projectId, topicId); - PublishToPubSub publishToPubSub = - PublishToPubSub.newBuilder().setTopic(topicName.toString()).build(); - Action action = Action.newBuilder().setPubSub(publishToPubSub).build(); - - // Configure the risk analysis job to perform - RiskAnalysisJobConfig riskAnalysisJobConfig = - RiskAnalysisJobConfig.newBuilder() - .setSourceTable(bigQueryTable) - .setPrivacyMetric(privacyMetric) - .addActions(action) - .build(); - - CreateDlpJobRequest createDlpJobRequest = - CreateDlpJobRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setRiskJob(riskAnalysisJobConfig) - .build(); - - // Send the request to the API using the client - DlpJob dlpJob = dlpServiceClient.createDlpJob(createDlpJobRequest); - - // Set up a Pub/Sub subscriber to listen on the job completion status - final SettableApiFuture done = SettableApiFuture.create(); - - ProjectSubscriptionName subscriptionName = - ProjectSubscriptionName.of(projectId, subscriptionId); - - MessageReceiver messageHandler = - (PubsubMessage pubsubMessage, AckReplyConsumer ackReplyConsumer) -> { - handleMessage(dlpJob, done, pubsubMessage, ackReplyConsumer); - }; - Subscriber subscriber = Subscriber.newBuilder(subscriptionName, messageHandler).build(); - subscriber.startAsync(); - - // Wait for job completion semi-synchronously - // For long jobs, consider using a truly asynchronous execution model such as Cloud Functions - try { - done.get(15, TimeUnit.MINUTES); - } catch (TimeoutException e) { - System.out.println("Job was not completed after 15 minutes."); - return; - } finally { - subscriber.stopAsync(); - subscriber.awaitTerminated(); - } - - // Build a request to get the completed job - GetDlpJobRequest getDlpJobRequest = - GetDlpJobRequest.newBuilder().setName(dlpJob.getName()).build(); - - // Retrieve completed job status - DlpJob completedJob = dlpServiceClient.getDlpJob(getDlpJobRequest); - System.out.println("Job status: " + completedJob.getState()); - - // Get the result and parse through and process the information - NumericalStatsResult result = completedJob.getRiskDetails().getNumericalStatsResult(); - - System.out.printf( - "Value range : [%.3f, %.3f]\n", - result.getMinValue().getFloatValue(), result.getMaxValue().getFloatValue()); - - int percent = 1; - Double lastValue = null; - for (Value quantileValue : result.getQuantileValuesList()) { - Double currentValue = quantileValue.getFloatValue(); - if (lastValue == null || !lastValue.equals(currentValue)) { - System.out.printf("Value at %s %% quantile : %.3f", percent, currentValue); - } - lastValue = currentValue; - } - } - } - - // handleMessage injects the job and settableFuture into the message reciever interface - private static void handleMessage( - DlpJob job, - SettableApiFuture done, - PubsubMessage pubsubMessage, - AckReplyConsumer ackReplyConsumer) { - String messageAttribute = pubsubMessage.getAttributesMap().get("DlpJobName"); - if (job.getName().equals(messageAttribute)) { - done.set(true); - ackReplyConsumer.ack(); - } else { - ackReplyConsumer.nack(); - } - } -} -// [END dlp_numerical_stats] diff --git a/samples/snippets/src/main/java/dlp/snippets/TemplatesCreate.java b/samples/snippets/src/main/java/dlp/snippets/TemplatesCreate.java deleted file mode 100644 index fe8ef939..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/TemplatesCreate.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2020 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_create_inspect_template] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.CreateInspectTemplateRequest; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectTemplate; -import com.google.privacy.dlp.v2.LocationName; -import java.io.IOException; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -class TemplatesCreate { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - createInspectTemplate(projectId); - } - - // Creates a template to persist configuration information - public static void createInspectTemplate(String projectId) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) { - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - List infoTypes = - Stream.of("PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD_NUMBER") - .map(it -> InfoType.newBuilder().setName(it).build()) - .collect(Collectors.toList()); - - // Construct the inspection configuration for the template - InspectConfig inspectConfig = InspectConfig.newBuilder().addAllInfoTypes(infoTypes).build(); - - // Optionally set a display name and a description for the template - String displayName = "Inspection Config Template"; - String description = "Save configuration for future inspection jobs"; - - // Build the template - InspectTemplate inspectTemplate = - InspectTemplate.newBuilder() - .setInspectConfig(inspectConfig) - .setDisplayName(displayName) - .setDescription(description) - .build(); - - // Create the request to be sent by the client - CreateInspectTemplateRequest createInspectTemplateRequest = - CreateInspectTemplateRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setInspectTemplate(inspectTemplate) - .build(); - - // Send the request to the API and process the response - InspectTemplate response = - dlpServiceClient.createInspectTemplate(createInspectTemplateRequest); - System.out.printf("Template created: %s", response.getName()); - } - } -} -// [END dlp_create_inspect_template] diff --git a/samples/snippets/src/main/java/dlp/snippets/TemplatesDelete.java b/samples/snippets/src/main/java/dlp/snippets/TemplatesDelete.java deleted file mode 100644 index f22c362f..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/TemplatesDelete.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2020 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_delete_inspect_template] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.DeleteInspectTemplateRequest; -import java.io.IOException; - -class TemplatesDelete { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String templateId = "your-template-id"; - deleteInspectTemplate(projectId, templateId); - } - - // Delete an existing template - public static void deleteInspectTemplate(String projectId, String templateId) throws IOException { - // Construct the template name to be deleted - String templateName = String.format("projects/%s/inspectTemplates/%s", projectId, templateId); - - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) { - - // Create delete template request to be sent by the client - DeleteInspectTemplateRequest request = - DeleteInspectTemplateRequest.newBuilder().setName(templateName).build(); - - // Send the request with the client - dlpServiceClient.deleteInspectTemplate(request); - System.out.printf("Deleted template: %s\n", templateName); - } - } -} -// [END dlp_delete_inspect_template] diff --git a/samples/snippets/src/main/java/dlp/snippets/TemplatesList.java b/samples/snippets/src/main/java/dlp/snippets/TemplatesList.java deleted file mode 100644 index 729782f5..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/TemplatesList.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2020 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_list_inspect_templates] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.cloud.dlp.v2.DlpServiceClient.ListInspectTemplatesPagedResponse; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectTemplate; -import com.google.privacy.dlp.v2.ListInspectTemplatesRequest; -import com.google.privacy.dlp.v2.LocationName; -import java.io.IOException; - -class TemplatesList { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - listInspectTemplates(projectId); - } - - // Lists all templates associated with a given project - public static void listInspectTemplates(String projectId) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) { - - // Create the request to be sent by the client - ListInspectTemplatesRequest request = - ListInspectTemplatesRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setPageSize(1) - .build(); - - // Send the request - ListInspectTemplatesPagedResponse response = dlpServiceClient.listInspectTemplates(request); - - // Parse through and process the response - System.out.println("Templates found:"); - for (InspectTemplate template : response.getPage().getResponse().getInspectTemplatesList()) { - System.out.printf("Template name: %s\n", template.getName()); - if (template.getDisplayName() != null) { - System.out.printf("\tDisplay name: %s \n", template.getDisplayName()); - System.out.printf("\tCreate time: %s \n", template.getCreateTime()); - System.out.printf("\tUpdate time: %s \n", template.getUpdateTime()); - - // print inspection config - InspectConfig inspectConfig = template.getInspectConfig(); - for (InfoType infoType : inspectConfig.getInfoTypesList()) { - System.out.printf("\tInfoType: %s\n", infoType.getName()); - } - System.out.printf("\tMin likelihood: %s\n", inspectConfig.getMinLikelihood()); - System.out.printf("\tLimits: %s\n", inspectConfig.getLimits().getMaxFindingsPerRequest()); - } - } - } - } -} -// [END dlp_list_inspect_templates] diff --git a/samples/snippets/src/main/java/dlp/snippets/TriggersCreate.java b/samples/snippets/src/main/java/dlp/snippets/TriggersCreate.java deleted file mode 100644 index de0dd80d..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/TriggersCreate.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_create_trigger] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.CloudStorageOptions; -import com.google.privacy.dlp.v2.CreateJobTriggerRequest; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectJobConfig; -import com.google.privacy.dlp.v2.JobTrigger; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.Schedule; -import com.google.privacy.dlp.v2.StorageConfig; -import com.google.privacy.dlp.v2.StorageConfig.TimespanConfig; -import com.google.protobuf.Duration; -import java.io.IOException; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -public class TriggersCreate { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String gcsPath = "gs://" + "your-bucket-name" + "path/to/file.txt"; - createTrigger(projectId, gcsPath); - } - - public static void createTrigger(String projectId, String gcsPath) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) { - - // Set autoPopulateTimespan to true to scan only new content - boolean autoPopulateTimespan = true; - TimespanConfig timespanConfig = - TimespanConfig.newBuilder() - .setEnableAutoPopulationOfTimespanConfig(autoPopulateTimespan) - .build(); - - // Specify the GCS file to be inspected. - CloudStorageOptions cloudStorageOptions = - CloudStorageOptions.newBuilder() - .setFileSet(CloudStorageOptions.FileSet.newBuilder().setUrl(gcsPath)) - .build(); - StorageConfig storageConfig = - StorageConfig.newBuilder() - .setCloudStorageOptions(cloudStorageOptions) - .setTimespanConfig(timespanConfig) - .build(); - - // Specify the type of info the inspection will look for. - // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types - List infoTypes = - Stream.of("PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD_NUMBER") - .map(it -> InfoType.newBuilder().setName(it).build()) - .collect(Collectors.toList()); - - InspectConfig inspectConfig = InspectConfig.newBuilder().addAllInfoTypes(infoTypes).build(); - - // Configure the inspection job we want the service to perform. - InspectJobConfig inspectJobConfig = - InspectJobConfig.newBuilder() - .setInspectConfig(inspectConfig) - .setStorageConfig(storageConfig) - .build(); - - // Set scanPeriod to the number of days between scans (minimum: 1 day) - int scanPeriod = 1; - - // Optionally set a display name of max 100 chars and a description of max 250 chars - String displayName = "Daily Scan"; - String description = "A daily inspection for personally identifiable information."; - - // Schedule scan of GCS bucket every scanPeriod number of days (minimum = 1 day) - Duration duration = Duration.newBuilder().setSeconds(scanPeriod * 24 * 3600).build(); - Schedule schedule = Schedule.newBuilder().setRecurrencePeriodDuration(duration).build(); - JobTrigger.Trigger trigger = JobTrigger.Trigger.newBuilder().setSchedule(schedule).build(); - JobTrigger jobTrigger = - JobTrigger.newBuilder() - .setInspectJob(inspectJobConfig) - .setDisplayName(displayName) - .setDescription(description) - .setStatus(JobTrigger.Status.HEALTHY) - .addTriggers(trigger) - .build(); - - // Create scan request to be sent by client - CreateJobTriggerRequest createJobTriggerRequest = - CreateJobTriggerRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .setJobTrigger(jobTrigger) - .build(); - - // Send the scan request and process the response - JobTrigger createdJobTrigger = dlpServiceClient.createJobTrigger(createJobTriggerRequest); - - System.out.println("Created Trigger: " + createdJobTrigger.getName()); - System.out.println("Display Name: " + createdJobTrigger.getDisplayName()); - System.out.println("Description: " + createdJobTrigger.getDescription()); - } - } -} -// [END dlp_create_trigger] diff --git a/samples/snippets/src/main/java/dlp/snippets/TriggersDelete.java b/samples/snippets/src/main/java/dlp/snippets/TriggersDelete.java deleted file mode 100644 index 539f2537..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/TriggersDelete.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_delete_trigger] -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.DeleteJobTriggerRequest; -import com.google.privacy.dlp.v2.ProjectJobTriggerName; -import java.io.IOException; - -class TriggersDelete { - - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - String triggerId = "your-trigger-id"; - deleteTrigger(projectId, triggerId); - } - - public static void deleteTrigger(String projectId, String triggerId) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) { - - // Get the full trigger name from the given triggerId and ProjectId - ProjectJobTriggerName triggerName = ProjectJobTriggerName.of(projectId, triggerId); - - // Construct the trigger deletion request to be sent by the client - DeleteJobTriggerRequest deleteJobTriggerRequest = - DeleteJobTriggerRequest.newBuilder().setName(triggerName.toString()).build(); - - // Send the trigger deletion request - dlpServiceClient.deleteJobTrigger(deleteJobTriggerRequest); - System.out.println("Trigger deleted: " + triggerName.toString()); - } - } -} -// [END dlp_delete_trigger] diff --git a/samples/snippets/src/main/java/dlp/snippets/TriggersList.java b/samples/snippets/src/main/java/dlp/snippets/TriggersList.java deleted file mode 100644 index d5214639..00000000 --- a/samples/snippets/src/main/java/dlp/snippets/TriggersList.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -// [START dlp_list_triggers] - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.privacy.dlp.v2.JobTrigger; -import com.google.privacy.dlp.v2.ListJobTriggersRequest; -import com.google.privacy.dlp.v2.LocationName; -import java.io.IOException; - -class TriggersList { - public static void main(String[] args) throws Exception { - // TODO(developer): Replace these variables before running the sample. - String projectId = "your-project-id"; - listTriggers(projectId); - } - - public static void listTriggers(String projectId) throws IOException { - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) { - // Build the request to be sent by the client - ListJobTriggersRequest listJobTriggersRequest = - ListJobTriggersRequest.newBuilder() - .setParent(LocationName.of(projectId, "global").toString()) - .build(); - - // Use the client to send the API request. - DlpServiceClient.ListJobTriggersPagedResponse response = - dlpServiceClient.listJobTriggers(listJobTriggersRequest); - - // Parse the response and process the results - System.out.println("DLP triggers found:"); - for (JobTrigger trigger : response.getPage().getValues()) { - System.out.println("Trigger: " + trigger.getName()); - System.out.println("\tCreated: " + trigger.getCreateTime()); - System.out.println("\tUpdated: " + trigger.getUpdateTime()); - if (trigger.getDisplayName() != null) { - System.out.println("\tDisplay name: " + trigger.getDisplayName()); - } - if (trigger.getDescription() != null) { - System.out.println("\tDescription: " + trigger.getDescription()); - } - System.out.println("\tStatus: " + trigger.getStatus()); - System.out.println("\tError count: " + trigger.getErrorsCount()); - } - ; - } - } -} -// [END dlp_list_triggers] diff --git a/samples/snippets/src/test/java/dlp/snippets/DeIdentificationTests.java b/samples/snippets/src/test/java/dlp/snippets/DeIdentificationTests.java deleted file mode 100644 index e691444e..00000000 --- a/samples/snippets/src/test/java/dlp/snippets/DeIdentificationTests.java +++ /dev/null @@ -1,544 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -import static com.google.common.truth.Truth.assertThat; -import static com.google.common.truth.Truth.assertWithMessage; - -import com.google.common.collect.ImmutableList; -import com.google.privacy.dlp.v2.FieldId; -import com.google.privacy.dlp.v2.Table; -import com.google.privacy.dlp.v2.Table.Row; -import com.google.privacy.dlp.v2.Value; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class DeIdentificationTests extends TestBase { - - @Override - protected ImmutableList requiredEnvVars() { - return ImmutableList.of( - "GOOGLE_APPLICATION_CREDENTIALS", - "GOOGLE_CLOUD_PROJECT", - "DLP_DEID_WRAPPED_KEY", - "DLP_DEID_KEY_NAME"); - } - - @Test - public void testDeIdentifyWithMasking() throws IOException { - DeIdentifyWithMasking.deIdentifyWithMasking(PROJECT_ID, "My SSN is 372819127"); - - String output = bout.toString(); - assertThat(output).contains("Text after masking:"); - } - - @Test - public void testDeIdentifyWithFpe() throws IOException { - DeIdentifyWithFpe.deIdentifyWithFpe(PROJECT_ID, "My SSN is 372819127", kmsKeyName, wrappedKey); - - String output = bout.toString(); - assertThat(output).contains("Text after format-preserving encryption:"); - } - - @Test - public void testReIdentifyWithFpe() throws IOException { - ReIdentifyWithFpe.reIdentifyWithFpe( - PROJECT_ID, "My SSN is SSN_TOKEN(9):731997681", kmsKeyName, wrappedKey); - - String output = bout.toString(); - assertThat(output).contains("Text after re-identification:"); - } - - @Test - public void testDeIdentifyTextWithFpe() throws IOException { - DeIdentifyTextWithFpe.deIdentifyTextWithFpe( - PROJECT_ID, "My phone number is 4359916732", kmsKeyName, wrappedKey); - - String output = bout.toString(); - assertThat(output).contains("Text after format-preserving encryption: "); - } - - @Test - public void testReIdentifyTextWithFpe() throws IOException { - ReIdentifyTextWithFpe.reIdentifyTextWithFpe( - PROJECT_ID, "My phone number is PHONE_TOKEN(10):9617256398", kmsKeyName, wrappedKey); - - String output = bout.toString(); - assertThat(output).contains("Text after re-identification: "); - } - - @Test - public void testDeIdentifyTableWithFpe() throws IOException { - Table tableToDeIdentify = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("Employee ID").build()) - .addHeaders(FieldId.newBuilder().setName("Date").build()) - .addHeaders(FieldId.newBuilder().setName("Compensation").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("11111").build()) - .addValues(Value.newBuilder().setStringValue("2015").build()) - .addValues(Value.newBuilder().setStringValue("$10").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("11111").build()) - .addValues(Value.newBuilder().setStringValue("2016").build()) - .addValues(Value.newBuilder().setStringValue("$20").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("22222").build()) - .addValues(Value.newBuilder().setStringValue("2016").build()) - .addValues(Value.newBuilder().setStringValue("$15").build()) - .build()) - .build(); - - DeIdentifyTableWithFpe.deIdentifyTableWithFpe( - PROJECT_ID, tableToDeIdentify, kmsKeyName, wrappedKey); - - String output = bout.toString(); - assertThat(output).contains("Table after format-preserving encryption:"); - } - - @Test - public void testReIdentifyTableWithFpe() throws IOException { - Table tableToReIdentify = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("Employee ID").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("28777").build()) - .build()) - .build(); - - ReIdentifyTableWithFpe.reIdentifyTableWithFpe( - PROJECT_ID, tableToReIdentify, kmsKeyName, wrappedKey); - - String output = bout.toString(); - assertThat(output).contains("Table after re-identification:"); - } - - @Test - public void testDeIdentifyTableBucketing() throws IOException { - // Transform a column based on the value of another column - Table tableToDeIdentify = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("AGE").build()) - .addHeaders(FieldId.newBuilder().setName("PATIENT").build()) - .addHeaders(FieldId.newBuilder().setName("HAPPINESS SCORE").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("101").build()) - .addValues(Value.newBuilder().setStringValue("Charles Dickens").build()) - .addValues(Value.newBuilder().setStringValue("95").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("22").build()) - .addValues(Value.newBuilder().setStringValue("Jane Austen").build()) - .addValues(Value.newBuilder().setStringValue("21").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("55").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain").build()) - .addValues(Value.newBuilder().setStringValue("75").build()) - .build()) - .build(); - Table expectedTable = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("AGE").build()) - .addHeaders(FieldId.newBuilder().setName("PATIENT").build()) - .addHeaders(FieldId.newBuilder().setName("HAPPINESS SCORE").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("101").build()) - .addValues(Value.newBuilder().setStringValue("Charles Dickens").build()) - .addValues(Value.newBuilder().setStringValue("90:100").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("22").build()) - .addValues(Value.newBuilder().setStringValue("Jane Austen").build()) - .addValues(Value.newBuilder().setStringValue("20:30").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("55").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain").build()) - .addValues(Value.newBuilder().setStringValue("70:80").build()) - .build()) - .build(); - - Table table = DeIdentifyTableBucketing.deIdentifyTableBucketing(PROJECT_ID, tableToDeIdentify); - - String output = bout.toString(); - assertThat(output).contains("Table after de-identification:"); - assertThat(table).isEqualTo(expectedTable); - } - - @Test - public void testDeIdentifyTableConditionMasking() throws IOException { - // Transform a column based on the value of another column - Table tableToDeIdentify = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("AGE").build()) - .addHeaders(FieldId.newBuilder().setName("PATIENT").build()) - .addHeaders(FieldId.newBuilder().setName("HAPPINESS SCORE").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("101").build()) - .addValues(Value.newBuilder().setStringValue("Charles Dickens").build()) - .addValues(Value.newBuilder().setStringValue("95").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("22").build()) - .addValues(Value.newBuilder().setStringValue("Jane Austen").build()) - .addValues(Value.newBuilder().setStringValue("21").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("55").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain").build()) - .addValues(Value.newBuilder().setStringValue("75").build()) - .build()) - .build(); - Table expectedTable = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("AGE").build()) - .addHeaders(FieldId.newBuilder().setName("PATIENT").build()) - .addHeaders(FieldId.newBuilder().setName("HAPPINESS SCORE").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("101").build()) - .addValues(Value.newBuilder().setStringValue("Charles Dickens").build()) - .addValues(Value.newBuilder().setStringValue("**").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("22").build()) - .addValues(Value.newBuilder().setStringValue("Jane Austen").build()) - .addValues(Value.newBuilder().setStringValue("21").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("55").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain").build()) - .addValues(Value.newBuilder().setStringValue("75").build()) - .build()) - .build(); - - Table table = - DeIdentifyTableConditionMasking.deIdentifyTableConditionMasking( - PROJECT_ID, tableToDeIdentify); - - String output = bout.toString(); - assertThat(output).contains("Table after de-identification:"); - assertThat(table).isEqualTo(expectedTable); - } - - @Test - public void testDeIdentifyTableInfoTypes() throws IOException { - // Transform findings found in column - Table tableToDeIdentify = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("AGE").build()) - .addHeaders(FieldId.newBuilder().setName("PATIENT").build()) - .addHeaders(FieldId.newBuilder().setName("HAPPINESS SCORE").build()) - .addHeaders(FieldId.newBuilder().setName("FACTOID").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("101").build()) - .addValues(Value.newBuilder().setStringValue("Charles Dickens").build()) - .addValues(Value.newBuilder().setStringValue("95").build()) - .addValues( - Value.newBuilder() - .setStringValue( - "Charles Dickens name was a curse invented by Shakespeare.") - .build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("22").build()) - .addValues(Value.newBuilder().setStringValue("Jane Austen").build()) - .addValues(Value.newBuilder().setStringValue("21").build()) - .addValues( - Value.newBuilder() - .setStringValue("There are 14 kisses in Jane Austen's novels.") - .build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("55").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain").build()) - .addValues(Value.newBuilder().setStringValue("75").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain loved cats.").build()) - .build()) - .build(); - Table expectedTable = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("AGE").build()) - .addHeaders(FieldId.newBuilder().setName("PATIENT").build()) - .addHeaders(FieldId.newBuilder().setName("HAPPINESS SCORE").build()) - .addHeaders(FieldId.newBuilder().setName("FACTOID").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("101").build()) - .addValues(Value.newBuilder().setStringValue("[PERSON_NAME]").build()) - .addValues(Value.newBuilder().setStringValue("95").build()) - .addValues( - Value.newBuilder() - .setStringValue( - "[PERSON_NAME] name was a curse invented by [PERSON_NAME].") - .build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("22").build()) - .addValues(Value.newBuilder().setStringValue("[PERSON_NAME]").build()) - .addValues(Value.newBuilder().setStringValue("21").build()) - .addValues( - Value.newBuilder() - .setStringValue("There are 14 kisses in [PERSON_NAME] novels.") - .build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("55").build()) - .addValues(Value.newBuilder().setStringValue("[PERSON_NAME]").build()) - .addValues(Value.newBuilder().setStringValue("75").build()) - .addValues( - Value.newBuilder().setStringValue("[PERSON_NAME] loved cats.").build()) - .build()) - .build(); - - Table table = DeIdentifyTableInfoTypes.deIdentifyTableInfoTypes(PROJECT_ID, tableToDeIdentify); - - String output = bout.toString(); - assertThat(output).contains("Table after de-identification:"); - assertThat(table).isEqualTo(expectedTable); - } - - @Test - public void testDeIdentifyTableRowSuppress() throws IOException { - // Suppress a row based on the content of a column - Table tableToDeIdentify = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("AGE").build()) - .addHeaders(FieldId.newBuilder().setName("PATIENT").build()) - .addHeaders(FieldId.newBuilder().setName("HAPPINESS SCORE").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("101").build()) - .addValues(Value.newBuilder().setStringValue("Charles Dickens").build()) - .addValues(Value.newBuilder().setStringValue("95").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("22").build()) - .addValues(Value.newBuilder().setStringValue("Jane Austen").build()) - .addValues(Value.newBuilder().setStringValue("21").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("55").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain").build()) - .addValues(Value.newBuilder().setStringValue("75").build()) - .build()) - .build(); - Table expectedTable = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("AGE").build()) - .addHeaders(FieldId.newBuilder().setName("PATIENT").build()) - .addHeaders(FieldId.newBuilder().setName("HAPPINESS SCORE").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("22").build()) - .addValues(Value.newBuilder().setStringValue("Jane Austen").build()) - .addValues(Value.newBuilder().setStringValue("21").build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("55").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain").build()) - .addValues(Value.newBuilder().setStringValue("75").build()) - .build()) - .build(); - - Table table = - DeIdentifyTableRowSuppress.deIdentifyTableRowSuppress(PROJECT_ID, tableToDeIdentify); - - String output = bout.toString(); - assertThat(output).contains("Table after de-identification:"); - assertThat(table).isEqualTo(expectedTable); - } - - @Test - public void testDeIdentifyTableConditionsInfoTypes() throws IOException { - // Transform findings only when specific conditions are met on another field - Table tableToDeIdentify = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("AGE").build()) - .addHeaders(FieldId.newBuilder().setName("PATIENT").build()) - .addHeaders(FieldId.newBuilder().setName("HAPPINESS SCORE").build()) - .addHeaders(FieldId.newBuilder().setName("FACTOID").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("101").build()) - .addValues(Value.newBuilder().setStringValue("Charles Dickens").build()) - .addValues(Value.newBuilder().setStringValue("95").build()) - .addValues( - Value.newBuilder() - .setStringValue( - "Charles Dickens name was a curse invented by Shakespeare.") - .build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("22").build()) - .addValues(Value.newBuilder().setStringValue("Jane Austen").build()) - .addValues(Value.newBuilder().setStringValue("21").build()) - .addValues( - Value.newBuilder() - .setStringValue("There are 14 kisses in Jane Austen's novels.") - .build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("55").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain").build()) - .addValues(Value.newBuilder().setStringValue("75").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain loved cats.").build()) - .build()) - .build(); - Table expectedTable = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("AGE").build()) - .addHeaders(FieldId.newBuilder().setName("PATIENT").build()) - .addHeaders(FieldId.newBuilder().setName("HAPPINESS SCORE").build()) - .addHeaders(FieldId.newBuilder().setName("FACTOID").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("101").build()) - .addValues(Value.newBuilder().setStringValue("[PERSON_NAME]").build()) - .addValues(Value.newBuilder().setStringValue("95").build()) - .addValues( - Value.newBuilder() - .setStringValue( - "[PERSON_NAME] name was a curse invented by [PERSON_NAME].") - .build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("22").build()) - .addValues(Value.newBuilder().setStringValue("Jane Austen").build()) - .addValues(Value.newBuilder().setStringValue("21").build()) - .addValues( - Value.newBuilder() - .setStringValue("There are 14 kisses in Jane Austen's novels.") - .build()) - .build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("55").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain").build()) - .addValues(Value.newBuilder().setStringValue("75").build()) - .addValues(Value.newBuilder().setStringValue("Mark Twain loved cats.").build()) - .build()) - .build(); - - Table table = - DeIdentifyTableConditionInfoTypes.deIdentifyTableConditionInfoTypes( - PROJECT_ID, tableToDeIdentify); - - String output = bout.toString(); - assertThat(output).contains("Table after de-identification:"); - assertThat(table).isEqualTo(expectedTable); - } - - @Test - public void testDeIdentifyWithDateShift() throws IOException { - Path inputFile = Paths.get("src/test/resources/dates.csv"); - assertWithMessage("Input file must exist").that(inputFile.toFile().exists()).isTrue(); - Path outputFile = Paths.get("src/test/resources/results.csv"); - assertWithMessage("Output file must be writeable").that(inputFile.toFile().canWrite()).isTrue(); - DeIdentifyWithDateShift.deIdentifyWithDateShift(PROJECT_ID, inputFile, outputFile); - - String output = bout.toString(); - assertThat(output).contains("Content written to file: "); - - // Clean up test output - Files.delete(outputFile); - } - - @Test - public void testDeIdentifyWithRedaction() throws IOException { - DeIdentifyWithRedaction.deIdentifyWithRedaction( - PROJECT_ID, "My name is Alicia Abernathy, and my email address is aabernathy@example.com."); - - String output = bout.toString(); - assertThat(output) - .contains( - "Text after redaction: " + "My name is Alicia Abernathy, and my email address is ."); - } - - @Test - public void testDeIdentifyWithReplacement() throws IOException { - DeIdentifyWithReplacement.deIdentifyWithReplacement( - PROJECT_ID, "My name is Alicia Abernathy, and my email address is aabernathy@example.com."); - - String output = bout.toString(); - assertThat(output) - .contains( - "Text after redaction: " - + "My name is Alicia Abernathy, and my email address is [email-address]."); - } - - @Test - public void testDeIdentifyWithInfoType() throws IOException { - DeIdentifyWithInfoType.deIdentifyWithInfoType(PROJECT_ID, "My email is test@example.com"); - - String output = bout.toString(); - assertThat(output).contains("Text after redaction: " + "My email is [EMAIL_ADDRESS]"); - } - - @Test - public void testDeIdentifyWithSimpleWordList() throws IOException { - DeIdentifyWithSimpleWordList.deidentifyWithSimpleWordList( - PROJECT_ID, "Patient was seen in RM-YELLOW then transferred to rm green."); - - String output = bout.toString(); - assertThat(output).contains("Text after replace with infotype config: "); - } - - @Test - public void testDeIdentifyWithExceptionList() throws IOException { - DeIdentifyWithExceptionList.deIdentifyWithExceptionList( - PROJECT_ID, "jack@example.org accessed customer record of user5@example.com"); - - String output = bout.toString(); - assertThat(output).contains("Text after replace with infotype config: "); - } -} diff --git a/samples/snippets/src/test/java/dlp/snippets/InfoTypesTests.java b/samples/snippets/src/test/java/dlp/snippets/InfoTypesTests.java deleted file mode 100644 index 39792218..00000000 --- a/samples/snippets/src/test/java/dlp/snippets/InfoTypesTests.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2020 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -import static com.google.common.truth.Truth.assertThat; - -import com.google.common.collect.ImmutableList; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class InfoTypesTests extends TestBase { - - @Override - protected ImmutableList requiredEnvVars() { - return ImmutableList.of("GOOGLE_APPLICATION_CREDENTIALS"); - } - - @Test - public void testListInfoTypes() throws Exception { - InfoTypesList.listInfoTypes(); - String output = bout.toString(); - assertThat(output).contains("Name"); - assertThat(output).contains("Display name"); - } -} diff --git a/samples/snippets/src/test/java/dlp/snippets/InspectTests.java b/samples/snippets/src/test/java/dlp/snippets/InspectTests.java deleted file mode 100644 index 65ad56e9..00000000 --- a/samples/snippets/src/test/java/dlp/snippets/InspectTests.java +++ /dev/null @@ -1,368 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -import static com.google.common.truth.Truth.assertThat; - -import com.google.api.gax.rpc.ApiException; -import com.google.cloud.pubsub.v1.SubscriptionAdminClient; -import com.google.cloud.pubsub.v1.TopicAdminClient; -import com.google.common.collect.ImmutableList; -import com.google.privacy.dlp.v2.FieldId; -import com.google.privacy.dlp.v2.Table; -import com.google.privacy.dlp.v2.Table.Row; -import com.google.privacy.dlp.v2.Value; -import com.google.pubsub.v1.ProjectSubscriptionName; -import com.google.pubsub.v1.PushConfig; -import com.google.pubsub.v1.TopicName; -import java.util.Arrays; -import java.util.UUID; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class InspectTests extends TestBase { - - // TODO: Update as ENV_VARs - private static final String datastoreNamespace = ""; - private static final String datastoreKind = "dlp"; - private static final String DOCUMENT_INPUT_FILE = "src/test/resources/sensitive-data-image.jpg"; - - private UUID testRunUuid = UUID.randomUUID(); - private TopicName topicName = - TopicName.of(PROJECT_ID, String.format("%s-%s", TOPIC_ID, testRunUuid.toString())); - private ProjectSubscriptionName subscriptionName = - ProjectSubscriptionName.of( - PROJECT_ID, String.format("%s-%s", SUBSCRIPTION_ID, testRunUuid.toString())); - - @Override - protected ImmutableList requiredEnvVars() { - return ImmutableList.of( - "GOOGLE_APPLICATION_CREDENTIALS", - "GOOGLE_CLOUD_PROJECT", - "GCS_PATH", - "PUB_SUB_TOPIC", - "PUB_SUB_SUBSCRIPTION", - "BIGQUERY_DATASET", - "BIGQUERY_TABLE"); - } - - @Before - public void before() throws Exception { - // Create a new topic - try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) { - topicAdminClient.createTopic(topicName); - } - - // Create a new subscription - try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) { - subscriptionAdminClient.createSubscription( - subscriptionName, topicName, PushConfig.getDefaultInstance(), 0); - } - } - - @After - public void after() throws Exception { - // Delete the test topic - try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) { - topicAdminClient.deleteTopic(topicName); - } catch (ApiException e) { - System.err.println(String.format("Error deleting topic %s: %s", topicName.getTopic(), e)); - // Keep trying to clean up - } - - // Delete the test subscription - try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) { - subscriptionAdminClient.deleteSubscription(subscriptionName); - } catch (ApiException e) { - System.err.println( - String.format( - "Error deleting subscription %s: %s", subscriptionName.getSubscription(), e)); - // Keep trying to clean up - } - } - - @Test - public void testInspectPhoneNumber() throws Exception { - InspectString.inspectString(PROJECT_ID, "My phone number is (415) 555-0890"); - - String output = bout.toString(); - assertThat(output).contains("Info type: PHONE_NUMBER"); - } - - @Test - public void testInspectString() throws Exception { - InspectString.inspectString(PROJECT_ID, "I'm Gary and my email is gary@example.com"); - - String output = bout.toString(); - assertThat(output).contains("Info type: EMAIL_ADDRESS"); - } - - @Test - public void testInspectWithCustomRegex() throws Exception { - InspectWithCustomRegex.inspectWithCustomRegex( - PROJECT_ID, "Patients MRN 444-5-22222", "[1-9]{3}-[1-9]{1}-[1-9]{5}"); - - String output = bout.toString(); - assertThat(output).contains("Info type: C_MRN"); - } - - @Test - public void testInspectStringWithExclusionDict() throws Exception { - InspectStringWithExclusionDict.inspectStringWithExclusionDict( - PROJECT_ID, - "Some email addresses: gary@example.com, example@example.com", - Arrays.asList("example@example.com")); - - String output = bout.toString(); - assertThat(output).contains("gary@example.com"); - assertThat(output).doesNotContain("example@example.com"); - } - - @Test - public void testInspectStringWithExclusionDictSubstring() throws Exception { - InspectStringWithExclusionDictSubstring.inspectStringWithExclusionDictSubstring( - PROJECT_ID, - "Some email addresses: gary@example.com, TEST@example.com", - Arrays.asList("TEST")); - - String output = bout.toString(); - assertThat(output).contains("gary@example.com"); - assertThat(output).doesNotContain("TEST@example.com"); - } - - @Test - public void testInspectStringWithExclusionRegex() throws Exception { - InspectStringWithExclusionRegex.inspectStringWithExclusionRegex( - PROJECT_ID, "Some email addresses: gary@example.com, bob@example.org", ".+@example.com"); - - String output = bout.toString(); - assertThat(output).contains("bob@example.org"); - assertThat(output).doesNotContain("gary@example.com"); - } - - @Test - public void testInspectStringCustomExcludingSubstring() throws Exception { - InspectStringCustomExcludingSubstring.inspectStringCustomExcludingSubstring( - PROJECT_ID, - "Name: Doe, John. Name: Example, Jimmy", - "[A-Z][a-z]{1,15}, [A-Z][a-z]{1,15}", - Arrays.asList("Jimmy")); - - String output = bout.toString(); - assertThat(output).contains("Doe, John"); - assertThat(output).doesNotContain("Example, Jimmy"); - } - - @Test - public void testInspectStringCustomOmitOverlap() throws Exception { - InspectStringCustomOmitOverlap.inspectStringCustomOmitOverlap( - PROJECT_ID, "Name: Jane Doe. Name: Larry Page."); - - String output = bout.toString(); - assertThat(output).contains("Jane Doe"); - assertThat(output).doesNotContain("Larry Page"); - } - - @Test - public void testInspectStringOmitOverlap() throws Exception { - InspectStringOmitOverlap.inspectStringOmitOverlap(PROJECT_ID, "james@example.com"); - - String output = bout.toString(); - assertThat(output).contains("EMAIL_ADDRESS"); - assertThat(output).doesNotContain("PERSON_NAME"); - } - - @Test - public void testInspectStringWithoutOverlap() throws Exception { - InspectStringWithoutOverlap.inspectStringWithoutOverlap( - PROJECT_ID, "example.com is a domain, james@example.org is an email."); - - String output = bout.toString(); - assertThat(output).contains("example.com"); - assertThat(output).doesNotContain("example.org"); - } - - @Test - public void testInspectTable() { - Table tableToInspect = - Table.newBuilder() - .addHeaders(FieldId.newBuilder().setName("name").build()) - .addHeaders(FieldId.newBuilder().setName("phone").build()) - .addRows( - Row.newBuilder() - .addValues(Value.newBuilder().setStringValue("John Doe").build()) - .addValues(Value.newBuilder().setStringValue("(206) 555-0123").build())) - .build(); - InspectTable.inspectTable(PROJECT_ID, tableToInspect); - - String output = bout.toString(); - assertThat(output).contains("Info type: PHONE_NUMBER"); - } - - @Test - public void testInspectStringCustomHotword() throws Exception { - InspectStringCustomHotword.inspectStringCustomHotword( - PROJECT_ID, "patient name: John Doe", "patient"); - - String output = bout.toString(); - assertThat(output).contains("John Doe"); - } - - @Test - public void testInspectStringCustomHotwordNegativeExample() throws Exception { - InspectStringCustomHotword.inspectStringCustomHotword(PROJECT_ID, "name: John Doe", "patient"); - - String output = bout.toString(); - assertThat(output).doesNotContain("John Doe"); - } - - @Test - public void testInspectStringMultipleRulesPatientRule() throws Exception { - InspectStringMultipleRules.inspectStringMultipleRules(PROJECT_ID, "patient name: Jane Doe"); - - String output = bout.toString(); - assertThat(output).contains("LIKELY"); - } - - @Test - public void testInspectStringMultipleRulesDoctorRule() throws Exception { - InspectStringMultipleRules.inspectStringMultipleRules(PROJECT_ID, "doctor: Jane Doe"); - - String output = bout.toString(); - assertThat(output).contains("Findings: 0"); - } - - @Test - public void testInspectStringMultipleRulesQuasimodoRule() throws Exception { - InspectStringMultipleRules.inspectStringMultipleRules(PROJECT_ID, "patient: Quasimodo"); - - String output = bout.toString(); - assertThat(output).contains("Findings: 0"); - } - - @Test - public void testInspectStringMultipleRulesRedactedRule() throws Exception { - InspectStringMultipleRules.inspectStringMultipleRules(PROJECT_ID, "name of patient: REDACTED"); - - String output = bout.toString(); - assertThat(output).contains("Findings: 0"); - } - - @Test - public void textInspectTestFile() throws Exception { - InspectTextFile.inspectTextFile(PROJECT_ID, "src/test/resources/test.txt"); - String output = bout.toString(); - assertThat(output).contains("Info type: PHONE_NUMBER"); - assertThat(output).contains("Info type: EMAIL_ADDRESS"); - } - - @Test - public void testInspectImageFile() throws Exception { - InspectImageFile.inspectImageFile(PROJECT_ID, "src/test/resources/test.png"); - - String output = bout.toString(); - assertThat(output).contains("Info type: PHONE_NUMBER"); - assertThat(output).contains("Info type: EMAIL_ADDRESS"); - } - - @Test - public void testRedactImageAllInfoTypes() throws Exception { - InspectImageFileAllInfoTypes.inspectImageFileAllInfoTypes(PROJECT_ID, DOCUMENT_INPUT_FILE); - - String output = bout.toString(); - assertThat(output).contains("Info type: PHONE_NUMBER"); - assertThat(output).contains("Info type: EMAIL_ADDRESS"); - assertThat(output).contains("Info type: DATE"); - } - - @Test - public void testRedactImageListedInfoTypes() throws Exception { - InspectImageFileListedInfoTypes.inspectImageFileListedInfoTypes( - PROJECT_ID, DOCUMENT_INPUT_FILE); - - String output = bout.toString(); - assertThat(output).contains("Info type: PHONE_NUMBER"); - assertThat(output).contains("Info type: EMAIL_ADDRESS"); - assertThat(output).doesNotContain("Info type: DATE"); - } - - @Test - public void testInspectGcsFile() throws Exception { - InspectGcsFile.inspectGcsFile( - PROJECT_ID, GCS_PATH, topicName.getTopic(), subscriptionName.getSubscription()); - - String output = bout.toString(); - assertThat(output).contains("Job status: DONE"); - } - - @Test - public void testInspectGcsFileWithSampling() throws Exception { - InspectGcsFileWithSampling.inspectGcsFileWithSampling( - PROJECT_ID, GCS_PATH, topicName.getTopic(), subscriptionName.getSubscription()); - - String output = bout.toString(); - assertThat(output).contains("Job status: DONE"); - } - - @Test - public void testInspectDatastoreEntity() throws Exception { - InspectDatastoreEntity.insepctDatastoreEntity( - PROJECT_ID, - datastoreNamespace, - datastoreKind, - topicName.getTopic(), - subscriptionName.getSubscription()); - - String output = bout.toString(); - assertThat(output).contains("Job status: DONE"); - } - - @Test - public void testInspectBigQueryTable() throws Exception { - InspectBigQueryTable.inspectBigQueryTable( - PROJECT_ID, DATASET_ID, TABLE_ID, topicName.getTopic(), subscriptionName.getSubscription()); - - String output = bout.toString(); - assertThat(output).contains("Job status: DONE"); - } - - @Test - public void testInspectBigQueryTableWithSampling() throws Exception { - InspectBigQueryTableWithSampling.inspectBigQueryTableWithSampling( - PROJECT_ID, topicName.getTopic(), subscriptionName.getSubscription()); - - String output = bout.toString(); - assertThat(output).contains("Job status: DONE"); - } - - @Test - public void testInspectWithHotwordRules() throws Exception { - InspectWithHotwordRules.inspectWithHotwordRules( - PROJECT_ID, - "Patient's MRN 444-5-22222 and just a number 333-2-33333", - "[1-9]{3}-[1-9]{1}-[1-9]{5}", - "(?i)(mrn|medical)(?-i)"); - - String output = bout.toString(); - assertThat(output).contains("Findings: 2"); - assertThat(output).contains("Info type: C_MRN"); - } -} diff --git a/samples/snippets/src/test/java/dlp/snippets/JobsTests.java b/samples/snippets/src/test/java/dlp/snippets/JobsTests.java deleted file mode 100644 index 7a0a1355..00000000 --- a/samples/snippets/src/test/java/dlp/snippets/JobsTests.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2020 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -import static com.google.common.truth.Truth.assertThat; - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.common.collect.ImmutableList; -import com.google.privacy.dlp.v2.CloudStorageOptions; -import com.google.privacy.dlp.v2.CloudStorageOptions.FileSet; -import com.google.privacy.dlp.v2.CreateDlpJobRequest; -import com.google.privacy.dlp.v2.DeleteDlpJobRequest; -import com.google.privacy.dlp.v2.DlpJob; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectJobConfig; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.StorageConfig; -import java.io.IOException; -import java.util.UUID; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class JobsTests extends TestBase { - - @Override - protected ImmutableList requiredEnvVars() { - return ImmutableList.of("GOOGLE_APPLICATION_CREDENTIALS", "GOOGLE_CLOUD_PROJECT", "GCS_PATH"); - } - - private static DlpJob createJob(String jobId) throws IOException { - try (DlpServiceClient dlp = DlpServiceClient.create()) { - FileSet fileSet = FileSet.newBuilder().setUrl(GCS_PATH).build(); - CloudStorageOptions cloudStorageOptions = - CloudStorageOptions.newBuilder().setFileSet(fileSet).build(); - StorageConfig storageConfig = - StorageConfig.newBuilder().setCloudStorageOptions(cloudStorageOptions).build(); - - InspectJobConfig inspectJobConfig = - InspectJobConfig.newBuilder() - .setStorageConfig(storageConfig) - .setInspectConfig(InspectConfig.newBuilder().build()) - .build(); - - CreateDlpJobRequest createDlpJobRequest = - CreateDlpJobRequest.newBuilder() - .setParent(LocationName.of(PROJECT_ID, "global").toString()) - .setInspectJob(inspectJobConfig) - .setJobId(jobId) - .build(); - - return dlp.createDlpJob(createDlpJobRequest); - } - } - - @Test - public void testCreateJobs() throws Exception { - // Call createJobs to create a Dlp job from project id and gcs path. - JobsCreate.createJobs(PROJECT_ID, GCS_PATH); - String output = bout.toString(); - assertThat(output).contains("Job created successfully:"); - - // Delete the created Dlp Job - String dlpJobName = output.split("Job created successfully: ")[1].split("\n")[0]; - DeleteDlpJobRequest deleteDlpJobRequest = - DeleteDlpJobRequest.newBuilder().setName(dlpJobName).build(); - try (DlpServiceClient client = DlpServiceClient.create()) { - client.deleteDlpJob(deleteDlpJobRequest); - } - } - - @Test - public void testGetJobs() throws Exception { - // Create a job with a unique UUID to be gotten - String jobId = UUID.randomUUID().toString(); - DlpJob createdDlpJob = createJob(jobId); - - // Get the job with the specified ID - JobsGet.getJobs(PROJECT_ID, "i-" + jobId); - String output = bout.toString(); - assertThat(output).contains("Job got successfully."); - - // Delete the created Dlp Job - String dlpJobName = createdDlpJob.getName(); - DeleteDlpJobRequest deleteDlpJobRequest = - DeleteDlpJobRequest.newBuilder().setName(dlpJobName).build(); - try (DlpServiceClient client = DlpServiceClient.create()) { - client.deleteDlpJob(deleteDlpJobRequest); - } - } - - @Test - public void testListJobs() throws Exception { - // Call listJobs to print out a list of jobIds - JobsList.listJobs(PROJECT_ID); - String output = bout.toString(); - - // Check that the output contains a list of jobs, or is empty - assertThat(output).contains("DLP jobs found:"); - } - - @Test - public void testDeleteJobs() throws Exception { - // Create a job with a unique UUID to be deleted - String jobId = UUID.randomUUID().toString(); - createJob(jobId); - - // Delete the job with the specified ID - JobsDelete.deleteJobs(PROJECT_ID, "i-" + jobId); - String output = bout.toString(); - assertThat(output).contains("Job deleted successfully."); - } -} diff --git a/samples/snippets/src/test/java/dlp/snippets/QuickstartTests.java b/samples/snippets/src/test/java/dlp/snippets/QuickstartTests.java deleted file mode 100644 index eb333a4a..00000000 --- a/samples/snippets/src/test/java/dlp/snippets/QuickstartTests.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -import static com.google.common.truth.Truth.assertThat; - -import com.google.common.collect.ImmutableList; -import java.io.IOException; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class QuickstartTests extends TestBase { - - @Override - protected ImmutableList requiredEnvVars() { - return ImmutableList.of("GOOGLE_APPLICATION_CREDENTIALS", "GOOGLE_CLOUD_PROJECT"); - } - - @Test - public void testQuickstart() throws IOException { - QuickStart.quickstart(PROJECT_ID); - - String output = bout.toString(); - assertThat(output).contains("Inspect of text complete"); - } -} diff --git a/samples/snippets/src/test/java/dlp/snippets/RedactTests.java b/samples/snippets/src/test/java/dlp/snippets/RedactTests.java deleted file mode 100644 index 13c0386e..00000000 --- a/samples/snippets/src/test/java/dlp/snippets/RedactTests.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -import static com.google.common.truth.Truth.assertThat; - -import com.google.common.collect.ImmutableList; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; -import org.junit.After; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class RedactTests extends TestBase { - - private static final String SIMPLE_INPUT_FILE = "src/test/resources/test.png"; - private static final String SIMPLE_OUTPUT_FILE = "redacted.png"; - private static final String DOCUMENT_INPUT_FILE = "src/test/resources/sensitive-data-image.jpg"; - private static final String DOCUMENT_OUTPUT_FILE = "sensitive-data-image-redacted.jpg"; - - @Override - protected ImmutableList requiredEnvVars() { - return ImmutableList.of("GOOGLE_APPLICATION_CREDENTIALS", "GOOGLE_CLOUD_PROJECT"); - } - - @After - public void after() throws IOException { - Files.deleteIfExists(Paths.get(SIMPLE_OUTPUT_FILE)); - Files.deleteIfExists(Paths.get(DOCUMENT_OUTPUT_FILE)); - } - - @Test - public void testRedactImage() throws Exception { - RedactImageFile.redactImageFile(PROJECT_ID, SIMPLE_INPUT_FILE, SIMPLE_OUTPUT_FILE); - - String output = bout.toString(); - assertThat(output).contains("Redacted image written"); - } - - @Test - public void testRedactImageAllInfoTypes() throws Exception { - RedactImageFileAllInfoTypes.redactImageFileAllInfoTypes( - PROJECT_ID, DOCUMENT_INPUT_FILE, DOCUMENT_OUTPUT_FILE); - - String output = bout.toString(); - assertThat(output).contains("Redacted image written"); - } - - @Test - public void testRedactImageListedInfoTypes() throws Exception { - RedactImageFileListedInfoTypes.redactImageFileListedInfoTypes( - PROJECT_ID, DOCUMENT_INPUT_FILE, DOCUMENT_OUTPUT_FILE); - - String output = bout.toString(); - assertThat(output).contains("Redacted image written"); - } - - @Test - public void testRedactImageColoredInfoTypes() throws Exception { - RedactImageFileColoredInfoTypes.redactImageFileColoredInfoTypes( - PROJECT_ID, DOCUMENT_INPUT_FILE, DOCUMENT_OUTPUT_FILE); - - String output = bout.toString(); - assertThat(output).contains("Redacted image written"); - } - - @Test - public void testRedactImageAllText() throws Exception { - RedactImageFileAllText.redactImageFileAllText( - PROJECT_ID, DOCUMENT_INPUT_FILE, DOCUMENT_OUTPUT_FILE); - - String output = bout.toString(); - assertThat(output).contains("Redacted image written"); - } -} diff --git a/samples/snippets/src/test/java/dlp/snippets/RiskAnalysisTests.java b/samples/snippets/src/test/java/dlp/snippets/RiskAnalysisTests.java deleted file mode 100644 index 548f2bfe..00000000 --- a/samples/snippets/src/test/java/dlp/snippets/RiskAnalysisTests.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright 2017 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -import static com.google.common.truth.Truth.assertThat; - -import com.google.api.gax.rpc.ApiException; -import com.google.cloud.pubsub.v1.SubscriptionAdminClient; -import com.google.cloud.pubsub.v1.TopicAdminClient; -import com.google.common.collect.ImmutableList; -import com.google.pubsub.v1.ProjectSubscriptionName; -import com.google.pubsub.v1.PushConfig; -import com.google.pubsub.v1.TopicName; -import java.util.UUID; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@SuppressWarnings("checkstyle:AbbreviationAsWordInName") -@RunWith(JUnit4.class) -public class RiskAnalysisTests extends TestBase { - - private UUID testRunUuid = UUID.randomUUID(); - private TopicName topicName = - TopicName.of(PROJECT_ID, String.format("%s-%s", TOPIC_ID, testRunUuid.toString())); - private ProjectSubscriptionName subscriptionName = - ProjectSubscriptionName.of( - PROJECT_ID, String.format("%s-%s", SUBSCRIPTION_ID, testRunUuid.toString())); - - @Override - protected ImmutableList requiredEnvVars() { - return ImmutableList.of( - "GOOGLE_APPLICATION_CREDENTIALS", - "GOOGLE_CLOUD_PROJECT", - "PUB_SUB_TOPIC", - "PUB_SUB_SUBSCRIPTION", - "BIGQUERY_DATASET", - "BIGQUERY_TABLE"); - } - - @Before - public void before() throws Exception { - // Create a new topic - try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) { - topicAdminClient.createTopic(topicName); - } - // Create a new subscription - try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) { - subscriptionAdminClient.createSubscription( - subscriptionName, topicName, PushConfig.getDefaultInstance(), 0); - } - } - - @After - public void after() throws Exception { - // Delete the test topic - try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) { - topicAdminClient.deleteTopic(topicName); - } catch (ApiException e) { - System.err.println(String.format("Error deleting topic %s: %s", topicName.getTopic(), e)); - // Keep trying to clean up - } - - // Delete the test subscription - try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) { - subscriptionAdminClient.deleteSubscription(subscriptionName); - } catch (ApiException e) { - System.err.println( - String.format( - "Error deleting subscription %s: %s", subscriptionName.getSubscription(), e)); - // Keep trying to clean up - } - } - - @Test - public void testNumericalStats() throws Exception { - RiskAnalysisNumericalStats.numericalStatsAnalysis( - PROJECT_ID, DATASET_ID, TABLE_ID, topicName.getTopic(), subscriptionName.getSubscription()); - String output = bout.toString(); - assertThat(output).contains("Value at "); - } - - @Test - public void testCategoricalStats() throws Exception { - RiskAnalysisCategoricalStats.categoricalStatsAnalysis( - PROJECT_ID, DATASET_ID, TABLE_ID, topicName.getTopic(), subscriptionName.getSubscription()); - - String output = bout.toString(); - - assertThat(output).containsMatch("Most common value occurs \\d time"); - assertThat(output).containsMatch("Least common value occurs \\d time"); - } - - @Test - public void testKAnonymity() throws Exception { - RiskAnalysisKAnonymity.calculateKAnonymity( - PROJECT_ID, DATASET_ID, TABLE_ID, topicName.getTopic(), subscriptionName.getSubscription()); - String output = bout.toString(); - assertThat(output).containsMatch("Bucket size range: \\[\\d, \\d\\]"); - assertThat(output).contains("Quasi-ID values: integer_value: 19"); - assertThat(output).contains("Class size: 1"); - } - - @Test - public void testLDiversity() throws Exception { - RiskAnalysisLDiversity.calculateLDiversity( - PROJECT_ID, DATASET_ID, TABLE_ID, topicName.getTopic(), subscriptionName.getSubscription()); - String output = bout.toString(); - assertThat(output).contains("Quasi-ID values: integer_value: 19"); - assertThat(output).contains("Class size: 1"); - assertThat(output).contains("Sensitive value string_value: \"James\""); - } - - @Test - public void testKMap() throws Exception { - RiskAnalysisKMap.calculateKMap( - PROJECT_ID, DATASET_ID, TABLE_ID, topicName.getTopic(), subscriptionName.getSubscription()); - - String output = bout.toString(); - - assertThat(output).containsMatch("Anonymity range: \\[\\d, \\d]"); - assertThat(output).containsMatch("Size: \\d"); - assertThat(output).containsMatch("Values: \\{\\d{2}, \"Female\"\\}"); - } -} diff --git a/samples/snippets/src/test/java/dlp/snippets/TemplatesTests.java b/samples/snippets/src/test/java/dlp/snippets/TemplatesTests.java deleted file mode 100644 index 1af435a5..00000000 --- a/samples/snippets/src/test/java/dlp/snippets/TemplatesTests.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2020 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -import static com.google.common.truth.Truth.assertThat; - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.common.collect.ImmutableList; -import com.google.privacy.dlp.v2.CreateInspectTemplateRequest; -import com.google.privacy.dlp.v2.DeleteInspectTemplateRequest; -import com.google.privacy.dlp.v2.InfoType; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectTemplate; -import com.google.privacy.dlp.v2.LocationName; -import java.io.IOException; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class TemplatesTests extends TestBase { - - @Override - protected ImmutableList requiredEnvVars() { - return ImmutableList.of("GOOGLE_APPLICATION_CREDENTIALS", "GOOGLE_CLOUD_PROJECT"); - } - - private static InspectTemplate createTemplate() throws IOException { - try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) { - List infoTypes = - Stream.of("PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD_NUMBER") - .map(it -> InfoType.newBuilder().setName(it).build()) - .collect(Collectors.toList()); - - InspectConfig inspectConfig = InspectConfig.newBuilder().addAllInfoTypes(infoTypes).build(); - - InspectTemplate inspectTemplate = - InspectTemplate.newBuilder().setInspectConfig(inspectConfig).build(); - - CreateInspectTemplateRequest createInspectTemplateRequest = - CreateInspectTemplateRequest.newBuilder() - .setParent(LocationName.of(PROJECT_ID, "global").toString()) - .setInspectTemplate(inspectTemplate) - .build(); - - return dlpServiceClient.createInspectTemplate(createInspectTemplateRequest); - } - } - - @Test - public void testCreateInspectTemplate() throws Exception { - TemplatesCreate.createInspectTemplate(PROJECT_ID); - String output = bout.toString(); - assertThat(output).contains("Template created: "); - - // Delete the created template - String templateId = output.split("Template created: ")[1].split("\n")[0]; - DeleteInspectTemplateRequest deleteInspectTemplateRequest = - DeleteInspectTemplateRequest.newBuilder().setName(templateId).build(); - try (DlpServiceClient client = DlpServiceClient.create()) { - client.deleteInspectTemplate(deleteInspectTemplateRequest); - } - } - - @Test - public void testListInspectTemplate() throws Exception { - TemplatesList.listInspectTemplates(PROJECT_ID); - String output = bout.toString(); - assertThat(output).contains("Templates found:"); - } - - @Test - public void testDeleteInspectTemplate() throws Exception { - // Create a template to be deleted and extract its ID - InspectTemplate template = createTemplate(); - String templateName = template.getName(); - String templateId; - - Matcher matcher = Pattern.compile("inspectTemplates/").matcher(templateName); - if (matcher.find()) { - templateId = templateName.substring(matcher.end()); - } else { - throw new Exception("Could not extract templateId"); - } - - // Delete the template with the specified ID - TemplatesDelete.deleteInspectTemplate(PROJECT_ID, templateId); - String output = bout.toString(); - assertThat(output).contains("Deleted template:"); - } -} diff --git a/samples/snippets/src/test/java/dlp/snippets/TestBase.java b/samples/snippets/src/test/java/dlp/snippets/TestBase.java deleted file mode 100644 index 58ed908b..00000000 --- a/samples/snippets/src/test/java/dlp/snippets/TestBase.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -import static com.google.common.truth.Truth.assertWithMessage; - -import com.google.common.collect.ImmutableList; -import java.io.ByteArrayOutputStream; -import java.io.PrintStream; -import org.junit.After; -import org.junit.Before; - -/** Common base class for DLP snippet tests */ -abstract class TestBase { - - protected static final String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT"); - protected static final String GCS_PATH = System.getenv("GCS_PATH"); - protected static final String TOPIC_ID = System.getenv("PUB_SUB_TOPIC"); - protected static final String SUBSCRIPTION_ID = System.getenv("PUB_SUB_SUBSCRIPTION"); - protected static final String DATASET_ID = System.getenv("BIGQUERY_DATASET"); - protected static final String TABLE_ID = System.getenv("BIGQUERY_TABLE"); - protected static final String wrappedKey = System.getenv("DLP_DEID_WRAPPED_KEY"); - protected static final String kmsKeyName = System.getenv("DLP_DEID_KEY_NAME"); - - protected ByteArrayOutputStream bout; - private PrintStream originalOut = System.out; - - protected abstract ImmutableList requiredEnvVars(); - - private static void requireEnvVar(String varName) { - assertWithMessage( - String.format("Environment variable '%s' must be set to perform these tests.", varName)) - .that(System.getenv(varName)) - .isNotEmpty(); - } - - @Before - public void beforeBase() { - requiredEnvVars().stream().forEach(TestBase::requireEnvVar); - - // Capture stdout - bout = new ByteArrayOutputStream(); - System.setOut(new PrintStream(bout)); - } - - @After - public void afterBase() { - // Restore stdout - System.setOut(originalOut); - bout.reset(); - } -} diff --git a/samples/snippets/src/test/java/dlp/snippets/TriggersTests.java b/samples/snippets/src/test/java/dlp/snippets/TriggersTests.java deleted file mode 100644 index b84710fb..00000000 --- a/samples/snippets/src/test/java/dlp/snippets/TriggersTests.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2020 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dlp.snippets; - -import static com.google.common.truth.Truth.assertThat; - -import com.google.cloud.dlp.v2.DlpServiceClient; -import com.google.common.collect.ImmutableList; -import com.google.privacy.dlp.v2.CloudStorageOptions; -import com.google.privacy.dlp.v2.CreateJobTriggerRequest; -import com.google.privacy.dlp.v2.DeleteJobTriggerRequest; -import com.google.privacy.dlp.v2.InspectConfig; -import com.google.privacy.dlp.v2.InspectJobConfig; -import com.google.privacy.dlp.v2.JobTrigger; -import com.google.privacy.dlp.v2.LocationName; -import com.google.privacy.dlp.v2.Schedule; -import com.google.privacy.dlp.v2.StorageConfig; -import com.google.protobuf.Duration; -import java.io.IOException; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class TriggersTests extends TestBase { - - @Override - protected ImmutableList requiredEnvVars() { - return ImmutableList.of("GOOGLE_APPLICATION_CREDENTIALS", "GOOGLE_CLOUD_PROJECT", "GCS_PATH"); - } - - private static JobTrigger createTrigger() throws IOException { - try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) { - CloudStorageOptions cloudStorageOptions = - CloudStorageOptions.newBuilder() - .setFileSet(CloudStorageOptions.FileSet.newBuilder().setUrl(GCS_PATH)) - .build(); - StorageConfig storageConfig = - StorageConfig.newBuilder().setCloudStorageOptions(cloudStorageOptions).build(); - - InspectJobConfig inspectJobConfig = - InspectJobConfig.newBuilder() - .setInspectConfig(InspectConfig.newBuilder().build()) - .setStorageConfig(storageConfig) - .build(); - - Duration duration = Duration.newBuilder().setSeconds(24 * 3600).build(); - Schedule schedule = Schedule.newBuilder().setRecurrencePeriodDuration(duration).build(); - JobTrigger.Trigger trigger = JobTrigger.Trigger.newBuilder().setSchedule(schedule).build(); - JobTrigger jobTrigger = - JobTrigger.newBuilder() - .setInspectJob(inspectJobConfig) - .setStatus(JobTrigger.Status.HEALTHY) - .addTriggers(trigger) - .build(); - - CreateJobTriggerRequest createJobTriggerRequest = - CreateJobTriggerRequest.newBuilder() - .setParent(LocationName.of(PROJECT_ID, "global").toString()) - .setJobTrigger(jobTrigger) - .build(); - - return dlpServiceClient.createJobTrigger(createJobTriggerRequest); - } - } - - @Test - public void testCreateTrigger() throws Exception { - TriggersCreate.createTrigger(PROJECT_ID, GCS_PATH); - String output = bout.toString(); - assertThat(output).contains("Created Trigger:"); - - // Delete the created trigger - String triggerId = output.split("Created Trigger: ")[1].split("\n")[0]; - DeleteJobTriggerRequest deleteJobTriggerRequest = - DeleteJobTriggerRequest.newBuilder().setName(triggerId).build(); - try (DlpServiceClient client = DlpServiceClient.create()) { - client.deleteJobTrigger(deleteJobTriggerRequest); - } - } - - @Test - public void testListTrigger() throws Exception { - TriggersList.listTriggers(PROJECT_ID); - String output = bout.toString(); - assertThat(output).contains("DLP triggers found:"); - } - - @Test - public void testDeleteTrigger() throws Exception { - JobTrigger trigger = createTrigger(); - String triggerName = trigger.getName(); - String triggerId; - - Matcher matcher = Pattern.compile("jobTriggers/").matcher(triggerName); - if (matcher.find()) { - triggerId = triggerName.substring(matcher.end()); - } else { - throw new Exception("Could not extract triggerID"); - } - - // Delete the job with the specified ID - TriggersDelete.deleteTrigger(PROJECT_ID, triggerId); - String output = bout.toString(); - assertThat(output).contains("Trigger deleted:"); - } -} diff --git a/samples/snippets/src/test/resources/dates.csv b/samples/snippets/src/test/resources/dates.csv deleted file mode 100644 index 290a85de..00000000 --- a/samples/snippets/src/test/resources/dates.csv +++ /dev/null @@ -1,5 +0,0 @@ -name,birth_date,credit_card,register_date -Ann,01/01/1970,4532908762519852,07/21/1996 -James,03/06/1988,4301261899725540,04/09/2001 -Dan,08/14/1945,4620761856015295,11/15/2011 -Laura,11/03/1992,4564981067258901,01/04/2017 diff --git a/samples/snippets/src/test/resources/results.correct.csv b/samples/snippets/src/test/resources/results.correct.csv deleted file mode 100644 index 5b078fe8..00000000 --- a/samples/snippets/src/test/resources/results.correct.csv +++ /dev/null @@ -1,5 +0,0 @@ -name,birth_date,credit_card,register_date -Ann,1970-01-06,4532908762519852,1996-07-26 -James,1988-03-11,4301261899725540,2001-04-14 -Dan,1945-08-19,4620761856015295,2011-11-20 -Laura,1992-11-08,4564981067258901,2017-01-09 diff --git a/samples/snippets/src/test/resources/sensitive-data-image.jpg b/samples/snippets/src/test/resources/sensitive-data-image.jpg deleted file mode 100644 index 6e2d8454..00000000 Binary files a/samples/snippets/src/test/resources/sensitive-data-image.jpg and /dev/null differ diff --git a/samples/snippets/src/test/resources/test.png b/samples/snippets/src/test/resources/test.png deleted file mode 100644 index 748f46cd..00000000 Binary files a/samples/snippets/src/test/resources/test.png and /dev/null differ diff --git a/samples/snippets/src/test/resources/test.txt b/samples/snippets/src/test/resources/test.txt deleted file mode 100644 index f30af240..00000000 --- a/samples/snippets/src/test/resources/test.txt +++ /dev/null @@ -1 +0,0 @@ -My phone number is (223) 456-7890 and my email address is gary@example.com. \ No newline at end of file