Skip to content

Commit 1f3eaa4

Browse files
committed
feat: migrate to getConvertedDatasetAttributes from saalfeldlab/n5#191
refactor[BREAKING]: remove constructor parameters for `mapAttributes`, `dimensionSeparator`, `mergeN5Attributes`. Map and Merge are no longer supported (they weren't really for ZarrV3 ever, but the constructors were inherited from ZarrV2). Dimension separator now has a getter/setter Signed-off-by: Caleb Hulbert <cmhulbert@gmail.com>
1 parent 3a30f5d commit 1f3eaa4

8 files changed

Lines changed: 141 additions & 472 deletions

File tree

src/main/java/org/janelia/saalfeldlab/n5/zarr/ZarrKeyValueReader.java

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.net.URISyntaxException;
3333
import java.util.Arrays;
3434
import java.util.Collections;
35+
import java.util.HashMap;
3536

3637
import org.janelia.saalfeldlab.n5.CachedGsonKeyValueN5Reader;
3738
import org.janelia.saalfeldlab.n5.Compression;
@@ -58,6 +59,8 @@
5859
import com.google.gson.JsonObject;
5960
import com.google.gson.JsonSyntaxException;
6061

62+
import static org.janelia.saalfeldlab.n5.zarr.ZarrDatasetAttributes.createZArrayAttributes;
63+
6164
/**
6265
* {@link N5Reader} implementation through {@link KeyValueAccess} with JSON attributes parsed with {@link Gson}.
6366
*
@@ -84,9 +87,13 @@ public class ZarrKeyValueReader implements CachedGsonKeyValueN5Reader, N5JsonCac
8487

8588
protected URI uri;
8689

87-
final protected boolean mapN5DatasetAttributes;
90+
protected final HashMap<DatasetAttributes, ZarrDatasetAttributes> datasetAttributesMap = new HashMap<>();
91+
92+
protected final boolean mapN5DatasetAttributes;
8893

89-
final protected boolean mergeAttributes;
94+
protected final boolean mergeAttributes;
95+
96+
protected String dimensionSeparator;
9097

9198
/**
9299
* Opens an {@link ZarrKeyValueReader} at a given base path with a custom {@link GsonBuilder} to support custom
@@ -353,6 +360,24 @@ public DatasetAttributes getDatasetAttributes(final String pathName) throws N5Ex
353360
return createDatasetAttributes(getZArray(pathName));
354361
}
355362

363+
@Override
364+
public ZarrDatasetAttributes getConvertedDatasetAttributes(DatasetAttributes attributes) {
365+
366+
final ZarrDatasetAttributes zarrAttrs;
367+
if (attributes instanceof ZarrDatasetAttributes)
368+
zarrAttrs = ((ZarrDatasetAttributes)attributes);
369+
else if (datasetAttributesMap.containsKey(attributes)) {
370+
zarrAttrs = datasetAttributesMap.get(attributes);
371+
datasetAttributesMap.put(attributes, zarrAttrs);
372+
}
373+
else {
374+
final ZArrayAttributes zArrayAttrs = createZArrayAttributes(dimensionSeparator, attributes);
375+
zarrAttrs = new ZarrDatasetAttributes(zArrayAttrs);
376+
datasetAttributesMap.put(attributes, zarrAttrs);
377+
}
378+
return zarrAttrs;
379+
}
380+
356381
/**
357382
* Returns the {@link ZArrayAttributes} located at the given path, if present.
358383
*

src/main/java/org/janelia/saalfeldlab/n5/zarr/ZarrKeyValueWriter.java

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,6 @@
7575
*/
7676
public class ZarrKeyValueWriter extends ZarrKeyValueReader implements CachedGsonKeyValueN5Writer {
7777

78-
protected String dimensionSeparator;
79-
8078
/**
8179
* Opens an {@link ZarrKeyValueWriter} at a given base path with a custom
8280
* {@link GsonBuilder} to support custom attributes.
@@ -241,26 +239,6 @@ else if ( getCache().isDataset(normalPath, ZARRAY_FILE)){
241239
}
242240
}
243241

244-
private HashMap<DatasetAttributes, ZarrDatasetAttributes> datasetAttributesMap = new HashMap<>();
245-
246-
247-
private ZarrDatasetAttributes getConvertedDatasetAttributes(final DatasetAttributes datasetAttributes) {
248-
249-
final ZarrDatasetAttributes zarrAttrs;
250-
if (datasetAttributes instanceof ZarrDatasetAttributes)
251-
zarrAttrs = ((ZarrDatasetAttributes)datasetAttributes);
252-
else if (datasetAttributesMap.containsKey(datasetAttributes)) {
253-
zarrAttrs = datasetAttributesMap.get(datasetAttributes);
254-
datasetAttributesMap.put(datasetAttributes, zarrAttrs);
255-
}
256-
else {
257-
final ZArrayAttributes zArrayAttrs = createZArrayAttributes(dimensionSeparator, datasetAttributes);
258-
zarrAttrs = new ZarrDatasetAttributes(zArrayAttrs);
259-
datasetAttributesMap.put(datasetAttributes, zarrAttrs);
260-
}
261-
return zarrAttrs;
262-
}
263-
264242
@Override
265243
public ZarrDatasetAttributes createDataset(
266244
final String path,
@@ -507,26 +485,6 @@ protected void writeZAttrs(
507485
cache.updateCacheInfo(normalGroupPath, ZATTRS_FILE, attributes);
508486
}
509487

510-
@Override
511-
public <T> void writeBlocks(
512-
final String datasetPath,
513-
final DatasetAttributes datasetAttributes,
514-
final DataBlock<T>... dataBlocks) {
515-
516-
final ZarrDatasetAttributes zarrDatasetAttributes = getConvertedDatasetAttributes(datasetAttributes);
517-
CachedGsonKeyValueN5Writer.super.writeBlocks( datasetPath, zarrDatasetAttributes, dataBlocks);
518-
}
519-
520-
@Override
521-
public <T> void writeBlock(
522-
final String path,
523-
final DatasetAttributes datasetAttributes,
524-
final DataBlock<T> dataBlock) {
525-
526-
final ZarrDatasetAttributes zarrDatasetAttributes = getConvertedDatasetAttributes(datasetAttributes);
527-
CachedGsonKeyValueN5Writer.super.writeBlock( path, zarrDatasetAttributes, dataBlock);
528-
}
529-
530488
public static byte[] padCrop(
531489
final byte[] src,
532490
final int[] srcBlockSize,

0 commit comments

Comments
 (0)