Skip to content

Commit f018f0a

Browse files
dominiklbrokkoli71
andauthored
Load v2 GroupMetadata attributes (#32)
* Load v2 GroupMetadata attributes * Update src/main/java/dev/zarr/zarrjava/v3/GroupMetadata.java Co-authored-by: Hannes Spitz <[email protected]> * Update src/main/java/dev/zarr/zarrjava/v3/Group.java Co-authored-by: Hannes Spitz <[email protected]> --------- Co-authored-by: Hannes Spitz <[email protected]>
1 parent 07b02c5 commit f018f0a

File tree

6 files changed

+64
-8
lines changed

6 files changed

+64
-8
lines changed

src/main/java/dev/zarr/zarrjava/core/Group.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,6 @@ public Node[] listAsArray() {
8383
return nodeStream.toArray(Node[]::new);
8484
}
8585
}
86+
87+
public abstract GroupMetadata metadata();
8688
}
Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
11
package dev.zarr.zarrjava.core;
22

3-
public abstract class GroupMetadata {}
3+
import javax.annotation.Nonnull;
4+
5+
import dev.zarr.zarrjava.ZarrException;
6+
7+
public abstract class GroupMetadata {
8+
9+
public @Nonnull abstract Attributes attributes() throws ZarrException;
10+
11+
}

src/main/java/dev/zarr/zarrjava/v2/Group.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,17 @@ protected Group(@Nonnull StoreHandle storeHandle, @Nonnull GroupMetadata groupMe
2424
}
2525

2626
public static Group open(@Nonnull StoreHandle storeHandle) throws IOException {
27-
StoreHandle metadataHandle = storeHandle.resolve(ZGROUP);
28-
ByteBuffer metadataBytes = metadataHandle.readNonNull();
29-
return new Group(storeHandle, makeObjectMapper()
30-
.readValue(Utils.toArray(metadataBytes), GroupMetadata.class));
27+
ObjectMapper mapper = makeObjectMapper();
28+
GroupMetadata metadata = mapper.readValue(
29+
Utils.toArray(storeHandle.resolve(ZGROUP).readNonNull()),
30+
GroupMetadata.class
31+
);
32+
if (storeHandle.resolve(ZATTRS).exists())
33+
metadata.attributes = mapper.readValue(
34+
Utils.toArray(storeHandle.resolve(ZATTRS).readNonNull()),
35+
dev.zarr.zarrjava.core.Attributes.class
36+
);
37+
return new Group(storeHandle, metadata);
3138
}
3239

3340
public static Group open(Path path) throws IOException {
@@ -44,6 +51,12 @@ public static Group create(
4451
ObjectMapper objectMapper = makeObjectMapper();
4552
ByteBuffer metadataBytes = ByteBuffer.wrap(objectMapper.writeValueAsBytes(groupMetadata));
4653
storeHandle.resolve(ZGROUP).set(metadataBytes);
54+
if (groupMetadata.attributes != null) {
55+
StoreHandle attrsHandle = storeHandle.resolve(ZATTRS);
56+
ByteBuffer attrsBytes = ByteBuffer.wrap(
57+
objectMapper.writeValueAsBytes(groupMetadata.attributes));
58+
attrsHandle.set(attrsBytes);
59+
}
4760
return new Group(storeHandle, groupMetadata);
4861
}
4962

@@ -87,4 +100,9 @@ public Array createArray(String key, Function<ArrayMetadataBuilder, ArrayMetadat
87100
public String toString() {
88101
return String.format("<v2.Group {%s}>", storeHandle);
89102
}
103+
104+
@Override
105+
public dev.zarr.zarrjava.core.GroupMetadata metadata() {
106+
return metadata;
107+
}
90108
}
Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,42 @@
11
package dev.zarr.zarrjava.v2;
22

3+
import javax.annotation.Nonnull;
4+
import javax.annotation.Nullable;
5+
36
import com.fasterxml.jackson.annotation.JsonCreator;
7+
import com.fasterxml.jackson.annotation.JsonIgnore;
48
import com.fasterxml.jackson.annotation.JsonProperty;
59
import dev.zarr.zarrjava.ZarrException;
10+
import dev.zarr.zarrjava.core.Attributes;
611

712
public final class GroupMetadata extends dev.zarr.zarrjava.core.GroupMetadata {
813

914
static final int ZARR_FORMAT = 2;
1015
@JsonProperty("zarr_format")
1116
public final int zarrFormat = ZARR_FORMAT;
1217

18+
@Nullable
19+
@JsonIgnore
20+
public Attributes attributes;
21+
1322
@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
1423
public GroupMetadata(
15-
@JsonProperty(value = "zarr_format", required = true) int zarrFormat
24+
@JsonProperty(value = "zarr_format", required = true) int zarrFormat,
25+
@JsonProperty(value = "attributes", required = false) @Nullable Attributes attributes
1626
) throws ZarrException {
1727
if (zarrFormat != this.zarrFormat) {
1828
throw new ZarrException(
1929
"Expected zarr format '" + this.zarrFormat + "', got '" + zarrFormat + "'.");
2030
}
31+
this.attributes = attributes;
2132
}
2233

2334
public GroupMetadata() throws ZarrException {
24-
this(ZARR_FORMAT);
35+
this(ZARR_FORMAT, null);
2536
}
2637

38+
@Override
39+
public @Nonnull Attributes attributes() throws ZarrException {
40+
return attributes;
41+
}
2742
}

src/main/java/dev/zarr/zarrjava/v3/Group.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import java.nio.ByteBuffer;
1111
import java.nio.file.Path;
1212
import java.nio.file.Paths;
13-
import java.util.Map;
1413
import java.util.function.Function;
1514
import javax.annotation.Nonnull;
1615
import javax.annotation.Nullable;
@@ -136,4 +135,9 @@ public Group updateAttributes(Function<Attributes, Attributes> attributeMapper)
136135
public String toString() {
137136
return String.format("<v3.Group {%s}>", storeHandle);
138137
}
138+
139+
@Override
140+
public GroupMetadata metadata() {
141+
return metadata;
142+
}
139143
}

src/main/java/dev/zarr/zarrjava/v3/GroupMetadata.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import dev.zarr.zarrjava.ZarrException;
66
import dev.zarr.zarrjava.core.Attributes;
77

8+
import javax.annotation.Nonnull;
89
import javax.annotation.Nullable;
910

1011
public final class GroupMetadata extends dev.zarr.zarrjava.core.GroupMetadata {
@@ -43,4 +44,12 @@ public GroupMetadata(
4344
public static GroupMetadata defaultValue() throws ZarrException {
4445
return new GroupMetadata(ZARR_FORMAT, NODE_TYPE, new Attributes());
4546
}
47+
48+
@Override
49+
public @Nonnull Attributes attributes() throws ZarrException {
50+
if (attributes == null) {
51+
throw new ZarrException("Group attributes have not been set.");
52+
}
53+
return attributes;
54+
}
4655
}

0 commit comments

Comments
 (0)