1 /* 2 * Copyright 2020 Google LLC 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 // Generated by the protocol buffer compiler. DO NOT EDIT! 17 // source: google/cloud/automl/v1beta1/io.proto 18 19 package com.google.cloud.automl.v1beta1; 20 21 /** 22 * 23 * 24 * <pre> 25 * Input configuration for ImportData Action. 26 * The format of input depends on dataset_metadata the Dataset into which 27 * the import is happening has. As input source the 28 * [gcs_source][google.cloud.automl.v1beta1.InputConfig.gcs_source] 29 * is expected, unless specified otherwise. Additionally any input .CSV file 30 * by itself must be 100MB or smaller, unless specified otherwise. 31 * If an "example" file (that is, image, video etc.) with identical content 32 * (even if it had different GCS_FILE_PATH) is mentioned multiple times, then 33 * its label, bounding boxes etc. are appended. The same file should be always 34 * provided with the same ML_USE and GCS_FILE_PATH, if it is not, then 35 * these values are nondeterministically selected from the given ones. 36 * The formats are represented in EBNF with commas being literal and with 37 * non-terminal symbols defined near the end of this comment. The formats are: 38 * * For Image Classification: 39 * CSV file(s) with each line in format: 40 * ML_USE,GCS_FILE_PATH,LABEL,LABEL,... 41 * GCS_FILE_PATH leads to image of up to 30MB in size. Supported 42 * extensions: .JPEG, .GIF, .PNG, .WEBP, .BMP, .TIFF, .ICO 43 * For MULTICLASS classification type, at most one LABEL is allowed 44 * per image. If an image has not yet been labeled, then it should be 45 * mentioned just once with no LABEL. 46 * Some sample rows: 47 * TRAIN,gs://folder/image1.jpg,daisy 48 * TEST,gs://folder/image2.jpg,dandelion,tulip,rose 49 * UNASSIGNED,gs://folder/image3.jpg,daisy 50 * UNASSIGNED,gs://folder/image4.jpg 51 * * For Image Object Detection: 52 * CSV file(s) with each line in format: 53 * ML_USE,GCS_FILE_PATH,(LABEL,BOUNDING_BOX | ,,,,,,,) 54 * GCS_FILE_PATH leads to image of up to 30MB in size. Supported 55 * extensions: .JPEG, .GIF, .PNG. 56 * Each image is assumed to be exhaustively labeled. The minimum 57 * allowed BOUNDING_BOX edge length is 0.01, and no more than 500 58 * BOUNDING_BOX-es per image are allowed (one BOUNDING_BOX is defined 59 * per line). If an image has not yet been labeled, then it should be 60 * mentioned just once with no LABEL and the ",,,,,,," in place of the 61 * BOUNDING_BOX. For images which are known to not contain any 62 * bounding boxes, they should be labelled explictly as 63 * "NEGATIVE_IMAGE", followed by ",,,,,,," in place of the 64 * BOUNDING_BOX. 65 * Sample rows: 66 * TRAIN,gs://folder/image1.png,car,0.1,0.1,,,0.3,0.3,, 67 * TRAIN,gs://folder/image1.png,bike,.7,.6,,,.8,.9,, 68 * UNASSIGNED,gs://folder/im2.png,car,0.1,0.1,0.2,0.1,0.2,0.3,0.1,0.3 69 * TEST,gs://folder/im3.png,,,,,,,,, 70 * TRAIN,gs://folder/im4.png,NEGATIVE_IMAGE,,,,,,,,, 71 * * For Video Classification: 72 * CSV file(s) with each line in format: 73 * ML_USE,GCS_FILE_PATH 74 * where ML_USE VALIDATE value should not be used. The GCS_FILE_PATH 75 * should lead to another .csv file which describes examples that have 76 * given ML_USE, using the following row format: 77 * GCS_FILE_PATH,(LABEL,TIME_SEGMENT_START,TIME_SEGMENT_END | ,,) 78 * Here GCS_FILE_PATH leads to a video of up to 50GB in size and up 79 * to 3h duration. Supported extensions: .MOV, .MPEG4, .MP4, .AVI. 80 * TIME_SEGMENT_START and TIME_SEGMENT_END must be within the 81 * length of the video, and end has to be after the start. Any segment 82 * of a video which has one or more labels on it, is considered a 83 * hard negative for all other labels. Any segment with no labels on 84 * it is considered to be unknown. If a whole video is unknown, then 85 * it shuold be mentioned just once with ",," in place of LABEL, 86 * TIME_SEGMENT_START,TIME_SEGMENT_END. 87 * Sample top level CSV file: 88 * TRAIN,gs://folder/train_videos.csv 89 * TEST,gs://folder/test_videos.csv 90 * UNASSIGNED,gs://folder/other_videos.csv 91 * Sample rows of a CSV file for a particular ML_USE: 92 * gs://folder/video1.avi,car,120,180.000021 93 * gs://folder/video1.avi,bike,150,180.000021 94 * gs://folder/vid2.avi,car,0,60.5 95 * gs://folder/vid3.avi,,, 96 * * For Video Object Tracking: 97 * CSV file(s) with each line in format: 98 * ML_USE,GCS_FILE_PATH 99 * where ML_USE VALIDATE value should not be used. The GCS_FILE_PATH 100 * should lead to another .csv file which describes examples that have 101 * given ML_USE, using one of the following row format: 102 * GCS_FILE_PATH,LABEL,[INSTANCE_ID],TIMESTAMP,BOUNDING_BOX 103 * or 104 * GCS_FILE_PATH,,,,,,,,,, 105 * Here GCS_FILE_PATH leads to a video of up to 50GB in size and up 106 * to 3h duration. Supported extensions: .MOV, .MPEG4, .MP4, .AVI. 107 * Providing INSTANCE_IDs can help to obtain a better model. When 108 * a specific labeled entity leaves the video frame, and shows up 109 * afterwards it is not required, albeit preferable, that the same 110 * INSTANCE_ID is given to it. 111 * TIMESTAMP must be within the length of the video, the 112 * BOUNDING_BOX is assumed to be drawn on the closest video's frame 113 * to the TIMESTAMP. Any mentioned by the TIMESTAMP frame is expected 114 * to be exhaustively labeled and no more than 500 BOUNDING_BOX-es per 115 * frame are allowed. If a whole video is unknown, then it should be 116 * mentioned just once with ",,,,,,,,,," in place of LABEL, 117 * [INSTANCE_ID],TIMESTAMP,BOUNDING_BOX. 118 * Sample top level CSV file: 119 * TRAIN,gs://folder/train_videos.csv 120 * TEST,gs://folder/test_videos.csv 121 * UNASSIGNED,gs://folder/other_videos.csv 122 * Seven sample rows of a CSV file for a particular ML_USE: 123 * gs://folder/video1.avi,car,1,12.10,0.8,0.8,0.9,0.8,0.9,0.9,0.8,0.9 124 * gs://folder/video1.avi,car,1,12.90,0.4,0.8,0.5,0.8,0.5,0.9,0.4,0.9 125 * gs://folder/video1.avi,car,2,12.10,.4,.2,.5,.2,.5,.3,.4,.3 126 * gs://folder/video1.avi,car,2,12.90,.8,.2,,,.9,.3,, 127 * gs://folder/video1.avi,bike,,12.50,.45,.45,,,.55,.55,, 128 * gs://folder/video2.avi,car,1,0,.1,.9,,,.9,.1,, 129 * gs://folder/video2.avi,,,,,,,,,,, 130 * * For Text Extraction: 131 * CSV file(s) with each line in format: 132 * ML_USE,GCS_FILE_PATH 133 * GCS_FILE_PATH leads to a .JSONL (that is, JSON Lines) file which 134 * either imports text in-line or as documents. Any given 135 * .JSONL file must be 100MB or smaller. 136 * The in-line .JSONL file contains, per line, a proto that wraps a 137 * TextSnippet proto (in json representation) followed by one or more 138 * AnnotationPayload protos (called annotations), which have 139 * display_name and text_extraction detail populated. The given text 140 * is expected to be annotated exhaustively, for example, if you look 141 * for animals and text contains "dolphin" that is not labeled, then 142 * "dolphin" is assumed to not be an animal. Any given text snippet 143 * content must be 10KB or smaller, and also be UTF-8 NFC encoded 144 * (ASCII already is). 145 * The document .JSONL file contains, per line, a proto that wraps a 146 * Document proto. The Document proto must have either document_text 147 * or input_config set. In document_text case, the Document proto may 148 * also contain the spatial information of the document, including 149 * layout, document dimension and page number. In input_config case, 150 * only PDF documents are supported now, and each document may be up 151 * to 2MB large. Currently, annotations on documents cannot be 152 * specified at import. 153 * Three sample CSV rows: 154 * TRAIN,gs://folder/file1.jsonl 155 * VALIDATE,gs://folder/file2.jsonl 156 * TEST,gs://folder/file3.jsonl 157 * Sample in-line JSON Lines file for entity extraction (presented here 158 * with artificial line breaks, but the only actual line break is 159 * denoted by \n).: 160 * { 161 * "document": { 162 * "document_text": {"content": "dog cat"} 163 * "layout": [ 164 * { 165 * "text_segment": { 166 * "start_offset": 0, 167 * "end_offset": 3, 168 * }, 169 * "page_number": 1, 170 * "bounding_poly": { 171 * "normalized_vertices": [ 172 * {"x": 0.1, "y": 0.1}, 173 * {"x": 0.1, "y": 0.3}, 174 * {"x": 0.3, "y": 0.3}, 175 * {"x": 0.3, "y": 0.1}, 176 * ], 177 * }, 178 * "text_segment_type": TOKEN, 179 * }, 180 * { 181 * "text_segment": { 182 * "start_offset": 4, 183 * "end_offset": 7, 184 * }, 185 * "page_number": 1, 186 * "bounding_poly": { 187 * "normalized_vertices": [ 188 * {"x": 0.4, "y": 0.1}, 189 * {"x": 0.4, "y": 0.3}, 190 * {"x": 0.8, "y": 0.3}, 191 * {"x": 0.8, "y": 0.1}, 192 * ], 193 * }, 194 * "text_segment_type": TOKEN, 195 * } 196 * ], 197 * "document_dimensions": { 198 * "width": 8.27, 199 * "height": 11.69, 200 * "unit": INCH, 201 * } 202 * "page_count": 1, 203 * }, 204 * "annotations": [ 205 * { 206 * "display_name": "animal", 207 * "text_extraction": {"text_segment": {"start_offset": 0, 208 * "end_offset": 3}} 209 * }, 210 * { 211 * "display_name": "animal", 212 * "text_extraction": {"text_segment": {"start_offset": 4, 213 * "end_offset": 7}} 214 * } 215 * ], 216 * }\n 217 * { 218 * "text_snippet": { 219 * "content": "This dog is good." 220 * }, 221 * "annotations": [ 222 * { 223 * "display_name": "animal", 224 * "text_extraction": { 225 * "text_segment": {"start_offset": 5, "end_offset": 8} 226 * } 227 * } 228 * ] 229 * } 230 * Sample document JSON Lines file (presented here with artificial line 231 * breaks, but the only actual line break is denoted by \n).: 232 * { 233 * "document": { 234 * "input_config": { 235 * "gcs_source": { "input_uris": [ "gs://folder/document1.pdf" ] 236 * } 237 * } 238 * } 239 * }\n 240 * { 241 * "document": { 242 * "input_config": { 243 * "gcs_source": { "input_uris": [ "gs://folder/document2.pdf" ] 244 * } 245 * } 246 * } 247 * } 248 * * For Text Classification: 249 * CSV file(s) with each line in format: 250 * ML_USE,(TEXT_SNIPPET | GCS_FILE_PATH),LABEL,LABEL,... 251 * TEXT_SNIPPET and GCS_FILE_PATH are distinguished by a pattern. If 252 * the column content is a valid gcs file path, i.e. prefixed by 253 * "gs://", it will be treated as a GCS_FILE_PATH, else if the content 254 * is enclosed within double quotes (""), it is 255 * treated as a TEXT_SNIPPET. In the GCS_FILE_PATH case, the path 256 * must lead to a .txt file with UTF-8 encoding, for example, 257 * "gs://folder/content.txt", and the content in it is extracted 258 * as a text snippet. In TEXT_SNIPPET case, the column content 259 * excluding quotes is treated as to be imported text snippet. In 260 * both cases, the text snippet/file size must be within 128kB. 261 * Maximum 100 unique labels are allowed per CSV row. 262 * Sample rows: 263 * TRAIN,"They have bad food and very rude",RudeService,BadFood 264 * TRAIN,gs://folder/content.txt,SlowService 265 * TEST,"Typically always bad service there.",RudeService 266 * VALIDATE,"Stomach ache to go.",BadFood 267 * * For Text Sentiment: 268 * CSV file(s) with each line in format: 269 * ML_USE,(TEXT_SNIPPET | GCS_FILE_PATH),SENTIMENT 270 * TEXT_SNIPPET and GCS_FILE_PATH are distinguished by a pattern. If 271 * the column content is a valid gcs file path, that is, prefixed by 272 * "gs://", it is treated as a GCS_FILE_PATH, otherwise it is treated 273 * as a TEXT_SNIPPET. In the GCS_FILE_PATH case, the path 274 * must lead to a .txt file with UTF-8 encoding, for example, 275 * "gs://folder/content.txt", and the content in it is extracted 276 * as a text snippet. In TEXT_SNIPPET case, the column content itself 277 * is treated as to be imported text snippet. In both cases, the 278 * text snippet must be up to 500 characters long. 279 * Sample rows: 280 * TRAIN,"@freewrytin this is way too good for your product",2 281 * TRAIN,"I need this product so bad",3 282 * TEST,"Thank you for this product.",4 283 * VALIDATE,gs://folder/content.txt,2 284 * * For Tables: 285 * Either 286 * [gcs_source][google.cloud.automl.v1beta1.InputConfig.gcs_source] or 287 * [bigquery_source][google.cloud.automl.v1beta1.InputConfig.bigquery_source] 288 * can be used. All inputs is concatenated into a single 289 * [primary_table][google.cloud.automl.v1beta1.TablesDatasetMetadata.primary_table_name] 290 * For gcs_source: 291 * CSV file(s), where the first row of the first file is the header, 292 * containing unique column names. If the first row of a subsequent 293 * file is the same as the header, then it is also treated as a 294 * header. All other rows contain values for the corresponding 295 * columns. 296 * Each .CSV file by itself must be 10GB or smaller, and their total 297 * size must be 100GB or smaller. 298 * First three sample rows of a CSV file: 299 * "Id","First Name","Last Name","Dob","Addresses" 300 * "1","John","Doe","1968-01-22","[{"status":"current","address":"123_First_Avenue","city":"Seattle","state":"WA","zip":"11111","numberOfYears":"1"},{"status":"previous","address":"456_Main_Street","city":"Portland","state":"OR","zip":"22222","numberOfYears":"5"}]" 301 * "2","Jane","Doe","1980-10-16","[{"status":"current","address":"789_Any_Avenue","city":"Albany","state":"NY","zip":"33333","numberOfYears":"2"},{"status":"previous","address":"321_Main_Street","city":"Hoboken","state":"NJ","zip":"44444","numberOfYears":"3"}]} 302 * For bigquery_source: 303 * An URI of a BigQuery table. The user data size of the BigQuery 304 * table must be 100GB or smaller. 305 * An imported table must have between 2 and 1,000 columns, inclusive, 306 * and between 1000 and 100,000,000 rows, inclusive. There are at most 5 307 * import data running in parallel. 308 * Definitions: 309 * ML_USE = "TRAIN" | "VALIDATE" | "TEST" | "UNASSIGNED" 310 * Describes how the given example (file) should be used for model 311 * training. "UNASSIGNED" can be used when user has no preference. 312 * GCS_FILE_PATH = A path to file on GCS, e.g. "gs://folder/image1.png". 313 * LABEL = A display name of an object on an image, video etc., e.g. "dog". 314 * Must be up to 32 characters long and can consist only of ASCII 315 * Latin letters A-Z and a-z, underscores(_), and ASCII digits 0-9. 316 * For each label an AnnotationSpec is created which display_name 317 * becomes the label; AnnotationSpecs are given back in predictions. 318 * INSTANCE_ID = A positive integer that identifies a specific instance of a 319 * labeled entity on an example. Used e.g. to track two cars on 320 * a video while being able to tell apart which one is which. 321 * BOUNDING_BOX = VERTEX,VERTEX,VERTEX,VERTEX | VERTEX,,,VERTEX,, 322 * A rectangle parallel to the frame of the example (image, 323 * video). If 4 vertices are given they are connected by edges 324 * in the order provided, if 2 are given they are recognized 325 * as diagonally opposite vertices of the rectangle. 326 * VERTEX = COORDINATE,COORDINATE 327 * First coordinate is horizontal (x), the second is vertical (y). 328 * COORDINATE = A float in 0 to 1 range, relative to total length of 329 * image or video in given dimension. For fractions the 330 * leading non-decimal 0 can be omitted (i.e. 0.3 = .3). 331 * Point 0,0 is in top left. 332 * TIME_SEGMENT_START = TIME_OFFSET 333 * Expresses a beginning, inclusive, of a time segment 334 * within an example that has a time dimension 335 * (e.g. video). 336 * TIME_SEGMENT_END = TIME_OFFSET 337 * Expresses an end, exclusive, of a time segment within 338 * an example that has a time dimension (e.g. video). 339 * TIME_OFFSET = A number of seconds as measured from the start of an 340 * example (e.g. video). Fractions are allowed, up to a 341 * microsecond precision. "inf" is allowed, and it means the end 342 * of the example. 343 * TEXT_SNIPPET = A content of a text snippet, UTF-8 encoded, enclosed within 344 * double quotes (""). 345 * SENTIMENT = An integer between 0 and 346 * Dataset.text_sentiment_dataset_metadata.sentiment_max 347 * (inclusive). Describes the ordinal of the sentiment - higher 348 * value means a more positive sentiment. All the values are 349 * completely relative, i.e. neither 0 needs to mean a negative or 350 * neutral sentiment nor sentiment_max needs to mean a positive one 351 * - it is just required that 0 is the least positive sentiment 352 * in the data, and sentiment_max is the most positive one. 353 * The SENTIMENT shouldn't be confused with "score" or "magnitude" 354 * from the previous Natural Language Sentiment Analysis API. 355 * All SENTIMENT values between 0 and sentiment_max must be 356 * represented in the imported data. On prediction the same 0 to 357 * sentiment_max range will be used. The difference between 358 * neighboring sentiment values needs not to be uniform, e.g. 1 and 359 * 2 may be similar whereas the difference between 2 and 3 may be 360 * huge. 361 * Errors: 362 * If any of the provided CSV files can't be parsed or if more than certain 363 * percent of CSV rows cannot be processed then the operation fails and 364 * nothing is imported. Regardless of overall success or failure the per-row 365 * failures, up to a certain count cap, is listed in 366 * Operation.metadata.partial_failures. 367 * </pre> 368 * 369 * Protobuf type {@code google.cloud.automl.v1beta1.InputConfig} 370 */ 371 public final class InputConfig extends com.google.protobuf.GeneratedMessageV3 372 implements 373 // @@protoc_insertion_point(message_implements:google.cloud.automl.v1beta1.InputConfig) 374 InputConfigOrBuilder { 375 private static final long serialVersionUID = 0L; 376 // Use InputConfig.newBuilder() to construct. InputConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder)377 private InputConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) { 378 super(builder); 379 } 380 InputConfig()381 private InputConfig() {} 382 383 @java.lang.Override 384 @SuppressWarnings({"unused"}) newInstance(UnusedPrivateParameter unused)385 protected java.lang.Object newInstance(UnusedPrivateParameter unused) { 386 return new InputConfig(); 387 } 388 389 @java.lang.Override getUnknownFields()390 public final com.google.protobuf.UnknownFieldSet getUnknownFields() { 391 return this.unknownFields; 392 } 393 getDescriptor()394 public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { 395 return com.google.cloud.automl.v1beta1.Io 396 .internal_static_google_cloud_automl_v1beta1_InputConfig_descriptor; 397 } 398 399 @SuppressWarnings({"rawtypes"}) 400 @java.lang.Override internalGetMapField(int number)401 protected com.google.protobuf.MapField internalGetMapField(int number) { 402 switch (number) { 403 case 2: 404 return internalGetParams(); 405 default: 406 throw new RuntimeException("Invalid map field number: " + number); 407 } 408 } 409 410 @java.lang.Override 411 protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()412 internalGetFieldAccessorTable() { 413 return com.google.cloud.automl.v1beta1.Io 414 .internal_static_google_cloud_automl_v1beta1_InputConfig_fieldAccessorTable 415 .ensureFieldAccessorsInitialized( 416 com.google.cloud.automl.v1beta1.InputConfig.class, 417 com.google.cloud.automl.v1beta1.InputConfig.Builder.class); 418 } 419 420 private int sourceCase_ = 0; 421 private java.lang.Object source_; 422 423 public enum SourceCase 424 implements 425 com.google.protobuf.Internal.EnumLite, 426 com.google.protobuf.AbstractMessage.InternalOneOfEnum { 427 GCS_SOURCE(1), 428 BIGQUERY_SOURCE(3), 429 SOURCE_NOT_SET(0); 430 private final int value; 431 SourceCase(int value)432 private SourceCase(int value) { 433 this.value = value; 434 } 435 /** 436 * @param value The number of the enum to look for. 437 * @return The enum associated with the given number. 438 * @deprecated Use {@link #forNumber(int)} instead. 439 */ 440 @java.lang.Deprecated valueOf(int value)441 public static SourceCase valueOf(int value) { 442 return forNumber(value); 443 } 444 forNumber(int value)445 public static SourceCase forNumber(int value) { 446 switch (value) { 447 case 1: 448 return GCS_SOURCE; 449 case 3: 450 return BIGQUERY_SOURCE; 451 case 0: 452 return SOURCE_NOT_SET; 453 default: 454 return null; 455 } 456 } 457 getNumber()458 public int getNumber() { 459 return this.value; 460 } 461 }; 462 getSourceCase()463 public SourceCase getSourceCase() { 464 return SourceCase.forNumber(sourceCase_); 465 } 466 467 public static final int GCS_SOURCE_FIELD_NUMBER = 1; 468 /** 469 * 470 * 471 * <pre> 472 * The Google Cloud Storage location for the input content. 473 * In ImportData, the gcs_source points to a csv with structure described in 474 * the comment. 475 * </pre> 476 * 477 * <code>.google.cloud.automl.v1beta1.GcsSource gcs_source = 1;</code> 478 * 479 * @return Whether the gcsSource field is set. 480 */ 481 @java.lang.Override hasGcsSource()482 public boolean hasGcsSource() { 483 return sourceCase_ == 1; 484 } 485 /** 486 * 487 * 488 * <pre> 489 * The Google Cloud Storage location for the input content. 490 * In ImportData, the gcs_source points to a csv with structure described in 491 * the comment. 492 * </pre> 493 * 494 * <code>.google.cloud.automl.v1beta1.GcsSource gcs_source = 1;</code> 495 * 496 * @return The gcsSource. 497 */ 498 @java.lang.Override getGcsSource()499 public com.google.cloud.automl.v1beta1.GcsSource getGcsSource() { 500 if (sourceCase_ == 1) { 501 return (com.google.cloud.automl.v1beta1.GcsSource) source_; 502 } 503 return com.google.cloud.automl.v1beta1.GcsSource.getDefaultInstance(); 504 } 505 /** 506 * 507 * 508 * <pre> 509 * The Google Cloud Storage location for the input content. 510 * In ImportData, the gcs_source points to a csv with structure described in 511 * the comment. 512 * </pre> 513 * 514 * <code>.google.cloud.automl.v1beta1.GcsSource gcs_source = 1;</code> 515 */ 516 @java.lang.Override getGcsSourceOrBuilder()517 public com.google.cloud.automl.v1beta1.GcsSourceOrBuilder getGcsSourceOrBuilder() { 518 if (sourceCase_ == 1) { 519 return (com.google.cloud.automl.v1beta1.GcsSource) source_; 520 } 521 return com.google.cloud.automl.v1beta1.GcsSource.getDefaultInstance(); 522 } 523 524 public static final int BIGQUERY_SOURCE_FIELD_NUMBER = 3; 525 /** 526 * 527 * 528 * <pre> 529 * The BigQuery location for the input content. 530 * </pre> 531 * 532 * <code>.google.cloud.automl.v1beta1.BigQuerySource bigquery_source = 3;</code> 533 * 534 * @return Whether the bigquerySource field is set. 535 */ 536 @java.lang.Override hasBigquerySource()537 public boolean hasBigquerySource() { 538 return sourceCase_ == 3; 539 } 540 /** 541 * 542 * 543 * <pre> 544 * The BigQuery location for the input content. 545 * </pre> 546 * 547 * <code>.google.cloud.automl.v1beta1.BigQuerySource bigquery_source = 3;</code> 548 * 549 * @return The bigquerySource. 550 */ 551 @java.lang.Override getBigquerySource()552 public com.google.cloud.automl.v1beta1.BigQuerySource getBigquerySource() { 553 if (sourceCase_ == 3) { 554 return (com.google.cloud.automl.v1beta1.BigQuerySource) source_; 555 } 556 return com.google.cloud.automl.v1beta1.BigQuerySource.getDefaultInstance(); 557 } 558 /** 559 * 560 * 561 * <pre> 562 * The BigQuery location for the input content. 563 * </pre> 564 * 565 * <code>.google.cloud.automl.v1beta1.BigQuerySource bigquery_source = 3;</code> 566 */ 567 @java.lang.Override getBigquerySourceOrBuilder()568 public com.google.cloud.automl.v1beta1.BigQuerySourceOrBuilder getBigquerySourceOrBuilder() { 569 if (sourceCase_ == 3) { 570 return (com.google.cloud.automl.v1beta1.BigQuerySource) source_; 571 } 572 return com.google.cloud.automl.v1beta1.BigQuerySource.getDefaultInstance(); 573 } 574 575 public static final int PARAMS_FIELD_NUMBER = 2; 576 577 private static final class ParamsDefaultEntryHolder { 578 static final com.google.protobuf.MapEntry<java.lang.String, java.lang.String> defaultEntry = 579 com.google.protobuf.MapEntry.<java.lang.String, java.lang.String>newDefaultInstance( 580 com.google.cloud.automl.v1beta1.Io 581 .internal_static_google_cloud_automl_v1beta1_InputConfig_ParamsEntry_descriptor, 582 com.google.protobuf.WireFormat.FieldType.STRING, 583 "", 584 com.google.protobuf.WireFormat.FieldType.STRING, 585 ""); 586 } 587 588 @SuppressWarnings("serial") 589 private com.google.protobuf.MapField<java.lang.String, java.lang.String> params_; 590 internalGetParams()591 private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetParams() { 592 if (params_ == null) { 593 return com.google.protobuf.MapField.emptyMapField(ParamsDefaultEntryHolder.defaultEntry); 594 } 595 return params_; 596 } 597 getParamsCount()598 public int getParamsCount() { 599 return internalGetParams().getMap().size(); 600 } 601 /** 602 * 603 * 604 * <pre> 605 * Additional domain-specific parameters describing the semantic of the 606 * imported data, any string must be up to 25000 607 * characters long. 608 * * For Tables: 609 * `schema_inference_version` - (integer) Required. The version of the 610 * algorithm that should be used for the initial inference of the 611 * schema (columns' DataTypes) of the table the data is being imported 612 * into. Allowed values: "1". 613 * </pre> 614 * 615 * <code>map<string, string> params = 2;</code> 616 */ 617 @java.lang.Override containsParams(java.lang.String key)618 public boolean containsParams(java.lang.String key) { 619 if (key == null) { 620 throw new NullPointerException("map key"); 621 } 622 return internalGetParams().getMap().containsKey(key); 623 } 624 /** Use {@link #getParamsMap()} instead. */ 625 @java.lang.Override 626 @java.lang.Deprecated getParams()627 public java.util.Map<java.lang.String, java.lang.String> getParams() { 628 return getParamsMap(); 629 } 630 /** 631 * 632 * 633 * <pre> 634 * Additional domain-specific parameters describing the semantic of the 635 * imported data, any string must be up to 25000 636 * characters long. 637 * * For Tables: 638 * `schema_inference_version` - (integer) Required. The version of the 639 * algorithm that should be used for the initial inference of the 640 * schema (columns' DataTypes) of the table the data is being imported 641 * into. Allowed values: "1". 642 * </pre> 643 * 644 * <code>map<string, string> params = 2;</code> 645 */ 646 @java.lang.Override getParamsMap()647 public java.util.Map<java.lang.String, java.lang.String> getParamsMap() { 648 return internalGetParams().getMap(); 649 } 650 /** 651 * 652 * 653 * <pre> 654 * Additional domain-specific parameters describing the semantic of the 655 * imported data, any string must be up to 25000 656 * characters long. 657 * * For Tables: 658 * `schema_inference_version` - (integer) Required. The version of the 659 * algorithm that should be used for the initial inference of the 660 * schema (columns' DataTypes) of the table the data is being imported 661 * into. Allowed values: "1". 662 * </pre> 663 * 664 * <code>map<string, string> params = 2;</code> 665 */ 666 @java.lang.Override getParamsOrDefault( java.lang.String key, java.lang.String defaultValue)667 public /* nullable */ java.lang.String getParamsOrDefault( 668 java.lang.String key, 669 /* nullable */ 670 java.lang.String defaultValue) { 671 if (key == null) { 672 throw new NullPointerException("map key"); 673 } 674 java.util.Map<java.lang.String, java.lang.String> map = internalGetParams().getMap(); 675 return map.containsKey(key) ? map.get(key) : defaultValue; 676 } 677 /** 678 * 679 * 680 * <pre> 681 * Additional domain-specific parameters describing the semantic of the 682 * imported data, any string must be up to 25000 683 * characters long. 684 * * For Tables: 685 * `schema_inference_version` - (integer) Required. The version of the 686 * algorithm that should be used for the initial inference of the 687 * schema (columns' DataTypes) of the table the data is being imported 688 * into. Allowed values: "1". 689 * </pre> 690 * 691 * <code>map<string, string> params = 2;</code> 692 */ 693 @java.lang.Override getParamsOrThrow(java.lang.String key)694 public java.lang.String getParamsOrThrow(java.lang.String key) { 695 if (key == null) { 696 throw new NullPointerException("map key"); 697 } 698 java.util.Map<java.lang.String, java.lang.String> map = internalGetParams().getMap(); 699 if (!map.containsKey(key)) { 700 throw new java.lang.IllegalArgumentException(); 701 } 702 return map.get(key); 703 } 704 705 private byte memoizedIsInitialized = -1; 706 707 @java.lang.Override isInitialized()708 public final boolean isInitialized() { 709 byte isInitialized = memoizedIsInitialized; 710 if (isInitialized == 1) return true; 711 if (isInitialized == 0) return false; 712 713 memoizedIsInitialized = 1; 714 return true; 715 } 716 717 @java.lang.Override writeTo(com.google.protobuf.CodedOutputStream output)718 public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { 719 if (sourceCase_ == 1) { 720 output.writeMessage(1, (com.google.cloud.automl.v1beta1.GcsSource) source_); 721 } 722 com.google.protobuf.GeneratedMessageV3.serializeStringMapTo( 723 output, internalGetParams(), ParamsDefaultEntryHolder.defaultEntry, 2); 724 if (sourceCase_ == 3) { 725 output.writeMessage(3, (com.google.cloud.automl.v1beta1.BigQuerySource) source_); 726 } 727 getUnknownFields().writeTo(output); 728 } 729 730 @java.lang.Override getSerializedSize()731 public int getSerializedSize() { 732 int size = memoizedSize; 733 if (size != -1) return size; 734 735 size = 0; 736 if (sourceCase_ == 1) { 737 size += 738 com.google.protobuf.CodedOutputStream.computeMessageSize( 739 1, (com.google.cloud.automl.v1beta1.GcsSource) source_); 740 } 741 for (java.util.Map.Entry<java.lang.String, java.lang.String> entry : 742 internalGetParams().getMap().entrySet()) { 743 com.google.protobuf.MapEntry<java.lang.String, java.lang.String> params__ = 744 ParamsDefaultEntryHolder.defaultEntry 745 .newBuilderForType() 746 .setKey(entry.getKey()) 747 .setValue(entry.getValue()) 748 .build(); 749 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, params__); 750 } 751 if (sourceCase_ == 3) { 752 size += 753 com.google.protobuf.CodedOutputStream.computeMessageSize( 754 3, (com.google.cloud.automl.v1beta1.BigQuerySource) source_); 755 } 756 size += getUnknownFields().getSerializedSize(); 757 memoizedSize = size; 758 return size; 759 } 760 761 @java.lang.Override equals(final java.lang.Object obj)762 public boolean equals(final java.lang.Object obj) { 763 if (obj == this) { 764 return true; 765 } 766 if (!(obj instanceof com.google.cloud.automl.v1beta1.InputConfig)) { 767 return super.equals(obj); 768 } 769 com.google.cloud.automl.v1beta1.InputConfig other = 770 (com.google.cloud.automl.v1beta1.InputConfig) obj; 771 772 if (!internalGetParams().equals(other.internalGetParams())) return false; 773 if (!getSourceCase().equals(other.getSourceCase())) return false; 774 switch (sourceCase_) { 775 case 1: 776 if (!getGcsSource().equals(other.getGcsSource())) return false; 777 break; 778 case 3: 779 if (!getBigquerySource().equals(other.getBigquerySource())) return false; 780 break; 781 case 0: 782 default: 783 } 784 if (!getUnknownFields().equals(other.getUnknownFields())) return false; 785 return true; 786 } 787 788 @java.lang.Override hashCode()789 public int hashCode() { 790 if (memoizedHashCode != 0) { 791 return memoizedHashCode; 792 } 793 int hash = 41; 794 hash = (19 * hash) + getDescriptor().hashCode(); 795 if (!internalGetParams().getMap().isEmpty()) { 796 hash = (37 * hash) + PARAMS_FIELD_NUMBER; 797 hash = (53 * hash) + internalGetParams().hashCode(); 798 } 799 switch (sourceCase_) { 800 case 1: 801 hash = (37 * hash) + GCS_SOURCE_FIELD_NUMBER; 802 hash = (53 * hash) + getGcsSource().hashCode(); 803 break; 804 case 3: 805 hash = (37 * hash) + BIGQUERY_SOURCE_FIELD_NUMBER; 806 hash = (53 * hash) + getBigquerySource().hashCode(); 807 break; 808 case 0: 809 default: 810 } 811 hash = (29 * hash) + getUnknownFields().hashCode(); 812 memoizedHashCode = hash; 813 return hash; 814 } 815 parseFrom(java.nio.ByteBuffer data)816 public static com.google.cloud.automl.v1beta1.InputConfig parseFrom(java.nio.ByteBuffer data) 817 throws com.google.protobuf.InvalidProtocolBufferException { 818 return PARSER.parseFrom(data); 819 } 820 parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)821 public static com.google.cloud.automl.v1beta1.InputConfig parseFrom( 822 java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) 823 throws com.google.protobuf.InvalidProtocolBufferException { 824 return PARSER.parseFrom(data, extensionRegistry); 825 } 826 parseFrom( com.google.protobuf.ByteString data)827 public static com.google.cloud.automl.v1beta1.InputConfig parseFrom( 828 com.google.protobuf.ByteString data) 829 throws com.google.protobuf.InvalidProtocolBufferException { 830 return PARSER.parseFrom(data); 831 } 832 parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)833 public static com.google.cloud.automl.v1beta1.InputConfig parseFrom( 834 com.google.protobuf.ByteString data, 835 com.google.protobuf.ExtensionRegistryLite extensionRegistry) 836 throws com.google.protobuf.InvalidProtocolBufferException { 837 return PARSER.parseFrom(data, extensionRegistry); 838 } 839 parseFrom(byte[] data)840 public static com.google.cloud.automl.v1beta1.InputConfig parseFrom(byte[] data) 841 throws com.google.protobuf.InvalidProtocolBufferException { 842 return PARSER.parseFrom(data); 843 } 844 parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)845 public static com.google.cloud.automl.v1beta1.InputConfig parseFrom( 846 byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) 847 throws com.google.protobuf.InvalidProtocolBufferException { 848 return PARSER.parseFrom(data, extensionRegistry); 849 } 850 parseFrom(java.io.InputStream input)851 public static com.google.cloud.automl.v1beta1.InputConfig parseFrom(java.io.InputStream input) 852 throws java.io.IOException { 853 return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); 854 } 855 parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)856 public static com.google.cloud.automl.v1beta1.InputConfig parseFrom( 857 java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) 858 throws java.io.IOException { 859 return com.google.protobuf.GeneratedMessageV3.parseWithIOException( 860 PARSER, input, extensionRegistry); 861 } 862 parseDelimitedFrom( java.io.InputStream input)863 public static com.google.cloud.automl.v1beta1.InputConfig parseDelimitedFrom( 864 java.io.InputStream input) throws java.io.IOException { 865 return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); 866 } 867 parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)868 public static com.google.cloud.automl.v1beta1.InputConfig parseDelimitedFrom( 869 java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) 870 throws java.io.IOException { 871 return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( 872 PARSER, input, extensionRegistry); 873 } 874 parseFrom( com.google.protobuf.CodedInputStream input)875 public static com.google.cloud.automl.v1beta1.InputConfig parseFrom( 876 com.google.protobuf.CodedInputStream input) throws java.io.IOException { 877 return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); 878 } 879 parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)880 public static com.google.cloud.automl.v1beta1.InputConfig parseFrom( 881 com.google.protobuf.CodedInputStream input, 882 com.google.protobuf.ExtensionRegistryLite extensionRegistry) 883 throws java.io.IOException { 884 return com.google.protobuf.GeneratedMessageV3.parseWithIOException( 885 PARSER, input, extensionRegistry); 886 } 887 888 @java.lang.Override newBuilderForType()889 public Builder newBuilderForType() { 890 return newBuilder(); 891 } 892 newBuilder()893 public static Builder newBuilder() { 894 return DEFAULT_INSTANCE.toBuilder(); 895 } 896 newBuilder(com.google.cloud.automl.v1beta1.InputConfig prototype)897 public static Builder newBuilder(com.google.cloud.automl.v1beta1.InputConfig prototype) { 898 return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); 899 } 900 901 @java.lang.Override toBuilder()902 public Builder toBuilder() { 903 return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); 904 } 905 906 @java.lang.Override newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)907 protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { 908 Builder builder = new Builder(parent); 909 return builder; 910 } 911 /** 912 * 913 * 914 * <pre> 915 * Input configuration for ImportData Action. 916 * The format of input depends on dataset_metadata the Dataset into which 917 * the import is happening has. As input source the 918 * [gcs_source][google.cloud.automl.v1beta1.InputConfig.gcs_source] 919 * is expected, unless specified otherwise. Additionally any input .CSV file 920 * by itself must be 100MB or smaller, unless specified otherwise. 921 * If an "example" file (that is, image, video etc.) with identical content 922 * (even if it had different GCS_FILE_PATH) is mentioned multiple times, then 923 * its label, bounding boxes etc. are appended. The same file should be always 924 * provided with the same ML_USE and GCS_FILE_PATH, if it is not, then 925 * these values are nondeterministically selected from the given ones. 926 * The formats are represented in EBNF with commas being literal and with 927 * non-terminal symbols defined near the end of this comment. The formats are: 928 * * For Image Classification: 929 * CSV file(s) with each line in format: 930 * ML_USE,GCS_FILE_PATH,LABEL,LABEL,... 931 * GCS_FILE_PATH leads to image of up to 30MB in size. Supported 932 * extensions: .JPEG, .GIF, .PNG, .WEBP, .BMP, .TIFF, .ICO 933 * For MULTICLASS classification type, at most one LABEL is allowed 934 * per image. If an image has not yet been labeled, then it should be 935 * mentioned just once with no LABEL. 936 * Some sample rows: 937 * TRAIN,gs://folder/image1.jpg,daisy 938 * TEST,gs://folder/image2.jpg,dandelion,tulip,rose 939 * UNASSIGNED,gs://folder/image3.jpg,daisy 940 * UNASSIGNED,gs://folder/image4.jpg 941 * * For Image Object Detection: 942 * CSV file(s) with each line in format: 943 * ML_USE,GCS_FILE_PATH,(LABEL,BOUNDING_BOX | ,,,,,,,) 944 * GCS_FILE_PATH leads to image of up to 30MB in size. Supported 945 * extensions: .JPEG, .GIF, .PNG. 946 * Each image is assumed to be exhaustively labeled. The minimum 947 * allowed BOUNDING_BOX edge length is 0.01, and no more than 500 948 * BOUNDING_BOX-es per image are allowed (one BOUNDING_BOX is defined 949 * per line). If an image has not yet been labeled, then it should be 950 * mentioned just once with no LABEL and the ",,,,,,," in place of the 951 * BOUNDING_BOX. For images which are known to not contain any 952 * bounding boxes, they should be labelled explictly as 953 * "NEGATIVE_IMAGE", followed by ",,,,,,," in place of the 954 * BOUNDING_BOX. 955 * Sample rows: 956 * TRAIN,gs://folder/image1.png,car,0.1,0.1,,,0.3,0.3,, 957 * TRAIN,gs://folder/image1.png,bike,.7,.6,,,.8,.9,, 958 * UNASSIGNED,gs://folder/im2.png,car,0.1,0.1,0.2,0.1,0.2,0.3,0.1,0.3 959 * TEST,gs://folder/im3.png,,,,,,,,, 960 * TRAIN,gs://folder/im4.png,NEGATIVE_IMAGE,,,,,,,,, 961 * * For Video Classification: 962 * CSV file(s) with each line in format: 963 * ML_USE,GCS_FILE_PATH 964 * where ML_USE VALIDATE value should not be used. The GCS_FILE_PATH 965 * should lead to another .csv file which describes examples that have 966 * given ML_USE, using the following row format: 967 * GCS_FILE_PATH,(LABEL,TIME_SEGMENT_START,TIME_SEGMENT_END | ,,) 968 * Here GCS_FILE_PATH leads to a video of up to 50GB in size and up 969 * to 3h duration. Supported extensions: .MOV, .MPEG4, .MP4, .AVI. 970 * TIME_SEGMENT_START and TIME_SEGMENT_END must be within the 971 * length of the video, and end has to be after the start. Any segment 972 * of a video which has one or more labels on it, is considered a 973 * hard negative for all other labels. Any segment with no labels on 974 * it is considered to be unknown. If a whole video is unknown, then 975 * it shuold be mentioned just once with ",," in place of LABEL, 976 * TIME_SEGMENT_START,TIME_SEGMENT_END. 977 * Sample top level CSV file: 978 * TRAIN,gs://folder/train_videos.csv 979 * TEST,gs://folder/test_videos.csv 980 * UNASSIGNED,gs://folder/other_videos.csv 981 * Sample rows of a CSV file for a particular ML_USE: 982 * gs://folder/video1.avi,car,120,180.000021 983 * gs://folder/video1.avi,bike,150,180.000021 984 * gs://folder/vid2.avi,car,0,60.5 985 * gs://folder/vid3.avi,,, 986 * * For Video Object Tracking: 987 * CSV file(s) with each line in format: 988 * ML_USE,GCS_FILE_PATH 989 * where ML_USE VALIDATE value should not be used. The GCS_FILE_PATH 990 * should lead to another .csv file which describes examples that have 991 * given ML_USE, using one of the following row format: 992 * GCS_FILE_PATH,LABEL,[INSTANCE_ID],TIMESTAMP,BOUNDING_BOX 993 * or 994 * GCS_FILE_PATH,,,,,,,,,, 995 * Here GCS_FILE_PATH leads to a video of up to 50GB in size and up 996 * to 3h duration. Supported extensions: .MOV, .MPEG4, .MP4, .AVI. 997 * Providing INSTANCE_IDs can help to obtain a better model. When 998 * a specific labeled entity leaves the video frame, and shows up 999 * afterwards it is not required, albeit preferable, that the same 1000 * INSTANCE_ID is given to it. 1001 * TIMESTAMP must be within the length of the video, the 1002 * BOUNDING_BOX is assumed to be drawn on the closest video's frame 1003 * to the TIMESTAMP. Any mentioned by the TIMESTAMP frame is expected 1004 * to be exhaustively labeled and no more than 500 BOUNDING_BOX-es per 1005 * frame are allowed. If a whole video is unknown, then it should be 1006 * mentioned just once with ",,,,,,,,,," in place of LABEL, 1007 * [INSTANCE_ID],TIMESTAMP,BOUNDING_BOX. 1008 * Sample top level CSV file: 1009 * TRAIN,gs://folder/train_videos.csv 1010 * TEST,gs://folder/test_videos.csv 1011 * UNASSIGNED,gs://folder/other_videos.csv 1012 * Seven sample rows of a CSV file for a particular ML_USE: 1013 * gs://folder/video1.avi,car,1,12.10,0.8,0.8,0.9,0.8,0.9,0.9,0.8,0.9 1014 * gs://folder/video1.avi,car,1,12.90,0.4,0.8,0.5,0.8,0.5,0.9,0.4,0.9 1015 * gs://folder/video1.avi,car,2,12.10,.4,.2,.5,.2,.5,.3,.4,.3 1016 * gs://folder/video1.avi,car,2,12.90,.8,.2,,,.9,.3,, 1017 * gs://folder/video1.avi,bike,,12.50,.45,.45,,,.55,.55,, 1018 * gs://folder/video2.avi,car,1,0,.1,.9,,,.9,.1,, 1019 * gs://folder/video2.avi,,,,,,,,,,, 1020 * * For Text Extraction: 1021 * CSV file(s) with each line in format: 1022 * ML_USE,GCS_FILE_PATH 1023 * GCS_FILE_PATH leads to a .JSONL (that is, JSON Lines) file which 1024 * either imports text in-line or as documents. Any given 1025 * .JSONL file must be 100MB or smaller. 1026 * The in-line .JSONL file contains, per line, a proto that wraps a 1027 * TextSnippet proto (in json representation) followed by one or more 1028 * AnnotationPayload protos (called annotations), which have 1029 * display_name and text_extraction detail populated. The given text 1030 * is expected to be annotated exhaustively, for example, if you look 1031 * for animals and text contains "dolphin" that is not labeled, then 1032 * "dolphin" is assumed to not be an animal. Any given text snippet 1033 * content must be 10KB or smaller, and also be UTF-8 NFC encoded 1034 * (ASCII already is). 1035 * The document .JSONL file contains, per line, a proto that wraps a 1036 * Document proto. The Document proto must have either document_text 1037 * or input_config set. In document_text case, the Document proto may 1038 * also contain the spatial information of the document, including 1039 * layout, document dimension and page number. In input_config case, 1040 * only PDF documents are supported now, and each document may be up 1041 * to 2MB large. Currently, annotations on documents cannot be 1042 * specified at import. 1043 * Three sample CSV rows: 1044 * TRAIN,gs://folder/file1.jsonl 1045 * VALIDATE,gs://folder/file2.jsonl 1046 * TEST,gs://folder/file3.jsonl 1047 * Sample in-line JSON Lines file for entity extraction (presented here 1048 * with artificial line breaks, but the only actual line break is 1049 * denoted by \n).: 1050 * { 1051 * "document": { 1052 * "document_text": {"content": "dog cat"} 1053 * "layout": [ 1054 * { 1055 * "text_segment": { 1056 * "start_offset": 0, 1057 * "end_offset": 3, 1058 * }, 1059 * "page_number": 1, 1060 * "bounding_poly": { 1061 * "normalized_vertices": [ 1062 * {"x": 0.1, "y": 0.1}, 1063 * {"x": 0.1, "y": 0.3}, 1064 * {"x": 0.3, "y": 0.3}, 1065 * {"x": 0.3, "y": 0.1}, 1066 * ], 1067 * }, 1068 * "text_segment_type": TOKEN, 1069 * }, 1070 * { 1071 * "text_segment": { 1072 * "start_offset": 4, 1073 * "end_offset": 7, 1074 * }, 1075 * "page_number": 1, 1076 * "bounding_poly": { 1077 * "normalized_vertices": [ 1078 * {"x": 0.4, "y": 0.1}, 1079 * {"x": 0.4, "y": 0.3}, 1080 * {"x": 0.8, "y": 0.3}, 1081 * {"x": 0.8, "y": 0.1}, 1082 * ], 1083 * }, 1084 * "text_segment_type": TOKEN, 1085 * } 1086 * ], 1087 * "document_dimensions": { 1088 * "width": 8.27, 1089 * "height": 11.69, 1090 * "unit": INCH, 1091 * } 1092 * "page_count": 1, 1093 * }, 1094 * "annotations": [ 1095 * { 1096 * "display_name": "animal", 1097 * "text_extraction": {"text_segment": {"start_offset": 0, 1098 * "end_offset": 3}} 1099 * }, 1100 * { 1101 * "display_name": "animal", 1102 * "text_extraction": {"text_segment": {"start_offset": 4, 1103 * "end_offset": 7}} 1104 * } 1105 * ], 1106 * }\n 1107 * { 1108 * "text_snippet": { 1109 * "content": "This dog is good." 1110 * }, 1111 * "annotations": [ 1112 * { 1113 * "display_name": "animal", 1114 * "text_extraction": { 1115 * "text_segment": {"start_offset": 5, "end_offset": 8} 1116 * } 1117 * } 1118 * ] 1119 * } 1120 * Sample document JSON Lines file (presented here with artificial line 1121 * breaks, but the only actual line break is denoted by \n).: 1122 * { 1123 * "document": { 1124 * "input_config": { 1125 * "gcs_source": { "input_uris": [ "gs://folder/document1.pdf" ] 1126 * } 1127 * } 1128 * } 1129 * }\n 1130 * { 1131 * "document": { 1132 * "input_config": { 1133 * "gcs_source": { "input_uris": [ "gs://folder/document2.pdf" ] 1134 * } 1135 * } 1136 * } 1137 * } 1138 * * For Text Classification: 1139 * CSV file(s) with each line in format: 1140 * ML_USE,(TEXT_SNIPPET | GCS_FILE_PATH),LABEL,LABEL,... 1141 * TEXT_SNIPPET and GCS_FILE_PATH are distinguished by a pattern. If 1142 * the column content is a valid gcs file path, i.e. prefixed by 1143 * "gs://", it will be treated as a GCS_FILE_PATH, else if the content 1144 * is enclosed within double quotes (""), it is 1145 * treated as a TEXT_SNIPPET. In the GCS_FILE_PATH case, the path 1146 * must lead to a .txt file with UTF-8 encoding, for example, 1147 * "gs://folder/content.txt", and the content in it is extracted 1148 * as a text snippet. In TEXT_SNIPPET case, the column content 1149 * excluding quotes is treated as to be imported text snippet. In 1150 * both cases, the text snippet/file size must be within 128kB. 1151 * Maximum 100 unique labels are allowed per CSV row. 1152 * Sample rows: 1153 * TRAIN,"They have bad food and very rude",RudeService,BadFood 1154 * TRAIN,gs://folder/content.txt,SlowService 1155 * TEST,"Typically always bad service there.",RudeService 1156 * VALIDATE,"Stomach ache to go.",BadFood 1157 * * For Text Sentiment: 1158 * CSV file(s) with each line in format: 1159 * ML_USE,(TEXT_SNIPPET | GCS_FILE_PATH),SENTIMENT 1160 * TEXT_SNIPPET and GCS_FILE_PATH are distinguished by a pattern. If 1161 * the column content is a valid gcs file path, that is, prefixed by 1162 * "gs://", it is treated as a GCS_FILE_PATH, otherwise it is treated 1163 * as a TEXT_SNIPPET. In the GCS_FILE_PATH case, the path 1164 * must lead to a .txt file with UTF-8 encoding, for example, 1165 * "gs://folder/content.txt", and the content in it is extracted 1166 * as a text snippet. In TEXT_SNIPPET case, the column content itself 1167 * is treated as to be imported text snippet. In both cases, the 1168 * text snippet must be up to 500 characters long. 1169 * Sample rows: 1170 * TRAIN,"@freewrytin this is way too good for your product",2 1171 * TRAIN,"I need this product so bad",3 1172 * TEST,"Thank you for this product.",4 1173 * VALIDATE,gs://folder/content.txt,2 1174 * * For Tables: 1175 * Either 1176 * [gcs_source][google.cloud.automl.v1beta1.InputConfig.gcs_source] or 1177 * [bigquery_source][google.cloud.automl.v1beta1.InputConfig.bigquery_source] 1178 * can be used. All inputs is concatenated into a single 1179 * [primary_table][google.cloud.automl.v1beta1.TablesDatasetMetadata.primary_table_name] 1180 * For gcs_source: 1181 * CSV file(s), where the first row of the first file is the header, 1182 * containing unique column names. If the first row of a subsequent 1183 * file is the same as the header, then it is also treated as a 1184 * header. All other rows contain values for the corresponding 1185 * columns. 1186 * Each .CSV file by itself must be 10GB or smaller, and their total 1187 * size must be 100GB or smaller. 1188 * First three sample rows of a CSV file: 1189 * "Id","First Name","Last Name","Dob","Addresses" 1190 * "1","John","Doe","1968-01-22","[{"status":"current","address":"123_First_Avenue","city":"Seattle","state":"WA","zip":"11111","numberOfYears":"1"},{"status":"previous","address":"456_Main_Street","city":"Portland","state":"OR","zip":"22222","numberOfYears":"5"}]" 1191 * "2","Jane","Doe","1980-10-16","[{"status":"current","address":"789_Any_Avenue","city":"Albany","state":"NY","zip":"33333","numberOfYears":"2"},{"status":"previous","address":"321_Main_Street","city":"Hoboken","state":"NJ","zip":"44444","numberOfYears":"3"}]} 1192 * For bigquery_source: 1193 * An URI of a BigQuery table. The user data size of the BigQuery 1194 * table must be 100GB or smaller. 1195 * An imported table must have between 2 and 1,000 columns, inclusive, 1196 * and between 1000 and 100,000,000 rows, inclusive. There are at most 5 1197 * import data running in parallel. 1198 * Definitions: 1199 * ML_USE = "TRAIN" | "VALIDATE" | "TEST" | "UNASSIGNED" 1200 * Describes how the given example (file) should be used for model 1201 * training. "UNASSIGNED" can be used when user has no preference. 1202 * GCS_FILE_PATH = A path to file on GCS, e.g. "gs://folder/image1.png". 1203 * LABEL = A display name of an object on an image, video etc., e.g. "dog". 1204 * Must be up to 32 characters long and can consist only of ASCII 1205 * Latin letters A-Z and a-z, underscores(_), and ASCII digits 0-9. 1206 * For each label an AnnotationSpec is created which display_name 1207 * becomes the label; AnnotationSpecs are given back in predictions. 1208 * INSTANCE_ID = A positive integer that identifies a specific instance of a 1209 * labeled entity on an example. Used e.g. to track two cars on 1210 * a video while being able to tell apart which one is which. 1211 * BOUNDING_BOX = VERTEX,VERTEX,VERTEX,VERTEX | VERTEX,,,VERTEX,, 1212 * A rectangle parallel to the frame of the example (image, 1213 * video). If 4 vertices are given they are connected by edges 1214 * in the order provided, if 2 are given they are recognized 1215 * as diagonally opposite vertices of the rectangle. 1216 * VERTEX = COORDINATE,COORDINATE 1217 * First coordinate is horizontal (x), the second is vertical (y). 1218 * COORDINATE = A float in 0 to 1 range, relative to total length of 1219 * image or video in given dimension. For fractions the 1220 * leading non-decimal 0 can be omitted (i.e. 0.3 = .3). 1221 * Point 0,0 is in top left. 1222 * TIME_SEGMENT_START = TIME_OFFSET 1223 * Expresses a beginning, inclusive, of a time segment 1224 * within an example that has a time dimension 1225 * (e.g. video). 1226 * TIME_SEGMENT_END = TIME_OFFSET 1227 * Expresses an end, exclusive, of a time segment within 1228 * an example that has a time dimension (e.g. video). 1229 * TIME_OFFSET = A number of seconds as measured from the start of an 1230 * example (e.g. video). Fractions are allowed, up to a 1231 * microsecond precision. "inf" is allowed, and it means the end 1232 * of the example. 1233 * TEXT_SNIPPET = A content of a text snippet, UTF-8 encoded, enclosed within 1234 * double quotes (""). 1235 * SENTIMENT = An integer between 0 and 1236 * Dataset.text_sentiment_dataset_metadata.sentiment_max 1237 * (inclusive). Describes the ordinal of the sentiment - higher 1238 * value means a more positive sentiment. All the values are 1239 * completely relative, i.e. neither 0 needs to mean a negative or 1240 * neutral sentiment nor sentiment_max needs to mean a positive one 1241 * - it is just required that 0 is the least positive sentiment 1242 * in the data, and sentiment_max is the most positive one. 1243 * The SENTIMENT shouldn't be confused with "score" or "magnitude" 1244 * from the previous Natural Language Sentiment Analysis API. 1245 * All SENTIMENT values between 0 and sentiment_max must be 1246 * represented in the imported data. On prediction the same 0 to 1247 * sentiment_max range will be used. The difference between 1248 * neighboring sentiment values needs not to be uniform, e.g. 1 and 1249 * 2 may be similar whereas the difference between 2 and 3 may be 1250 * huge. 1251 * Errors: 1252 * If any of the provided CSV files can't be parsed or if more than certain 1253 * percent of CSV rows cannot be processed then the operation fails and 1254 * nothing is imported. Regardless of overall success or failure the per-row 1255 * failures, up to a certain count cap, is listed in 1256 * Operation.metadata.partial_failures. 1257 * </pre> 1258 * 1259 * Protobuf type {@code google.cloud.automl.v1beta1.InputConfig} 1260 */ 1261 public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> 1262 implements 1263 // @@protoc_insertion_point(builder_implements:google.cloud.automl.v1beta1.InputConfig) 1264 com.google.cloud.automl.v1beta1.InputConfigOrBuilder { getDescriptor()1265 public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { 1266 return com.google.cloud.automl.v1beta1.Io 1267 .internal_static_google_cloud_automl_v1beta1_InputConfig_descriptor; 1268 } 1269 1270 @SuppressWarnings({"rawtypes"}) internalGetMapField(int number)1271 protected com.google.protobuf.MapField internalGetMapField(int number) { 1272 switch (number) { 1273 case 2: 1274 return internalGetParams(); 1275 default: 1276 throw new RuntimeException("Invalid map field number: " + number); 1277 } 1278 } 1279 1280 @SuppressWarnings({"rawtypes"}) internalGetMutableMapField(int number)1281 protected com.google.protobuf.MapField internalGetMutableMapField(int number) { 1282 switch (number) { 1283 case 2: 1284 return internalGetMutableParams(); 1285 default: 1286 throw new RuntimeException("Invalid map field number: " + number); 1287 } 1288 } 1289 1290 @java.lang.Override 1291 protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()1292 internalGetFieldAccessorTable() { 1293 return com.google.cloud.automl.v1beta1.Io 1294 .internal_static_google_cloud_automl_v1beta1_InputConfig_fieldAccessorTable 1295 .ensureFieldAccessorsInitialized( 1296 com.google.cloud.automl.v1beta1.InputConfig.class, 1297 com.google.cloud.automl.v1beta1.InputConfig.Builder.class); 1298 } 1299 1300 // Construct using com.google.cloud.automl.v1beta1.InputConfig.newBuilder() Builder()1301 private Builder() {} 1302 Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)1303 private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { 1304 super(parent); 1305 } 1306 1307 @java.lang.Override clear()1308 public Builder clear() { 1309 super.clear(); 1310 bitField0_ = 0; 1311 if (gcsSourceBuilder_ != null) { 1312 gcsSourceBuilder_.clear(); 1313 } 1314 if (bigquerySourceBuilder_ != null) { 1315 bigquerySourceBuilder_.clear(); 1316 } 1317 internalGetMutableParams().clear(); 1318 sourceCase_ = 0; 1319 source_ = null; 1320 return this; 1321 } 1322 1323 @java.lang.Override getDescriptorForType()1324 public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { 1325 return com.google.cloud.automl.v1beta1.Io 1326 .internal_static_google_cloud_automl_v1beta1_InputConfig_descriptor; 1327 } 1328 1329 @java.lang.Override getDefaultInstanceForType()1330 public com.google.cloud.automl.v1beta1.InputConfig getDefaultInstanceForType() { 1331 return com.google.cloud.automl.v1beta1.InputConfig.getDefaultInstance(); 1332 } 1333 1334 @java.lang.Override build()1335 public com.google.cloud.automl.v1beta1.InputConfig build() { 1336 com.google.cloud.automl.v1beta1.InputConfig result = buildPartial(); 1337 if (!result.isInitialized()) { 1338 throw newUninitializedMessageException(result); 1339 } 1340 return result; 1341 } 1342 1343 @java.lang.Override buildPartial()1344 public com.google.cloud.automl.v1beta1.InputConfig buildPartial() { 1345 com.google.cloud.automl.v1beta1.InputConfig result = 1346 new com.google.cloud.automl.v1beta1.InputConfig(this); 1347 if (bitField0_ != 0) { 1348 buildPartial0(result); 1349 } 1350 buildPartialOneofs(result); 1351 onBuilt(); 1352 return result; 1353 } 1354 buildPartial0(com.google.cloud.automl.v1beta1.InputConfig result)1355 private void buildPartial0(com.google.cloud.automl.v1beta1.InputConfig result) { 1356 int from_bitField0_ = bitField0_; 1357 if (((from_bitField0_ & 0x00000004) != 0)) { 1358 result.params_ = internalGetParams(); 1359 result.params_.makeImmutable(); 1360 } 1361 } 1362 buildPartialOneofs(com.google.cloud.automl.v1beta1.InputConfig result)1363 private void buildPartialOneofs(com.google.cloud.automl.v1beta1.InputConfig result) { 1364 result.sourceCase_ = sourceCase_; 1365 result.source_ = this.source_; 1366 if (sourceCase_ == 1 && gcsSourceBuilder_ != null) { 1367 result.source_ = gcsSourceBuilder_.build(); 1368 } 1369 if (sourceCase_ == 3 && bigquerySourceBuilder_ != null) { 1370 result.source_ = bigquerySourceBuilder_.build(); 1371 } 1372 } 1373 1374 @java.lang.Override clone()1375 public Builder clone() { 1376 return super.clone(); 1377 } 1378 1379 @java.lang.Override setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)1380 public Builder setField( 1381 com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { 1382 return super.setField(field, value); 1383 } 1384 1385 @java.lang.Override clearField(com.google.protobuf.Descriptors.FieldDescriptor field)1386 public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { 1387 return super.clearField(field); 1388 } 1389 1390 @java.lang.Override clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof)1391 public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { 1392 return super.clearOneof(oneof); 1393 } 1394 1395 @java.lang.Override setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value)1396 public Builder setRepeatedField( 1397 com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { 1398 return super.setRepeatedField(field, index, value); 1399 } 1400 1401 @java.lang.Override addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)1402 public Builder addRepeatedField( 1403 com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { 1404 return super.addRepeatedField(field, value); 1405 } 1406 1407 @java.lang.Override mergeFrom(com.google.protobuf.Message other)1408 public Builder mergeFrom(com.google.protobuf.Message other) { 1409 if (other instanceof com.google.cloud.automl.v1beta1.InputConfig) { 1410 return mergeFrom((com.google.cloud.automl.v1beta1.InputConfig) other); 1411 } else { 1412 super.mergeFrom(other); 1413 return this; 1414 } 1415 } 1416 mergeFrom(com.google.cloud.automl.v1beta1.InputConfig other)1417 public Builder mergeFrom(com.google.cloud.automl.v1beta1.InputConfig other) { 1418 if (other == com.google.cloud.automl.v1beta1.InputConfig.getDefaultInstance()) return this; 1419 internalGetMutableParams().mergeFrom(other.internalGetParams()); 1420 bitField0_ |= 0x00000004; 1421 switch (other.getSourceCase()) { 1422 case GCS_SOURCE: 1423 { 1424 mergeGcsSource(other.getGcsSource()); 1425 break; 1426 } 1427 case BIGQUERY_SOURCE: 1428 { 1429 mergeBigquerySource(other.getBigquerySource()); 1430 break; 1431 } 1432 case SOURCE_NOT_SET: 1433 { 1434 break; 1435 } 1436 } 1437 this.mergeUnknownFields(other.getUnknownFields()); 1438 onChanged(); 1439 return this; 1440 } 1441 1442 @java.lang.Override isInitialized()1443 public final boolean isInitialized() { 1444 return true; 1445 } 1446 1447 @java.lang.Override mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)1448 public Builder mergeFrom( 1449 com.google.protobuf.CodedInputStream input, 1450 com.google.protobuf.ExtensionRegistryLite extensionRegistry) 1451 throws java.io.IOException { 1452 if (extensionRegistry == null) { 1453 throw new java.lang.NullPointerException(); 1454 } 1455 try { 1456 boolean done = false; 1457 while (!done) { 1458 int tag = input.readTag(); 1459 switch (tag) { 1460 case 0: 1461 done = true; 1462 break; 1463 case 10: 1464 { 1465 input.readMessage(getGcsSourceFieldBuilder().getBuilder(), extensionRegistry); 1466 sourceCase_ = 1; 1467 break; 1468 } // case 10 1469 case 18: 1470 { 1471 com.google.protobuf.MapEntry<java.lang.String, java.lang.String> params__ = 1472 input.readMessage( 1473 ParamsDefaultEntryHolder.defaultEntry.getParserForType(), 1474 extensionRegistry); 1475 internalGetMutableParams() 1476 .getMutableMap() 1477 .put(params__.getKey(), params__.getValue()); 1478 bitField0_ |= 0x00000004; 1479 break; 1480 } // case 18 1481 case 26: 1482 { 1483 input.readMessage(getBigquerySourceFieldBuilder().getBuilder(), extensionRegistry); 1484 sourceCase_ = 3; 1485 break; 1486 } // case 26 1487 default: 1488 { 1489 if (!super.parseUnknownField(input, extensionRegistry, tag)) { 1490 done = true; // was an endgroup tag 1491 } 1492 break; 1493 } // default: 1494 } // switch (tag) 1495 } // while (!done) 1496 } catch (com.google.protobuf.InvalidProtocolBufferException e) { 1497 throw e.unwrapIOException(); 1498 } finally { 1499 onChanged(); 1500 } // finally 1501 return this; 1502 } 1503 1504 private int sourceCase_ = 0; 1505 private java.lang.Object source_; 1506 getSourceCase()1507 public SourceCase getSourceCase() { 1508 return SourceCase.forNumber(sourceCase_); 1509 } 1510 clearSource()1511 public Builder clearSource() { 1512 sourceCase_ = 0; 1513 source_ = null; 1514 onChanged(); 1515 return this; 1516 } 1517 1518 private int bitField0_; 1519 1520 private com.google.protobuf.SingleFieldBuilderV3< 1521 com.google.cloud.automl.v1beta1.GcsSource, 1522 com.google.cloud.automl.v1beta1.GcsSource.Builder, 1523 com.google.cloud.automl.v1beta1.GcsSourceOrBuilder> 1524 gcsSourceBuilder_; 1525 /** 1526 * 1527 * 1528 * <pre> 1529 * The Google Cloud Storage location for the input content. 1530 * In ImportData, the gcs_source points to a csv with structure described in 1531 * the comment. 1532 * </pre> 1533 * 1534 * <code>.google.cloud.automl.v1beta1.GcsSource gcs_source = 1;</code> 1535 * 1536 * @return Whether the gcsSource field is set. 1537 */ 1538 @java.lang.Override hasGcsSource()1539 public boolean hasGcsSource() { 1540 return sourceCase_ == 1; 1541 } 1542 /** 1543 * 1544 * 1545 * <pre> 1546 * The Google Cloud Storage location for the input content. 1547 * In ImportData, the gcs_source points to a csv with structure described in 1548 * the comment. 1549 * </pre> 1550 * 1551 * <code>.google.cloud.automl.v1beta1.GcsSource gcs_source = 1;</code> 1552 * 1553 * @return The gcsSource. 1554 */ 1555 @java.lang.Override getGcsSource()1556 public com.google.cloud.automl.v1beta1.GcsSource getGcsSource() { 1557 if (gcsSourceBuilder_ == null) { 1558 if (sourceCase_ == 1) { 1559 return (com.google.cloud.automl.v1beta1.GcsSource) source_; 1560 } 1561 return com.google.cloud.automl.v1beta1.GcsSource.getDefaultInstance(); 1562 } else { 1563 if (sourceCase_ == 1) { 1564 return gcsSourceBuilder_.getMessage(); 1565 } 1566 return com.google.cloud.automl.v1beta1.GcsSource.getDefaultInstance(); 1567 } 1568 } 1569 /** 1570 * 1571 * 1572 * <pre> 1573 * The Google Cloud Storage location for the input content. 1574 * In ImportData, the gcs_source points to a csv with structure described in 1575 * the comment. 1576 * </pre> 1577 * 1578 * <code>.google.cloud.automl.v1beta1.GcsSource gcs_source = 1;</code> 1579 */ setGcsSource(com.google.cloud.automl.v1beta1.GcsSource value)1580 public Builder setGcsSource(com.google.cloud.automl.v1beta1.GcsSource value) { 1581 if (gcsSourceBuilder_ == null) { 1582 if (value == null) { 1583 throw new NullPointerException(); 1584 } 1585 source_ = value; 1586 onChanged(); 1587 } else { 1588 gcsSourceBuilder_.setMessage(value); 1589 } 1590 sourceCase_ = 1; 1591 return this; 1592 } 1593 /** 1594 * 1595 * 1596 * <pre> 1597 * The Google Cloud Storage location for the input content. 1598 * In ImportData, the gcs_source points to a csv with structure described in 1599 * the comment. 1600 * </pre> 1601 * 1602 * <code>.google.cloud.automl.v1beta1.GcsSource gcs_source = 1;</code> 1603 */ setGcsSource(com.google.cloud.automl.v1beta1.GcsSource.Builder builderForValue)1604 public Builder setGcsSource(com.google.cloud.automl.v1beta1.GcsSource.Builder builderForValue) { 1605 if (gcsSourceBuilder_ == null) { 1606 source_ = builderForValue.build(); 1607 onChanged(); 1608 } else { 1609 gcsSourceBuilder_.setMessage(builderForValue.build()); 1610 } 1611 sourceCase_ = 1; 1612 return this; 1613 } 1614 /** 1615 * 1616 * 1617 * <pre> 1618 * The Google Cloud Storage location for the input content. 1619 * In ImportData, the gcs_source points to a csv with structure described in 1620 * the comment. 1621 * </pre> 1622 * 1623 * <code>.google.cloud.automl.v1beta1.GcsSource gcs_source = 1;</code> 1624 */ mergeGcsSource(com.google.cloud.automl.v1beta1.GcsSource value)1625 public Builder mergeGcsSource(com.google.cloud.automl.v1beta1.GcsSource value) { 1626 if (gcsSourceBuilder_ == null) { 1627 if (sourceCase_ == 1 1628 && source_ != com.google.cloud.automl.v1beta1.GcsSource.getDefaultInstance()) { 1629 source_ = 1630 com.google.cloud.automl.v1beta1.GcsSource.newBuilder( 1631 (com.google.cloud.automl.v1beta1.GcsSource) source_) 1632 .mergeFrom(value) 1633 .buildPartial(); 1634 } else { 1635 source_ = value; 1636 } 1637 onChanged(); 1638 } else { 1639 if (sourceCase_ == 1) { 1640 gcsSourceBuilder_.mergeFrom(value); 1641 } else { 1642 gcsSourceBuilder_.setMessage(value); 1643 } 1644 } 1645 sourceCase_ = 1; 1646 return this; 1647 } 1648 /** 1649 * 1650 * 1651 * <pre> 1652 * The Google Cloud Storage location for the input content. 1653 * In ImportData, the gcs_source points to a csv with structure described in 1654 * the comment. 1655 * </pre> 1656 * 1657 * <code>.google.cloud.automl.v1beta1.GcsSource gcs_source = 1;</code> 1658 */ clearGcsSource()1659 public Builder clearGcsSource() { 1660 if (gcsSourceBuilder_ == null) { 1661 if (sourceCase_ == 1) { 1662 sourceCase_ = 0; 1663 source_ = null; 1664 onChanged(); 1665 } 1666 } else { 1667 if (sourceCase_ == 1) { 1668 sourceCase_ = 0; 1669 source_ = null; 1670 } 1671 gcsSourceBuilder_.clear(); 1672 } 1673 return this; 1674 } 1675 /** 1676 * 1677 * 1678 * <pre> 1679 * The Google Cloud Storage location for the input content. 1680 * In ImportData, the gcs_source points to a csv with structure described in 1681 * the comment. 1682 * </pre> 1683 * 1684 * <code>.google.cloud.automl.v1beta1.GcsSource gcs_source = 1;</code> 1685 */ getGcsSourceBuilder()1686 public com.google.cloud.automl.v1beta1.GcsSource.Builder getGcsSourceBuilder() { 1687 return getGcsSourceFieldBuilder().getBuilder(); 1688 } 1689 /** 1690 * 1691 * 1692 * <pre> 1693 * The Google Cloud Storage location for the input content. 1694 * In ImportData, the gcs_source points to a csv with structure described in 1695 * the comment. 1696 * </pre> 1697 * 1698 * <code>.google.cloud.automl.v1beta1.GcsSource gcs_source = 1;</code> 1699 */ 1700 @java.lang.Override getGcsSourceOrBuilder()1701 public com.google.cloud.automl.v1beta1.GcsSourceOrBuilder getGcsSourceOrBuilder() { 1702 if ((sourceCase_ == 1) && (gcsSourceBuilder_ != null)) { 1703 return gcsSourceBuilder_.getMessageOrBuilder(); 1704 } else { 1705 if (sourceCase_ == 1) { 1706 return (com.google.cloud.automl.v1beta1.GcsSource) source_; 1707 } 1708 return com.google.cloud.automl.v1beta1.GcsSource.getDefaultInstance(); 1709 } 1710 } 1711 /** 1712 * 1713 * 1714 * <pre> 1715 * The Google Cloud Storage location for the input content. 1716 * In ImportData, the gcs_source points to a csv with structure described in 1717 * the comment. 1718 * </pre> 1719 * 1720 * <code>.google.cloud.automl.v1beta1.GcsSource gcs_source = 1;</code> 1721 */ 1722 private com.google.protobuf.SingleFieldBuilderV3< 1723 com.google.cloud.automl.v1beta1.GcsSource, 1724 com.google.cloud.automl.v1beta1.GcsSource.Builder, 1725 com.google.cloud.automl.v1beta1.GcsSourceOrBuilder> getGcsSourceFieldBuilder()1726 getGcsSourceFieldBuilder() { 1727 if (gcsSourceBuilder_ == null) { 1728 if (!(sourceCase_ == 1)) { 1729 source_ = com.google.cloud.automl.v1beta1.GcsSource.getDefaultInstance(); 1730 } 1731 gcsSourceBuilder_ = 1732 new com.google.protobuf.SingleFieldBuilderV3< 1733 com.google.cloud.automl.v1beta1.GcsSource, 1734 com.google.cloud.automl.v1beta1.GcsSource.Builder, 1735 com.google.cloud.automl.v1beta1.GcsSourceOrBuilder>( 1736 (com.google.cloud.automl.v1beta1.GcsSource) source_, 1737 getParentForChildren(), 1738 isClean()); 1739 source_ = null; 1740 } 1741 sourceCase_ = 1; 1742 onChanged(); 1743 return gcsSourceBuilder_; 1744 } 1745 1746 private com.google.protobuf.SingleFieldBuilderV3< 1747 com.google.cloud.automl.v1beta1.BigQuerySource, 1748 com.google.cloud.automl.v1beta1.BigQuerySource.Builder, 1749 com.google.cloud.automl.v1beta1.BigQuerySourceOrBuilder> 1750 bigquerySourceBuilder_; 1751 /** 1752 * 1753 * 1754 * <pre> 1755 * The BigQuery location for the input content. 1756 * </pre> 1757 * 1758 * <code>.google.cloud.automl.v1beta1.BigQuerySource bigquery_source = 3;</code> 1759 * 1760 * @return Whether the bigquerySource field is set. 1761 */ 1762 @java.lang.Override hasBigquerySource()1763 public boolean hasBigquerySource() { 1764 return sourceCase_ == 3; 1765 } 1766 /** 1767 * 1768 * 1769 * <pre> 1770 * The BigQuery location for the input content. 1771 * </pre> 1772 * 1773 * <code>.google.cloud.automl.v1beta1.BigQuerySource bigquery_source = 3;</code> 1774 * 1775 * @return The bigquerySource. 1776 */ 1777 @java.lang.Override getBigquerySource()1778 public com.google.cloud.automl.v1beta1.BigQuerySource getBigquerySource() { 1779 if (bigquerySourceBuilder_ == null) { 1780 if (sourceCase_ == 3) { 1781 return (com.google.cloud.automl.v1beta1.BigQuerySource) source_; 1782 } 1783 return com.google.cloud.automl.v1beta1.BigQuerySource.getDefaultInstance(); 1784 } else { 1785 if (sourceCase_ == 3) { 1786 return bigquerySourceBuilder_.getMessage(); 1787 } 1788 return com.google.cloud.automl.v1beta1.BigQuerySource.getDefaultInstance(); 1789 } 1790 } 1791 /** 1792 * 1793 * 1794 * <pre> 1795 * The BigQuery location for the input content. 1796 * </pre> 1797 * 1798 * <code>.google.cloud.automl.v1beta1.BigQuerySource bigquery_source = 3;</code> 1799 */ setBigquerySource(com.google.cloud.automl.v1beta1.BigQuerySource value)1800 public Builder setBigquerySource(com.google.cloud.automl.v1beta1.BigQuerySource value) { 1801 if (bigquerySourceBuilder_ == null) { 1802 if (value == null) { 1803 throw new NullPointerException(); 1804 } 1805 source_ = value; 1806 onChanged(); 1807 } else { 1808 bigquerySourceBuilder_.setMessage(value); 1809 } 1810 sourceCase_ = 3; 1811 return this; 1812 } 1813 /** 1814 * 1815 * 1816 * <pre> 1817 * The BigQuery location for the input content. 1818 * </pre> 1819 * 1820 * <code>.google.cloud.automl.v1beta1.BigQuerySource bigquery_source = 3;</code> 1821 */ setBigquerySource( com.google.cloud.automl.v1beta1.BigQuerySource.Builder builderForValue)1822 public Builder setBigquerySource( 1823 com.google.cloud.automl.v1beta1.BigQuerySource.Builder builderForValue) { 1824 if (bigquerySourceBuilder_ == null) { 1825 source_ = builderForValue.build(); 1826 onChanged(); 1827 } else { 1828 bigquerySourceBuilder_.setMessage(builderForValue.build()); 1829 } 1830 sourceCase_ = 3; 1831 return this; 1832 } 1833 /** 1834 * 1835 * 1836 * <pre> 1837 * The BigQuery location for the input content. 1838 * </pre> 1839 * 1840 * <code>.google.cloud.automl.v1beta1.BigQuerySource bigquery_source = 3;</code> 1841 */ mergeBigquerySource(com.google.cloud.automl.v1beta1.BigQuerySource value)1842 public Builder mergeBigquerySource(com.google.cloud.automl.v1beta1.BigQuerySource value) { 1843 if (bigquerySourceBuilder_ == null) { 1844 if (sourceCase_ == 3 1845 && source_ != com.google.cloud.automl.v1beta1.BigQuerySource.getDefaultInstance()) { 1846 source_ = 1847 com.google.cloud.automl.v1beta1.BigQuerySource.newBuilder( 1848 (com.google.cloud.automl.v1beta1.BigQuerySource) source_) 1849 .mergeFrom(value) 1850 .buildPartial(); 1851 } else { 1852 source_ = value; 1853 } 1854 onChanged(); 1855 } else { 1856 if (sourceCase_ == 3) { 1857 bigquerySourceBuilder_.mergeFrom(value); 1858 } else { 1859 bigquerySourceBuilder_.setMessage(value); 1860 } 1861 } 1862 sourceCase_ = 3; 1863 return this; 1864 } 1865 /** 1866 * 1867 * 1868 * <pre> 1869 * The BigQuery location for the input content. 1870 * </pre> 1871 * 1872 * <code>.google.cloud.automl.v1beta1.BigQuerySource bigquery_source = 3;</code> 1873 */ clearBigquerySource()1874 public Builder clearBigquerySource() { 1875 if (bigquerySourceBuilder_ == null) { 1876 if (sourceCase_ == 3) { 1877 sourceCase_ = 0; 1878 source_ = null; 1879 onChanged(); 1880 } 1881 } else { 1882 if (sourceCase_ == 3) { 1883 sourceCase_ = 0; 1884 source_ = null; 1885 } 1886 bigquerySourceBuilder_.clear(); 1887 } 1888 return this; 1889 } 1890 /** 1891 * 1892 * 1893 * <pre> 1894 * The BigQuery location for the input content. 1895 * </pre> 1896 * 1897 * <code>.google.cloud.automl.v1beta1.BigQuerySource bigquery_source = 3;</code> 1898 */ getBigquerySourceBuilder()1899 public com.google.cloud.automl.v1beta1.BigQuerySource.Builder getBigquerySourceBuilder() { 1900 return getBigquerySourceFieldBuilder().getBuilder(); 1901 } 1902 /** 1903 * 1904 * 1905 * <pre> 1906 * The BigQuery location for the input content. 1907 * </pre> 1908 * 1909 * <code>.google.cloud.automl.v1beta1.BigQuerySource bigquery_source = 3;</code> 1910 */ 1911 @java.lang.Override getBigquerySourceOrBuilder()1912 public com.google.cloud.automl.v1beta1.BigQuerySourceOrBuilder getBigquerySourceOrBuilder() { 1913 if ((sourceCase_ == 3) && (bigquerySourceBuilder_ != null)) { 1914 return bigquerySourceBuilder_.getMessageOrBuilder(); 1915 } else { 1916 if (sourceCase_ == 3) { 1917 return (com.google.cloud.automl.v1beta1.BigQuerySource) source_; 1918 } 1919 return com.google.cloud.automl.v1beta1.BigQuerySource.getDefaultInstance(); 1920 } 1921 } 1922 /** 1923 * 1924 * 1925 * <pre> 1926 * The BigQuery location for the input content. 1927 * </pre> 1928 * 1929 * <code>.google.cloud.automl.v1beta1.BigQuerySource bigquery_source = 3;</code> 1930 */ 1931 private com.google.protobuf.SingleFieldBuilderV3< 1932 com.google.cloud.automl.v1beta1.BigQuerySource, 1933 com.google.cloud.automl.v1beta1.BigQuerySource.Builder, 1934 com.google.cloud.automl.v1beta1.BigQuerySourceOrBuilder> getBigquerySourceFieldBuilder()1935 getBigquerySourceFieldBuilder() { 1936 if (bigquerySourceBuilder_ == null) { 1937 if (!(sourceCase_ == 3)) { 1938 source_ = com.google.cloud.automl.v1beta1.BigQuerySource.getDefaultInstance(); 1939 } 1940 bigquerySourceBuilder_ = 1941 new com.google.protobuf.SingleFieldBuilderV3< 1942 com.google.cloud.automl.v1beta1.BigQuerySource, 1943 com.google.cloud.automl.v1beta1.BigQuerySource.Builder, 1944 com.google.cloud.automl.v1beta1.BigQuerySourceOrBuilder>( 1945 (com.google.cloud.automl.v1beta1.BigQuerySource) source_, 1946 getParentForChildren(), 1947 isClean()); 1948 source_ = null; 1949 } 1950 sourceCase_ = 3; 1951 onChanged(); 1952 return bigquerySourceBuilder_; 1953 } 1954 1955 private com.google.protobuf.MapField<java.lang.String, java.lang.String> params_; 1956 internalGetParams()1957 private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetParams() { 1958 if (params_ == null) { 1959 return com.google.protobuf.MapField.emptyMapField(ParamsDefaultEntryHolder.defaultEntry); 1960 } 1961 return params_; 1962 } 1963 1964 private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetMutableParams()1965 internalGetMutableParams() { 1966 if (params_ == null) { 1967 params_ = com.google.protobuf.MapField.newMapField(ParamsDefaultEntryHolder.defaultEntry); 1968 } 1969 if (!params_.isMutable()) { 1970 params_ = params_.copy(); 1971 } 1972 bitField0_ |= 0x00000004; 1973 onChanged(); 1974 return params_; 1975 } 1976 getParamsCount()1977 public int getParamsCount() { 1978 return internalGetParams().getMap().size(); 1979 } 1980 /** 1981 * 1982 * 1983 * <pre> 1984 * Additional domain-specific parameters describing the semantic of the 1985 * imported data, any string must be up to 25000 1986 * characters long. 1987 * * For Tables: 1988 * `schema_inference_version` - (integer) Required. The version of the 1989 * algorithm that should be used for the initial inference of the 1990 * schema (columns' DataTypes) of the table the data is being imported 1991 * into. Allowed values: "1". 1992 * </pre> 1993 * 1994 * <code>map<string, string> params = 2;</code> 1995 */ 1996 @java.lang.Override containsParams(java.lang.String key)1997 public boolean containsParams(java.lang.String key) { 1998 if (key == null) { 1999 throw new NullPointerException("map key"); 2000 } 2001 return internalGetParams().getMap().containsKey(key); 2002 } 2003 /** Use {@link #getParamsMap()} instead. */ 2004 @java.lang.Override 2005 @java.lang.Deprecated getParams()2006 public java.util.Map<java.lang.String, java.lang.String> getParams() { 2007 return getParamsMap(); 2008 } 2009 /** 2010 * 2011 * 2012 * <pre> 2013 * Additional domain-specific parameters describing the semantic of the 2014 * imported data, any string must be up to 25000 2015 * characters long. 2016 * * For Tables: 2017 * `schema_inference_version` - (integer) Required. The version of the 2018 * algorithm that should be used for the initial inference of the 2019 * schema (columns' DataTypes) of the table the data is being imported 2020 * into. Allowed values: "1". 2021 * </pre> 2022 * 2023 * <code>map<string, string> params = 2;</code> 2024 */ 2025 @java.lang.Override getParamsMap()2026 public java.util.Map<java.lang.String, java.lang.String> getParamsMap() { 2027 return internalGetParams().getMap(); 2028 } 2029 /** 2030 * 2031 * 2032 * <pre> 2033 * Additional domain-specific parameters describing the semantic of the 2034 * imported data, any string must be up to 25000 2035 * characters long. 2036 * * For Tables: 2037 * `schema_inference_version` - (integer) Required. The version of the 2038 * algorithm that should be used for the initial inference of the 2039 * schema (columns' DataTypes) of the table the data is being imported 2040 * into. Allowed values: "1". 2041 * </pre> 2042 * 2043 * <code>map<string, string> params = 2;</code> 2044 */ 2045 @java.lang.Override getParamsOrDefault( java.lang.String key, java.lang.String defaultValue)2046 public /* nullable */ java.lang.String getParamsOrDefault( 2047 java.lang.String key, 2048 /* nullable */ 2049 java.lang.String defaultValue) { 2050 if (key == null) { 2051 throw new NullPointerException("map key"); 2052 } 2053 java.util.Map<java.lang.String, java.lang.String> map = internalGetParams().getMap(); 2054 return map.containsKey(key) ? map.get(key) : defaultValue; 2055 } 2056 /** 2057 * 2058 * 2059 * <pre> 2060 * Additional domain-specific parameters describing the semantic of the 2061 * imported data, any string must be up to 25000 2062 * characters long. 2063 * * For Tables: 2064 * `schema_inference_version` - (integer) Required. The version of the 2065 * algorithm that should be used for the initial inference of the 2066 * schema (columns' DataTypes) of the table the data is being imported 2067 * into. Allowed values: "1". 2068 * </pre> 2069 * 2070 * <code>map<string, string> params = 2;</code> 2071 */ 2072 @java.lang.Override getParamsOrThrow(java.lang.String key)2073 public java.lang.String getParamsOrThrow(java.lang.String key) { 2074 if (key == null) { 2075 throw new NullPointerException("map key"); 2076 } 2077 java.util.Map<java.lang.String, java.lang.String> map = internalGetParams().getMap(); 2078 if (!map.containsKey(key)) { 2079 throw new java.lang.IllegalArgumentException(); 2080 } 2081 return map.get(key); 2082 } 2083 clearParams()2084 public Builder clearParams() { 2085 bitField0_ = (bitField0_ & ~0x00000004); 2086 internalGetMutableParams().getMutableMap().clear(); 2087 return this; 2088 } 2089 /** 2090 * 2091 * 2092 * <pre> 2093 * Additional domain-specific parameters describing the semantic of the 2094 * imported data, any string must be up to 25000 2095 * characters long. 2096 * * For Tables: 2097 * `schema_inference_version` - (integer) Required. The version of the 2098 * algorithm that should be used for the initial inference of the 2099 * schema (columns' DataTypes) of the table the data is being imported 2100 * into. Allowed values: "1". 2101 * </pre> 2102 * 2103 * <code>map<string, string> params = 2;</code> 2104 */ removeParams(java.lang.String key)2105 public Builder removeParams(java.lang.String key) { 2106 if (key == null) { 2107 throw new NullPointerException("map key"); 2108 } 2109 internalGetMutableParams().getMutableMap().remove(key); 2110 return this; 2111 } 2112 /** Use alternate mutation accessors instead. */ 2113 @java.lang.Deprecated getMutableParams()2114 public java.util.Map<java.lang.String, java.lang.String> getMutableParams() { 2115 bitField0_ |= 0x00000004; 2116 return internalGetMutableParams().getMutableMap(); 2117 } 2118 /** 2119 * 2120 * 2121 * <pre> 2122 * Additional domain-specific parameters describing the semantic of the 2123 * imported data, any string must be up to 25000 2124 * characters long. 2125 * * For Tables: 2126 * `schema_inference_version` - (integer) Required. The version of the 2127 * algorithm that should be used for the initial inference of the 2128 * schema (columns' DataTypes) of the table the data is being imported 2129 * into. Allowed values: "1". 2130 * </pre> 2131 * 2132 * <code>map<string, string> params = 2;</code> 2133 */ putParams(java.lang.String key, java.lang.String value)2134 public Builder putParams(java.lang.String key, java.lang.String value) { 2135 if (key == null) { 2136 throw new NullPointerException("map key"); 2137 } 2138 if (value == null) { 2139 throw new NullPointerException("map value"); 2140 } 2141 internalGetMutableParams().getMutableMap().put(key, value); 2142 bitField0_ |= 0x00000004; 2143 return this; 2144 } 2145 /** 2146 * 2147 * 2148 * <pre> 2149 * Additional domain-specific parameters describing the semantic of the 2150 * imported data, any string must be up to 25000 2151 * characters long. 2152 * * For Tables: 2153 * `schema_inference_version` - (integer) Required. The version of the 2154 * algorithm that should be used for the initial inference of the 2155 * schema (columns' DataTypes) of the table the data is being imported 2156 * into. Allowed values: "1". 2157 * </pre> 2158 * 2159 * <code>map<string, string> params = 2;</code> 2160 */ putAllParams(java.util.Map<java.lang.String, java.lang.String> values)2161 public Builder putAllParams(java.util.Map<java.lang.String, java.lang.String> values) { 2162 internalGetMutableParams().getMutableMap().putAll(values); 2163 bitField0_ |= 0x00000004; 2164 return this; 2165 } 2166 2167 @java.lang.Override setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields)2168 public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { 2169 return super.setUnknownFields(unknownFields); 2170 } 2171 2172 @java.lang.Override mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields)2173 public final Builder mergeUnknownFields( 2174 final com.google.protobuf.UnknownFieldSet unknownFields) { 2175 return super.mergeUnknownFields(unknownFields); 2176 } 2177 2178 // @@protoc_insertion_point(builder_scope:google.cloud.automl.v1beta1.InputConfig) 2179 } 2180 2181 // @@protoc_insertion_point(class_scope:google.cloud.automl.v1beta1.InputConfig) 2182 private static final com.google.cloud.automl.v1beta1.InputConfig DEFAULT_INSTANCE; 2183 2184 static { 2185 DEFAULT_INSTANCE = new com.google.cloud.automl.v1beta1.InputConfig(); 2186 } 2187 getDefaultInstance()2188 public static com.google.cloud.automl.v1beta1.InputConfig getDefaultInstance() { 2189 return DEFAULT_INSTANCE; 2190 } 2191 2192 private static final com.google.protobuf.Parser<InputConfig> PARSER = 2193 new com.google.protobuf.AbstractParser<InputConfig>() { 2194 @java.lang.Override 2195 public InputConfig parsePartialFrom( 2196 com.google.protobuf.CodedInputStream input, 2197 com.google.protobuf.ExtensionRegistryLite extensionRegistry) 2198 throws com.google.protobuf.InvalidProtocolBufferException { 2199 Builder builder = newBuilder(); 2200 try { 2201 builder.mergeFrom(input, extensionRegistry); 2202 } catch (com.google.protobuf.InvalidProtocolBufferException e) { 2203 throw e.setUnfinishedMessage(builder.buildPartial()); 2204 } catch (com.google.protobuf.UninitializedMessageException e) { 2205 throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); 2206 } catch (java.io.IOException e) { 2207 throw new com.google.protobuf.InvalidProtocolBufferException(e) 2208 .setUnfinishedMessage(builder.buildPartial()); 2209 } 2210 return builder.buildPartial(); 2211 } 2212 }; 2213 parser()2214 public static com.google.protobuf.Parser<InputConfig> parser() { 2215 return PARSER; 2216 } 2217 2218 @java.lang.Override getParserForType()2219 public com.google.protobuf.Parser<InputConfig> getParserForType() { 2220 return PARSER; 2221 } 2222 2223 @java.lang.Override getDefaultInstanceForType()2224 public com.google.cloud.automl.v1beta1.InputConfig getDefaultInstanceForType() { 2225 return DEFAULT_INSTANCE; 2226 } 2227 } 2228