1 /*
2  * Copyright (C) 2010 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.tradefed.result;
17 
18 import java.util.HashMap;
19 import java.util.Map;
20 
21 /**
22  * A class to represent a test summary.  Provides a single field for a summary, in addition to a
23  * key-value store for more detailed summary.  Also provides a place for the summary source to be
24  * identified.
25  */
26 public class TestSummary {
27     private TypedString mSummary = null;
28     private Map<String, TypedString> mKvStore = null;
29     private String mSource = null;
30 
31     public static enum Type {
32         URI("uri"),
33         TEXT("text");
34         private final String mType;
Type()35         Type() {
36             mType = "uri";
37         }
38 
Type(String type)39         Type(String type) {
40             mType = type;
41         }
42 
getType()43         String getType() {
44             return mType;
45         }
46     }
47 
48     public static class TypedString {
49         private Type mType;
50         private String mString;
TypedString(String string)51         public TypedString(String string) {
52             this(string, Type.URI);
53         }
TypedString(String string, Type type)54         public TypedString(String string, Type type) {
55             mType = type;
56             mString = string;
57         }
getType()58         public Type getType() {
59             return mType;
60         }
getString()61         public String getString() {
62             return mString;
63         }
64 
65         @Override
toString()66         public String toString() {
67             return String.format("%s: %s", mType.toString(), mString);
68         }
69     }
70 
71     /**
72      * A convenience constructor that takes the string representation of a URI
73      *
74      * @param summaryUri A {@link String} representing a URI
75      */
TestSummary(String summaryUri)76     public TestSummary(String summaryUri) {
77         this(new TypedString(summaryUri));
78     }
79 
TestSummary(TypedString summary)80     public TestSummary(TypedString summary) {
81         setSummary(summary);
82         mKvStore = new HashMap<String, TypedString>();
83     }
84 
85     /**
86      * Set the source of the summary, in case a consumer wants to implement a contract with a
87      * specific producer
88      *
89      * @param source A {@link String} containing the fully-qualified Java class name of the source
90      */
setSource(String source)91     public void setSource(String source) {
92         mSource = source;
93     }
setSummary(TypedString summary)94     public void setSummary(TypedString summary) {
95         mSummary = summary;
96     }
addKvEntry(String key, TypedString value)97     public void addKvEntry(String key, TypedString value) {
98         mKvStore.put(key, value);
99     }
100 
101     // trampolines
setSummary(String summary)102     public void setSummary(String summary) {
103         setSummary(new TypedString(summary));
104     }
addKvEntry(String key, String value)105     public void addKvEntry(String key, String value) {
106         addKvEntry(key, new TypedString(value));
107     }
108 
getSource()109     public String getSource() {
110         return mSource;
111     }
getSummary()112     public TypedString getSummary() {
113         return mSummary;
114     }
getKvEntries()115     public Map<String, TypedString> getKvEntries() {
116         return mKvStore;
117     }
118 }
119