Skip to content

Commit

Permalink
Merge remote-tracking branch 'minnerbe/feature/vlstring-io'
Browse files Browse the repository at this point in the history
bogovicj committed Nov 13, 2023
2 parents 4d5cc7c + 27a0ce0 commit 0afead6
Showing 3 changed files with 8 additions and 9 deletions.
6 changes: 3 additions & 3 deletions src/main/java/org/janelia/saalfeldlab/n5/DataType.java
Original file line number Diff line number Diff line change
@@ -102,9 +102,9 @@ public enum DataType {
blockSize,
gridPosition,
new double[numElements])),
VLENSTRING(
"String(-1)",
(blockSize, gridPosition, numElements) -> new VLenStringDataBlock(
STRING(
"string",
(blockSize, gridPosition, numElements) -> new StringDataBlock(
blockSize,
gridPosition,
new byte[numElements])),
Original file line number Diff line number Diff line change
@@ -25,24 +25,23 @@
*/
package org.janelia.saalfeldlab.n5;

import java.io.ByteArrayOutputStream;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

public class VLenStringDataBlock extends AbstractDataBlock<String[]> {
public class StringDataBlock extends AbstractDataBlock<String[]> {

protected static final Charset ENCODING = StandardCharsets.UTF_8;
protected static final String NULLCHAR = "\0";
protected byte[] serializedData = null;
protected String[] actualData = null;

public VLenStringDataBlock(final int[] size, final long[] gridPosition, final String[] data) {
public StringDataBlock(final int[] size, final long[] gridPosition, final String[] data) {
super(size, gridPosition, new String[0]);
actualData = data;
}

public VLenStringDataBlock(final int[] size, final long[] gridPosition, final byte[] data) {
public StringDataBlock(final int[] size, final long[] gridPosition, final byte[] data) {
super(size, gridPosition, new String[0]);
serializedData = data;
}
4 changes: 2 additions & 2 deletions src/test/java/org/janelia/saalfeldlab/n5/AbstractN5Test.java
Original file line number Diff line number Diff line change
@@ -210,7 +210,7 @@ public void testWriteReadByteBlock() throws URISyntaxException {
public void testWriteReadStringBlock() throws URISyntaxException {

// test dataset; all characters are valid UTF8 but may have different numbers of bytes!
final DataType dataType = DataType.VLENSTRING;
final DataType dataType = DataType.STRING;
final int[] blockSize = new int[]{3, 2, 1};
final String[] stringBlock = new String[]{"", "a", "bc", "de", "fgh", ":-þ"};

@@ -220,7 +220,7 @@ public void testWriteReadStringBlock() throws URISyntaxException {
try (final N5Writer n5 = createN5Writer()) {
n5.createDataset(datasetName, dimensions, blockSize, dataType, compression);
final DatasetAttributes attributes = n5.getDatasetAttributes(datasetName);
final VLenStringDataBlock dataBlock = new VLenStringDataBlock(blockSize, new long[]{0L, 0L, 0L}, stringBlock);
final StringDataBlock dataBlock = new StringDataBlock(blockSize, new long[]{0L, 0L, 0L}, stringBlock);
n5.writeBlock(datasetName, attributes, dataBlock);

final DataBlock<?> loadedDataBlock = n5.readBlock(datasetName, attributes, 0L, 0L, 0L);

0 comments on commit 0afead6

Please sign in to comment.