1616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin/*
2616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin * Copyright (C) 2012 The Android Open Source Project
3616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin *
4616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin * Licensed under the Apache License, Version 2.0 (the "License");
5616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin * you may not use this file except in compliance with the License.
6616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin * You may obtain a copy of the License at
7616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin *
8616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin *      http://www.apache.org/licenses/LICENSE-2.0
9616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin *
10616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin * Unless required by applicable law or agreed to in writing, software
11616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin * distributed under the License is distributed on an "AS IS" BASIS,
12616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin * See the License for the specific language governing permissions and
14616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin * limitations under the License.
15616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin */
16616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin
17616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Linpackage com.android.gallery3d.app;
18616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin
19616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Linimport java.util.HashMap;
20616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin
21616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Linpublic class TransitionStore {
22616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin    private HashMap<Object, Object> mStorage = new HashMap<Object, Object>();
23616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin
24616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin    public void put(Object key, Object value) {
25616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin        mStorage.put(key, value);
26616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin    }
27616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin
2800ccf35f8ec016b2cb8fdcf0c65ba643dca54a14Bobby Georgescu    public <T> void putIfNotPresent(Object key, T valueIfNull) {
2900ccf35f8ec016b2cb8fdcf0c65ba643dca54a14Bobby Georgescu        mStorage.put(key, get(key, valueIfNull));
3000ccf35f8ec016b2cb8fdcf0c65ba643dca54a14Bobby Georgescu    }
3100ccf35f8ec016b2cb8fdcf0c65ba643dca54a14Bobby Georgescu
32616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin    @SuppressWarnings("unchecked")
33616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin    public <T> T get(Object key) {
34616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin        return (T) mStorage.get(key);
35616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin    }
36616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin
3723e1cc8d20971a03db2bbbe8b012fabcb40c6431Wu-cheng Li    @SuppressWarnings("unchecked")
387eea4d3ac59aa88d327fc0d58f5e4052f43c54c9Bobby Georgescu    public <T> T get(Object key, T valueIfNull) {
3923e1cc8d20971a03db2bbbe8b012fabcb40c6431Wu-cheng Li        T value = (T) mStorage.get(key);
407eea4d3ac59aa88d327fc0d58f5e4052f43c54c9Bobby Georgescu        return value == null ? valueIfNull : value;
417eea4d3ac59aa88d327fc0d58f5e4052f43c54c9Bobby Georgescu    }
427eea4d3ac59aa88d327fc0d58f5e4052f43c54c9Bobby Georgescu
43616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin    public void clear() {
44616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin        mStorage.clear();
45616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin    }
46616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin}
47