1516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi/*
2516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * Copyright (C) 2014 The Android Open Source Project
3516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi *
4516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * Licensed under the Apache License, Version 2.0 (the "License");
5516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * you may not use this file except in compliance with the License.
6516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * You may obtain a copy of the License at
7516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi *
8516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi *      http://www.apache.org/licenses/LICENSE-2.0
9516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi *
10516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * Unless required by applicable law or agreed to in writing, software
11516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * distributed under the License is distributed on an "AS IS" BASIS,
12516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * See the License for the specific language governing permissions and
14516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * limitations under the License.
15516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi */
16516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi
17516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagipackage com.android.inputmethod.latin.makedict;
18516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi
19516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagiimport com.android.inputmethod.annotations.UsedForTesting;
20516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi
21516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagiimport java.util.Arrays;
22516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi
23516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi/**
24516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * A string with a probability.
25516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi *
26516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * This represents an "attribute", that is either a bigram or a shortcut.
27516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi */
28516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagipublic final class WeightedString {
29516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi    public final String mWord;
30516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi    public ProbabilityInfo mProbabilityInfo;
31516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi
32516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi    public WeightedString(final String word, final int probability) {
33516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi        this(word, new ProbabilityInfo(probability));
34516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi    }
35516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi
36516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi    public WeightedString(final String word, final ProbabilityInfo probabilityInfo) {
37516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi        mWord = word;
38516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi        mProbabilityInfo = probabilityInfo;
39516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi    }
40516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi
41516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi    @UsedForTesting
42516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi    public int getProbability() {
43516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi        return mProbabilityInfo.mProbability;
44516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi    }
45516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi
46516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi    public void setProbability(final int probability) {
47516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi        mProbabilityInfo = new ProbabilityInfo(probability);
48516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi    }
49516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi
50516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi    @Override
51516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi    public int hashCode() {
52516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi        return Arrays.hashCode(new Object[] { mWord, mProbabilityInfo});
53516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi    }
54516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi
55516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi    @Override
56516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi    public boolean equals(Object o) {
57516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi        if (o == this) return true;
58516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi        if (!(o instanceof WeightedString)) return false;
59516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi        final WeightedString w = (WeightedString)o;
60516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi        return mWord.equals(w.mWord) && mProbabilityInfo.equals(w.mProbabilityInfo);
61516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi    }
62516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi}