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 import android.annotation.Nullable;
21 
22 import java.util.Objects;
23 
24 /** Class for measurement registration response Stats. */
25 public class MeasurementRegistrationResponseStats {
26     private final int mCode;
27     private final int mRegistrationType;
28     private final long mResponseSize;
29     private final String mAdTechDomain;
30     private final int mInteractionType;
31     private final int mSurfaceType;
32     private final int mRegistrationStatus;
33     private final int mFailureType;
34     private final long mRegistrationDelay;
35     private final String mSourceRegistrant;
36     private final int mRetryCount;
37     private final boolean mIsRedirectOnly;
38     private final boolean mIsPARequest;
39 
MeasurementRegistrationResponseStats(Builder builder)40     private MeasurementRegistrationResponseStats(Builder builder) {
41         mCode = builder.mCode;
42         mRegistrationType = builder.mRegistrationType;
43         mResponseSize = builder.mResponseSize;
44         mAdTechDomain = builder.mAdTechDomain;
45         mInteractionType = builder.mInteractionType;
46         mSurfaceType = builder.mSurfaceType;
47         mRegistrationStatus = builder.mRegistrationStatus;
48         mFailureType = builder.mFailureType;
49         mRegistrationDelay = builder.mRegistrationDelay;
50         mSourceRegistrant = builder.mSourceRegistrant;
51         mRetryCount = builder.mRetryCount;
52         mIsRedirectOnly = builder.mIsRedirectOnly;
53         mIsPARequest = builder.mIsPARequest;
54     }
55 
56     @Override
equals(Object o)57     public boolean equals(Object o) {
58         if (this == o) return true;
59         if (!(o instanceof MeasurementRegistrationResponseStats)) return false;
60         MeasurementRegistrationResponseStats that = (MeasurementRegistrationResponseStats) o;
61         return mCode == that.mCode
62                 && mRegistrationType == that.mRegistrationType
63                 && mResponseSize == that.mResponseSize
64                 && Objects.equals(mAdTechDomain, that.mAdTechDomain)
65                 && mInteractionType == that.mInteractionType
66                 && mSurfaceType == that.mSurfaceType
67                 && mRegistrationStatus == that.mRegistrationStatus
68                 && mFailureType == that.mFailureType
69                 && mRegistrationDelay == that.mRegistrationDelay
70                 && Objects.equals(mSourceRegistrant, that.mSourceRegistrant)
71                 && mRetryCount == that.mRetryCount
72                 && mIsRedirectOnly == that.mIsRedirectOnly
73                 && mIsPARequest == that.mIsPARequest;
74     }
75 
76     @Override
hashCode()77     public int hashCode() {
78         return Objects.hash(
79                 mCode,
80                 mRegistrationType,
81                 mResponseSize,
82                 mAdTechDomain,
83                 mInteractionType,
84                 mSurfaceType,
85                 mRegistrationStatus,
86                 mFailureType,
87                 mRegistrationDelay,
88                 mSourceRegistrant,
89                 mRetryCount,
90                 mIsRedirectOnly,
91                 mIsPARequest);
92     }
93 
94     @Override
toString()95     public String toString() {
96         return "MeasurementRegistrationResponseStats{"
97                 + "mCode="
98                 + mCode
99                 + ", mRegistrationType="
100                 + mRegistrationType
101                 + ", mResponseSize="
102                 + mResponseSize
103                 + ", mAdTechDomain='"
104                 + mAdTechDomain
105                 + ", mInteractionType="
106                 + mInteractionType
107                 + ", mSurfaceType="
108                 + mSurfaceType
109                 + ", mRegistrationStatus="
110                 + mRegistrationStatus
111                 + ", mFailureType="
112                 + mFailureType
113                 + ", mRegistrationDelay="
114                 + mRegistrationDelay
115                 + ", mSourceRegistrant="
116                 + mSourceRegistrant
117                 + ", mRetryCount="
118                 + mRetryCount
119                 + ", mIsRedirectOnly="
120                 + mIsRedirectOnly
121                 + ", mIsPARequest="
122                 + mIsPARequest
123                 + '}';
124     }
125 
getCode()126     public int getCode() {
127         return mCode;
128     }
129 
getRegistrationType()130     public int getRegistrationType() {
131         return mRegistrationType;
132     }
133 
getResponseSize()134     public long getResponseSize() {
135         return mResponseSize;
136     }
137 
138     @Nullable
getAdTechDomain()139     public String getAdTechDomain() {
140         return mAdTechDomain;
141     }
142 
getInteractionType()143     public int getInteractionType() {
144         return mInteractionType;
145     }
146 
getSurfaceType()147     public int getSurfaceType() {
148         return mSurfaceType;
149     }
150 
getRegistrationStatus()151     public int getRegistrationStatus() {
152         return mRegistrationStatus;
153     }
154 
getFailureType()155     public int getFailureType() {
156         return mFailureType;
157     }
158 
getRegistrationDelay()159     public long getRegistrationDelay() {
160         return mRegistrationDelay;
161     }
162 
getSourceRegistrant()163     public String getSourceRegistrant() {
164         return mSourceRegistrant;
165     }
166 
getRetryCount()167     public int getRetryCount() {
168         return mRetryCount;
169     }
170 
isRedirectOnly()171     public boolean isRedirectOnly() {
172         return mIsRedirectOnly;
173     }
174 
isPARequest()175     public boolean isPARequest() {
176         return mIsPARequest;
177     }
178 
179     /** Builder for {@link MeasurementRegistrationResponseStats}. */
180     public static final class Builder {
181         private final int mCode;
182         private final int mRegistrationType;
183         private final long mResponseSize;
184         private String mAdTechDomain;
185         private final int mInteractionType;
186         private final int mSurfaceType;
187         private final int mRegistrationStatus;
188         private final int mFailureType;
189         private final long mRegistrationDelay;
190         private final String mSourceRegistrant;
191         private final int mRetryCount;
192         private final boolean mIsRedirectOnly;
193         private final boolean mIsPARequest;
194 
Builder( int code, int registrationType, long responseSize, int interactionType, int surfaceType, int registrationStatus, int failureType, long registrationDelay, String sourceRegistrant, int retryCount, boolean isRedirectOnly, boolean isPARequest)195         public Builder(
196                 int code,
197                 int registrationType,
198                 long responseSize,
199                 int interactionType,
200                 int surfaceType,
201                 int registrationStatus,
202                 int failureType,
203                 long registrationDelay,
204                 String sourceRegistrant,
205                 int retryCount,
206                 boolean isRedirectOnly,
207                 boolean isPARequest) {
208             mCode = code;
209             mRegistrationType = registrationType;
210             mResponseSize = responseSize;
211             mInteractionType = interactionType;
212             mSurfaceType = surfaceType;
213             mRegistrationStatus = registrationStatus;
214             mFailureType = failureType;
215             mRegistrationDelay = registrationDelay;
216             mSourceRegistrant = sourceRegistrant;
217             mRetryCount = retryCount;
218             mIsRedirectOnly = isRedirectOnly;
219             mIsPARequest = isPARequest;
220         }
221 
222         /** See {@link MeasurementRegistrationResponseStats#getAdTechDomain()} . */
223         @NonNull
setAdTechDomain( @ullable String adTechDomain)224         public MeasurementRegistrationResponseStats.Builder setAdTechDomain(
225                 @Nullable String adTechDomain) {
226             mAdTechDomain = adTechDomain;
227             return this;
228         }
229 
230         /** Build the {@link MeasurementRegistrationResponseStats}. */
231         @NonNull
build()232         public MeasurementRegistrationResponseStats build() {
233             return new MeasurementRegistrationResponseStats(this);
234         }
235     }
236 }
237