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.data.adselection.datahandlers;
18 
19 import android.annotation.NonNull;
20 import android.net.Uri;
21 
22 import com.google.auto.value.AutoValue;
23 
24 /** Data class representing the result of an ad selection run . */
25 @AutoValue
26 public abstract class AdSelectionResultBidAndUri {
27     /** Ad selection id */
getAdSelectionId()28     public abstract long getAdSelectionId();
29 
30     /** Winning ad bid in this ad selection run. */
getWinningAdBid()31     public abstract double getWinningAdBid();
32 
33     /** Winning ad render url for this ad selection run. */
34     @NonNull
getWinningAdRenderUri()35     public abstract Uri getWinningAdRenderUri();
36 
37     /**
38      * @return generic builder
39      */
40     @NonNull
builder()41     public static Builder builder() {
42         return new AutoValue_AdSelectionResultBidAndUri.Builder();
43     }
44 
45     /**
46      * Creates a {@link AdSelectionResultBidAndUri} object using the builder.
47      *
48      * <p>Required for Room SQLite integration.
49      */
50     @NonNull
create( long adSelectionId, double winningAdBid, @NonNull Uri winningAdRenderUri)51     public static AdSelectionResultBidAndUri create(
52             long adSelectionId, double winningAdBid, @NonNull Uri winningAdRenderUri) {
53         return builder()
54                 .setAdSelectionId(adSelectionId)
55                 .setWinningAdBid(winningAdBid)
56                 .setWinningAdRenderUri(winningAdRenderUri)
57                 .build();
58     }
59 
60     /** Builder for AdSelectionResult. */
61     @AutoValue.Builder
62     public abstract static class Builder {
63         /** Sets ad selection id */
setAdSelectionId(long adSelectionId)64         public abstract Builder setAdSelectionId(long adSelectionId);
65 
66         /** Sets the winning ad bid in this ad selection run. */
setWinningAdBid(double winningAdBid)67         public abstract Builder setWinningAdBid(double winningAdBid);
68 
69         /** Sets the winning ad render url for this ad selection run. */
setWinningAdRenderUri(@onNull Uri winningAdRenderUri)70         public abstract Builder setWinningAdRenderUri(@NonNull Uri winningAdRenderUri);
71 
72         /** Builds a {@link AdSelectionResultBidAndUri} object. */
73         @NonNull
build()74         public abstract AdSelectionResultBidAndUri build();
75     }
76 }
77