1 /* 2 * Copyright (C) 2013 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 java.util.Arrays; 19 import java.util.HashSet; 20 import java.util.Set; 21 22 /** 23 * A generic item containing attributes for time, process, and thread and can be extended for 24 * items such as {@link AnrItem} and {@link JavaCrashItem}. 25 */ 26 public class MiscKernelLogItem extends GenericItem { 27 28 /** Constant for JSON output */ 29 public static final String EVENT_TIME = "EVENT_TIME"; 30 /** Constant for JSON output */ 31 public static final String PREAMBLE = "LAST_PREAMBLE"; 32 /** Constant for JSON output */ 33 public static final String CATEGORY = "CATEGORY"; 34 /** Constant for JSON output */ 35 public static final String STACK = "STACK"; 36 37 private static final Set<String> ATTRIBUTES = new HashSet<String>(Arrays.asList( 38 EVENT_TIME, PREAMBLE, CATEGORY, STACK)); 39 40 /** 41 * Constructor for {@link MiscKernelLogItem}. 42 */ MiscKernelLogItem()43 public MiscKernelLogItem() { 44 super(ATTRIBUTES); 45 } 46 47 /** 48 * Constructor for {@link MiscKernelLogItem}. 49 * 50 * @param attributes A list of allowed attributes. 51 */ MiscKernelLogItem(Set<String> attributes)52 protected MiscKernelLogItem(Set<String> attributes) { 53 super(getAllAttributes(attributes)); 54 } 55 56 /** 57 * Get the time object when the event happened. 58 */ getEventTime()59 public Double getEventTime() { 60 return (Double) getAttribute(EVENT_TIME); 61 } 62 63 /** 64 * Set the time object when the event happened. 65 */ setEventTime(Double time)66 public void setEventTime(Double time) { 67 setAttribute(EVENT_TIME, time); 68 } 69 70 /** 71 * Get the preamble for the event. 72 */ getPreamble()73 public String getPreamble() { 74 return (String) getAttribute(PREAMBLE); 75 } 76 77 /** 78 * Set the preamble for the event. 79 */ setPreamble(String preamble)80 public void setPreamble(String preamble) { 81 setAttribute(PREAMBLE, preamble); 82 } 83 84 /** 85 * Get the category of the event. 86 */ getCategory()87 public String getCategory() { 88 return (String) getAttribute(CATEGORY); 89 } 90 91 /** 92 * Set the category of the event. 93 */ setCategory(String category)94 public void setCategory(String category) { 95 setAttribute(CATEGORY, category); 96 } 97 98 /** 99 * Get the stack for the event. 100 */ getStack()101 public String getStack() { 102 return (String) getAttribute(STACK); 103 } 104 105 /** 106 * Set the stack for the event. 107 */ setStack(String stack)108 public void setStack(String stack) { 109 setAttribute(STACK, stack); 110 } 111 112 /** 113 * Combine an array of attributes with the internal list of attributes. 114 */ getAllAttributes(Set<String> attributes)115 private static Set<String> getAllAttributes(Set<String> attributes) { 116 Set<String> allAttributes = new HashSet<String>(ATTRIBUTES); 117 allAttributes.addAll(attributes); 118 return allAttributes; 119 } 120 } 121