IndexingParametersConfiguration.java

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is
// regenerated.

package com.azure.search.documents.indexes.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.HashMap;
import java.util.Map;

/**
 * A dictionary of indexer-specific configuration properties. Each name is the name of a specific property. Each value
 * must be of a primitive type.
 */
@Fluent
public final class IndexingParametersConfiguration {
    /*
     * Represents the parsing mode for indexing from an Azure blob data source.
     */
    @JsonProperty(value = "parsingMode")
    private BlobIndexerParsingMode parsingMode;

    /*
     * Comma-delimited list of filename extensions to ignore when processing
     * from Azure blob storage.  For example, you could exclude ".png, .mp4" to
     * skip over those files during indexing.
     */
    @JsonProperty(value = "excludedFileNameExtensions")
    private String excludedFileNameExtensions;

    /*
     * Comma-delimited list of filename extensions to select when processing
     * from Azure blob storage.  For example, you could focus indexing on
     * specific application files ".docx, .pptx, .msg" to specifically include
     * those file types.
     */
    @JsonProperty(value = "indexedFileNameExtensions")
    private String indexedFileNameExtensions;

    /*
     * For Azure blobs, set to false if you want to continue indexing when an
     * unsupported content type is encountered, and you don't know all the
     * content types (file extensions) in advance.
     */
    @JsonProperty(value = "failOnUnsupportedContentType")
    private Boolean failOnUnsupportedContentType;

    /*
     * For Azure blobs, set to false if you want to continue indexing if a
     * document fails indexing.
     */
    @JsonProperty(value = "failOnUnprocessableDocument")
    private Boolean failOnUnprocessableDocument;

    /*
     * For Azure blobs, set this property to true to still index storage
     * metadata for blob content that is too large to process. Oversized blobs
     * are treated as errors by default. For limits on blob size, see
     * https://docs.microsoft.com/azure/search/search-limits-quotas-capacity.
     */
    @JsonProperty(value = "indexStorageMetadataOnlyForOversizedDocuments")
    private Boolean indexStorageMetadataOnlyForOversizedDocuments;

    /*
     * For CSV blobs, specifies a comma-delimited list of column headers,
     * useful for mapping source fields to destination fields in an index.
     */
    @JsonProperty(value = "delimitedTextHeaders")
    private String delimitedTextHeaders;

    /*
     * For CSV blobs, specifies the end-of-line single-character delimiter for
     * CSV files where each line starts a new document (for example, "|").
     */
    @JsonProperty(value = "delimitedTextDelimiter")
    private String delimitedTextDelimiter;

    /*
     * For CSV blobs, indicates that the first (non-blank) line of each blob
     * contains headers.
     */
    @JsonProperty(value = "firstLineContainsHeaders")
    private Boolean firstLineContainsHeaders;

    /*
     * For JSON arrays, given a structured or semi-structured document, you can
     * specify a path to the array using this property.
     */
    @JsonProperty(value = "documentRoot")
    private String documentRoot;

    /*
     * Specifies the data to extract from Azure blob storage and tells the
     * indexer which data to extract from image content when "imageAction" is
     * set to a value other than "none".  This applies to embedded image
     * content in a .PDF or other application, or image files such as .jpg and
     * .png, in Azure blobs.
     */
    @JsonProperty(value = "dataToExtract")
    private BlobIndexerDataToExtract dataToExtract;

    /*
     * Determines how to process embedded images and image files in Azure blob
     * storage.  Setting the "imageAction" configuration to any value other
     * than "none" requires that a skillset also be attached to that indexer.
     */
    @JsonProperty(value = "imageAction")
    private BlobIndexerImageAction imageAction;

    /*
     * If true, will create a path //document//file_data that is an object
     * representing the original file data downloaded from your blob data
     * source.  This allows you to pass the original file data to a custom
     * skill for processing within the enrichment pipeline, or to the Document
     * Extraction skill.
     */
    @JsonProperty(value = "allowSkillsetToReadFileData")
    private Boolean allowSkillsetToReadFileData;

