SuggestionData.java revision 870b826dfbc5ef7518826007f22343dc963d6d04
13e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert/*
23e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Copyright (C) 2009 The Android Open Source Project
33e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *
43e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License");
53e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * you may not use this file except in compliance with the License.
63e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * You may obtain a copy of the License at
73e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *
83e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *      http://www.apache.org/licenses/LICENSE-2.0
93e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *
103e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Unless required by applicable law or agreed to in writing, software
113e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS,
123e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * See the License for the specific language governing permissions and
143e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * limitations under the License.
153e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert */
163e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
173e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertpackage com.android.quicksearchbox;
183e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
19870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringertimport com.google.common.annotations.VisibleForTesting;
20870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert
21870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert
223e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert/**
233e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Holds data for each suggest item including the display data and how to launch the result.
243e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Used for passing from the provider to the suggest cursor.
253e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert */
263e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertpublic class SuggestionData {
273e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
283e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    private final Source mSource;
29782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    private String mFormat;
30782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    private String mText1;
31782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    private String mText2;
32965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert    private String mText2Url;
33782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    private String mIcon1;
34782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    private String mIcon2;
35782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    private String mShortcutId;
3604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    private boolean mSpinnerWhileRefreshing;
37fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    private String mIntentAction;
38fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    private String mIntentData;
39fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    private String mIntentExtraData;
40fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    private String mSuggestionQuery;
41dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert    private String mLogType;
42782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
43782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    public SuggestionData(Source source) {
44782dd228e78e9294692d639597f96c26283968bbBjorn Bringert        mSource = source;
45782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
463e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
47fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public Source getSuggestionSource() {
483e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return mSource;
493e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
503e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
51fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionFormat() {
523e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return mFormat;
533e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
543e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
55fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionText1() {
563e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return mText1;
573e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
583e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
59fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionText2() {
603e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return mText2;
613e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
623e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
63965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert    public String getSuggestionText2Url() {
64965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert        return mText2Url;
65965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert    }
66965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert
67fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionIcon1() {
683e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return mIcon1;
693e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
703e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
71fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionIcon2() {
723e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return mIcon2;
733e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
743e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
7594e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney    public boolean isSpinnerWhileRefreshing() {
7604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return mSpinnerWhileRefreshing;
7794e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney    }
7894e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney
7994e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney    public String getIntentExtraData() {
8004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return mIntentExtraData;
813e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
823e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
833e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public String getShortcutId() {
843e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return mShortcutId;
853e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
863e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
87fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionIntentAction() {
88fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert        return mIntentAction;
89fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    }
90fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert
91fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionIntentDataString() {
92fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert        return mIntentData;
93fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    }
94fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert
95fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionIntentExtraData() {
96fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert        return mIntentExtraData;
97fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    }
98fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert
99fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionQuery() {
100fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert        return mSuggestionQuery;
101fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    }
102fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert
103dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert    public String getSuggestionLogType() {
104dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert        return mLogType;
105dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert    }
106dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert
107870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
10804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setFormat(String format) {
109782dd228e78e9294692d639597f96c26283968bbBjorn Bringert        mFormat = format;
11004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
111782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
112782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
113870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
11404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setText1(String text1) {
115782dd228e78e9294692d639597f96c26283968bbBjorn Bringert        mText1 = text1;
11604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
117782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
118782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
119870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
12004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setText2(String text2) {
121782dd228e78e9294692d639597f96c26283968bbBjorn Bringert        mText2 = text2;
12204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
123782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
124782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
125870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
126965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert    public SuggestionData setText2Url(String text2Url) {
127965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert        mText2Url = text2Url;
128965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert        return this;
129965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert    }
130965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert
131870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
13204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setIcon1(String icon1) {
133782dd228e78e9294692d639597f96c26283968bbBjorn Bringert        mIcon1 = icon1;
13404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
135782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
136782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
137870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
13804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setIcon2(String icon2) {
139782dd228e78e9294692d639597f96c26283968bbBjorn Bringert        mIcon2 = icon2;
14004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
14104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    }
14204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert
143870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
14404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setIntentAction(String intentAction) {
14504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        mIntentAction = intentAction;
14604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
14704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    }
14804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert
149870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
15004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setIntentData(String intentData) {
15104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        mIntentData = intentData;
15204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
153782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
154782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
155870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
15604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setIntentExtraData(String intentExtraData) {
15704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        mIntentExtraData = intentExtraData;
15804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
159782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
160782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
161870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
16204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setSuggestionQuery(String suggestionQuery) {
16304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        mSuggestionQuery = suggestionQuery;
16404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
165782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
166782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
167870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
16804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setShortcutId(String shortcutId) {
169782dd228e78e9294692d639597f96c26283968bbBjorn Bringert        mShortcutId = shortcutId;
17004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
17104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    }
17204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert
173870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
17404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setSpinnerWhileRefreshing(boolean spinnerWhileRefreshing) {
17504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        mSpinnerWhileRefreshing = spinnerWhileRefreshing;
17604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
1773e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
1783e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
179870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
180dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert    public SuggestionData setSuggestionLogType(String logType) {
181dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert        mLogType = logType;
182dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert        return this;
183dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert    }
184dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert
1853e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    private String makeKeyComponent(String str) {
1863e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return str == null ? "" : str;
1873e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
1883e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1893e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public String getSuggestionKey() {
19004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        String action = makeKeyComponent(mIntentAction);
19104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        String data = makeKeyComponent(mIntentData);
19204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        String query = makeKeyComponent(mSuggestionQuery);
1933e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        // calculating accurate size of string builder avoids an allocation vs starting with
1943e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        // the default size and having to expand.
1953e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        int size = action.length() + 2 + data.length() + query.length();
1963e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return new StringBuilder(size)
1973e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert                .append(action)
1983e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert                .append('#')
1993e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert                .append(data)
2003e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert                .append('#')
2013e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert                .append(query)
2023e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert                .toString();
2033e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
2043e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
2053e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    @Override
2063e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public int hashCode() {
20704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        final int prime = 31;
20804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        int result = 1;
20904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mFormat == null) ? 0 : mFormat.hashCode());
21004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mIcon1 == null) ? 0 : mIcon1.hashCode());
21104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mIcon2 == null) ? 0 : mIcon2.hashCode());
21204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mIntentAction == null) ? 0 : mIntentAction.hashCode());
21304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mIntentData == null) ? 0 : mIntentData.hashCode());
21404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mIntentExtraData == null) ? 0 : mIntentExtraData.hashCode());
215dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert        result = prime * result + ((mLogType == null) ? 0 : mLogType.hashCode());
21604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mShortcutId == null) ? 0 : mShortcutId.hashCode());
21704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mSource == null) ? 0 : mSource.hashCode());
21804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + (mSpinnerWhileRefreshing ? 1231 : 1237);
21904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mSuggestionQuery == null) ? 0 : mSuggestionQuery.hashCode());
22004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mText1 == null) ? 0 : mText1.hashCode());
22104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mText2 == null) ? 0 : mText2.hashCode());
2223e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return result;
2233e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
2243e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
22504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    @Override
22604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public boolean equals(Object obj) {
22704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (this == obj)
22804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return true;
22904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (obj == null)
23004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
23104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (getClass() != obj.getClass())
23204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
23304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        SuggestionData other = (SuggestionData)obj;
23404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mFormat == null) {
23504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mFormat != null)
23604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
23704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mFormat.equals(other.mFormat))
23804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
23904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mIcon1 == null) {
24004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mIcon1 != null)
24104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
24204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mIcon1.equals(other.mIcon1))
24304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
24404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mIcon2 == null) {
24504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mIcon2 != null)
24604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
24704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mIcon2.equals(other.mIcon2))
24804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
24904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mIntentAction == null) {
25004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mIntentAction != null)
25104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
25204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mIntentAction.equals(other.mIntentAction))
25304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
25404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mIntentData == null) {
25504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mIntentData != null)
25604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
25704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mIntentData.equals(other.mIntentData))
25804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
25904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mIntentExtraData == null) {
26004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mIntentExtraData != null)
26104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
26204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mIntentExtraData.equals(other.mIntentExtraData))
26304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
264dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert        if (mLogType == null) {
265dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert            if (other.mLogType != null)
266dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert                return false;
267dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert        } else if (!mLogType.equals(other.mLogType))
268dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert            return false;
26904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mShortcutId == null) {
27004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mShortcutId != null)
27104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
27204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mShortcutId.equals(other.mShortcutId))
27304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
27404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mSource == null) {
27504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mSource != null)
27604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
27704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mSource.equals(other.mSource))
27804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
27904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mSpinnerWhileRefreshing != other.mSpinnerWhileRefreshing)
28004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
28104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mSuggestionQuery == null) {
28204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mSuggestionQuery != null)
28304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
28404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mSuggestionQuery.equals(other.mSuggestionQuery))
28504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
28604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mText1 == null) {
28704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mText1 != null)
28804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
28904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mText1.equals(other.mText1))
29004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
29104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mText2 == null) {
29204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mText2 != null)
29304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
29404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mText2.equals(other.mText2))
29504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
29604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return true;
2973e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
2983e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
2993e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
3003e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Returns a string representation of the contents of this SuggestionData,
3013e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * for debugging purposes.
3023e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
3033e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    @Override
3043e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public String toString() {
3053e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        StringBuilder builder = new StringBuilder("SuggestionData(");
306f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert        appendField(builder, "source", mSource.getName());
30704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        appendField(builder, "text1", mText1);
30804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        appendField(builder, "intentAction", mIntentAction);
30904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        appendField(builder, "intentData", mIntentData);
31004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        appendField(builder, "query", mSuggestionQuery);
31104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        appendField(builder, "shortcutid", mShortcutId);
312dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert        appendField(builder, "logtype", mLogType);
3133e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return builder.toString();
3143e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
3153e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
31604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    private void appendField(StringBuilder builder, String name, String value) {
31704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (value != null) {
31804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            builder.append(",").append(name).append("=").append(value);
31904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        }
32004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    }
32104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert
3223e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert}
323