Skip to content
This repository was archived by the owner on Mar 23, 2026. It is now read-only.

Commit ae64196

Browse files
committed
change enums to StringEnumValue
1 parent 9efd587 commit ae64196

File tree

2 files changed

+74
-19
lines changed

2 files changed

+74
-19
lines changed

google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/ExternalTableDefinition.java

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@
1919
import static com.google.common.base.Preconditions.checkArgument;
2020
import static com.google.common.base.Strings.isNullOrEmpty;
2121

22+
import com.google.api.core.ApiFunction;
2223
import com.google.api.services.bigquery.model.ExternalDataConfiguration;
2324
import com.google.api.services.bigquery.model.Table;
2425
import com.google.auto.value.AutoValue;
26+
import com.google.cloud.StringEnumType;
27+
import com.google.cloud.StringEnumValue;
2528
import com.google.common.base.Function;
2629
import com.google.common.collect.ImmutableList;
2730
import java.util.List;
@@ -57,19 +60,43 @@ public ExternalDataConfiguration apply(ExternalTableDefinition tableInfo) {
5760

5861
private static final long serialVersionUID = -5951580238459622025L;
5962

60-
public enum SourceColumnMatch {
61-
POSITION("POSITION"),
62-
NAME("NAME");
63+
public static final class SourceColumnMatch extends StringEnumValue {
64+
private static final long serialVersionUID = 818920627219751207L;
65+
private static final ApiFunction<String, SourceColumnMatch> CONSTRUCTOR =
66+
new ApiFunction<String, SourceColumnMatch>() {
67+
@Override
68+
public SourceColumnMatch apply(String constant) {
69+
return new SourceColumnMatch(constant);
70+
}
71+
};
6372

64-
private final String option;
73+
private static final StringEnumType<SourceColumnMatch> type =
74+
new StringEnumType<SourceColumnMatch>(SourceColumnMatch.class, CONSTRUCTOR);
6575

66-
SourceColumnMatch(String option) {
67-
this.option = option;
76+
public static final SourceColumnMatch POSITION = type.createAndRegister("POSITION");
77+
78+
public static final SourceColumnMatch NAME = type.createAndRegister("NAME");
79+
80+
private SourceColumnMatch(String constant) {
81+
super(constant);
6882
}
6983

70-
@Override
71-
public String toString() {
72-
return option;
84+
/**
85+
* Get the SourceColumnMatch for the given String constant, and throw an exception if the
86+
* constant is not recognized.
87+
*/
88+
public static SourceColumnMatch valueOfStrict(String constant) {
89+
return type.valueOfStrict(constant);
90+
}
91+
92+
/** Get the SourceColumnMatch for the given String constant, and allow unrecognized values. */
93+
public static SourceColumnMatch valueOf(String constant) {
94+
return type.valueOf(constant);
95+
}
96+
97+
/** Return the known values for SourceColumnMatch. */
98+
public static SourceColumnMatch[] values() {
99+
return type.values();
73100
}
74101
}
75102

google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@
1818

1919
import static com.google.common.base.Preconditions.checkNotNull;
2020

21+
import com.google.api.core.ApiFunction;
2122
import com.google.api.services.bigquery.model.JobConfigurationLoad;
23+
import com.google.cloud.StringEnumType;
24+
import com.google.cloud.StringEnumValue;
2225
import com.google.common.base.MoreObjects.ToStringHelper;
2326
import com.google.common.base.Strings;
2427
import com.google.common.collect.ImmutableList;
@@ -71,20 +74,45 @@ public final class LoadJobConfiguration extends JobConfiguration implements Load
7174
private final SourceColumnMatch sourceColumnMatch;
7275
private final List<String> nullMarkers;
7376

74-
public enum SourceColumnMatch {
75-
SOURCE_COLUMN_MATCH_UNSPECIFIED("SOURCE_COLUMN_MATCH_UNSPECIFIED"),
76-
POSITION("POSITION"),
77-
NAME("NAME");
77+
public static final class SourceColumnMatch extends StringEnumValue {
78+
private static final long serialVersionUID = 818920627219751207L;
79+
private static final ApiFunction<String, SourceColumnMatch> CONSTRUCTOR =
80+
new ApiFunction<String, SourceColumnMatch>() {
81+
@Override
82+
public SourceColumnMatch apply(String constant) {
83+
return new SourceColumnMatch(constant);
84+
}
85+
};
7886

79-
private final String option;
87+
private static final StringEnumType<SourceColumnMatch> type =
88+
new StringEnumType<SourceColumnMatch>(SourceColumnMatch.class, CONSTRUCTOR);
8089

81-
SourceColumnMatch(String option) {
82-
this.option = option;
90+
public static final SourceColumnMatch SOURCE_COLUMN_MATCH_UNSPECIFIED =
91+
type.createAndRegister("SOURCE_COLUMN_MATCH_UNSPECIFIED");
92+
public static final SourceColumnMatch POSITION = type.createAndRegister("POSITION");
93+
94+
public static final SourceColumnMatch NAME = type.createAndRegister("NAME");
95+
96+
private SourceColumnMatch(String constant) {
97+
super(constant);
8398
}
8499

85-
@Override
86-
public String toString() {
87-
return option;
100+
/**
101+
* Get the SourceColumnMatch for the given String constant, and throw an exception if the
102+
* constant is not recognized.
103+
*/
104+
public static SourceColumnMatch valueOfStrict(String constant) {
105+
return type.valueOfStrict(constant);
106+
}
107+
108+
/** Get the SourceColumnMatch for the given String constant, and allow unrecognized values. */
109+
public static SourceColumnMatch valueOf(String constant) {
110+
return type.valueOf(constant);
111+
}
112+
113+
/** Return the known values for SourceColumnMatch. */
114+
public static SourceColumnMatch[] values() {
115+
return type.values();
88116
}
89117
}
90118

0 commit comments

Comments
 (0)