187a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge/* 287a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * Copyright (C) 2012 The Android Open Source Project 387a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * 487a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * Licensed under the Apache License, Version 2.0 (the "License"); 587a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * you may not use this file except in compliance with the License. 687a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * You may obtain a copy of the License at 787a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * 887a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * http://www.apache.org/licenses/LICENSE-2.0 987a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * 1087a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * Unless required by applicable law or agreed to in writing, software 1187a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * distributed under the License is distributed on an "AS IS" BASIS, 1287a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1387a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * See the License for the specific language governing permissions and 1487a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * limitations under the License. 1587a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge */ 1687a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge 1787a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledgepackage com.example.android.lifecycle.util; 1887a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge 1987a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledgeimport java.util.*; 2087a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge 2187a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledgepublic class StatusTracker { 2287a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge private Map<String, String> mStatusMap; 2387a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge private List<String> mMethodList; 2487a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge private static StatusTracker ourInstance = new StatusTracker(); 2587a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge private static final String STATUS_SUFFIX = "ed"; 2687a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge 2787a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge public static StatusTracker getInstance() { 2887a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge return ourInstance; 2987a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge } 3087a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge 3187a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge private StatusTracker() { 3287a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge mStatusMap = new LinkedHashMap<String, String>(); 3387a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge mMethodList = new ArrayList<String>(); 3487a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge } 3587a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge 3687a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge public List<String> getMethodList() { 3787a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge return mMethodList; 3887a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge } 3987a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge 4087a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge public void clear() { 4187a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge mMethodList.clear(); 4287a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge mStatusMap.clear(); 4387a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge } 4487a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge 4587a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge /** 4687a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * Adds the status value for the given activityName into the Map. 4787a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * 4887a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * @param activityName 4987a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * @param status 5087a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge */ 5187a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge public void setStatus(String activityName, String status) { 5287a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge mMethodList.add(activityName + "." + status + "()"); 5387a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge if (mStatusMap.containsKey(activityName)) mStatusMap.remove(activityName); 5487a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge mStatusMap.put(activityName, status); 5587a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge } 5687a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge 5787a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge /** 5887a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * Gets the status value for the given activityName. 5987a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * 6087a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * @param activityName 6187a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge * @return 6287a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge */ 6387a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge public String getStatus(String activityName) { 6487a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge String status = mStatusMap.get(activityName); 6587a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge status = status.substring(2, status.length()); 6687a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge 6787a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge // String manipulation to ensure the status value is spelled correctly. 6887a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge if (status.endsWith("e")) { 6987a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge status = status.substring(0, status.length() - 1); 7087a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge } 7187a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge if (status.endsWith("p")) { 7287a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge status = status + "p"; 7387a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge } 7487a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge status = status + STATUS_SUFFIX; 7587a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge return status; 7687a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge } 7787a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge 7887a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge public Set<String> keySet() { 7987a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge return mStatusMap.keySet(); 8087a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge } 8187a714c17c3838173c238b90e78a9e04f22a2a9aBilly Rutledge} 82