    /*
     * Determines algorithm for text extraction from PDF files in Azure blob
     * storage.
     */
    @JsonProperty(value = "pdfTextRotationAlgorithm")
    private BlobIndexerPdfTextRotationAlgorithm pdfTextRotationAlgorithm;

    /*
     * Specifies the environment in which the indexer should execute.
     */
    @JsonProperty(value = "executionEnvironment")
    private IndexerExecutionEnvironment executionEnvironment;

    /*
     * Increases the timeout beyond the 5-minute default for Azure SQL database
     * data sources, specified in the format "hh:mm:ss".
     */
    @JsonProperty(value = "queryTimeout")
    private String queryTimeout;

    /*
     * A dictionary of indexer-specific configuration properties. Each name is
     * the name of a specific property. Each value must be of a primitive type.
     */
    @JsonIgnore private Map<String, Object> additionalProperties;

    /**
     * Get the parsingMode property: Represents the parsing mode for indexing from an Azure blob data source.
     *
     * @return the parsingMode value.
     */
    public BlobIndexerParsingMode getParsingMode() {
        return this.parsingMode;
    }

    /**
     * Set the parsingMode property: Represents the parsing mode for indexing from an Azure blob data source.
     *
     * @param parsingMode the parsingMode value to set.
     * @return the IndexingParametersConfiguration object itself.
     */
    public IndexingParametersConfiguration setParsingMode(BlobIndexerParsingMode parsingMode) {
        this.parsingMode = parsingMode;
        return this;
    }

    /**
     * Get the excludedFileNameExtensions property: Comma-delimited list of filename extensions to ignore when
     * processing from Azure blob storage. For example, you could exclude ".png, .mp4" to skip over those files during
     * indexing.
     *
     * @return the excludedFileNameExtensions value.
     */
    public String getExcludedFileNameExtensions() {
        return this.excludedFileNameExtensions;
    }

    /**
     * Set the excludedFileNameExtensions property: Comma-delimited list of filename extensions to ignore when
     * processing from Azure blob storage. For example, you could exclude ".png, .mp4" to skip over those files during
     * indexing.
     *
     * @param excludedFileNameExtensions the excludedFileNameExtensions value to set.
     * @return the IndexingParametersConfiguration object itself.
     */
    public IndexingParametersConfiguration setExcludedFileNameExtensions(String excludedFileNameExtensions) {
        this.excludedFileNameExtensions = excludedFileNameExtensions;
        return this;
    }

    /**
     * Get the indexedFileNameExtensions property: Comma-delimited list of filename extensions to select when processing
     * from Azure blob storage. For example, you could focus indexing on specific application files ".docx, .pptx, .msg"
     * to specifically include those file types.
     *
     * @return the indexedFileNameExtensions value.
     */
    public String getIndexedFileNameExtensions() {
        return this.indexedFileNameExtensions;
    }

    /**
     * Set the indexedFileNameExtensions property: Comma-delimited list of filename extensions to select when processing
     * from Azure blob storage. For example, you could focus indexing on specific application files ".docx, .pptx, .msg"
     * to specifically include those file types.
     *
     * @param indexedFileNameExtensions the indexedFileNameExtensions value to set.
     * @return the IndexingParametersConfiguration object itself.
     */
    public IndexingParametersConfiguration setIndexedFileNameExtensions(String indexedFileNameExtensions) {
        this.indexedFileNameExtensions = indexedFileNameExtensions;
        return this;
    }

    /**
     * Get the failOnUnsupportedContentType property: For Azure blobs, set to false if you want to continue indexing
     * when an unsupported content type is encountered, and you don't know all the content types (file extensions) in
     * advance.
     *
     * @return the failOnUnsupportedContentType value.
     */
    public Boolean isFailOnUnsupportedContentType() {
        return this.failOnUnsupportedContentType;
    }

