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.data.customaudience;
18 
19 import android.adservices.common.AdTechIdentifier;
20 import android.annotation.Nullable;
21 
22 import androidx.annotation.NonNull;
23 import androidx.room.ColumnInfo;
24 import androidx.room.Entity;
25 
26 import com.google.auto.value.AutoValue;
27 import com.google.auto.value.AutoValue.CopyAnnotations;
28 
29 /**
30  * This POJO represents the CustomAudienceOverride data in the custom_audience_overrides table
31  * entity.
32  */
33 @AutoValue
34 @CopyAnnotations
35 @Entity(
36         tableName = "custom_audience_overrides",
37         primaryKeys = {"owner", "buyer", "name"})
38 public abstract class DBCustomAudienceOverride {
39     /** @return the owner */
40     @CopyAnnotations
41     @ColumnInfo(name = "owner")
42     @NonNull
getOwner()43     public abstract String getOwner();
44 
45     /** @return the buyer */
46     @CopyAnnotations
47     @ColumnInfo(name = "buyer")
48     @NonNull
getBuyer()49     public abstract AdTechIdentifier getBuyer();
50 
51     /**
52      * @return name
53      */
54     @CopyAnnotations
55     @ColumnInfo(name = "name")
56     @NonNull
getName()57     public abstract String getName();
58 
59     /**
60      * @return App package name, app package name associated with the caller
61      */
62     @CopyAnnotations
63     @ColumnInfo(name = "app_package_name")
64     @NonNull
getAppPackageName()65     public abstract String getAppPackageName();
66 
67     /**
68      * @return The override javascript result
69      */
70     @CopyAnnotations
71     @ColumnInfo(name = "bidding_logic")
72     @NonNull
getBiddingLogicJS()73     public abstract String getBiddingLogicJS();
74 
75     /** @return the version of the override javascript result */
76     @CopyAnnotations
77     @ColumnInfo(name = "bidding_logic_version")
78     @Nullable
getBiddingLogicJsVersion()79     public abstract Long getBiddingLogicJsVersion();
80 
81     /**
82      * @return The override trusted bidding data result
83      */
84     @CopyAnnotations
85     @ColumnInfo(name = "trusted_bidding_data")
86     @NonNull
getTrustedBiddingData()87     public abstract String getTrustedBiddingData();
88 
89     /** @return DBAdSelectionOverride built with those params */
create( String owner, AdTechIdentifier buyer, String name, String appPackageName, String biddingLogicJS, Long biddingLogicJsVersion, String trustedBiddingData)90     public static DBCustomAudienceOverride create(
91             String owner,
92             AdTechIdentifier buyer,
93             String name,
94             String appPackageName,
95             String biddingLogicJS,
96             Long biddingLogicJsVersion,
97             String trustedBiddingData) {
98         return builder()
99                 .setOwner(owner)
100                 .setBuyer(buyer)
101                 .setName(name)
102                 .setAppPackageName(appPackageName)
103                 .setBiddingLogicJS(biddingLogicJS)
104                 .setBiddingLogicJsVersion(biddingLogicJsVersion)
105                 .setTrustedBiddingData(trustedBiddingData)
106                 .build();
107     }
108 
109     /**
110      * @return generic builder
111      */
builder()112     public static DBCustomAudienceOverride.Builder builder() {
113         return new AutoValue_DBCustomAudienceOverride.Builder();
114     }
115 
116     @AutoValue.Builder
117     public abstract static class Builder {
118         /** Sets the owner of the {@link DBCustomAudienceOverride} entry. */
setOwner(String owner)119         public abstract DBCustomAudienceOverride.Builder setOwner(String owner);
120 
121         /** Sets the buyer of the {@link DBCustomAudienceOverride} entry. */
setBuyer(AdTechIdentifier buyer)122         public abstract DBCustomAudienceOverride.Builder setBuyer(AdTechIdentifier buyer);
123 
124         /** Sets the name of the {@link DBCustomAudienceOverride} entry. */
setName(String name)125         public abstract DBCustomAudienceOverride.Builder setName(String name);
126 
127         /** Sets the appPackageName of the {@link DBCustomAudienceOverride} entry. */
setAppPackageName(String appPackageName)128         public abstract DBCustomAudienceOverride.Builder setAppPackageName(String appPackageName);
129 
130         /** Sets the biddingLogicJS of the {@link DBCustomAudienceOverride} entry. */
setBiddingLogicJS(String biddingLogicJS)131         public abstract DBCustomAudienceOverride.Builder setBiddingLogicJS(String biddingLogicJS);
132 
133         /** Sets the biddingLogicJSVersion of the {@link DBCustomAudienceOverride} entry. */
setBiddingLogicJsVersion(Long value)134         public abstract Builder setBiddingLogicJsVersion(Long value);
135 
136         /** Sets the trustedBiddingData of the {@link DBCustomAudienceOverride} entry. */
setTrustedBiddingData( String trustedBiddingData)137         public abstract DBCustomAudienceOverride.Builder setTrustedBiddingData(
138                 String trustedBiddingData);
139 
140         /**
141          * @return an instance of {@link DBCustomAudienceOverride} built with the information in
142          *     this builder.
143          */
build()144         public abstract DBCustomAudienceOverride build();
145     }
146 }
147