12aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton/*
22aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * Copyright (C) 2009 The Android Open Source Project
32aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton *
42aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * Licensed under the Apache License, Version 2.0 (the "License");
52aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * you may not use this file except in compliance with the License.
62aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * You may obtain a copy of the License at
72aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton *
82aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton *      http://www.apache.org/licenses/LICENSE-2.0
92aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton *
102aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * Unless required by applicable law or agreed to in writing, software
112aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * distributed under the License is distributed on an "AS IS" BASIS,
122aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * See the License for the specific language governing permissions and
142aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * limitations under the License.
152aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton */
162aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
178166c06de0a132f9086e62fbe1b04c44e9ebeb1cJeff Hamiltonpackage com.android.loaderapp.model;
182aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
192aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport com.android.loaderapp.util.Constants;
202aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
212aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Email;
222aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Im;
232aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Organization;
242aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Phone;
252aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
262aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
272aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton/**
282aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * This class contains utility functions for determining the precedence of
292aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * different types associated with contact data items.
302aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton */
312aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonpublic final class TypePrecedence {
322aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
332aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    /* This utility class has cannot be instantiated.*/
342aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    private TypePrecedence() {}
352aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
362aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    //TODO These may need to be tweaked.
372aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    private static final int[] TYPE_PRECEDENCE_PHONES = {
382aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Phone.TYPE_CUSTOM,
392aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Phone.TYPE_MOBILE,
402aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Phone.TYPE_HOME,
412aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Phone.TYPE_WORK,
422aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Phone.TYPE_OTHER,
432aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Phone.TYPE_FAX_HOME,
442aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Phone.TYPE_FAX_WORK,
452aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Phone.TYPE_PAGER};
462aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
472aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    private static final int[] TYPE_PRECEDENCE_EMAIL = {
482aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Email.TYPE_CUSTOM,
492aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Email.TYPE_HOME,
502aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Email.TYPE_WORK,
512aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Email.TYPE_OTHER};
522aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
532aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    private static final int[] TYPE_PRECEDENCE_POSTAL = {
542aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            StructuredPostal.TYPE_CUSTOM,
552aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            StructuredPostal.TYPE_HOME,
562aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            StructuredPostal.TYPE_WORK,
572aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            StructuredPostal.TYPE_OTHER};
582aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
592aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    private static final int[] TYPE_PRECEDENCE_IM = {
602aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Im.TYPE_CUSTOM,
612aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Im.TYPE_HOME,
622aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Im.TYPE_WORK,
632aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Im.TYPE_OTHER};
642aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
652aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    private static final int[] TYPE_PRECEDENCE_ORG = {
662aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Organization.TYPE_CUSTOM,
672aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Organization.TYPE_WORK,
682aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            Organization.TYPE_OTHER};
692aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
702aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    /**
712aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton     * Returns the precedence (1 being the highest) of a type in the context of it's mimetype.
722aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton     *
732aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton     * @param mimetype The mimetype of the data with which the type is associated.
742aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton     * @param type The integer type as defined in {@Link ContactsContract#CommonDataKinds}.
752aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton     * @return The integer precedence, where 1 is the highest.
762aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton     */
772aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    @Deprecated
782aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    public static int getTypePrecedence(String mimetype, int type) {
792aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        int[] typePrecedence = getTypePrecedenceList(mimetype);
802aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        if (typePrecedence == null) {
812aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            return -1;
822aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        }
832aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
842aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        for (int i = 0; i < typePrecedence.length; i++) {
852aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            if (typePrecedence[i] == type) {
862aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                return i;
872aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            }
882aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        }
892aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        return typePrecedence.length;
902aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
912aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
922aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    @Deprecated
932aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    private static int[] getTypePrecedenceList(String mimetype) {
942aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        if (mimetype.equals(Phone.CONTENT_ITEM_TYPE)) {
952aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            return TYPE_PRECEDENCE_PHONES;
962aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        } else if (mimetype.equals(Constants.MIME_SMS_ADDRESS)) {
972aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            return TYPE_PRECEDENCE_PHONES;
982aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        } else if (mimetype.equals(Email.CONTENT_ITEM_TYPE)) {
992aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            return TYPE_PRECEDENCE_EMAIL;
1002aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        } else if (mimetype.equals(StructuredPostal.CONTENT_ITEM_TYPE)) {
1012aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            return TYPE_PRECEDENCE_POSTAL;
1022aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        } else if (mimetype.equals(Im.CONTENT_ITEM_TYPE)) {
1032aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            return TYPE_PRECEDENCE_IM;
1042aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        } else if (mimetype.equals(Organization.CONTENT_ITEM_TYPE)) {
1052aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            return TYPE_PRECEDENCE_ORG;
1062aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        } else {
1072aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            return null;
1082aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        }
1092aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
1102aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1112aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1122aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton}
113