• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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