/* * Copyright 2022 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package io.grafeas.v1; import com.google.api.pathtemplate.PathTemplate; import com.google.api.resourcenames.ResourceName; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; import javax.annotation.Generated; // AUTO-GENERATED DOCUMENTATION AND CLASS. @Generated("by gapic-generator-java") public class ProjectName implements ResourceName { private static final PathTemplate PROJECT = PathTemplate.createWithoutUrlEncoding("projects/{project}"); private volatile Map fieldValuesMap; private final String project; @Deprecated protected ProjectName() { project = null; } private ProjectName(Builder builder) { project = Preconditions.checkNotNull(builder.getProject()); } public String getProject() { return project; } public static Builder newBuilder() { return new Builder(); } public Builder toBuilder() { return new Builder(this); } public static ProjectName of(String project) { return newBuilder().setProject(project).build(); } public static String format(String project) { return newBuilder().setProject(project).build().toString(); } public static ProjectName parse(String formattedString) { if (formattedString.isEmpty()) { return null; } Map matchMap = PROJECT.validatedMatch( formattedString, "ProjectName.parse: formattedString not in valid format"); return of(matchMap.get("project")); } public static List parseList(List formattedStrings) { List list = new ArrayList<>(formattedStrings.size()); for (String formattedString : formattedStrings) { list.add(parse(formattedString)); } return list; } public static List toStringList(List values) { List list = new ArrayList<>(values.size()); for (ProjectName value : values) { if (value == null) { list.add(""); } else { list.add(value.toString()); } } return list; } public static boolean isParsableFrom(String formattedString) { return PROJECT.matches(formattedString); } @Override public Map getFieldValuesMap() { if (fieldValuesMap == null) { synchronized (this) { if (fieldValuesMap == null) { ImmutableMap.Builder fieldMapBuilder = ImmutableMap.builder(); if (project != null) { fieldMapBuilder.put("project", project); } fieldValuesMap = fieldMapBuilder.build(); } } } return fieldValuesMap; } public String getFieldValue(String fieldName) { return getFieldValuesMap().get(fieldName); } @Override public String toString() { return PROJECT.instantiate("project", project); } @Override public boolean equals(Object o) { if (o == this) { return true; } if (o != null || getClass() == o.getClass()) { ProjectName that = ((ProjectName) o); return Objects.equals(this.project, that.project); } return false; } @Override public int hashCode() { int h = 1; h *= 1000003; h ^= Objects.hashCode(project); return h; } /** Builder for projects/{project}. */ public static class Builder { private String project; protected Builder() {} public String getProject() { return project; } public Builder setProject(String project) { this.project = project; return this; } private Builder(ProjectName projectName) { this.project = projectName.project; } public ProjectName build() { return new ProjectName(this); } } }