    /**
     * Set the failOnUnsupportedContentType property: For Azure blobs, set to false if you want to continue indexing
     * when an unsupported content type is encountered, and you don't know all the content types (file extensions) in
     * advance.
     *
     * @param failOnUnsupportedContentType the failOnUnsupportedContentType value to set.
     * @return the IndexingParametersConfiguration object itself.
     */
    public IndexingParametersConfiguration setFailOnUnsupportedContentType(Boolean failOnUnsupportedContentType) {
        this.failOnUnsupportedContentType = failOnUnsupportedContentType;
        return this;
    }

    /**
     * Get the failOnUnprocessableDocument property: For Azure blobs, set to false if you want to continue indexing if a
     * document fails indexing.
     *
     * @return the failOnUnprocessableDocument value.
     */
    public Boolean isFailOnUnprocessableDocument() {
        return this.failOnUnprocessableDocument;
    }

    /**
     * Set the failOnUnprocessableDocument property: For Azure blobs, set to false if you want to continue indexing if a
     * document fails indexing.
     *
     * @param failOnUnprocessableDocument the failOnUnprocessableDocument value to set.
     * @return the IndexingParametersConfiguration object itself.
     */
    public IndexingParametersConfiguration setFailOnUnprocessableDocument(Boolean failOnUnprocessableDocument) {
        this.failOnUnprocessableDocument = failOnUnprocessableDocument;
        return this;
    }

    /**
     * Get the indexStorageMetadataOnlyForOversizedDocuments property: For Azure blobs, set this property to true to
     * still index storage metadata for blob content that is too large to process. Oversized blobs are treated as errors
     * by default. For limits on blob size, see https://docs.microsoft.com/azure/search/search-limits-quotas-capacity.
     *
     * @return the indexStorageMetadataOnlyForOversizedDocuments value.
     */
    public Boolean isIndexStorageMetadataOnlyForOversizedDocuments() {
        return this.indexStorageMetadataOnlyForOversizedDocuments;
    }

    /**
     * Set the indexStorageMetadataOnlyForOversizedDocuments property: For Azure blobs, set this property to true to
     * still index storage metadata for blob content that is too large to process. Oversized blobs are treated as errors
     * by default. For limits on blob size, see https://docs.microsoft.com/azure/search/search-limits-quotas-capacity.
     *
     * @param indexStorageMetadataOnlyForOversizedDocuments the indexStorageMetadataOnlyForOversizedDocuments value to
     *     set.
     * @return the IndexingParametersConfiguration object itself.
     */
    public IndexingParametersConfiguration setIndexStorageMetadataOnlyForOversizedDocuments(
            Boolean indexStorageMetadataOnlyForOversizedDocuments) {
        this.indexStorageMetadataOnlyForOversizedDocuments = indexStorageMetadataOnlyForOversizedDocuments;
        return this;
    }

    /**
     * Get the delimitedTextHeaders property: For CSV blobs, specifies a comma-delimited list of column headers, useful
     * for mapping source fields to destination fields in an index.
     *
     * @return the delimitedTextHeaders value.
     */
    public String getDelimitedTextHeaders() {
        return this.delimitedTextHeaders;
    }

    /**
     * Set the delimitedTextHeaders property: For CSV blobs, specifies a comma-delimited list of column headers, useful
     * for mapping source fields to destination fields in an index.
     *
     * @param delimitedTextHeaders the delimitedTextHeaders value to set.
     * @return the IndexingParametersConfiguration object itself.
     */
    public IndexingParametersConfiguration setDelimitedTextHeaders(String delimitedTextHeaders) {
        this.delimitedTextHeaders = delimitedTextHeaders;
        return this;
    }

    /**
     * Get the delimitedTextDelimiter property: For CSV blobs, specifies the end-of-line single-character delimiter for
     * CSV files where each line starts a new document (for example, "|").
     *
     * @return the delimitedTextDelimiter value.
     */
    public String getDelimitedTextDelimiter() {
        return this.delimitedTextDelimiter;
    }

