1 /* 2 * Copyright (C) 2023 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 measurement attribution stats. */ 24 public class MeasurementAttributionStats { 25 private int mCode; 26 private int mSourceType; 27 private int mSurfaceType; 28 private int mResult; 29 private int mFailureType; 30 private boolean mIsSourceDerived; 31 private boolean mIsInstallAttribution; 32 private long mAttributionDelay; 33 MeasurementAttributionStats()34 public MeasurementAttributionStats() {} 35 36 @Override equals(Object obj)37 public boolean equals(Object obj) { 38 if (!(obj instanceof MeasurementAttributionStats)) { 39 return false; 40 } 41 MeasurementAttributionStats measurementAttributionStats = (MeasurementAttributionStats) obj; 42 return mCode == measurementAttributionStats.getCode() 43 && mSourceType == measurementAttributionStats.getSourceType() 44 && mSurfaceType == measurementAttributionStats.getSurfaceType() 45 && mResult == measurementAttributionStats.getResult() 46 && mFailureType == measurementAttributionStats.getFailureType() 47 && mIsSourceDerived == measurementAttributionStats.isSourceDerived() 48 && mIsInstallAttribution == measurementAttributionStats.isInstallAttribution() 49 && mAttributionDelay == measurementAttributionStats.getAttributionDelay(); 50 } 51 52 @Override hashCode()53 public int hashCode() { 54 return Objects.hash( 55 mCode, 56 mSourceType, 57 mSurfaceType, 58 mResult, 59 mFailureType, 60 mIsSourceDerived, 61 mIsInstallAttribution, 62 mAttributionDelay); 63 } 64 getCode()65 public int getCode() { 66 return mCode; 67 } 68 getSourceType()69 public int getSourceType() { 70 return mSourceType; 71 } 72 getSurfaceType()73 public int getSurfaceType() { 74 return mSurfaceType; 75 } 76 getResult()77 public int getResult() { 78 return mResult; 79 } 80 getFailureType()81 public int getFailureType() { 82 return mFailureType; 83 } 84 isSourceDerived()85 public boolean isSourceDerived() { 86 return mIsSourceDerived; 87 } 88 isInstallAttribution()89 public boolean isInstallAttribution() { 90 return mIsInstallAttribution; 91 } 92 getAttributionDelay()93 public long getAttributionDelay() { 94 return mAttributionDelay; 95 } 96 97 /** Builder for {@link MeasurementAttributionStats}. */ 98 public static final class Builder { 99 private final MeasurementAttributionStats mBuilding; 100 Builder()101 public Builder() { 102 mBuilding = new MeasurementAttributionStats(); 103 } 104 105 /** See {@link MeasurementAttributionStats#getCode()} . */ setCode(int code)106 public @NonNull MeasurementAttributionStats.Builder setCode(int code) { 107 mBuilding.mCode = code; 108 return this; 109 } 110 111 /** See {@link MeasurementAttributionStats#getSourceType()} . */ setSourceType(int sourceType)112 public @NonNull MeasurementAttributionStats.Builder setSourceType(int sourceType) { 113 mBuilding.mSourceType = sourceType; 114 return this; 115 } 116 117 /** See {@link MeasurementAttributionStats#getSurfaceType()} . */ setSurfaceType(int surfaceType)118 public @NonNull MeasurementAttributionStats.Builder setSurfaceType(int surfaceType) { 119 mBuilding.mSurfaceType = surfaceType; 120 return this; 121 } 122 123 /** See {@link MeasurementAttributionStats#getResult()} . */ setResult(int result)124 public @NonNull MeasurementAttributionStats.Builder setResult(int result) { 125 mBuilding.mResult = result; 126 return this; 127 } 128 129 /** See {@link MeasurementAttributionStats#getFailureType()} . */ setFailureType(int failureType)130 public @NonNull MeasurementAttributionStats.Builder setFailureType(int failureType) { 131 mBuilding.mFailureType = failureType; 132 return this; 133 } 134 135 /** See {@link MeasurementAttributionStats#isSourceDerived()} . */ setSourceDerived( boolean isSourceDerived)136 public @NonNull MeasurementAttributionStats.Builder setSourceDerived( 137 boolean isSourceDerived) { 138 mBuilding.mIsSourceDerived = isSourceDerived; 139 return this; 140 } 141 142 /** See {@link MeasurementAttributionStats#isSourceDerived()} . */ setInstallAttribution( boolean isInstallAttribution)143 public @NonNull MeasurementAttributionStats.Builder setInstallAttribution( 144 boolean isInstallAttribution) { 145 mBuilding.mIsInstallAttribution = isInstallAttribution; 146 return this; 147 } 148 149 /** See {@link MeasurementAttributionStats#getAttributionDelay()} . */ setAttributionDelay( long attributionDelay)150 public @NonNull MeasurementAttributionStats.Builder setAttributionDelay( 151 long attributionDelay) { 152 mBuilding.mAttributionDelay = attributionDelay; 153 return this; 154 } 155 /** Build the {@link MeasurementAttributionStats}. */ build()156 public @NonNull MeasurementAttributionStats build() { 157 return mBuilding; 158 } 159 } 160 } 161