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 42d23e0d6901935588f9472bd7073fea0009581e9bDianne Hackborn public E remove(String name, int uid) { 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SparseArray<E> uids = mMap.get(name); 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (uids != null) { 45d23e0d6901935588f9472bd7073fea0009581e9bDianne Hackborn final E old = uids.removeReturnOld(uid); 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (uids.size() == 0) { 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.remove(name); 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 49d23e0d6901935588f9472bd7073fea0009581e9bDianne Hackborn return old; 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 51d23e0d6901935588f9472bd7073fea0009581e9bDianne Hackborn return null; 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 54be4e6aaa0252dd7da28b7aa85beba982538efa46Dianne Hackborn public ArrayMap<String, SparseArray<E>> getMap() { 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mMap; 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 574eb64fdbcf899a81d0a6a04dc3658d03d9df8247Joe Onorato 584eb64fdbcf899a81d0a6a04dc3658d03d9df8247Joe Onorato public int size() { 594eb64fdbcf899a81d0a6a04dc3658d03d9df8247Joe Onorato return mMap.size(); 604eb64fdbcf899a81d0a6a04dc3658d03d9df8247Joe Onorato } 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 62