/*
 * 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.
 */
/*
 * This code was generated by https://github.com/googleapis/google-api-java-client-services/
 * Modify at your own risk.
 */

package com.google.api.services.contentwarehouse.v1.model;

/**
 * Represents a paragraph of text in OCRed content.
 *
 * <p> This is the Java data model class that specifies how to parse/serialize into the JSON that is
 * transmitted over HTTP when working with the Document AI Warehouse API. For a detailed explanation
 * see:
 * <a href="https://developers.google.com/api-client-library/java/google-http-java-client/json">https://developers.google.com/api-client-library/java/google-http-java-client/json</a>
 * </p>
 *
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public final class GoodocParagraph extends com.google.api.client.json.GenericJson {

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key("Box")
  private GoodocBoundingBox box;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key("FirstLineIndent")
  private java.lang.Integer firstLineIndent;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key("Label")
  private GoodocLabel label;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key("LeftIndent")
  private java.lang.Integer leftIndent;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key("LineSpacing")
  private java.lang.Integer lineSpacing;

  /**
   * Which way is upright for this paragraph and what is the dominant reading order?
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key("OrientationLabel")
  private GoodocOrientationLabel orientationLabel;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key("RightIndent")
  private java.lang.Integer rightIndent;

  /**
   * If RotatedBox is set, Box must be set as well. See RotatedBoundingBox.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key("RotatedBox")
  private GoodocRotatedBoundingBox rotatedBox;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key("SpaceAfter")
  private java.lang.Integer spaceAfter;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key("SpaceBefore")
  private java.lang.Integer spaceBefore;

  /**
   * If we merge any paragraphs into this one (through the MergeParagraphWithNext() interface in
   * goodoc-editing.h), then we append the properties of the merged paragraph here, for debugging
   * and to avoid losing any info. Note that the SubsumedParagraphProperties Paragraphs do not
   * contain Routes.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key("SubsumedParagraphProperties")
  private java.util.List<GoodocParagraph> subsumedParagraphProperties;

  /**
   * Paragraph text recognition confidence. Range depends on the algorithm but should be consistent
   * in a given volume. 0 is bad, 100 is good.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key("TextConfidence")
  private java.lang.Integer textConfidence;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key("Width")
  private java.lang.Integer width;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Integer alignment;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GoodocParagraphDroppedCap droppedcap;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<GoodocParagraphRoute> route;

  /**
   * @return value or {@code null} for none
   */
  public GoodocBoundingBox getBox() {
    return box;
  }

  /**
   * @param box box or {@code null} for none
   */
  public GoodocParagraph setBox(GoodocBoundingBox box) {
    this.box = box;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Integer getFirstLineIndent() {
    return firstLineIndent;
  }

  /**
   * @param firstLineIndent firstLineIndent or {@code null} for none
   */
  public GoodocParagraph setFirstLineIndent(java.lang.Integer firstLineIndent) {
    this.firstLineIndent = firstLineIndent;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public GoodocLabel getLabel() {
    return label;
  }

  /**
   * @param label label or {@code null} for none
   */
  public GoodocParagraph setLabel(GoodocLabel label) {
    this.label = label;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Integer getLeftIndent() {
    return leftIndent;
  }

  /**
   * @param leftIndent leftIndent or {@code null} for none
   */
  public GoodocParagraph setLeftIndent(java.lang.Integer leftIndent) {
    this.leftIndent = leftIndent;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Integer getLineSpacing() {
    return lineSpacing;
  }

  /**
   * @param lineSpacing lineSpacing or {@code null} for none
   */
  public GoodocParagraph setLineSpacing(java.lang.Integer lineSpacing) {
    this.lineSpacing = lineSpacing;
    return this;
  }

  /**
   * Which way is upright for this paragraph and what is the dominant reading order?
   * @return value or {@code null} for none
   */
  public GoodocOrientationLabel getOrientationLabel() {
    return orientationLabel;
  }

  /**
   * Which way is upright for this paragraph and what is the dominant reading order?
   * @param orientationLabel orientationLabel or {@code null} for none
   */
  public GoodocParagraph setOrientationLabel(GoodocOrientationLabel orientationLabel) {
    this.orientationLabel = orientationLabel;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Integer getRightIndent() {
    return rightIndent;
  }

  /**
   * @param rightIndent rightIndent or {@code null} for none
   */
  public GoodocParagraph setRightIndent(java.lang.Integer rightIndent) {
    this.rightIndent = rightIndent;
    return this;
  }

  /**
   * If RotatedBox is set, Box must be set as well. See RotatedBoundingBox.
   * @return value or {@code null} for none
   */
  public GoodocRotatedBoundingBox getRotatedBox() {
    return rotatedBox;
  }

  /**
   * If RotatedBox is set, Box must be set as well. See RotatedBoundingBox.
   * @param rotatedBox rotatedBox or {@code null} for none
   */
  public GoodocParagraph setRotatedBox(GoodocRotatedBoundingBox rotatedBox) {
    this.rotatedBox = rotatedBox;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Integer getSpaceAfter() {
    return spaceAfter;
  }

  /**
   * @param spaceAfter spaceAfter or {@code null} for none
   */
  public GoodocParagraph setSpaceAfter(java.lang.Integer spaceAfter) {
    this.spaceAfter = spaceAfter;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Integer getSpaceBefore() {
    return spaceBefore;
  }

  /**
   * @param spaceBefore spaceBefore or {@code null} for none
   */
  public GoodocParagraph setSpaceBefore(java.lang.Integer spaceBefore) {
    this.spaceBefore = spaceBefore;
    return this;
  }

  /**
   * If we merge any paragraphs into this one (through the MergeParagraphWithNext() interface in
   * goodoc-editing.h), then we append the properties of the merged paragraph here, for debugging
   * and to avoid losing any info. Note that the SubsumedParagraphProperties Paragraphs do not
   * contain Routes.
   * @return value or {@code null} for none
   */
  public java.util.List<GoodocParagraph> getSubsumedParagraphProperties() {
    return subsumedParagraphProperties;
  }

  /**
   * If we merge any paragraphs into this one (through the MergeParagraphWithNext() interface in
   * goodoc-editing.h), then we append the properties of the merged paragraph here, for debugging
   * and to avoid losing any info. Note that the SubsumedParagraphProperties Paragraphs do not
   * contain Routes.
   * @param subsumedParagraphProperties subsumedParagraphProperties or {@code null} for none
   */
  public GoodocParagraph setSubsumedParagraphProperties(java.util.List<GoodocParagraph> subsumedParagraphProperties) {
    this.subsumedParagraphProperties = subsumedParagraphProperties;
    return this;
  }

  /**
   * Paragraph text recognition confidence. Range depends on the algorithm but should be consistent
   * in a given volume. 0 is bad, 100 is good.
   * @return value or {@code null} for none
   */
  public java.lang.Integer getTextConfidence() {
    return textConfidence;
  }

  /**
   * Paragraph text recognition confidence. Range depends on the algorithm but should be consistent
   * in a given volume. 0 is bad, 100 is good.
   * @param textConfidence textConfidence or {@code null} for none
   */
  public GoodocParagraph setTextConfidence(java.lang.Integer textConfidence) {
    this.textConfidence = textConfidence;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Integer getWidth() {
    return width;
  }

  /**
   * @param width width or {@code null} for none
   */
  public GoodocParagraph setWidth(java.lang.Integer width) {
    this.width = width;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Integer getAlignment() {
    return alignment;
  }

  /**
   * @param alignment alignment or {@code null} for none
   */
  public GoodocParagraph setAlignment(java.lang.Integer alignment) {
    this.alignment = alignment;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public GoodocParagraphDroppedCap getDroppedcap() {
    return droppedcap;
  }

  /**
   * @param droppedcap droppedcap or {@code null} for none
   */
  public GoodocParagraph setDroppedcap(GoodocParagraphDroppedCap droppedcap) {
    this.droppedcap = droppedcap;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.util.List<GoodocParagraphRoute> getRoute() {
    return route;
  }

  /**
   * @param route route or {@code null} for none
   */
  public GoodocParagraph setRoute(java.util.List<GoodocParagraphRoute> route) {
    this.route = route;
    return this;
  }

  @Override
  public GoodocParagraph set(String fieldName, Object value) {
    return (GoodocParagraph) super.set(fieldName, value);
  }

  @Override
  public GoodocParagraph clone() {
    return (GoodocParagraph) super.clone();
  }

}