    /**
     * Set the delimitedTextDelimiter property: For CSV blobs, specifies the end-of-line single-character delimiter for
     * CSV files where each line starts a new document (for example, "|").
     *
     * @param delimitedTextDelimiter the delimitedTextDelimiter value to set.
     * @return the IndexingParametersConfiguration object itself.
     */
    public IndexingParametersConfiguration setDelimitedTextDelimiter(String delimitedTextDelimiter) {
        this.delimitedTextDelimiter = delimitedTextDelimiter;
        return this;
    }

    /**
     * Get the firstLineContainsHeaders property: For CSV blobs, indicates that the first (non-blank) line of each blob
     * contains headers.
     *
     * @return the firstLineContainsHeaders value.
     */
    public Boolean isFirstLineContainsHeaders() {
        return this.firstLineContainsHeaders;
    }

    /**
     * Set the firstLineContainsHeaders property: For CSV blobs, indicates that the first (non-blank) line of each blob
     * contains headers.
     *
     * @param firstLineContainsHeaders the firstLineContainsHeaders value to set.
     * @return the IndexingParametersConfiguration object itself.
     */
    public IndexingParametersConfiguration setFirstLineContainsHeaders(Boolean firstLineContainsHeaders) {
        this.firstLineContainsHeaders = firstLineContainsHeaders;
        return this;
    }

    /**
     * Get the documentRoot property: For JSON arrays, given a structured or semi-structured document, you can specify a
     * path to the array using this property.
     *
     * @return the documentRoot value.
     */
    public String getDocumentRoot() {
        return this.documentRoot;
    }

    /**
     * Set the documentRoot property: For JSON arrays, given a structured or semi-structured document, you can specify a
     * path to the array using this property.
     *
     * @param documentRoot the documentRoot value to set.
     * @return the IndexingParametersConfiguration object itself.
     */
    public IndexingParametersConfiguration setDocumentRoot(String documentRoot) {
        this.documentRoot = documentRoot;
        return this;
    }

    /**
     * Get the dataToExtract property: Specifies the data to extract from Azure blob storage and tells the indexer which
     * data to extract from image content when "imageAction" is set to a value other than "none". This applies to
     * embedded image content in a .PDF or other application, or image files such as .jpg and .png, in Azure blobs.
     *
     * @return the dataToExtract value.
     */
    public BlobIndexerDataToExtract getDataToExtract() {
        return this.dataToExtract;
    }

    /**
     * Set the dataToExtract property: Specifies the data to extract from Azure blob storage and tells the indexer which
     * data to extract from image content when "imageAction" is set to a value other than "none". This applies to
     * embedded image content in a .PDF or other application, or image files such as .jpg and .png, in Azure blobs.
     *
     * @param dataToExtract the dataToExtract value to set.
     * @return the IndexingParametersConfiguration object itself.
     */
    public IndexingParametersConfiguration setDataToExtract(BlobIndexerDataToExtract dataToExtract) {
        this.dataToExtract = dataToExtract;
        return this;
    }

    /**
     * Get the imageAction property: Determines how to process embedded images and image files in Azure blob storage.
     * Setting the "imageAction" configuration to any value other than "none" requires that a skillset also be attached
     * to that indexer.
     *
     * @return the imageAction value.
     */
    public BlobIndexerImageAction getImageAction() {
        return this.imageAction;
    }

    /**
     * Set the imageAction property: Determines how to process embedded images and image files in Azure blob storage.
     * Setting the "imageAction" configuration to any value other than "none" requires that a skillset also be attached
     * to that indexer.
     *
     * @param imageAction the imageAction value to set.
     * @return the IndexingParametersConfiguration object itself.
     */
    public IndexingParametersConfiguration setImageAction(BlobIndexerImageAction imageAction) {
        this.imageAction = imageAction;
        return this;
    }

    /**
     * Get the allowSkillsetToReadFileData property: If true, will create a path //document//file_data that is an object
     * representing the original file data downloaded from your blob data source. This allows you to pass the original
     * file data to a custom skill for processing within the enrichment pipeline, or to the Document Extraction skill.
     *
     * @return the allowSkillsetToReadFileData value.
     */
    public Boolean isAllowSkillsetToReadFileData() {
        return this.allowSkillsetToReadFileData;
    }

