19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 178a0de58ece89c467c8e7415097d193e5f8db9db8Dianne Hackbornpackage com.android.internal.app; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19be4e6aaa0252dd7da28b7aa85beba982538efa46Dianne Hackbornimport android.util.ArrayMap; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.SparseArray; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ProcessMap<E> { 23be4e6aaa0252dd7da28b7aa85beba982538efa46Dianne Hackborn final ArrayMap<String, SparseArray<E>> mMap 24be4e6aaa0252dd7da28b7aa85beba982538efa46Dianne Hackborn = new ArrayMap<String, SparseArray<E>>(); 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public E get(String name, int uid) { 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SparseArray<E> uids = mMap.get(name); 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (uids == null) return null; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return uids.get(uid); 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public E put(String name, int uid, E value) { 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SparseArray<E> uids = mMap.get(name); 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (uids == null) { 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uids = new SparseArray<E>(2); 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(name, uids); 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uids.put(uid, value); 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return value; 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void remove(String name, int uid) { 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SparseArray<E> uids = mMap.get(name); 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (uids != null) { 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uids.remove(uid); 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (uids.size() == 0) { 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.remove(name); 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 52be4e6aaa0252dd7da28b7aa85beba982538efa46Dianne Hackborn public ArrayMap<String, SparseArray<E>> getMap() { 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mMap; 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 56