diff --git a/automl/cloud-client/README.md b/automl/cloud-client/README.md new file mode 100644 index 00000000000..0e4f93100c1 --- /dev/null +++ b/automl/cloud-client/README.md @@ -0,0 +1,72 @@ +# AutoML Samples + + +Open in Cloud Shell + + +This directory contains samples for the [Google Cloud AutoML APIs](https://cloud.google.com/automl/) - [docs](https://cloud.google.com/automl/docs/) + +We highly reccommend that you refer to the official documentation pages: + +* [AutoML Translation](https://cloud.google.com/translate/automl/docs) + + +This API is part of the larger collection of Cloud Machine Learning APIs. + +These Java samples demonstrates how to access the Cloud AutoML API +using the [Google Cloud Client Library for Java][google-cloud-java]. + +[google-cloud-java]: https://github.com/GoogleCloudPlatform/google-cloud-java + +## Build the samples + +Install [Maven](http://maven.apache.org/). + +Build your project with: + +``` +mvn clean package +``` + +## Sample Types +There are two types of samples: Base and API Specific + +The base samples make up a set of samples that have code that +is identical or nearly identical for each AutoML Type. Meaning that for "Base" samples you can use them with any AutoML +Type. However, for API Specific samples, there will be a unique sample for each AutoML type. See the below list for more info. + +## Base Samples +### Dataset Management +* [Import Dataset](src/main/java/com/example/automl/ImportDataset.java) +* [List Datasets](src/main/java/com/example/automl/ListDatasets.java) - For each AutoML Type the `metadata` field inside the dataset is unique, therefore each AutoML Type will have a +small section of code to print out the `metadata` field. +* [Get Dataset](src/main/java/com/example/automl/GetDataset.java) - For each AutoML Type the `metadata` field inside the dataset is unique, therefore each AutoML Type will have a +small section of code to print out the `metadata` field. +* [Export Dataset](src/main/java/com/example/automl/ExportDataset.java) +* [Delete Dataset](src/main/java/com/example/automl/DeleteDataset.java) +### Model Management +* [List Models](src/main/java/com/example/automl/ListModels.java) +* [List Model Evaluation](src/main/java/com/example/automl/ListModelEvaluations.java) +* [Get Model](src/main/java/com/example/automl/) +* [Get Model Evaluation](src/main/java/com/example/automl/GetModelEvaluation.java) +* [Delete Model](src/main/java/com/example/automl/DeleteModel.java) + +### Operation Management +* [List Operation Statuses](src/main/java/com/example/automl/ListOperationStatus.java) +* [Get Operation Status](src/main/java/com/example/automl/GetOperationStatus.java) + +## AutoML Type Specific Samples +### Translation +* [Translate Create Dataset](src/main/java/com/example/automl/TranslateCreateDataset.java) +* [Translate Create Model](src/main/java/com/example/automl/TranslateCreateModel.java) +* [Translate Predict](src/main/java/com/example/automl/TranslatePredict.java) \ No newline at end of file diff --git a/automl/cloud-client/pom.xml b/automl/cloud-client/pom.xml new file mode 100644 index 00000000000..b5005d21460 --- /dev/null +++ b/automl/cloud-client/pom.xml @@ -0,0 +1,68 @@ + + + 4.0.0 + com.example.automl + automl-google-cloud-samples + jar + + + + com.google.cloud.samples + shared-configuration + 1.0.11 + + + + 1.11 + 1.11 + UTF-8 + + + + + + com.google.cloud + google-cloud-automl + 0.114.0-beta + + + + com.google.cloud + google-cloud-storage + 1.83.0 + + + net.sourceforge.argparse4j + argparse4j + 0.8.1 + + + + + junit + junit + 4.12 + test + + + com.google.truth + truth + 0.41 + test + + + \ No newline at end of file diff --git a/automl/cloud-client/resources/input.txt b/automl/cloud-client/resources/input.txt new file mode 100644 index 00000000000..5aecd6590fc --- /dev/null +++ b/automl/cloud-client/resources/input.txt @@ -0,0 +1 @@ +Tell me how this ends \ No newline at end of file diff --git a/translate/automl/src/main/java/com/google/cloud/translate/automl/DeleteDataset.java b/automl/cloud-client/src/main/java/com/example/automl/DeleteDataset.java similarity index 73% rename from translate/automl/src/main/java/com/google/cloud/translate/automl/DeleteDataset.java rename to automl/cloud-client/src/main/java/com/example/automl/DeleteDataset.java index e284e9ef4ff..9c8660b24e9 100644 --- a/translate/automl/src/main/java/com/google/cloud/translate/automl/DeleteDataset.java +++ b/automl/cloud-client/src/main/java/com/example/automl/DeleteDataset.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package com.google.cloud.translate.automl; +package com.example.automl; -// [START automl_translate_delete_dataset] +// [START automl_delete_dataset] import com.google.cloud.automl.v1.AutoMlClient; import com.google.cloud.automl.v1.DatasetName; import com.google.protobuf.Empty; @@ -26,11 +26,16 @@ class DeleteDataset { - // Delete a dataset - static void deleteDataset(String projectId, String datasetId) { - // String projectId = "YOUR_PROJECT_ID"; - // String datasetId = "YOUR_DATASET_ID"; + static void deleteDataset() throws IOException, ExecutionException, InterruptedException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "YOUR_PROJECT_ID"; + String datasetId = "YOUR_DATASET_ID"; + deleteDataset(projectId, datasetId); + } + // Delete a dataset + static void deleteDataset(String projectId, String datasetId) + throws IOException, ExecutionException, InterruptedException { // 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. @@ -39,9 +44,7 @@ static void deleteDataset(String projectId, String datasetId) { DatasetName datasetFullId = DatasetName.of(projectId, "us-central1", datasetId); Empty response = client.deleteDatasetAsync(datasetFullId).get(); System.out.format("Dataset deleted. %s\n", response); - } catch (IOException | InterruptedException | ExecutionException e) { - e.printStackTrace(); } } } -// [END automl_translate_delete_dataset] +// [END automl_delete_dataset] diff --git a/translate/automl/src/main/java/com/google/cloud/translate/automl/DeleteModel.java b/automl/cloud-client/src/main/java/com/example/automl/DeleteModel.java similarity index 75% rename from translate/automl/src/main/java/com/google/cloud/translate/automl/DeleteModel.java rename to automl/cloud-client/src/main/java/com/example/automl/DeleteModel.java index bddfe867fc0..e885db9dc91 100644 --- a/translate/automl/src/main/java/com/google/cloud/translate/automl/DeleteModel.java +++ b/automl/cloud-client/src/main/java/com/example/automl/DeleteModel.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package com.google.cloud.translate.automl; +package com.example.automl; -// [START automl_translate_delete_model] +// [START automl_delete_model] import com.google.cloud.automl.v1.AutoMlClient; import com.google.cloud.automl.v1.ModelName; import com.google.protobuf.Empty; @@ -26,11 +26,16 @@ class DeleteModel { - // Get a model - static void deleteModel(String projectId, String modelId) { - // String projectId = "YOUR_PROJECT_ID"; - // String modelId = "YOUR_MODEL_ID"; + static void deleteModel() throws IOException, ExecutionException, InterruptedException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "YOUR_PROJECT_ID"; + String modelId = "YOUR_MODEL_ID"; + deleteModel(projectId, modelId); + } + // Get a model + static void deleteModel(String projectId, String modelId) + throws IOException, ExecutionException, InterruptedException { // 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. @@ -43,9 +48,7 @@ static void deleteModel(String projectId, String modelId) { System.out.println("Model deletion started..."); System.out.println(String.format("Model deleted. %s", response)); - } catch (IOException | InterruptedException | ExecutionException e) { - e.printStackTrace(); } } } -// [END automl_translate_delete_model] +// [END automl_delete_model] diff --git a/translate/automl/src/main/java/com/google/cloud/translate/automl/ExportDataset.java b/automl/cloud-client/src/main/java/com/example/automl/ExportDataset.java similarity index 78% rename from translate/automl/src/main/java/com/google/cloud/translate/automl/ExportDataset.java rename to automl/cloud-client/src/main/java/com/example/automl/ExportDataset.java index 9f7ab5b3095..ae8818d97ad 100644 --- a/translate/automl/src/main/java/com/google/cloud/translate/automl/ExportDataset.java +++ b/automl/cloud-client/src/main/java/com/example/automl/ExportDataset.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package com.google.cloud.translate.automl; +package com.example.automl; -// [START automl_translate_export_dataset] +// [START automl_export_dataset] import com.google.cloud.automl.v1.AutoMlClient; import com.google.cloud.automl.v1.DatasetName; import com.google.cloud.automl.v1.GcsDestination; @@ -28,12 +28,17 @@ class ExportDataset { - // Export a dataset - static void exportDataset(String projectId, String datasetId, String gcsUri) { - // String projectId = "YOUR_PROJECT_ID"; - // String datasetId = "YOUR_DATASET_ID"; - // String gcsUri = "gs://BUCKET_ID/path_to_export/"; + static void exportDataset() throws IOException, ExecutionException, InterruptedException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "YOUR_PROJECT_ID"; + String datasetId = "YOUR_DATASET_ID"; + String gcsUri = "gs://BUCKET_ID/path_to_export/"; + exportDataset(projectId, datasetId, gcsUri); + } + // Export a dataset + static void exportDataset(String projectId, String datasetId, String gcsUri) + throws IOException, ExecutionException, InterruptedException { // 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. @@ -50,9 +55,7 @@ static void exportDataset(String projectId, String datasetId, String gcsUri) { System.out.println("Processing export..."); Empty response = client.exportDataAsync(datasetFullId, outputConfig).get(); System.out.format("Dataset exported. %s\n", response); - } catch (IOException | InterruptedException | ExecutionException e) { - e.printStackTrace(); } } } -// [END automl_translate_export_dataset] +// [END automl_export_dataset] diff --git a/translate/automl/src/main/java/com/google/cloud/translate/automl/GetDataset.java b/automl/cloud-client/src/main/java/com/example/automl/GetDataset.java similarity index 87% rename from translate/automl/src/main/java/com/google/cloud/translate/automl/GetDataset.java rename to automl/cloud-client/src/main/java/com/example/automl/GetDataset.java index 8c362494b92..4e8d36117b7 100644 --- a/translate/automl/src/main/java/com/google/cloud/translate/automl/GetDataset.java +++ b/automl/cloud-client/src/main/java/com/example/automl/GetDataset.java @@ -14,9 +14,10 @@ * limitations under the License. */ -package com.google.cloud.translate.automl; +package com.example.automl; // [START automl_translate_get_dataset] + import com.google.cloud.automl.v1.AutoMlClient; import com.google.cloud.automl.v1.Dataset; import com.google.cloud.automl.v1.DatasetName; @@ -25,11 +26,15 @@ class GetDataset { - // Get a dataset - static void getDataset(String projectId, String datasetId) { - // String projectId = "YOUR_PROJECT_ID"; - // String datasetId = "YOUR_DATASET_ID"; + static void getDataset() throws IOException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "YOUR_PROJECT_ID"; + String datasetId = "YOUR_DATASET_ID"; + getDataset(projectId, datasetId); + } + // Get a dataset + static void getDataset(String projectId, String datasetId) 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. @@ -57,8 +62,6 @@ static void getDataset(String projectId, String datasetId) { System.out.println("Dataset create time:"); System.out.format("\tseconds: %s\n", dataset.getCreateTime().getSeconds()); System.out.format("\tnanos: %s\n", dataset.getCreateTime().getNanos()); - } catch (IOException e) { - e.printStackTrace(); } } } diff --git a/translate/automl/src/main/java/com/google/cloud/translate/automl/GetModel.java b/automl/cloud-client/src/main/java/com/example/automl/GetModel.java similarity index 84% rename from translate/automl/src/main/java/com/google/cloud/translate/automl/GetModel.java rename to automl/cloud-client/src/main/java/com/example/automl/GetModel.java index b604a379f26..e555a700fdb 100644 --- a/translate/automl/src/main/java/com/google/cloud/translate/automl/GetModel.java +++ b/automl/cloud-client/src/main/java/com/example/automl/GetModel.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package com.google.cloud.translate.automl; +package com.example.automl; -// [START automl_translate_get_model] +// [START automl_get_model] import com.google.cloud.automl.v1.AutoMlClient; import com.google.cloud.automl.v1.Model; import com.google.cloud.automl.v1.ModelName; @@ -25,11 +25,15 @@ class GetModel { - // Get a model - static void getModel(String projectId, String modelId) { - // String projectId = "YOUR_PROJECT_ID"; - // String modelId = "YOUR_MODEL_ID"; + static void getModel() throws IOException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "YOUR_PROJECT_ID"; + String modelId = "YOUR_MODEL_ID"; + getModel(projectId, modelId); + } + // Get a model + static void getModel(String projectId, String modelId) 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. @@ -51,9 +55,7 @@ static void getModel(String projectId, String modelId) { System.out.format("\tseconds: %s\n", model.getCreateTime().getSeconds()); System.out.format("\tnanos: %s\n", model.getCreateTime().getNanos()); System.out.format("Model deployment state: %s\n", model.getDeploymentState()); - } catch (IOException e) { - e.printStackTrace(); } } } -// [END automl_translate_get_model] +// [END automl_get_model] diff --git a/translate/automl/src/main/java/com/google/cloud/translate/automl/GetModelEvaluation.java b/automl/cloud-client/src/main/java/com/example/automl/GetModelEvaluation.java similarity index 81% rename from translate/automl/src/main/java/com/google/cloud/translate/automl/GetModelEvaluation.java rename to automl/cloud-client/src/main/java/com/example/automl/GetModelEvaluation.java index 6713d51f212..3048f6648a4 100644 --- a/translate/automl/src/main/java/com/google/cloud/translate/automl/GetModelEvaluation.java +++ b/automl/cloud-client/src/main/java/com/example/automl/GetModelEvaluation.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package com.google.cloud.translate.automl; +package com.example.automl; -// [START automl_translate_get_model_evaluation] +// [START automl_get_model_evaluation] import com.google.cloud.automl.v1.AutoMlClient; import com.google.cloud.automl.v1.ModelEvaluation; import com.google.cloud.automl.v1.ModelEvaluationName; @@ -25,12 +25,17 @@ class GetModelEvaluation { - // Get a model evaluation - static void getModelEvaluation(String projectId, String modelId, String modelEvaluationId) { - // String projectId = "YOUR_PROJECT_ID"; - // String modelId = "YOUR_MODEL_ID"; - // String modelEvaluationId = "YOUR_MODEL_EVALUATION_ID"; + static void getModelEvaluation() throws IOException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "YOUR_PROJECT_ID"; + String modelId = "YOUR_MODEL_ID"; + String modelEvaluationId = "YOUR_MODEL_EVALUATION_ID"; + getModelEvaluation(projectId, modelId, modelEvaluationId); + } + // Get a model evaluation + static void getModelEvaluation(String projectId, String modelId, String modelEvaluationId) + 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. @@ -51,9 +56,7 @@ static void getModelEvaluation(String projectId, String modelId, String modelEva "Evalution Example Count: %d\n", modelEvaluation.getEvaluatedExampleCount()); System.out.format( "Model Evaluation Metrics: %s\n", modelEvaluation.getTranslationEvaluationMetrics()); - } catch (IOException e) { - e.printStackTrace(); } } } -// [END automl_translate_get_model_evaluation] +// [END automl_get_model_evaluation] diff --git a/translate/automl/src/main/java/com/google/cloud/translate/automl/GetOperationStatus.java b/automl/cloud-client/src/main/java/com/example/automl/GetOperationStatus.java similarity index 81% rename from translate/automl/src/main/java/com/google/cloud/translate/automl/GetOperationStatus.java rename to automl/cloud-client/src/main/java/com/example/automl/GetOperationStatus.java index 92970c24e4c..5c12d41f0e2 100644 --- a/translate/automl/src/main/java/com/google/cloud/translate/automl/GetOperationStatus.java +++ b/automl/cloud-client/src/main/java/com/example/automl/GetOperationStatus.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package com.google.cloud.translate.automl; +package com.example.automl; -// [START automl_translate_get_operation_status] +// [START automl_get_operation_status] import com.google.cloud.automl.v1.AutoMlClient; import com.google.longrunning.Operation; @@ -24,11 +24,14 @@ class GetOperationStatus { - // Get the status of an operation - static void getOperationStatus(String operationFullId) { - // String operationFullId = - // "projects/[projectId]/locations/us-central1/operations/[operationId]"; + static void getOperationStatus() throws IOException { + // TODO(developer): Replace these variables before running the sample. + String operationFullId = "projects/[projectId]/locations/us-central1/operations/[operationId]"; + getOperationStatus(operationFullId); + } + // Get the status of an operation + static void getOperationStatus(String operationFullId) 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. @@ -49,9 +52,7 @@ static void getOperationStatus(String operationFullId) { System.out.format("\t\tError code: %s\n", operation.getError().getCode()); System.out.format("\t\tError message: %s\n", operation.getError().getMessage()); } - } catch (IOException e) { - e.printStackTrace(); } } } -// [END automl_translate_get_operation_status] +// [END automl_get_operation_status] diff --git a/translate/automl/src/main/java/com/google/cloud/translate/automl/ImportDataset.java b/automl/cloud-client/src/main/java/com/example/automl/ImportDataset.java similarity index 66% rename from translate/automl/src/main/java/com/google/cloud/translate/automl/ImportDataset.java rename to automl/cloud-client/src/main/java/com/example/automl/ImportDataset.java index e98b5aa38ae..2b40ef33f4d 100644 --- a/translate/automl/src/main/java/com/google/cloud/translate/automl/ImportDataset.java +++ b/automl/cloud-client/src/main/java/com/example/automl/ImportDataset.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package com.google.cloud.translate.automl; +package com.example.automl; -// [START automl_translate_import_dataset] +// [START automl_import_dataset] import com.google.cloud.automl.v1.AutoMlClient; import com.google.cloud.automl.v1.DatasetName; import com.google.cloud.automl.v1.GcsSource; @@ -29,15 +29,20 @@ class ImportDataset { - // 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. - static void importDataset(String projectId, String datasetId, String path) { - // String projectId = "YOUR_PROJECT_ID"; - // String datasetId = "YOUR_DATASET_ID"; - // String path = "gs://BUCKET_ID/path_to_training_data.csv"; + static void importDataset() throws IOException, ExecutionException, InterruptedException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "YOUR_PROJECT_ID"; + String datasetId = "YOUR_DATASET_ID"; + String path = "gs://BUCKET_ID/path_to_training_data.csv"; + importDataset(projectId, datasetId, path); + } - // Instantiates a client + // Import a dataset + static void importDataset(String projectId, String datasetId, String path) + throws IOException, ExecutionException, InterruptedException { + // 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 (AutoMlClient client = AutoMlClient.create()) { // Get the complete path of the dataset. DatasetName datasetFullId = DatasetName.of(projectId, "us-central1", datasetId); @@ -52,9 +57,7 @@ static void importDataset(String projectId, String datasetId, String path) { Empty response = client.importDataAsync(datasetFullId, inputConfig).get(); System.out.format("Dataset imported. %s\n", response); - } catch (IOException | InterruptedException | ExecutionException e) { - e.printStackTrace(); } } } -// [END automl_translate_import_dataset] +// [END automl_import_dataset] diff --git a/translate/automl/src/main/java/com/google/cloud/translate/automl/ListDatasets.java b/automl/cloud-client/src/main/java/com/example/automl/ListDatasets.java similarity index 88% rename from translate/automl/src/main/java/com/google/cloud/translate/automl/ListDatasets.java rename to automl/cloud-client/src/main/java/com/example/automl/ListDatasets.java index 651c0ec0b99..aca86c1c7f1 100644 --- a/translate/automl/src/main/java/com/google/cloud/translate/automl/ListDatasets.java +++ b/automl/cloud-client/src/main/java/com/example/automl/ListDatasets.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package com.google.cloud.translate.automl; +package com.example.automl; -// [START automl_translate_list_dataset] +// [START automl_translate_list_datasets] import com.google.cloud.automl.v1.AutoMlClient; import com.google.cloud.automl.v1.Dataset; import com.google.cloud.automl.v1.ListDatasetsRequest; @@ -26,10 +26,14 @@ class ListDatasets { - // List the datasets - static void listDatasets(String projectId) { - // String projectId = "YOUR_PROJECT_ID"; + static void listDatasets() throws IOException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "YOUR_PROJECT_ID"; + listDatasets(projectId); + } + // List the datasets + static void listDatasets(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. @@ -65,9 +69,7 @@ static void listDatasets(String projectId) { System.out.format("\tseconds: %s\n", dataset.getCreateTime().getSeconds()); System.out.format("\tnanos: %s\n", dataset.getCreateTime().getNanos()); } - } catch (IOException e) { - e.printStackTrace(); } } } -// [END automl_translate_list_dataset] +// [END automl_translate_list_datasets] diff --git a/translate/automl/src/main/java/com/google/cloud/translate/automl/ListModelEvaluations.java b/automl/cloud-client/src/main/java/com/example/automl/ListModelEvaluations.java similarity index 86% rename from translate/automl/src/main/java/com/google/cloud/translate/automl/ListModelEvaluations.java rename to automl/cloud-client/src/main/java/com/example/automl/ListModelEvaluations.java index 7cf38b1318b..8172f9dfc00 100644 --- a/translate/automl/src/main/java/com/google/cloud/translate/automl/ListModelEvaluations.java +++ b/automl/cloud-client/src/main/java/com/example/automl/ListModelEvaluations.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package com.google.cloud.translate.automl; +package com.example.automl; -// [START automl_translate_list_model_evaluation] +// [START automl_list_model_evaluations] import com.google.cloud.automl.v1.AutoMlClient; import com.google.cloud.automl.v1.ListModelEvaluationsRequest; import com.google.cloud.automl.v1.ModelEvaluation; @@ -26,11 +26,15 @@ class ListModelEvaluations { - // List model evaluations - static void listModelEvaluations(String projectId, String modelId) { - // String projectId = "YOUR_PROJECT_ID"; - // String modelId = "YOUR_MODEL_ID"; + static void listModelEvaluations() throws IOException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "YOUR_PROJECT_ID"; + String modelId = "YOUR_MODEL_ID"; + listModelEvaluations(projectId, modelId); + } + // List model evaluations + static void listModelEvaluations(String projectId, String modelId) 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. @@ -55,9 +59,7 @@ static void listModelEvaluations(String projectId, String modelId) { System.out.format( "Model Evaluation Metrics: %s\n\n", modelEvaluation.getTranslationEvaluationMetrics()); } - } catch (IOException e) { - e.printStackTrace(); } } } -// [END automl_translate_list_model_evaluation] +// [END automl_list_model_evaluations] diff --git a/translate/automl/src/main/java/com/google/cloud/translate/automl/ListModels.java b/automl/cloud-client/src/main/java/com/example/automl/ListModels.java similarity index 88% rename from translate/automl/src/main/java/com/google/cloud/translate/automl/ListModels.java rename to automl/cloud-client/src/main/java/com/example/automl/ListModels.java index ef18a11eec8..67644664397 100644 --- a/translate/automl/src/main/java/com/google/cloud/translate/automl/ListModels.java +++ b/automl/cloud-client/src/main/java/com/example/automl/ListModels.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package com.google.cloud.translate.automl; +package com.example.automl; -// [START automl_translate_list_model] +// [START automl_list_models] import com.google.cloud.automl.v1.AutoMlClient; import com.google.cloud.automl.v1.ListModelsRequest; import com.google.cloud.automl.v1.LocationName; @@ -26,10 +26,14 @@ class ListModels { - // List models - static void listModels(String projectId) { - // String projectId = "YOUR_PROJECT_ID"; + static void listModels() throws IOException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "YOUR_PROJECT_ID"; + listModels(projectId); + } + // List models + static void listModels(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. @@ -61,9 +65,7 @@ static void listModels(String projectId) { System.out.format("\tnanos: %s\n", model.getCreateTime().getNanos()); System.out.format("Model deployment state: %s\n", model.getDeploymentState()); } - } catch (IOException e) { - e.printStackTrace(); } } } -// [END automl_translate_list_model] +// [END automl_list_models] diff --git a/translate/automl/src/main/java/com/google/cloud/translate/automl/ListOperationStatus.java b/automl/cloud-client/src/main/java/com/example/automl/ListOperationStatus.java similarity index 86% rename from translate/automl/src/main/java/com/google/cloud/translate/automl/ListOperationStatus.java rename to automl/cloud-client/src/main/java/com/example/automl/ListOperationStatus.java index 4a455d47e40..c26ca327704 100644 --- a/translate/automl/src/main/java/com/google/cloud/translate/automl/ListOperationStatus.java +++ b/automl/cloud-client/src/main/java/com/example/automl/ListOperationStatus.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package com.google.cloud.translate.automl; +package com.example.automl; -// [START automl_translate_list_operation_status] +// [START automl_list_operation_status] import com.google.cloud.automl.v1.AutoMlClient; import com.google.cloud.automl.v1.LocationName; import com.google.longrunning.ListOperationsRequest; @@ -26,10 +26,14 @@ class ListOperationStatus { - // Get the status of an operation - static void listOperationStatus(String projectId) { - // String projectId = "YOUR_PROJECT_ID"; + static void listOperationStatus() throws IOException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "YOUR_PROJECT_ID"; + listOperationStatus(projectId); + } + // Get the status of an operation + static void listOperationStatus(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. @@ -57,9 +61,7 @@ static void listOperationStatus(String projectId) { System.out.format("\t\tError message: %s\n\n", operation.getError().getMessage()); } } - } catch (IOException e) { - e.printStackTrace(); } } } -// [END automl_translate_list_operation_status] +// [END automl_list_operation_status] diff --git a/translate/automl/src/main/java/com/google/cloud/translate/automl/CreateDataset.java b/automl/cloud-client/src/main/java/com/example/automl/TranslateCreateDataset.java similarity index 74% rename from translate/automl/src/main/java/com/google/cloud/translate/automl/CreateDataset.java rename to automl/cloud-client/src/main/java/com/example/automl/TranslateCreateDataset.java index 4b24c85d51e..103ea1eca86 100644 --- a/translate/automl/src/main/java/com/google/cloud/translate/automl/CreateDataset.java +++ b/automl/cloud-client/src/main/java/com/example/automl/TranslateCreateDataset.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.google.cloud.translate.automl; +package com.example.automl; // [START automl_translate_create_dataset] import com.google.api.gax.longrunning.OperationFuture; @@ -27,13 +27,18 @@ import java.io.IOException; import java.util.concurrent.ExecutionException; -class CreateDataset { +class TranslateCreateDataset { - // Create a dataset - static void createDataset(String projectId, String displayName) { - // String projectId = "YOUR_PROJECT_ID"; - // String displayName = "YOUR_DATASET_NAME"; + static void createDataset() throws IOException, ExecutionException, InterruptedException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "YOUR_PROJECT_ID"; + String displayName = "YOUR_DATASET_NAME"; + createDataset(projectId, displayName); + } + // Create a dataset + static void createDataset(String projectId, String displayName) + throws IOException, ExecutionException, InterruptedException { // 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. @@ -65,19 +70,6 @@ static void createDataset(String projectId, String displayName) { String[] names = createdDataset.getName().split("/"); String datasetId = names[names.length - 1]; System.out.format("Dataset id: %s\n", datasetId); - System.out.format("Dataset display name: %s\n", createdDataset.getDisplayName()); - System.out.println("Translation dataset Metadata:"); - System.out.format( - "\tSource language code: %s\n", - createdDataset.getTranslationDatasetMetadata().getSourceLanguageCode()); - System.out.format( - "\tTarget language code: %s\n", - createdDataset.getTranslationDatasetMetadata().getTargetLanguageCode()); - System.out.println("Dataset create time:"); - System.out.format("\tseconds: %s\n", createdDataset.getCreateTime().getSeconds()); - System.out.format("\tnanos: %s\n", createdDataset.getCreateTime().getNanos()); - } catch (IOException | InterruptedException | ExecutionException e) { - e.printStackTrace(); } } } diff --git a/translate/automl/src/main/java/com/google/cloud/translate/automl/CreateModel.java b/automl/cloud-client/src/main/java/com/example/automl/TranslateCreateModel.java similarity index 82% rename from translate/automl/src/main/java/com/google/cloud/translate/automl/CreateModel.java rename to automl/cloud-client/src/main/java/com/example/automl/TranslateCreateModel.java index b317d0dd801..2fca0c38905 100644 --- a/translate/automl/src/main/java/com/google/cloud/translate/automl/CreateModel.java +++ b/automl/cloud-client/src/main/java/com/example/automl/TranslateCreateModel.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.google.cloud.translate.automl; +package com.example.automl; // [START automl_translate_create_model] import com.google.api.gax.longrunning.OperationFuture; @@ -27,14 +27,19 @@ import java.io.IOException; import java.util.concurrent.ExecutionException; -class CreateModel { +class TranslateCreateModel { - // Create a model - static void createModel(String projectId, String datasetId, String displayName) { - // String projectId = "YOUR_PROJECT_ID"; - // String datasetId = "YOUR_DATASET_ID"; - // String displayName = "YOUR_DATASET_NAME"; + static void createModel() throws IOException, ExecutionException, InterruptedException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "YOUR_PROJECT_ID"; + String datasetId = "YOUR_DATASET_ID"; + String displayName = "YOUR_DATASET_NAME"; + createModel(projectId, datasetId, displayName); + } + // Create a model + static void createModel(String projectId, String datasetId, String displayName) + throws IOException, ExecutionException, InterruptedException { // 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. @@ -56,8 +61,6 @@ static void createModel(String projectId, String datasetId, String displayName) client.createModelAsync(projectLocation, model); System.out.format("Training operation name: %s\n", future.getInitialFuture().get().getName()); System.out.println("Training started..."); - } catch (IOException | InterruptedException | ExecutionException e) { - e.printStackTrace(); } } } diff --git a/translate/automl/src/main/java/com/google/cloud/translate/automl/Prediction.java b/automl/cloud-client/src/main/java/com/example/automl/TranslatePredict.java similarity index 85% rename from translate/automl/src/main/java/com/google/cloud/translate/automl/Prediction.java rename to automl/cloud-client/src/main/java/com/example/automl/TranslatePredict.java index 0b9e3e77ee7..ccd2aaa1a4e 100644 --- a/translate/automl/src/main/java/com/google/cloud/translate/automl/Prediction.java +++ b/automl/cloud-client/src/main/java/com/example/automl/TranslatePredict.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.google.cloud.translate.automl; +package com.example.automl; // [START automl_translate_predict] import com.google.cloud.automl.v1.ExamplePayload; @@ -28,14 +28,18 @@ import java.nio.file.Files; import java.nio.file.Paths; -class Prediction { +class TranslatePredict { - // Predict - static void predict(String projectId, String modelId, String filePath) { - // String projectId = "YOUR_PROJECT_ID"; - // String modelId = "YOUR_MODEL_ID"; - // String filePath = "path_to_local_file.txt"; + static void predict() throws IOException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "YOUR_PROJECT_ID"; + String modelId = "YOUR_MODEL_ID"; + String filePath = "path_to_local_file.txt"; + predict(projectId, modelId, filePath); + } + // Predict + static void predict(String projectId, String modelId, 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. @@ -54,8 +58,6 @@ static void predict(String projectId, String modelId, String filePath) { TextSnippet translatedContent = response.getPayload(0).getTranslation().getTranslatedContent(); System.out.println(String.format("Translated Content: %s", translatedContent.getContent())); - } catch (IOException e) { - e.printStackTrace(); } } } diff --git a/translate/automl/src/test/java/com/google/cloud/translate/automl/DatasetIT.java b/automl/cloud-client/src/test/java/com/example/automl/TranslateDatasetManagementIT.java similarity index 82% rename from translate/automl/src/test/java/com/google/cloud/translate/automl/DatasetIT.java rename to automl/cloud-client/src/test/java/com/example/automl/TranslateDatasetManagementIT.java index 2793fe81343..d7589a6cbde 100644 --- a/translate/automl/src/test/java/com/google/cloud/translate/automl/DatasetIT.java +++ b/automl/cloud-client/src/test/java/com/example/automl/TranslateDatasetManagementIT.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.google.cloud.translate.automl; +package com.example.automl; import static com.google.common.truth.Truth.assertThat; @@ -24,8 +24,10 @@ import com.google.cloud.storage.StorageOptions; import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.io.PrintStream; import java.util.UUID; +import java.util.concurrent.ExecutionException; import org.junit.After; import org.junit.Before; @@ -36,7 +38,7 @@ /** Tests for Automl translation datasets. */ @RunWith(JUnit4.class) @SuppressWarnings("checkstyle:abbreviationaswordinname") -public class DatasetIT { +public class TranslateDatasetManagementIT { private static final String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT"); private static final String BUCKET = "gs://" + PROJECT_ID + "-vcm"; @@ -58,7 +60,8 @@ public void tearDown() { } @Test - public void testCreateImportDeleteDataset() { + public void testCreateImportDeleteDataset() + throws IOException, ExecutionException, InterruptedException { // Create a random dataset name with a length of 32 characters (max allowed by AutoML) // To prevent name collisions when running tests in multiple java versions at once. // AutoML doesn't allow "-", but accepts "_" @@ -66,12 +69,11 @@ public void testCreateImportDeleteDataset() { String.format("test_%s", UUID.randomUUID().toString().replace("-", "_").substring(0, 26)); // Act - CreateDataset.createDataset(PROJECT_ID, datasetName); + TranslateCreateDataset.createDataset(PROJECT_ID, datasetName); // Assert String got = bout.toString(); datasetId = got.split("Dataset id: ")[1].split("\n")[0]; - assertThat(got).contains("Dataset id:"); // Act ImportDataset.importDataset(PROJECT_ID, datasetId, BUCKET + "/en-ja-short.csv"); @@ -89,7 +91,7 @@ public void testCreateImportDeleteDataset() { } @Test - public void testListDataset() { + public void testListDataset() throws IOException { // Act ListDatasets.listDatasets(PROJECT_ID); @@ -99,7 +101,7 @@ public void testListDataset() { } @Test - public void testGetDataset() { + public void testGetDataset() throws IOException { // Act GetDataset.getDataset(PROJECT_ID, getdatasetId); @@ -110,7 +112,7 @@ public void testGetDataset() { } @Test - public void testExportDataset() { + public void testExportDataset() throws IOException, ExecutionException, InterruptedException { ExportDataset.exportDataset(PROJECT_ID, getdatasetId, BUCKET + "/TEST_EXPORT_OUTPUT/"); Storage storage = StorageOptions.getDefaultInstance().getService(); @@ -121,16 +123,16 @@ public void testExportDataset() { Page blobs = storage.list( - PROJECT_ID + "-vcm", + PROJECT_ID + "-vcm", Storage.BlobListOption.currentDirectory(), Storage.BlobListOption.prefix("TEST_EXPORT_OUTPUT/")); for (Blob blob : blobs.iterateAll()) { Page fileBlobs = - storage.list( - PROJECT_ID + "-vcm", - Storage.BlobListOption.currentDirectory(), - Storage.BlobListOption.prefix(blob.getName())); + storage.list( + PROJECT_ID + "-vcm", + Storage.BlobListOption.currentDirectory(), + Storage.BlobListOption.prefix(blob.getName())); for (Blob fileBlob : fileBlobs.iterateAll()) { if (!fileBlob.isDirectory()) { fileBlob.delete(); diff --git a/translate/automl/src/test/java/com/google/cloud/translate/automl/ModelIT.java b/automl/cloud-client/src/test/java/com/example/automl/TranslateModelManagementIT.java similarity index 89% rename from translate/automl/src/test/java/com/google/cloud/translate/automl/ModelIT.java rename to automl/cloud-client/src/test/java/com/example/automl/TranslateModelManagementIT.java index fde5d9ab529..fe3ae302ac8 100644 --- a/translate/automl/src/test/java/com/google/cloud/translate/automl/ModelIT.java +++ b/automl/cloud-client/src/test/java/com/example/automl/TranslateModelManagementIT.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.google.cloud.translate.automl; +package com.example.automl; import static com.google.common.truth.Truth.assertThat; @@ -23,6 +23,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintStream; +import java.util.concurrent.ExecutionException; import org.junit.After; import org.junit.Before; @@ -32,7 +33,7 @@ /** Tests for Automl translation models. */ @RunWith(JUnit4.class) -public class ModelIT { +public class TranslateModelManagementIT { private static final String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT"); private static final String DATASET_ID = "TRL3946265060617537378"; private static final String MODEL_NAME = "translation_test_create_model"; @@ -54,7 +55,7 @@ public void tearDown() { } @Test - public void testModelApi() { + public void testModelApi() throws IOException { // LIST MODELS ListModels.listModels(PROJECT_ID); String got = bout.toString(); @@ -88,7 +89,7 @@ public void testModelApi() { } @Test - public void testOperationStatus() { + public void testOperationStatus() throws IOException { // Act ListOperationStatus.listOperationStatus(PROJECT_ID); @@ -107,8 +108,8 @@ public void testOperationStatus() { } @Test - public void testCreateModel() throws IOException { - CreateModel.createModel(PROJECT_ID, DATASET_ID, MODEL_NAME); + public void testCreateModel() throws IOException, ExecutionException, InterruptedException { + TranslateCreateModel.createModel(PROJECT_ID, DATASET_ID, MODEL_NAME); String got = bout.toString(); assertThat(got).contains("Training started"); @@ -119,4 +120,4 @@ public void testCreateModel() throws IOException { client.getOperationsClient().cancelOperation(operationId); } } -} \ No newline at end of file +} diff --git a/automl/cloud-client/src/test/java/com/example/automl/TranslatePredictIT.java b/automl/cloud-client/src/test/java/com/example/automl/TranslatePredictIT.java new file mode 100644 index 00000000000..e56ec6d6dec --- /dev/null +++ b/automl/cloud-client/src/test/java/com/example/automl/TranslatePredictIT.java @@ -0,0 +1,63 @@ +/* + * 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 com.example.automl; + +import static com.google.common.truth.Truth.assertThat; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintStream; +import java.util.concurrent.ExecutionException; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** Tests for translation "Predict" sample. */ +@RunWith(JUnit4.class) +@SuppressWarnings("checkstyle:abbreviationaswordinname") +public class TranslatePredictIT { + private static final String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT"); + private static final String modelId = "TRL2188848820815848149"; + private static final String filePath = "./resources/input.txt"; + private ByteArrayOutputStream bout; + private PrintStream out; + + @Before + public void setUp() { + bout = new ByteArrayOutputStream(); + out = new PrintStream(bout); + System.setOut(out); + } + + @After + public void tearDown() { + System.setOut(null); + } + + @Test + public void testPredict() throws IOException { + // Act + TranslatePredict.predict(PROJECT_ID, modelId, filePath); + + // Assert + String got = bout.toString(); + assertThat(got).contains("Translated Content"); + } +} diff --git a/translate/automl/src/test/java/com/google/cloud/translate/automl/PredictionApiIT.java b/translate/automl/src/test/java/com/google/cloud/translate/automl/PredictionApiIT.java index c07839041e4..78e47eb3e8e 100644 --- a/translate/automl/src/test/java/com/google/cloud/translate/automl/PredictionApiIT.java +++ b/translate/automl/src/test/java/com/google/cloud/translate/automl/PredictionApiIT.java @@ -59,14 +59,4 @@ public void testPredict() throws Exception { String got = bout.toString(); assertThat(got).contains("Translated Content"); } - - @Test - public void testPrediction() { - // Act - Prediction.predict(PROJECT_ID, modelId, filePath); - - // Assert - String got = bout.toString(); - assertThat(got).contains("Translated Content"); - } }