    /**
     * Set the allowSkillsetToReadFileData property: If true, will create a path //document//file_data that is an object
     * representing the original file data downloaded from your blob data source. This allows you to pass the original
     * file data to a custom skill for processing within the enrichment pipeline, or to the Document Extraction skill.
     *
     * @param allowSkillsetToReadFileData the allowSkillsetToReadFileData value to set.
     * @return the IndexingParametersConfiguration object itself.
     */
    public IndexingParametersConfiguration setAllowSkillsetToReadFileData(Boolean allowSkillsetToReadFileData) {
        this.allowSkillsetToReadFileData = allowSkillsetToReadFileData;
        return this;
    }

    /**
     * Get the pdfTextRotationAlgorithm property: Determines algorithm for text extraction from PDF files in Azure blob
     * storage.
     *
     * @return the pdfTextRotationAlgorithm value.
     */
    public BlobIndexerPdfTextRotationAlgorithm getPdfTextRotationAlgorithm() {
        return this.pdfTextRotationAlgorithm;
    }

    /**
     * Set the pdfTextRotationAlgorithm property: Determines algorithm for text extraction from PDF files in Azure blob
     * storage.
     *
     * @param pdfTextRotationAlgorithm the pdfTextRotationAlgorithm value to set.
     * @return the IndexingParametersConfiguration object itself.
     */
    public IndexingParametersConfiguration setPdfTextRotationAlgorithm(
            BlobIndexerPdfTextRotationAlgorithm pdfTextRotationAlgorithm) {
        this.pdfTextRotationAlgorithm = pdfTextRotationAlgorithm;
        return this;
    }

    /**
     * Get the executionEnvironment property: Specifies the environment in which the indexer should execute.
     *
     * @return the executionEnvironment value.
     */
    public IndexerExecutionEnvironment getExecutionEnvironment() {
        return this.executionEnvironment;
    }

    /**
     * Set the executionEnvironment property: Specifies the environment in which the indexer should execute.
     *
     * @param executionEnvironment the executionEnvironment value to set.
     * @return the IndexingParametersConfiguration object itself.
     */
    public IndexingParametersConfiguration setExecutionEnvironment(IndexerExecutionEnvironment executionEnvironment) {
        this.executionEnvironment = executionEnvironment;
        return this;
    }

    /**
     * Get the queryTimeout property: Increases the timeout beyond the 5-minute default for Azure SQL database data
     * sources, specified in the format "hh:mm:ss".
     *
     * @return the queryTimeout value.
     */
    public String getQueryTimeout() {
        return this.queryTimeout;
    }

    /**
     * Set the queryTimeout property: Increases the timeout beyond the 5-minute default for Azure SQL database data
     * sources, specified in the format "hh:mm:ss".
     *
     * @param queryTimeout the queryTimeout value to set.
     * @return the IndexingParametersConfiguration object itself.
     */
    public IndexingParametersConfiguration setQueryTimeout(String queryTimeout) {
        this.queryTimeout = queryTimeout;
        return this;
    }

    /**
     * Get the additionalProperties property: A dictionary of indexer-specific configuration properties. Each name is
     * the name of a specific property. Each value must be of a primitive type.
     *
     * @return the additionalProperties value.
     */
    @JsonAnyGetter
    public Map<String, Object> getAdditionalProperties() {
        return this.additionalProperties;
    }

    /**
     * Set the additionalProperties property: A dictionary of indexer-specific configuration properties. Each name is
     * the name of a specific property. Each value must be of a primitive type.
     *
     * @param additionalProperties the additionalProperties value to set.
     * @return the IndexingParametersConfiguration object itself.
     */
    public IndexingParametersConfiguration setAdditionalProperties(Map<String, Object> additionalProperties) {
        this.additionalProperties = additionalProperties;
        return this;
    }

    @JsonAnySetter
    void setAdditionalProperties(String key, Object value) {
        if (additionalProperties == null) {
            additionalProperties = new HashMap<>();
        }
        additionalProperties.put(key, value);
    }
}