NGramTokenFilterConverter.java

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.azure.search.documents.implementation.converters;

import com.azure.search.documents.indexes.models.NGramTokenFilter;

/**
 * A converter between {@link com.azure.search.documents.indexes.implementation.models.NGramTokenFilter} and
 * {@link NGramTokenFilter}.
 */
public final class NGramTokenFilterConverter {
    private static final String V1_ODATA_TYPE = "#Microsoft.Azure.Search.NGramTokenFilter";
    private static final String V2_ODATA_TYPE = "#Microsoft.Azure.Search.NGramTokenFilterV2";
    private static final String ODATA_FIELD_NAME = "odataType";

    /**
     * Maps from {@link com.azure.search.documents.indexes.implementation.models.NGramTokenFilter} to {@link NGramTokenFilter}.
     */
    public static NGramTokenFilter map(com.azure.search.documents.indexes.implementation.models.NGramTokenFilter obj) {
        if (obj == null) {
            return null;
        }
        NGramTokenFilter nGramTokenFilter = new NGramTokenFilter(obj.getName());
        NGramTokenFilterHelper.setODataType(nGramTokenFilter, V1_ODATA_TYPE);

        Integer maxGram = obj.getMaxGram();
        nGramTokenFilter.setMaxGram(maxGram);

        Integer minGram = obj.getMinGram();
        nGramTokenFilter.setMinGram(minGram);
        return nGramTokenFilter;
    }

    /**
     * Maps from {@link com.azure.search.documents.indexes.implementation.models.NGramTokenFilterV2} to {@link NGramTokenFilter}.
     */
    public static NGramTokenFilter map(com.azure.search.documents.indexes.implementation.models.NGramTokenFilterV2 obj) {
        if (obj == null) {
            return null;
        }
        NGramTokenFilter nGramTokenFilter = new NGramTokenFilter(obj.getName());
        NGramTokenFilterHelper.setODataType(nGramTokenFilter, V2_ODATA_TYPE);

        Integer maxGram = obj.getMaxGram();
        nGramTokenFilter.setMaxGram(maxGram);

        Integer minGram = obj.getMinGram();
        nGramTokenFilter.setMinGram(minGram);
        return nGramTokenFilter;
    }

    /**
     * Maps from {@link NGramTokenFilter} to
     * {@link com.azure.search.documents.indexes.implementation.models.NGramTokenFilterV2} or
     * {@link com.azure.search.documents.indexes.implementation.models.NGramTokenFilterV2} depends on @odata.type.
     */
    public static com.azure.search.documents.indexes.implementation.models.TokenFilter map(NGramTokenFilter obj) {
        if (obj == null) {
            return null;
        }
        String identifier = NGramTokenFilterHelper.getODataType(obj);
        if (V1_ODATA_TYPE.equals(identifier)) {
            return new com.azure.search.documents.indexes.implementation.models.NGramTokenFilter(obj.getName())
                .setMaxGram(obj.getMaxGram())
                .setMinGram(obj.getMinGram());
        } else {
            return new com.azure.search.documents.indexes.implementation.models.NGramTokenFilterV2(obj.getName())
                .setMaxGram(obj.getMaxGram())
                .setMinGram(obj.getMinGram());
        }
    }

    private NGramTokenFilterConverter() {
    }
}