blob: eb834f120dee5de98c91da53623fd8e444d978a9 [file] [log] [blame]
/*
* Copyright (C) 2016 The Android Open Source Project
*
* 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.
*/
package android.text;
import android.annotation.NonNull;
import com.android.internal.util.Preconditions;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* Specifies detected languages for a section of text indicated by a start and end index.
*/
public final class TextLanguage {
private final int mStartIndex;
private final int mEndIndex;
private final Map<String, Float> mLanguageConfidence;
/**
* Initializes a TextLanguage object.
*
* @param startIndex the start index of the detected languages in the text provided to generate
* this object.
* @param endIndex the end index of the detected languages in the text provided to generate this
* object.
* @param languageConfidence a map of detected language to confidence score. The language string
* is a BCP-47 language tag.
* @throws NullPointerException if languageConfidence is null or contains a null key or value.
*/
public TextLanguage(int startIndex, int endIndex,
@NonNull Map<String, Float> languageConfidence) {
mStartIndex = startIndex;
mEndIndex = endIndex;
Map<String, Float> map = new LinkedHashMap<>();
Preconditions.checkNotNull(languageConfidence).entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.forEach(entry -> map.put(
Preconditions.checkNotNull(entry.getKey()),
Preconditions.checkNotNull(entry.getValue())));
mLanguageConfidence = Collections.unmodifiableMap(map);
}
/**
* Returns the start index of the detected languages in the text provided to generate this
* object.
*/
public int getStartIndex() {
return mStartIndex;
}
/**
* Returns the end index of the detected languages in the text provided to generate this object.
*/
public int getEndIndex() {
return mEndIndex;
}
/**
* Returns an unmodifiable map of detected language to confidence score. The map entries are
* ordered from high confidence score (1) to low confidence score (0). The language string is a
* BCP-47 language tag.
*/
@NonNull
public Map<String, Float> getLanguageConfidence() {
return mLanguageConfidence;
}
}