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