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.cloud.talent.v4beta1; 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 CompanyName implements ResourceName { 34 private static final PathTemplate PROJECT_TENANT_COMPANY = 35 PathTemplate.createWithoutUrlEncoding( 36 "projects/{project}/tenants/{tenant}/companies/{company}"); 37 private static final PathTemplate PROJECT_COMPANY = 38 PathTemplate.createWithoutUrlEncoding("projects/{project}/companies/{company}"); 39 private volatile Map<String, String> fieldValuesMap; 40 private PathTemplate pathTemplate; 41 private String fixedValue; 42 private final String project; 43 private final String tenant; 44 private final String company; 45 46 @Deprecated CompanyName()47 protected CompanyName() { 48 project = null; 49 tenant = null; 50 company = null; 51 } 52 CompanyName(Builder builder)53 private CompanyName(Builder builder) { 54 project = Preconditions.checkNotNull(builder.getProject()); 55 tenant = Preconditions.checkNotNull(builder.getTenant()); 56 company = Preconditions.checkNotNull(builder.getCompany()); 57 pathTemplate = PROJECT_TENANT_COMPANY; 58 } 59 CompanyName(ProjectCompanyBuilder builder)60 private CompanyName(ProjectCompanyBuilder builder) { 61 project = Preconditions.checkNotNull(builder.getProject()); 62 company = Preconditions.checkNotNull(builder.getCompany()); 63 tenant = null; 64 pathTemplate = PROJECT_COMPANY; 65 } 66 getProject()67 public String getProject() { 68 return project; 69 } 70 getTenant()71 public String getTenant() { 72 return tenant; 73 } 74 getCompany()75 public String getCompany() { 76 return company; 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.") newProjectTenantCompanyBuilder()84 public static Builder newProjectTenantCompanyBuilder() { 85 return new Builder(); 86 } 87 88 @BetaApi("The per-pattern Builders are not stable yet and may be changed in the future.") newProjectCompanyBuilder()89 public static ProjectCompanyBuilder newProjectCompanyBuilder() { 90 return new ProjectCompanyBuilder(); 91 } 92 toBuilder()93 public Builder toBuilder() { 94 return new Builder(this); 95 } 96 of(String project, String tenant, String company)97 public static CompanyName of(String project, String tenant, String company) { 98 return newBuilder().setProject(project).setTenant(tenant).setCompany(company).build(); 99 } 100 101 @BetaApi("The static create methods are not stable yet and may be changed in the future.") ofProjectTenantCompanyName( String project, String tenant, String company)102 public static CompanyName ofProjectTenantCompanyName( 103 String project, String tenant, String company) { 104 return newBuilder().setProject(project).setTenant(tenant).setCompany(company).build(); 105 } 106 107 @BetaApi("The static create methods are not stable yet and may be changed in the future.") ofProjectCompanyName(String project, String company)108 public static CompanyName ofProjectCompanyName(String project, String company) { 109 return newProjectCompanyBuilder().setProject(project).setCompany(company).build(); 110 } 111 format(String project, String tenant, String company)112 public static String format(String project, String tenant, String company) { 113 return newBuilder() 114 .setProject(project) 115 .setTenant(tenant) 116 .setCompany(company) 117 .build() 118 .toString(); 119 } 120 121 @BetaApi("The static format methods are not stable yet and may be changed in the future.") formatProjectTenantCompanyName( String project, String tenant, String company)122 public static String formatProjectTenantCompanyName( 123 String project, String tenant, String company) { 124 return newBuilder() 125 .setProject(project) 126 .setTenant(tenant) 127 .setCompany(company) 128 .build() 129 .toString(); 130 } 131 132 @BetaApi("The static format methods are not stable yet and may be changed in the future.") formatProjectCompanyName(String project, String company)133 public static String formatProjectCompanyName(String project, String company) { 134 return newProjectCompanyBuilder().setProject(project).setCompany(company).build().toString(); 135 } 136 parse(String formattedString)137 public static CompanyName parse(String formattedString) { 138 if (formattedString.isEmpty()) { 139 return null; 140 } 141 if (PROJECT_TENANT_COMPANY.matches(formattedString)) { 142 Map<String, String> matchMap = PROJECT_TENANT_COMPANY.match(formattedString); 143 return ofProjectTenantCompanyName( 144 matchMap.get("project"), matchMap.get("tenant"), matchMap.get("company")); 145 } else if (PROJECT_COMPANY.matches(formattedString)) { 146 Map<String, String> matchMap = PROJECT_COMPANY.match(formattedString); 147 return ofProjectCompanyName(matchMap.get("project"), matchMap.get("company")); 148 } 149 throw new ValidationException("CompanyName.parse: formattedString not in valid format"); 150 } 151 parseList(List<String> formattedStrings)152 public static List<CompanyName> parseList(List<String> formattedStrings) { 153 List<CompanyName> list = new ArrayList<>(formattedStrings.size()); 154 for (String formattedString : formattedStrings) { 155 list.add(parse(formattedString)); 156 } 157 return list; 158 } 159 toStringList(List<CompanyName> values)160 public static List<String> toStringList(List<CompanyName> values) { 161 List<String> list = new ArrayList<>(values.size()); 162 for (CompanyName value : values) { 163 if (value == null) { 164 list.add(""); 165 } else { 166 list.add(value.toString()); 167 } 168 } 169 return list; 170 } 171 isParsableFrom(String formattedString)172 public static boolean isParsableFrom(String formattedString) { 173 return PROJECT_TENANT_COMPANY.matches(formattedString) 174 || PROJECT_COMPANY.matches(formattedString); 175 } 176 177 @Override getFieldValuesMap()178 public Map<String, String> getFieldValuesMap() { 179 if (fieldValuesMap == null) { 180 synchronized (this) { 181 if (fieldValuesMap == null) { 182 ImmutableMap.Builder<String, String> fieldMapBuilder = ImmutableMap.builder(); 183 if (project != null) { 184 fieldMapBuilder.put("project", project); 185 } 186 if (tenant != null) { 187 fieldMapBuilder.put("tenant", tenant); 188 } 189 if (company != null) { 190 fieldMapBuilder.put("company", company); 191 } 192 fieldValuesMap = fieldMapBuilder.build(); 193 } 194 } 195 } 196 return fieldValuesMap; 197 } 198 getFieldValue(String fieldName)199 public String getFieldValue(String fieldName) { 200 return getFieldValuesMap().get(fieldName); 201 } 202 203 @Override toString()204 public String toString() { 205 return fixedValue != null ? fixedValue : pathTemplate.instantiate(getFieldValuesMap()); 206 } 207 208 @Override equals(Object o)209 public boolean equals(Object o) { 210 if (o == this) { 211 return true; 212 } 213 if (o != null || getClass() == o.getClass()) { 214 CompanyName that = ((CompanyName) o); 215 return Objects.equals(this.project, that.project) 216 && Objects.equals(this.tenant, that.tenant) 217 && Objects.equals(this.company, that.company); 218 } 219 return false; 220 } 221 222 @Override hashCode()223 public int hashCode() { 224 int h = 1; 225 h *= 1000003; 226 h ^= Objects.hashCode(fixedValue); 227 h *= 1000003; 228 h ^= Objects.hashCode(project); 229 h *= 1000003; 230 h ^= Objects.hashCode(tenant); 231 h *= 1000003; 232 h ^= Objects.hashCode(company); 233 return h; 234 } 235 236 /** Builder for projects/{project}/tenants/{tenant}/companies/{company}. */ 237 public static class Builder { 238 private String project; 239 private String tenant; 240 private String company; 241 Builder()242 protected Builder() {} 243 getProject()244 public String getProject() { 245 return project; 246 } 247 getTenant()248 public String getTenant() { 249 return tenant; 250 } 251 getCompany()252 public String getCompany() { 253 return company; 254 } 255 setProject(String project)256 public Builder setProject(String project) { 257 this.project = project; 258 return this; 259 } 260 setTenant(String tenant)261 public Builder setTenant(String tenant) { 262 this.tenant = tenant; 263 return this; 264 } 265 setCompany(String company)266 public Builder setCompany(String company) { 267 this.company = company; 268 return this; 269 } 270 Builder(CompanyName companyName)271 private Builder(CompanyName companyName) { 272 Preconditions.checkArgument( 273 Objects.equals(companyName.pathTemplate, PROJECT_TENANT_COMPANY), 274 "toBuilder is only supported when CompanyName has the pattern of projects/{project}/tenants/{tenant}/companies/{company}"); 275 this.project = companyName.project; 276 this.tenant = companyName.tenant; 277 this.company = companyName.company; 278 } 279 build()280 public CompanyName build() { 281 return new CompanyName(this); 282 } 283 } 284 285 /** Builder for projects/{project}/companies/{company}. */ 286 @BetaApi("The per-pattern Builders are not stable yet and may be changed in the future.") 287 public static class ProjectCompanyBuilder { 288 private String project; 289 private String company; 290 ProjectCompanyBuilder()291 protected ProjectCompanyBuilder() {} 292 getProject()293 public String getProject() { 294 return project; 295 } 296 getCompany()297 public String getCompany() { 298 return company; 299 } 300 setProject(String project)301 public ProjectCompanyBuilder setProject(String project) { 302 this.project = project; 303 return this; 304 } 305 setCompany(String company)306 public ProjectCompanyBuilder setCompany(String company) { 307 this.company = company; 308 return this; 309 } 310 build()311 public CompanyName build() { 312 return new CompanyName(this); 313 } 314 } 315 } 316