diff --git a/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml b/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml index 9dccb5286e34..3a101533cd6c 100755 --- a/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml +++ b/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml @@ -261,10 +261,6 @@ - - - diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeSentimentAsyncClient.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeSentimentAsyncClient.java index 728c5a73eb09..9399fdbf69f0 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeSentimentAsyncClient.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeSentimentAsyncClient.java @@ -32,12 +32,13 @@ import java.util.stream.Collectors; import static com.azure.ai.textanalytics.TextAnalyticsAsyncClient.COGNITIVE_TRACING_NAMESPACE_VALUE; -import static com.azure.ai.textanalytics.Transforms.toBatchStatistics; -import static com.azure.ai.textanalytics.Transforms.toTextAnalyticsError; -import static com.azure.ai.textanalytics.Transforms.toTextDocumentStatistics; import static com.azure.ai.textanalytics.implementation.Utility.getEmptyErrorIdHttpResponse; import static com.azure.ai.textanalytics.implementation.Utility.inputDocumentsValidation; import static com.azure.ai.textanalytics.implementation.Utility.mapToHttpResponseExceptionIfExist; +import static com.azure.ai.textanalytics.implementation.Utility.toBatchStatistics; +import static com.azure.ai.textanalytics.implementation.Utility.toMultiLanguageInput; +import static com.azure.ai.textanalytics.implementation.Utility.toTextAnalyticsError; +import static com.azure.ai.textanalytics.implementation.Utility.toTextDocumentStatistics; import static com.azure.core.util.FluxUtil.fluxError; import static com.azure.core.util.FluxUtil.withContext; import static com.azure.core.util.tracing.Tracer.AZ_TRACING_NAMESPACE_KEY; @@ -211,7 +212,7 @@ private AnalyzeSentimentResult convertToAnalyzeSentimentResult(DocumentSentiment private Mono> getAnalyzedSentimentResponseInPage( Iterable documents, TextAnalyticsRequestOptions options, Context context) { return service.sentimentWithResponseAsync( - new MultiLanguageBatchInput().setDocuments(Transforms.toMultiLanguageInput(documents)), + new MultiLanguageBatchInput().setDocuments(toMultiLanguageInput(documents)), context.addData(AZ_TRACING_NAMESPACE_KEY, COGNITIVE_TRACING_NAMESPACE_VALUE), options == null ? null : options.getModelVersion(), options == null ? null : options.isIncludeStatistics()) diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/DetectLanguageAsyncClient.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/DetectLanguageAsyncClient.java index 112345eef2a0..47bb7fada9cb 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/DetectLanguageAsyncClient.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/DetectLanguageAsyncClient.java @@ -28,12 +28,13 @@ import java.util.stream.Collectors; import static com.azure.ai.textanalytics.TextAnalyticsAsyncClient.COGNITIVE_TRACING_NAMESPACE_VALUE; -import static com.azure.ai.textanalytics.Transforms.toBatchStatistics; -import static com.azure.ai.textanalytics.Transforms.toLanguageInput; -import static com.azure.ai.textanalytics.Transforms.toTextAnalyticsError; import static com.azure.ai.textanalytics.implementation.Utility.getEmptyErrorIdHttpResponse; import static com.azure.ai.textanalytics.implementation.Utility.inputDocumentsValidation; import static com.azure.ai.textanalytics.implementation.Utility.mapToHttpResponseExceptionIfExist; +import static com.azure.ai.textanalytics.implementation.Utility.toBatchStatistics; +import static com.azure.ai.textanalytics.implementation.Utility.toLanguageInput; +import static com.azure.ai.textanalytics.implementation.Utility.toTextAnalyticsError; +import static com.azure.ai.textanalytics.implementation.Utility.toTextDocumentStatistics; import static com.azure.core.util.FluxUtil.fluxError; import static com.azure.core.util.FluxUtil.withContext; import static com.azure.core.util.tracing.Tracer.AZ_TRACING_NAMESPACE_KEY; @@ -121,7 +122,7 @@ private TextAnalyticsPagedResponse toTextAnalyticsPagedRes detectLanguageResults.add(new DetectLanguageResult( documentLanguage.getId(), documentLanguage.getStatistics() == null - ? null : Transforms.toTextDocumentStatistics(documentLanguage.getStatistics()), + ? null : toTextDocumentStatistics(documentLanguage.getStatistics()), null, new DetectedLanguage(detectedLanguage.getName(), detectedLanguage.getIso6391Name(), detectedLanguage.getConfidenceScore(), diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/ExtractKeyPhraseAsyncClient.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/ExtractKeyPhraseAsyncClient.java index fd0c18cadd4b..8f2cd601f549 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/ExtractKeyPhraseAsyncClient.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/ExtractKeyPhraseAsyncClient.java @@ -31,14 +31,14 @@ import java.util.stream.Collectors; import static com.azure.ai.textanalytics.TextAnalyticsAsyncClient.COGNITIVE_TRACING_NAMESPACE_VALUE; -import static com.azure.ai.textanalytics.Transforms.toBatchStatistics; -import static com.azure.ai.textanalytics.Transforms.toMultiLanguageInput; -import static com.azure.ai.textanalytics.Transforms.toTextAnalyticsError; -import static com.azure.ai.textanalytics.Transforms.toTextAnalyticsException; -import static com.azure.ai.textanalytics.Transforms.toTextDocumentStatistics; import static com.azure.ai.textanalytics.implementation.Utility.getEmptyErrorIdHttpResponse; import static com.azure.ai.textanalytics.implementation.Utility.inputDocumentsValidation; import static com.azure.ai.textanalytics.implementation.Utility.mapToHttpResponseExceptionIfExist; +import static com.azure.ai.textanalytics.implementation.Utility.toBatchStatistics; +import static com.azure.ai.textanalytics.implementation.Utility.toMultiLanguageInput; +import static com.azure.ai.textanalytics.implementation.Utility.toTextAnalyticsError; +import static com.azure.ai.textanalytics.implementation.Utility.toTextAnalyticsException; +import static com.azure.ai.textanalytics.implementation.Utility.toTextDocumentStatistics; import static com.azure.core.util.FluxUtil.fluxError; import static com.azure.core.util.FluxUtil.monoError; import static com.azure.core.util.FluxUtil.withContext; diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeEntityAsyncClient.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeEntityAsyncClient.java index 11ebb469ccb7..fa067b430679 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeEntityAsyncClient.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeEntityAsyncClient.java @@ -30,14 +30,14 @@ import java.util.stream.Collectors; import static com.azure.ai.textanalytics.TextAnalyticsAsyncClient.COGNITIVE_TRACING_NAMESPACE_VALUE; -import static com.azure.ai.textanalytics.Transforms.toBatchStatistics; -import static com.azure.ai.textanalytics.Transforms.toMultiLanguageInput; -import static com.azure.ai.textanalytics.Transforms.toTextAnalyticsError; -import static com.azure.ai.textanalytics.Transforms.toTextAnalyticsException; -import static com.azure.ai.textanalytics.Transforms.toTextDocumentStatistics; import static com.azure.ai.textanalytics.implementation.Utility.getEmptyErrorIdHttpResponse; import static com.azure.ai.textanalytics.implementation.Utility.inputDocumentsValidation; import static com.azure.ai.textanalytics.implementation.Utility.mapToHttpResponseExceptionIfExist; +import static com.azure.ai.textanalytics.implementation.Utility.toBatchStatistics; +import static com.azure.ai.textanalytics.implementation.Utility.toMultiLanguageInput; +import static com.azure.ai.textanalytics.implementation.Utility.toTextAnalyticsError; +import static com.azure.ai.textanalytics.implementation.Utility.toTextAnalyticsException; +import static com.azure.ai.textanalytics.implementation.Utility.toTextDocumentStatistics; import static com.azure.core.util.FluxUtil.fluxError; import static com.azure.core.util.FluxUtil.monoError; import static com.azure.core.util.FluxUtil.withContext; diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeLinkedEntityAsyncClient.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeLinkedEntityAsyncClient.java index 4f4b44ba0028..27cb31e266a3 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeLinkedEntityAsyncClient.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/RecognizeLinkedEntityAsyncClient.java @@ -30,13 +30,14 @@ import java.util.stream.Collectors; import static com.azure.ai.textanalytics.TextAnalyticsAsyncClient.COGNITIVE_TRACING_NAMESPACE_VALUE; -import static com.azure.ai.textanalytics.Transforms.toBatchStatistics; -import static com.azure.ai.textanalytics.Transforms.toTextAnalyticsError; -import static com.azure.ai.textanalytics.Transforms.toTextAnalyticsException; -import static com.azure.ai.textanalytics.Transforms.toTextDocumentStatistics; import static com.azure.ai.textanalytics.implementation.Utility.getEmptyErrorIdHttpResponse; import static com.azure.ai.textanalytics.implementation.Utility.inputDocumentsValidation; import static com.azure.ai.textanalytics.implementation.Utility.mapToHttpResponseExceptionIfExist; +import static com.azure.ai.textanalytics.implementation.Utility.toBatchStatistics; +import static com.azure.ai.textanalytics.implementation.Utility.toMultiLanguageInput; +import static com.azure.ai.textanalytics.implementation.Utility.toTextAnalyticsError; +import static com.azure.ai.textanalytics.implementation.Utility.toTextAnalyticsException; +import static com.azure.ai.textanalytics.implementation.Utility.toTextDocumentStatistics; import static com.azure.core.util.FluxUtil.fluxError; import static com.azure.core.util.FluxUtil.monoError; import static com.azure.core.util.FluxUtil.withContext; @@ -206,7 +207,7 @@ private IterableStream mapLinkedEntity( private Mono> getRecognizedLinkedEntitiesResponseInPage( Iterable documents, TextAnalyticsRequestOptions options, Context context) { return service.entitiesLinkingWithResponseAsync( - new MultiLanguageBatchInput().setDocuments(Transforms.toMultiLanguageInput(documents)), + new MultiLanguageBatchInput().setDocuments(toMultiLanguageInput(documents)), context.addData(AZ_TRACING_NAMESPACE_KEY, COGNITIVE_TRACING_NAMESPACE_VALUE), options == null ? null : options.getModelVersion(), options == null ? null : options.isIncludeStatistics()) diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/TextAnalyticsAsyncClient.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/TextAnalyticsAsyncClient.java index e9e24d4f9dda..482eb6858f67 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/TextAnalyticsAsyncClient.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/TextAnalyticsAsyncClient.java @@ -32,8 +32,8 @@ import java.util.Collections; import java.util.Objects; -import static com.azure.ai.textanalytics.Transforms.mapByIndex; -import static com.azure.ai.textanalytics.Transforms.toTextAnalyticsException; +import static com.azure.ai.textanalytics.implementation.Utility.mapByIndex; +import static com.azure.ai.textanalytics.implementation.Utility.toTextAnalyticsException; import static com.azure.core.util.FluxUtil.fluxError; import static com.azure.core.util.FluxUtil.monoError; diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/Transforms.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/Transforms.java deleted file mode 100644 index b611df351982..000000000000 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/Transforms.java +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.ai.textanalytics; - -import com.azure.ai.textanalytics.implementation.models.DocumentStatistics; -import com.azure.ai.textanalytics.implementation.models.LanguageInput; -import com.azure.ai.textanalytics.implementation.models.MultiLanguageInput; -import com.azure.ai.textanalytics.implementation.models.RequestStatistics; -import com.azure.ai.textanalytics.implementation.models.TextAnalyticsError; -import com.azure.ai.textanalytics.models.TextDocumentBatchStatistics; -import com.azure.ai.textanalytics.models.TextDocumentStatistics; -import com.azure.ai.textanalytics.models.DetectLanguageInput; -import com.azure.ai.textanalytics.models.TextAnalyticsErrorCode; -import com.azure.ai.textanalytics.models.TextAnalyticsException; -import com.azure.ai.textanalytics.models.TextDocumentInput; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.function.BiFunction; - -/** - * Helper class to convert service level models to SDK exposes models. - */ -final class Transforms { - private Transforms() { - } - - /** - * Given a list of documents will apply the indexing function to it and return the updated list. - * - * @param documents the inputs to apply the mapping function to. - * @param mappingFunction the function which applies the index to the incoming input value. - * @param the type of items being returned in the list. - * @return The list holding all the generic items combined. - */ - static List mapByIndex(Iterable documents, BiFunction mappingFunction) { - Objects.requireNonNull(documents, "'documents' cannot be null."); - AtomicInteger i = new AtomicInteger(0); - List result = new ArrayList<>(); - documents.forEach(document -> - result.add(mappingFunction.apply(String.valueOf(i.getAndIncrement()), document)) - ); - return result; - } - - /** - * Convert {@link DocumentStatistics} to {@link TextDocumentStatistics} - * - * @param statistics the {@link DocumentStatistics} provided by the service. - * @return the {@link TextDocumentStatistics} returned by the SDK. - */ - static TextDocumentStatistics toTextDocumentStatistics(DocumentStatistics statistics) { - return new TextDocumentStatistics(statistics.getCharactersCount(), statistics.getTransactionsCount()); - } - - /** - * Convert {@link RequestStatistics} to {@link TextDocumentBatchStatistics} - * - * @param statistics the {@link RequestStatistics} provided by the service. - * @return the {@link TextDocumentBatchStatistics} returned by the SDK. - */ - static TextDocumentBatchStatistics toBatchStatistics(RequestStatistics statistics) { - return new TextDocumentBatchStatistics(statistics.getDocumentsCount(), statistics.getValidDocumentsCount(), - statistics.getErroneousDocumentsCount(), statistics.getTransactionsCount()); - } - - /** - * Convert {@link TextAnalyticsError} to {@link com.azure.ai.textanalytics.models.TextAnalyticsError} - * This function maps the service returned {@link TextAnalyticsError inner error} to the top level - * {@link com.azure.ai.textanalytics.models.TextAnalyticsError error}, if inner error present. - * - * @param textAnalyticsError the {@link TextAnalyticsError} returned by the service. - * @return the {@link com.azure.ai.textanalytics.models.TextAnalyticsError} returned by the SDK. - */ - static com.azure.ai.textanalytics.models.TextAnalyticsError toTextAnalyticsError( - TextAnalyticsError textAnalyticsError) { - if (textAnalyticsError.getInnererror() == null) { - return new com.azure.ai.textanalytics.models.TextAnalyticsError( - TextAnalyticsErrorCode.fromString(textAnalyticsError.getCode().toString()), - textAnalyticsError.getMessage(), - textAnalyticsError.getTarget()); - } - return new com.azure.ai.textanalytics.models.TextAnalyticsError( - TextAnalyticsErrorCode.fromString(textAnalyticsError.getInnererror().getCode().toString()), - textAnalyticsError.getInnererror().getMessage(), - textAnalyticsError.getInnererror().getTarget()); - } - - /** - * Convert the incoming input {@link TextDocumentInput} to the service expected {@link MultiLanguageInput}. - * - * @param documents the user provided input in {@link TextDocumentInput} - * @return the service required input {@link MultiLanguageInput} - */ - static List toMultiLanguageInput(Iterable documents) { - List multiLanguageInputs = new ArrayList<>(); - for (TextDocumentInput textDocumentInput : documents) { - multiLanguageInputs.add(new MultiLanguageInput().setId(textDocumentInput.getId()) - .setText(textDocumentInput.getText()).setLanguage(textDocumentInput.getLanguage())); - } - return multiLanguageInputs; - } - - /** - * Convert the incoming input {@link com.azure.ai.textanalytics.models.TextAnalyticsError} - * to a {@link TextAnalyticsException}. - * - * @param error the {@link com.azure.ai.textanalytics.models.TextAnalyticsError}. - * @return the {@link TextAnalyticsException} to be thrown. - */ - static TextAnalyticsException toTextAnalyticsException( - com.azure.ai.textanalytics.models.TextAnalyticsError error) { - return new TextAnalyticsException(error.getMessage(), error.getErrorCode().toString(), error.getTarget()); - } - - /** - * Convert to a list of {@link LanguageInput} from {@link DetectLanguageInput}. - * - * @param documents The list of documents to detect languages for. - * - * @return a list of {@link LanguageInput}. - */ - static List toLanguageInput(Iterable documents) { - final List multiLanguageInputs = new ArrayList<>(); - documents.forEach(textDocumentInput -> multiLanguageInputs.add(new LanguageInput() - .setId(textDocumentInput.getId()) - .setText(textDocumentInput.getText()) - .setCountryHint(textDocumentInput.getCountryHint()))); - return multiLanguageInputs; - } -} diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/implementation/Utility.java b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/implementation/Utility.java index 2714e03582d0..a4784c9f8b35 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/implementation/Utility.java +++ b/sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/implementation/Utility.java @@ -3,7 +3,21 @@ package com.azure.ai.textanalytics.implementation; +import com.azure.ai.textanalytics.implementation.models.DocumentStatistics; +import com.azure.ai.textanalytics.implementation.models.ErrorCodeValue; +import com.azure.ai.textanalytics.implementation.models.InnerError; +import com.azure.ai.textanalytics.implementation.models.InnerErrorCodeValue; +import com.azure.ai.textanalytics.implementation.models.LanguageInput; +import com.azure.ai.textanalytics.implementation.models.MultiLanguageInput; +import com.azure.ai.textanalytics.implementation.models.RequestStatistics; +import com.azure.ai.textanalytics.implementation.models.TextAnalyticsError; import com.azure.ai.textanalytics.implementation.models.TextAnalyticsErrorException; +import com.azure.ai.textanalytics.models.DetectLanguageInput; +import com.azure.ai.textanalytics.models.TextAnalyticsErrorCode; +import com.azure.ai.textanalytics.models.TextAnalyticsException; +import com.azure.ai.textanalytics.models.TextDocumentBatchStatistics; +import com.azure.ai.textanalytics.models.TextDocumentInput; +import com.azure.ai.textanalytics.models.TextDocumentStatistics; import com.azure.core.exception.HttpResponseException; import com.azure.core.http.HttpHeaders; import com.azure.core.http.HttpResponse; @@ -13,8 +27,12 @@ import java.nio.ByteBuffer; import java.nio.charset.Charset; +import java.util.ArrayList; import java.util.Iterator; +import java.util.List; import java.util.Objects; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.BiFunction; /** * Utility method class. @@ -94,8 +112,120 @@ public Mono getBodyAsString(Charset charset) { public static Throwable mapToHttpResponseExceptionIfExist(Throwable throwable) { if (throwable instanceof TextAnalyticsErrorException) { TextAnalyticsErrorException errorException = (TextAnalyticsErrorException) throwable; - return new HttpResponseException(errorException.getMessage(), errorException.getResponse()); + return new HttpResponseException(errorException.getMessage(), errorException.getResponse(), + toTextAnalyticsError(errorException.getValue())); } return throwable; } + + + /** + * Given a list of documents will apply the indexing function to it and return the updated list. + * + * @param documents the inputs to apply the mapping function to. + * @param mappingFunction the function which applies the index to the incoming input value. + * @param the type of items being returned in the list. + * @return The list holding all the generic items combined. + */ + public static List mapByIndex(Iterable documents, BiFunction mappingFunction) { + Objects.requireNonNull(documents, "'documents' cannot be null."); + AtomicInteger i = new AtomicInteger(0); + List result = new ArrayList<>(); + documents.forEach(document -> + result.add(mappingFunction.apply(String.valueOf(i.getAndIncrement()), document)) + ); + return result; + } + + /** + * Convert {@link DocumentStatistics} to {@link TextDocumentStatistics} + * + * @param statistics the {@link DocumentStatistics} provided by the service. + * @return the {@link TextDocumentStatistics} returned by the SDK. + */ + public static TextDocumentStatistics toTextDocumentStatistics(DocumentStatistics statistics) { + return new TextDocumentStatistics(statistics.getCharactersCount(), statistics.getTransactionsCount()); + } + + /** + * Convert {@link RequestStatistics} to {@link TextDocumentBatchStatistics} + * + * @param statistics the {@link RequestStatistics} provided by the service. + * @return the {@link TextDocumentBatchStatistics} returned by the SDK. + */ + public static TextDocumentBatchStatistics toBatchStatistics(RequestStatistics statistics) { + return new TextDocumentBatchStatistics(statistics.getDocumentsCount(), statistics.getValidDocumentsCount(), + statistics.getErroneousDocumentsCount(), statistics.getTransactionsCount()); + } + + /** + * Convert {@link TextAnalyticsError} to {@link com.azure.ai.textanalytics.models.TextAnalyticsError} + * This function maps the service returned {@link TextAnalyticsError inner error} to the top level + * {@link com.azure.ai.textanalytics.models.TextAnalyticsError error}, if inner error present. + * + * @param textAnalyticsError the {@link TextAnalyticsError} returned by the service. + * @return the {@link com.azure.ai.textanalytics.models.TextAnalyticsError} returned by the SDK. + */ + public static com.azure.ai.textanalytics.models.TextAnalyticsError toTextAnalyticsError( + TextAnalyticsError textAnalyticsError) { + + final InnerError innerError = textAnalyticsError.getInnererror(); + + if (innerError == null) { + final ErrorCodeValue errorCodeValue = textAnalyticsError.getCode(); + return new com.azure.ai.textanalytics.models.TextAnalyticsError( + TextAnalyticsErrorCode.fromString(errorCodeValue == null ? null : errorCodeValue.toString()), + textAnalyticsError.getMessage(), + textAnalyticsError.getTarget()); + } + + final InnerErrorCodeValue innerErrorCodeValue = innerError.getCode(); + return new com.azure.ai.textanalytics.models.TextAnalyticsError( + TextAnalyticsErrorCode.fromString(innerErrorCodeValue == null ? null : innerErrorCodeValue.toString()), + innerError.getMessage(), + innerError.getTarget()); + } + + /** + * Convert the incoming input {@link TextDocumentInput} to the service expected {@link MultiLanguageInput}. + * + * @param documents the user provided input in {@link TextDocumentInput} + * @return the service required input {@link MultiLanguageInput} + */ + public static List toMultiLanguageInput(Iterable documents) { + List multiLanguageInputs = new ArrayList<>(); + for (TextDocumentInput textDocumentInput : documents) { + multiLanguageInputs.add(new MultiLanguageInput().setId(textDocumentInput.getId()) + .setText(textDocumentInput.getText()).setLanguage(textDocumentInput.getLanguage())); + } + return multiLanguageInputs; + } + + /** + * Convert the incoming input {@link com.azure.ai.textanalytics.models.TextAnalyticsError} + * to a {@link TextAnalyticsException}. + * + * @param error the {@link com.azure.ai.textanalytics.models.TextAnalyticsError}. + * @return the {@link TextAnalyticsException} to be thrown. + */ + public static TextAnalyticsException toTextAnalyticsException( + com.azure.ai.textanalytics.models.TextAnalyticsError error) { + return new TextAnalyticsException(error.getMessage(), error.getErrorCode().toString(), error.getTarget()); + } + + /** + * Convert to a list of {@link LanguageInput} from {@link DetectLanguageInput}. + * + * @param documents The list of documents to detect languages for. + * + * @return a list of {@link LanguageInput}. + */ + public static List toLanguageInput(Iterable documents) { + final List multiLanguageInputs = new ArrayList<>(); + documents.forEach(textDocumentInput -> multiLanguageInputs.add(new LanguageInput() + .setId(textDocumentInput.getId()) + .setText(textDocumentInput.getText()) + .setCountryHint(textDocumentInput.getCountryHint()))); + return multiLanguageInputs; + } }