1 /* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.loganalysis.item; 17 18 import com.android.loganalysis.parser.LogcatParser; 19 20 import java.util.Arrays; 21 import java.util.HashSet; 22 import java.util.Set; 23 24 /** 25 * An {@link IItem} used to store ANR info. 26 */ 27 public class AnrItem extends MiscLogcatItem { 28 /** 29 * An enum used to select the CPU usage category. 30 */ 31 public enum CpuUsageCategory { 32 TOTAL, 33 USER, 34 KERNEL, 35 IOWAIT, 36 } 37 38 /** 39 * An enum used to select the load category. 40 */ 41 public enum LoadCategory { 42 LOAD_1, 43 LOAD_5, 44 LOAD_15; 45 } 46 47 /** Constant for JSON output */ 48 public static final String ACTIVITY = "ACTIVITY"; 49 /** Constant for JSON output */ 50 public static final String REASON = "REASON"; 51 /** Constant for JSON output */ 52 public static final String TRACE = "TRACE"; 53 54 private static final Set<String> ATTRIBUTES = new HashSet<String>(Arrays.asList( 55 CpuUsageCategory.TOTAL.toString(), 56 CpuUsageCategory.USER.toString(), 57 CpuUsageCategory.KERNEL.toString(), 58 CpuUsageCategory.IOWAIT.toString(), 59 LoadCategory.LOAD_1.toString(), 60 LoadCategory.LOAD_5.toString(), 61 LoadCategory.LOAD_15.toString(), 62 ACTIVITY, REASON, TRACE)); 63 64 /** 65 * The constructor for {@link AnrItem}. 66 */ AnrItem()67 public AnrItem() { 68 super(ATTRIBUTES); 69 setCategory(LogcatParser.ANR); 70 } 71 72 /** 73 * Get the CPU usage for a given category. 74 */ getCpuUsage(CpuUsageCategory category)75 public Double getCpuUsage(CpuUsageCategory category) { 76 return (Double) getAttribute(category.toString()); 77 } 78 79 /** 80 * Set the CPU usage for a given category. 81 */ setCpuUsage(CpuUsageCategory category, Double usage)82 public void setCpuUsage(CpuUsageCategory category, Double usage) { 83 setAttribute(category.toString(), usage); 84 } 85 86 /** 87 * Get the load for a given category. 88 */ getLoad(LoadCategory category)89 public Double getLoad(LoadCategory category) { 90 return (Double) getAttribute(category.toString()); 91 } 92 93 /** 94 * Set the load for a given category. 95 */ setLoad(LoadCategory category, Double usage)96 public void setLoad(LoadCategory category, Double usage) { 97 setAttribute(category.toString(), usage); 98 } 99 100 /** 101 * Get the activity for the ANR. 102 */ getActivity()103 public String getActivity() { 104 return (String) getAttribute(ACTIVITY); 105 } 106 107 /** 108 * Set the activity for the ANR. 109 */ setActivity(String activity)110 public void setActivity(String activity) { 111 setAttribute(ACTIVITY, activity); 112 } 113 114 /** 115 * Get the reason for the ANR. 116 */ getReason()117 public String getReason() { 118 return (String) getAttribute(REASON); 119 } 120 121 /** 122 * Set the reason for the ANR. 123 */ setReason(String reason)124 public void setReason(String reason) { 125 setAttribute(REASON, reason); 126 } 127 128 /** 129 * Get the main trace for the ANR. 130 */ getTrace()131 public String getTrace() { 132 return (String) getAttribute(TRACE); 133 } 134 135 /** 136 * Set the main trace for the ANR. 137 */ setTrace(String trace)138 public void setTrace(String trace) { 139 setAttribute(TRACE, trace); 140 } 141 } 142