1 /* 2 * Copyright 2022 Google LLC 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 * https://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.google.analytics.admin.v1alpha; 18 19 import com.google.api.core.BetaApi; 20 import com.google.api.pathtemplate.PathTemplate; 21 import com.google.api.pathtemplate.ValidationException; 22 import com.google.api.resourcenames.ResourceName; 23 import com.google.common.base.Preconditions; 24 import com.google.common.collect.ImmutableMap; 25 import java.util.ArrayList; 26 import java.util.List; 27 import java.util.Map; 28 import java.util.Objects; 29 import javax.annotation.Generated; 30 31 // AUTO-GENERATED DOCUMENTATION AND CLASS. 32 @Generated("by gapic-generator-java") 33 public class AccessBindingName implements ResourceName { 34 private static final PathTemplate ACCOUNT_ACCESS_BINDING = 35 PathTemplate.createWithoutUrlEncoding("accounts/{account}/accessBindings/{access_binding}"); 36 private static final PathTemplate PROPERTY_ACCESS_BINDING = 37 PathTemplate.createWithoutUrlEncoding( 38 "properties/{property}/accessBindings/{access_binding}"); 39 private volatile Map<String, String> fieldValuesMap; 40 private PathTemplate pathTemplate; 41 private String fixedValue; 42 private final String account; 43 private final String accessBinding; 44 private final String property; 45 46 @Deprecated AccessBindingName()47 protected AccessBindingName() { 48 account = null; 49 accessBinding = null; 50 property = null; 51 } 52 AccessBindingName(Builder builder)53 private AccessBindingName(Builder builder) { 54 account = Preconditions.checkNotNull(builder.getAccount()); 55 accessBinding = Preconditions.checkNotNull(builder.getAccessBinding()); 56 property = null; 57 pathTemplate = ACCOUNT_ACCESS_BINDING; 58 } 59 AccessBindingName(PropertyAccessBindingBuilder builder)60 private AccessBindingName(PropertyAccessBindingBuilder builder) { 61 property = Preconditions.checkNotNull(builder.getProperty()); 62 accessBinding = Preconditions.checkNotNull(builder.getAccessBinding()); 63 account = null; 64 pathTemplate = PROPERTY_ACCESS_BINDING; 65 } 66 getAccount()67 public String getAccount() { 68 return account; 69 } 70 getAccessBinding()71 public String getAccessBinding() { 72 return accessBinding; 73 } 74 getProperty()75 public String getProperty() { 76 return property; 77 } 78 newBuilder()79 public static Builder newBuilder() { 80 return new Builder(); 81 } 82 83 @BetaApi("The per-pattern Builders are not stable yet and may be changed in the future.") newAccountAccessBindingBuilder()84 public static Builder newAccountAccessBindingBuilder() { 85 return new Builder(); 86 } 87 88 @BetaApi("The per-pattern Builders are not stable yet and may be changed in the future.") newPropertyAccessBindingBuilder()89 public static PropertyAccessBindingBuilder newPropertyAccessBindingBuilder() { 90 return new PropertyAccessBindingBuilder(); 91 } 92 toBuilder()93 public Builder toBuilder() { 94 return new Builder(this); 95 } 96 of(String account, String accessBinding)97 public static AccessBindingName of(String account, String accessBinding) { 98 return newBuilder().setAccount(account).setAccessBinding(accessBinding).build(); 99 } 100 101 @BetaApi("The static create methods are not stable yet and may be changed in the future.") ofAccountAccessBindingName(String account, String accessBinding)102 public static AccessBindingName ofAccountAccessBindingName(String account, String accessBinding) { 103 return newBuilder().setAccount(account).setAccessBinding(accessBinding).build(); 104 } 105 106 @BetaApi("The static create methods are not stable yet and may be changed in the future.") ofPropertyAccessBindingName( String property, String accessBinding)107 public static AccessBindingName ofPropertyAccessBindingName( 108 String property, String accessBinding) { 109 return newPropertyAccessBindingBuilder() 110 .setProperty(property) 111 .setAccessBinding(accessBinding) 112 .build(); 113 } 114 format(String account, String accessBinding)115 public static String format(String account, String accessBinding) { 116 return newBuilder().setAccount(account).setAccessBinding(accessBinding).build().toString(); 117 } 118 119 @BetaApi("The static format methods are not stable yet and may be changed in the future.") formatAccountAccessBindingName(String account, String accessBinding)120 public static String formatAccountAccessBindingName(String account, String accessBinding) { 121 return newBuilder().setAccount(account).setAccessBinding(accessBinding).build().toString(); 122 } 123 124 @BetaApi("The static format methods are not stable yet and may be changed in the future.") formatPropertyAccessBindingName(String property, String accessBinding)125 public static String formatPropertyAccessBindingName(String property, String accessBinding) { 126 return newPropertyAccessBindingBuilder() 127 .setProperty(property) 128 .setAccessBinding(accessBinding) 129 .build() 130 .toString(); 131 } 132 parse(String formattedString)133 public static AccessBindingName parse(String formattedString) { 134 if (formattedString.isEmpty()) { 135 return null; 136 } 137 if (ACCOUNT_ACCESS_BINDING.matches(formattedString)) { 138 Map<String, String> matchMap = ACCOUNT_ACCESS_BINDING.match(formattedString); 139 return ofAccountAccessBindingName(matchMap.get("account"), matchMap.get("access_binding")); 140 } else if (PROPERTY_ACCESS_BINDING.matches(formattedString)) { 141 Map<String, String> matchMap = PROPERTY_ACCESS_BINDING.match(formattedString); 142 return ofPropertyAccessBindingName(matchMap.get("property"), matchMap.get("access_binding")); 143 } 144 throw new ValidationException("AccessBindingName.parse: formattedString not in valid format"); 145 } 146 parseList(List<String> formattedStrings)147 public static List<AccessBindingName> parseList(List<String> formattedStrings) { 148 List<AccessBindingName> list = new ArrayList<>(formattedStrings.size()); 149 for (String formattedString : formattedStrings) { 150 list.add(parse(formattedString)); 151 } 152 return list; 153 } 154 toStringList(List<AccessBindingName> values)155 public static List<String> toStringList(List<AccessBindingName> values) { 156 List<String> list = new ArrayList<>(values.size()); 157 for (AccessBindingName value : values) { 158 if (value == null) { 159 list.add(""); 160 } else { 161 list.add(value.toString()); 162 } 163 } 164 return list; 165 } 166 isParsableFrom(String formattedString)167 public static boolean isParsableFrom(String formattedString) { 168 return ACCOUNT_ACCESS_BINDING.matches(formattedString) 169 || PROPERTY_ACCESS_BINDING.matches(formattedString); 170 } 171 172 @Override getFieldValuesMap()173 public Map<String, String> getFieldValuesMap() { 174 if (fieldValuesMap == null) { 175 synchronized (this) { 176 if (fieldValuesMap == null) { 177 ImmutableMap.Builder<String, String> fieldMapBuilder = ImmutableMap.builder(); 178 if (account != null) { 179 fieldMapBuilder.put("account", account); 180 } 181 if (accessBinding != null) { 182 fieldMapBuilder.put("access_binding", accessBinding); 183 } 184 if (property != null) { 185 fieldMapBuilder.put("property", property); 186 } 187 fieldValuesMap = fieldMapBuilder.build(); 188 } 189 } 190 } 191 return fieldValuesMap; 192 } 193 getFieldValue(String fieldName)194 public String getFieldValue(String fieldName) { 195 return getFieldValuesMap().get(fieldName); 196 } 197 198 @Override toString()199 public String toString() { 200 return fixedValue != null ? fixedValue : pathTemplate.instantiate(getFieldValuesMap()); 201 } 202 203 @Override equals(Object o)204 public boolean equals(Object o) { 205 if (o == this) { 206 return true; 207 } 208 if (o != null || getClass() == o.getClass()) { 209 AccessBindingName that = ((AccessBindingName) o); 210 return Objects.equals(this.account, that.account) 211 && Objects.equals(this.accessBinding, that.accessBinding) 212 && Objects.equals(this.property, that.property); 213 } 214 return false; 215 } 216 217 @Override hashCode()218 public int hashCode() { 219 int h = 1; 220 h *= 1000003; 221 h ^= Objects.hashCode(fixedValue); 222 h *= 1000003; 223 h ^= Objects.hashCode(account); 224 h *= 1000003; 225 h ^= Objects.hashCode(accessBinding); 226 h *= 1000003; 227 h ^= Objects.hashCode(property); 228 return h; 229 } 230 231 /** Builder for accounts/{account}/accessBindings/{access_binding}. */ 232 public static class Builder { 233 private String account; 234 private String accessBinding; 235 Builder()236 protected Builder() {} 237 getAccount()238 public String getAccount() { 239 return account; 240 } 241 getAccessBinding()242 public String getAccessBinding() { 243 return accessBinding; 244 } 245 setAccount(String account)246 public Builder setAccount(String account) { 247 this.account = account; 248 return this; 249 } 250 setAccessBinding(String accessBinding)251 public Builder setAccessBinding(String accessBinding) { 252 this.accessBinding = accessBinding; 253 return this; 254 } 255 Builder(AccessBindingName accessBindingName)256 private Builder(AccessBindingName accessBindingName) { 257 Preconditions.checkArgument( 258 Objects.equals(accessBindingName.pathTemplate, ACCOUNT_ACCESS_BINDING), 259 "toBuilder is only supported when AccessBindingName has the pattern of accounts/{account}/accessBindings/{access_binding}"); 260 this.account = accessBindingName.account; 261 this.accessBinding = accessBindingName.accessBinding; 262 } 263 build()264 public AccessBindingName build() { 265 return new AccessBindingName(this); 266 } 267 } 268 269 /** Builder for properties/{property}/accessBindings/{access_binding}. */ 270 @BetaApi("The per-pattern Builders are not stable yet and may be changed in the future.") 271 public static class PropertyAccessBindingBuilder { 272 private String property; 273 private String accessBinding; 274 PropertyAccessBindingBuilder()275 protected PropertyAccessBindingBuilder() {} 276 getProperty()277 public String getProperty() { 278 return property; 279 } 280 getAccessBinding()281 public String getAccessBinding() { 282 return accessBinding; 283 } 284 setProperty(String property)285 public PropertyAccessBindingBuilder setProperty(String property) { 286 this.property = property; 287 return this; 288 } 289 setAccessBinding(String accessBinding)290 public PropertyAccessBindingBuilder setAccessBinding(String accessBinding) { 291 this.accessBinding = accessBinding; 292 return this; 293 } 294 build()295 public AccessBindingName build() { 296 return new AccessBindingName(this); 297 } 298 } 299 } 300