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