text: /*
   * 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.cloudsearch.v1.model;
  
  /**
   * Available metadata fields for the item.
   *
   * <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 Cloud Search 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 ItemMetadata extends com.google.api.client.json.GenericJson {
  
    /**
     * The name of the container for this item. Deletion of the container item leads to automatic
     * deletion of this item.  Note: ACLs are not inherited from a container item. To provide ACL
     * inheritance for an item, use the inheritAclFrom field. The maximum length is 1536 characters.
     * The value may be {@code null}.
     */
    @com.google.api.client.util.Key
    private java.lang.String containerName;
  
    /**
     * The BCP-47 language code for the item, such as "en-US" or "sr-Latn". For more information, see
     * http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. The maximum length is 32
     * characters.
     * The value may be {@code null}.
     */
    @com.google.api.client.util.Key
    private java.lang.String contentLanguage;
  
    /**
     * The time when the item was created in the source repository.
     * The value may be {@code null}.
     */
    @com.google.api.client.util.Key
    private String createTime;
  
    /**
     * Hashing value provided by the API caller. This can be used with the items.push method to
     * calculate modified state. The maximum length is 2048 characters.
     * The value may be {@code null}.
     */
    @com.google.api.client.util.Key
    private java.lang.String hash;
  
    /**
     * A list of interactions for the item.  Interactions are used to improve Search quality, but are
     * not exposed to end users. The maximum number of elements is 1000.
     * The value may be {@code null}.
     */
    @com.google.api.client.util.Key
    private java.util.List<Interaction> interactions;
  
    static {
      // hack to force ProGuard to consider Interaction used, since otherwise it would be stripped out
      // see https://github.com/google/google-api-java-client/issues/543
      com.google.api.client.util.Data.nullOf(Interaction.class);
    }
  
    /**
     * Additional keywords or phrases that should match the item. Used internally for user generated
     * content. The maximum number of elements is 100. The maximum length is 8192 characters.
     * The value may be {@code null}.
     */
    @com.google.api.client.util.Key
    private java.util.List<java.lang.String> keywords;
  
    /**
     * The original mime-type of ItemContent.content in the source repository. The maximum length is
     * 256 characters.
     * The value may be {@code null}.
     */
    @com.google.api.client.util.Key
    private java.lang.String mimeType;
  
    /**
     * The type of the item.  This should correspond to the name of an object definition in the schema
     * registered for the data source.  For example, if the schema for the data source contains an
     * object definition with name 'document', then item indexing requests for objects of that type
     * should set objectType to 'document'. The maximum length is 256 characters.
     * The value may be {@code null}.
     */
    @com.google.api.client.util.Key
    private java.lang.String objectType;
  
    /**
     * Additional search quality metadata of the item
     * The value may be {@code null}.
     */
    @com.google.api.client.util.Key
    private SearchQualityMetadata searchQualityMetadata;
  
    /**
     * Link to the source repository serving the data.  earch results apply this link to the title.
     * The maximum length is 2048 characters.
     * The value may be {@code null}.
     */
    @com.google.api.client.util.Key
    private java.lang.String sourceRepositoryUrl;
  
    /**
     * The title of the item.  If given, this will be the displayed title of the Search result. The
     * maximum length is 2048 characters.
     * The value may be {@code null}.
     */
    @com.google.api.client.util.Key
    private java.lang.String title;
  
    /**
     * The time when the item was last modified in the source repository.
     * The value may be {@code null}.
     */
    @com.google.api.client.util.Key
    private String updateTime;
  
    /**
     * The name of the container for this item. Deletion of the container item leads to automatic
     * deletion of this item.  Note: ACLs are not inherited from a container item. To provide ACL
     * inheritance for an item, use the inheritAclFrom field. The maximum length is 1536 characters.
     * @return value or {@code null} for none
     */
    public java.lang.String getContainerName() {
      return containerName;
    }
  
    /**
     * The name of the container for this item. Deletion of the container item leads to automatic
     * deletion of this item.  Note: ACLs are not inherited from a container item. To provide ACL
     * inheritance for an item, use the inheritAclFrom field. The maximum length is 1536 characters.
     * @param containerName containerName or {@code null} for none
     */
    public ItemMetadata setContainerName(java.lang.String containerName) {
      this.containerName = containerName;
      return this;
    }
  
    /**
     * The BCP-47 language code for the item, such as "en-US" or "sr-Latn". For more information, see
     * http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. The maximum length is 32
     * characters.
     * @return value or {@code null} for none
     */
    public java.lang.String getContentLanguage() {
      return contentLanguage;
    }
  
    /**
     * The BCP-47 language code for the item, such as "en-US" or "sr-Latn". For more information, see
     * http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. The maximum length is 32
     * characters.
     * @param contentLanguage contentLanguage or {@code null} for none
     */
    public ItemMetadata setContentLanguage(java.lang.String contentLanguage) {
      this.contentLanguage = contentLanguage;
      return this;
    }
  
    /**
     * The time when the item was created in the source repository.
     * @return value or {@code null} for none
     */
    public String getCreateTime() {
      return createTime;
    }
  
    /**
     * The time when the item was created in the source repository.
     * @param createTime createTime or {@code null} for none
     */
    public ItemMetadata setCreateTime(String createTime) {
      this.createTime = createTime;
      return this;
    }
  
    /**
     * Hashing value provided by the API caller. This can be used with the items.push method to
     * calculate modified state. The maximum length is 2048 characters.
     * @return value or {@code null} for none
     */
    public java.lang.String getHash() {
      return hash;
    }
  
    /**
     * Hashing value provided by the API caller. This can be used with the items.push method to
     * calculate modified state. The maximum length is 2048 characters.
     * @param hash hash or {@code null} for none
     */
    public ItemMetadata setHash(java.lang.String hash) {
      this.hash = hash;
      return this;
    }
  
    /**
     * A list of interactions for the item.  Interactions are used to improve Search quality, but are
     * not exposed to end users. The maximum number of elements is 1000.
     * @return value or {@code null} for none
     */
    public java.util.List<Interaction> getInteractions() {
      return interactions;
    }
  
    /**
     * A list of interactions for the item.  Interactions are used to improve Search quality, but are
     * not exposed to end users. The maximum number of elements is 1000.
     * @param interactions interactions or {@code null} for none
     */
    public ItemMetadata setInteractions(java.util.List<Interaction> interactions) {
      this.interactions = interactions;
      return this;
    }
  
    /**
     * Additional keywords or phrases that should match the item. Used internally for user generated
     * content. The maximum number of elements is 100. The maximum length is 8192 characters.
     * @return value or {@code null} for none
     */
    public java.util.List<java.lang.String> getKeywords() {
      return keywords;
    }
  
    /**
     * Additional keywords or phrases that should match the item. Used internally for user generated
     * content. The maximum number of elements is 100. The maximum length is 8192 characters.
     * @param keywords keywords or {@code null} for none
     */
    public ItemMetadata setKeywords(java.util.List<java.lang.String> keywords) {
      this.keywords = keywords;
      return this;
    }
  
    /**
     * The original mime-type of ItemContent.content in the source repository. The maximum length is
     * 256 characters.
     * @return value or {@code null} for none
     */
    public java.lang.String getMimeType() {
      return mimeType;
    }
  
    /**
     * The original mime-type of ItemContent.content in the source repository. The maximum length is
     * 256 characters.
     * @param mimeType mimeType or {@code null} for none
     */
    public ItemMetadata setMimeType(java.lang.String mimeType) {
      this.mimeType = mimeType;
      return this;
    }
  
    /**
     * The type of the item.  This should correspond to the name of an object definition in the schema
     * registered for the data source.  For example, if the schema for the data source contains an
     * object definition with name 'document', then item indexing requests for objects of that type
     * should set objectType to 'document'. The maximum length is 256 characters.
     * @return value or {@code null} for none
     */
    public java.lang.String getObjectType() {
      return objectType;
    }
  
    /**
     * The type of the item.  This should correspond to the name of an object definition in the schema
     * registered for the data source.  For example, if the schema for the data source contains an
     * object definition with name 'document', then item indexing requests for objects of that type
     * should set objectType to 'document'. The maximum length is 256 characters.
     * @param objectType objectType or {@code null} for none
     */
    public ItemMetadata setObjectType(java.lang.String objectType) {
      this.objectType = objectType;
      return this;
    }
  
    /**
     * Additional search quality metadata of the item
     * @return value or {@code null} for none
     */
    public SearchQualityMetadata getSearchQualityMetadata() {
      return searchQualityMetadata;
    }
  
    /**
     * Additional search quality metadata of the item
     * @param searchQualityMetadata searchQualityMetadata or {@code null} for none
     */
    public ItemMetadata setSearchQualityMetadata(SearchQualityMetadata searchQualityMetadata) {
      this.searchQualityMetadata = searchQualityMetadata;
      return this;
    }
  
    /**
     * Link to the source repository serving the data.  earch results apply this link to the title.
     * The maximum length is 2048 characters.
     * @return value or {@code null} for none
     */
    public java.lang.String getSourceRepositoryUrl() {
      return sourceRepositoryUrl;
    }
  
    /**
     * Link to the source repository serving the data.  earch results apply this link to the title.
     * The maximum length is 2048 characters.
     * @param sourceRepositoryUrl sourceRepositoryUrl or {@code null} for none
     */
    public ItemMetadata setSourceRepositoryUrl(java.lang.String sourceRepositoryUrl) {
      this.sourceRepositoryUrl = sourceRepositoryUrl;
      return this;
    }
  
    /**
     * The title of the item.  If given, this will be the displayed title of the Search result. The
     * maximum length is 2048 characters.
     * @return value or {@code null} for none
     */
    public java.lang.String getTitle() {
      return title;
    }
  
    /**
     * The title of the item.  If given, this will be the displayed title of the Search result. The
     * maximum length is 2048 characters.
     * @param title title or {@code null} for none
     */
    public ItemMetadata setTitle(java.lang.String title) {
      this.title = title;
      return this;
    }
  
    /**
     * The time when the item was last modified in the source repository.
     * @return value or {@code null} for none
     */
    public String getUpdateTime() {
      return updateTime;
    }
  
    /**
     * The time when the item was last modified in the source repository.
     * @param updateTime updateTime or {@code null} for none
     */
    public ItemMetadata setUpdateTime(String updateTime) {
      this.updateTime = updateTime;
      return this;
    }
  
    @Override
    public ItemMetadata set(String fieldName, Object value) {
      return (ItemMetadata) super.set(fieldName, value);
    }
  
    @Override
    public ItemMetadata clone() {
      return (ItemMetadata) super.clone();
    }
  
  }
  