Skip to content

Commit 5e95623

Browse files
wip
1 parent 27cd5b0 commit 5e95623

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
package io.whitefox.core.services;
2+
3+
import java.util.Arrays;
4+
import java.util.Map;
5+
import java.util.Set;
6+
import java.util.stream.Collectors;
7+
8+
public class DeltaSharingCapabilities {
9+
private final Map<String, String> values;
10+
11+
public DeltaSharingCapabilities(Map<String, String> values) {
12+
this.values = Map.copyOf(values);
13+
}
14+
15+
public Map<String, String> values() {
16+
return values;
17+
}
18+
19+
public DeltaSharingResponseFormat getResponseFormat() {
20+
var value = values.get(DELTA_SHARING_RESPONSE_FORMAT);
21+
if (value == null) {
22+
return DeltaSharingResponseFormat.PARQUET;
23+
} else {
24+
return DeltaSharingResponseFormat.valueOf(value.toUpperCase());
25+
}
26+
}
27+
28+
public Set<DeltaSharingReaderFeatures> getReaderFeatures() {
29+
var value = values.get(DELTA_SHARING_READER_FEATURES);
30+
if (value == null) {
31+
return Set.of();
32+
} else {
33+
return Arrays.stream(value.split(","))
34+
.map(String::trim)
35+
.map(DeltaSharingReaderFeatures::fromString)
36+
.collect(Collectors.toSet());
37+
}
38+
}
39+
40+
public final static String DELTA_SHARING_RESPONSE_FORMAT = "responseformat";
41+
public final static String DELTA_SHARING_READER_FEATURES = "readerfeatures";
42+
43+
public enum DeltaSharingResponseFormat {
44+
DELTA, PARQUET
45+
}
46+
47+
public enum DeltaSharingReaderFeatures {
48+
DELETION_VECTORS("deletionvectors"),
49+
COLUMN_MAPPING("columnmapping"),
50+
TIMESTAMP_NTZ("timestampntz"),
51+
DOMAIN_METADATA("domainmetadata"),
52+
V2CHECKPOINT("v2checkpoint"),
53+
CHECK_CONSTRAINTS("checkconstraints"),
54+
GENERATED_COLUMNS("generatedcolumns"),
55+
ALLOW_COLUMN_DEFAULTS("allowcolumndefaults"),
56+
IDENTITY_COLUMNS("identitycolumns");
57+
58+
DeltaSharingReaderFeatures(String stringRepresentation) {
59+
this.stringRepresentation = stringRepresentation;
60+
}
61+
62+
private final String stringRepresentation;
63+
64+
public String stringRepresentation() {
65+
return stringRepresentation;
66+
}
67+
68+
public static DeltaSharingReaderFeatures fromString(String s) {
69+
switch (s) {
70+
case DELTA_SHARING_READER_FEATURE_DELETION_VECTOR:
71+
return DeltaSharingReaderFeatures.DELETION_VECTORS;
72+
case DELTA_SHARING_READER_FEATURE_COLUMN_MAPPING:
73+
return DeltaSharingReaderFeatures.COLUMN_MAPPING;
74+
case DELTA_SHARING_READER_FEATURE_TIMESTAMP_NTZ:
75+
return DeltaSharingReaderFeatures.TIMESTAMP_NTZ;
76+
case DELTA_SHARING_READER_FEATURE_DOMAIN_METADATA:
77+
return DeltaSharingReaderFeatures.DOMAIN_METADATA;
78+
case DELTA_SHARING_READER_FEATURE_V2CHECKPOINT:
79+
return DeltaSharingReaderFeatures.V2CHECKPOINT;
80+
case DELTA_SHARING_READER_FEATURE_CHECK_CONSTRAINTS:
81+
return DeltaSharingReaderFeatures.CHECK_CONSTRAINTS;
82+
case DELTA_SHARING_READER_FEATURE_GENERATED_COLUMNS:
83+
return DeltaSharingReaderFeatures.GENERATED_COLUMNS;
84+
case DELTA_SHARING_READER_FEATURE_ALLOW_COLUMN_DEFAULTS:
85+
return DeltaSharingReaderFeatures.ALLOW_COLUMN_DEFAULTS;
86+
case DELTA_SHARING_READER_FEATURE_IDENTITY_COLUMNS:
87+
return DeltaSharingReaderFeatures.IDENTITY_COLUMNS;
88+
default:
89+
throw new IllegalArgumentException("Unknown reader feature: " + s);
90+
}
91+
}
92+
93+
private final static String DELTA_SHARING_READER_FEATURE_DELETION_VECTOR = "deletionvectors";
94+
private final static String DELTA_SHARING_READER_FEATURE_COLUMN_MAPPING = "columnmapping";
95+
private final static String DELTA_SHARING_READER_FEATURE_TIMESTAMP_NTZ = "timestampntz";
96+
private final static String DELTA_SHARING_READER_FEATURE_DOMAIN_METADATA = "domainmetadata";
97+
private final static String DELTA_SHARING_READER_FEATURE_V2CHECKPOINT = "v2checkpoint";
98+
private final static String DELTA_SHARING_READER_FEATURE_CHECK_CONSTRAINTS = "checkconstraints";
99+
private final static String DELTA_SHARING_READER_FEATURE_GENERATED_COLUMNS = "generatedcolumns";
100+
private final static String DELTA_SHARING_READER_FEATURE_ALLOW_COLUMN_DEFAULTS = "allowcolumndefaults";
101+
private final static String DELTA_SHARING_READER_FEATURE_IDENTITY_COLUMNS = "identitycolumns";
102+
103+
}
104+
}

0 commit comments

Comments
 (0)