1a7a0406958991f7a964370295821d8e477f503e9Svet Ganov/*
2a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * Copyright (C) 2015 The Android Open Source Project
3a7a0406958991f7a964370295821d8e477f503e9Svet Ganov *
4a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * Licensed under the Apache License, Version 2.0 (the "License");
5a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * you may not use this file except in compliance with the License.
6a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * You may obtain a copy of the License at
7a7a0406958991f7a964370295821d8e477f503e9Svet Ganov *
8a7a0406958991f7a964370295821d8e477f503e9Svet Ganov *      http://www.apache.org/licenses/LICENSE-2.0
9a7a0406958991f7a964370295821d8e477f503e9Svet Ganov *
10a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * Unless required by applicable law or agreed to in writing, software
11a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * distributed under the License is distributed on an "AS IS" BASIS,
12a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * See the License for the specific language governing permissions and
14a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * limitations under the License.
15a7a0406958991f7a964370295821d8e477f503e9Svet Ganov */
16a7a0406958991f7a964370295821d8e477f503e9Svet Ganov
17a7a0406958991f7a964370295821d8e477f503e9Svet Ganovpackage com.android.packageinstaller.permission.model;
18a7a0406958991f7a964370295821d8e477f503e9Svet Ganov
19267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganovimport android.graphics.drawable.Drawable;
20a7a0406958991f7a964370295821d8e477f503e9Svet Ganov
21a7a0406958991f7a964370295821d8e477f503e9Svet Ganovpublic final class PermissionGroup implements Comparable<PermissionGroup> {
22a7a0406958991f7a964370295821d8e477f503e9Svet Ganov    private final String mName;
23267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov    private final String mDeclaringPackage;
24a7a0406958991f7a964370295821d8e477f503e9Svet Ganov    private final CharSequence mLabel;
25267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov    private final Drawable mIcon;
26785a9b6369db4c46a389a43ae30e1f6e8003366bSvet Ganov
27267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov    PermissionGroup(String name, String declaringPackage,
28267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov            CharSequence label, Drawable icon) {
29267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov        mDeclaringPackage = declaringPackage;
30a7a0406958991f7a964370295821d8e477f503e9Svet Ganov        mName = name;
31a7a0406958991f7a964370295821d8e477f503e9Svet Ganov        mLabel = label;
32267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov        mIcon = icon;
33a7a0406958991f7a964370295821d8e477f503e9Svet Ganov    }
34a7a0406958991f7a964370295821d8e477f503e9Svet Ganov
35a7a0406958991f7a964370295821d8e477f503e9Svet Ganov    public String getName() {
36a7a0406958991f7a964370295821d8e477f503e9Svet Ganov        return mName;
37a7a0406958991f7a964370295821d8e477f503e9Svet Ganov    }
38a7a0406958991f7a964370295821d8e477f503e9Svet Ganov
39267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov    public String getDeclaringPackage() {
40267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov        return mDeclaringPackage;
41a7a0406958991f7a964370295821d8e477f503e9Svet Ganov    }
42a7a0406958991f7a964370295821d8e477f503e9Svet Ganov
43a7a0406958991f7a964370295821d8e477f503e9Svet Ganov    public CharSequence getLabel() {
44a7a0406958991f7a964370295821d8e477f503e9Svet Ganov        return mLabel;
45a7a0406958991f7a964370295821d8e477f503e9Svet Ganov    }
46a7a0406958991f7a964370295821d8e477f503e9Svet Ganov
47267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov    public Drawable getIcon() {
48267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov        return mIcon;
490430e255aebb6cf64f65eeaaf052786ee2834819Svet Ganov    }
500430e255aebb6cf64f65eeaaf052786ee2834819Svet Ganov
51a7a0406958991f7a964370295821d8e477f503e9Svet Ganov    @Override
52a7a0406958991f7a964370295821d8e477f503e9Svet Ganov    public int compareTo(PermissionGroup another) {
53267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov        return mLabel.toString().compareTo(another.mLabel.toString());
54a7a0406958991f7a964370295821d8e477f503e9Svet Ganov    }
55a7a0406958991f7a964370295821d8e477f503e9Svet Ganov
56a7a0406958991f7a964370295821d8e477f503e9Svet Ganov    @Override
57a7a0406958991f7a964370295821d8e477f503e9Svet Ganov    public boolean equals(Object obj) {
58a7a0406958991f7a964370295821d8e477f503e9Svet Ganov        if (this == obj) {
59a7a0406958991f7a964370295821d8e477f503e9Svet Ganov            return true;
60a7a0406958991f7a964370295821d8e477f503e9Svet Ganov        }
61a7a0406958991f7a964370295821d8e477f503e9Svet Ganov
62a7a0406958991f7a964370295821d8e477f503e9Svet Ganov        if (obj == null) {
63a7a0406958991f7a964370295821d8e477f503e9Svet Ganov            return false;
64a7a0406958991f7a964370295821d8e477f503e9Svet Ganov        }
65a7a0406958991f7a964370295821d8e477f503e9Svet Ganov
66a7a0406958991f7a964370295821d8e477f503e9Svet Ganov        if (getClass() != obj.getClass()) {
67a7a0406958991f7a964370295821d8e477f503e9Svet Ganov            return false;
68a7a0406958991f7a964370295821d8e477f503e9Svet Ganov        }
69a7a0406958991f7a964370295821d8e477f503e9Svet Ganov
70a7a0406958991f7a964370295821d8e477f503e9Svet Ganov        PermissionGroup other = (PermissionGroup) obj;
71a7a0406958991f7a964370295821d8e477f503e9Svet Ganov
72a7a0406958991f7a964370295821d8e477f503e9Svet Ganov        if (mName == null) {
73a7a0406958991f7a964370295821d8e477f503e9Svet Ganov            if (other.mName != null) {
74a7a0406958991f7a964370295821d8e477f503e9Svet Ganov                return false;
75a7a0406958991f7a964370295821d8e477f503e9Svet Ganov            }
76a7a0406958991f7a964370295821d8e477f503e9Svet Ganov        } else if (!mName.equals(other.mName)) {
77a7a0406958991f7a964370295821d8e477f503e9Svet Ganov            return false;
78a7a0406958991f7a964370295821d8e477f503e9Svet Ganov        }
79a7a0406958991f7a964370295821d8e477f503e9Svet Ganov
80a7a0406958991f7a964370295821d8e477f503e9Svet Ganov        return true;
81a7a0406958991f7a964370295821d8e477f503e9Svet Ganov    }
82a7a0406958991f7a964370295821d8e477f503e9Svet Ganov
83a7a0406958991f7a964370295821d8e477f503e9Svet Ganov    @Override
84a7a0406958991f7a964370295821d8e477f503e9Svet Ganov    public int hashCode() {
85a7a0406958991f7a964370295821d8e477f503e9Svet Ganov        return mName != null ? mName.hashCode() : 0;
86a7a0406958991f7a964370295821d8e477f503e9Svet Ganov    }
87a7a0406958991f7a964370295821d8e477f503e9Svet Ganov}
88