• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 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 
17 package com.android.adservices.service.stats;
18 
19 import android.annotation.NonNull;
20 
21 import java.util.Objects;
22 
23 /** Class for Api Call Stats. */
24 public class ApiCallStats {
25     private int mCode;
26     private int mApiClass;
27     int mApiName;
28     String mAppPackageName;
29     String mSdkPackageName;
30     int mLatencyMillisecond;
31     int mResultCode;
32 
ApiCallStats()33     public ApiCallStats() {}
34 
35     @Override
equals(Object obj)36     public boolean equals(Object obj) {
37         if (!(obj instanceof ApiCallStats)) {
38             return false;
39         }
40         ApiCallStats apiCallStats = (ApiCallStats) obj;
41         return mCode == apiCallStats.getCode()
42                 && mApiClass == apiCallStats.getApiClass()
43                 && mApiName == apiCallStats.getApiName()
44                 && Objects.equals(mAppPackageName, apiCallStats.getAppPackageName())
45                 && Objects.equals(mSdkPackageName, apiCallStats.getSdkPackageName())
46                 && mLatencyMillisecond == apiCallStats.getLatencyMillisecond()
47                 && mResultCode == apiCallStats.getResultCode();
48     }
49 
50     @Override
hashCode()51     public int hashCode() {
52         return Objects.hash(
53                 mCode,
54                 mApiClass,
55                 mApiName,
56                 mAppPackageName,
57                 mSdkPackageName,
58                 mLatencyMillisecond,
59                 mResultCode);
60     }
61 
62     @NonNull
getCode()63     public int getCode() {
64         return mCode;
65     }
66 
67     @NonNull
getApiClass()68     public int getApiClass() {
69         return mApiClass;
70     }
71 
72     @NonNull
getApiName()73     public int getApiName() {
74         return mApiName;
75     }
76 
77     @NonNull
getAppPackageName()78     public String getAppPackageName() {
79         return mAppPackageName;
80     }
81 
82     @NonNull
getSdkPackageName()83     public String getSdkPackageName() {
84         return mSdkPackageName;
85     }
86 
87     @NonNull
getLatencyMillisecond()88     public int getLatencyMillisecond() {
89         return mLatencyMillisecond;
90     }
91 
92     @NonNull
getResultCode()93     public int getResultCode() {
94         return mResultCode;
95     }
96 
97     @Override
toString()98     public String toString() {
99         return "ApiCallStats{"
100                 + "mCode="
101                 + mCode
102                 + ", mApiClass="
103                 + mApiClass
104                 + ", mApiName="
105                 + mApiName
106                 + ", mAppPackageName='"
107                 + mAppPackageName
108                 + '\''
109                 + ", mSdkPackageName='"
110                 + mSdkPackageName
111                 + '\''
112                 + ", mLatencyMillisecond="
113                 + mLatencyMillisecond
114                 + ", mResultCode="
115                 + mResultCode
116                 + '}';
117     }
118 
119     /** Builder for {@link ApiCallStats}. */
120     public static final class Builder {
121         private final ApiCallStats mBuilding;
122 
Builder()123         public Builder() {
124             mBuilding = new ApiCallStats();
125         }
126 
127         /** See {@link ApiCallStats#getCode()} . */
setCode(int code)128         public @NonNull ApiCallStats.Builder setCode(int code) {
129             mBuilding.mCode = code;
130             return this;
131         }
132 
133         /** See {@link ApiCallStats#getApiClass()} . */
setApiClass(int apiClass)134         public @NonNull ApiCallStats.Builder setApiClass(int apiClass) {
135             mBuilding.mApiClass = apiClass;
136             return this;
137         }
138 
139         /** See {@link ApiCallStats#getApiName()} . */
setApiName(int apiName)140         public @NonNull ApiCallStats.Builder setApiName(int apiName) {
141             mBuilding.mApiName = apiName;
142             return this;
143         }
144 
145         /** See {@link ApiCallStats#getAppPackageName()} . */
setAppPackageName(@onNull String appPackageName)146         public @NonNull ApiCallStats.Builder setAppPackageName(@NonNull String appPackageName) {
147             Objects.requireNonNull(appPackageName);
148             mBuilding.mAppPackageName = appPackageName;
149             return this;
150         }
151 
152         /** See {@link ApiCallStats#getSdkPackageName()}. */
setSdkPackageName(@onNull String sdkPackageName)153         public @NonNull ApiCallStats.Builder setSdkPackageName(@NonNull String sdkPackageName) {
154             Objects.requireNonNull(sdkPackageName);
155             mBuilding.mSdkPackageName = sdkPackageName;
156             return this;
157         }
158 
159         /** See {@link ApiCallStats#getLatencyMillisecond()}. */
setLatencyMillisecond(int latencyMillisecond)160         public @NonNull ApiCallStats.Builder setLatencyMillisecond(int latencyMillisecond) {
161             mBuilding.mLatencyMillisecond = latencyMillisecond;
162             return this;
163         }
164 
165         /** See {@link ApiCallStats#getResultCode()}. */
setResultCode(int resultCode)166         public @NonNull ApiCallStats.Builder setResultCode(int resultCode) {
167             mBuilding.mResultCode = resultCode;
168             return this;
169         }
170 
171         /** Build the {@link ApiCallStats}. */
build()172         public @NonNull ApiCallStats build() {
173             if (mBuilding.mAppPackageName == null || mBuilding.mSdkPackageName == null) {
174                 throw new IllegalArgumentException("appPackageName or sdkPackageName is null");
175             }
176             return mBuilding;
177         }
178     }
179 }
180