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