Skip to content

Commit bf8917f

Browse files
committed
Updates for v2 arch
1 parent 5f0c6b4 commit bf8917f

2 files changed

Lines changed: 13 additions & 11 deletions

File tree

src/main/java/org/hdf5javalib/examples/hdf5examples/HDF5Debug.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ private void run() {
5454
try {
5555
// List all .h5 files in HDF5Examples resources directory
5656
// ATL03_20250302235544_11742607_006_01
57-
// Path dirPath = Paths.get(Objects.requireNonNull(HDF5Debug.class.getClassLoader().getResource("HDF5Examples/h5ex_g_compact2.h5")).toURI());
58-
Path dirPath = Paths.get("c:/users/karln/Downloads/ATL03_20250302235544_11742607_006_01.h5");
57+
Path dirPath = Paths.get(Objects.requireNonNull(HDF5Debug.class.getClassLoader().getResource("HDF5Examples/h5ex_g_compact2.h5")).toURI());
58+
// Path dirPath = Paths.get("c:/users/karln/Downloads/ATL03_20250302235544_11742607_006_01.h5");
5959
processFile(dirPath);
6060
} catch (Exception e) {
6161
throw new IllegalStateException(e);

src/main/java/org/hdf5javalib/hdfjava/HdfFileReader.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,10 @@ private void readV2Arch(SeekableByteChannel fileChannel, HdfGroup rootGroup) thr
145145
// fileChannel.position(fractalHeapOffset);
146146

147147
HdfFixedPoint v2BTreeNameIndexAddress = rootGroup.getObjectHeader().findMessageByType(LinkInfoMessage.class).orElseThrow().getV2BTreeNameIndexAddress();
148+
if ( v2BTreeNameIndexAddress.isUndefined()) {
149+
addLinkMessageDatasets(fileChannel, rootGroup, this);
150+
return;
151+
}
148152
long v2BTreeNameIndexOffset = v2BTreeNameIndexAddress.getInstance(Long.class);
149153
fileChannel.position(v2BTreeNameIndexOffset);
150154

@@ -172,7 +176,7 @@ private void readV2Arch(SeekableByteChannel fileChannel, HdfGroup rootGroup) thr
172176
// 7. --- RETRIEVE THE OBJECT AND VERIFY ---
173177
for (BTreeV2Record bTreeV2Record: allRecords) {
174178

175-
byte[] heapId = ((Type5Record)bTreeV2Record).heapId;
179+
byte[] heapId = ((Type5Record) bTreeV2Record).heapId;
176180
ParsedHeapId parsedHeapId = new ParsedHeapId(heapId, fractalHeap);
177181

178182
// byte[] retrievedData = heap.getObject(heapId);
@@ -200,34 +204,32 @@ private void readV2Arch(SeekableByteChannel fileChannel, HdfGroup rootGroup) thr
200204
// System.out.println("Retrieved Data: '" + new String(retrievedData, StandardCharsets.UTF_8) + "'");
201205
String hardLink = isHardLink(rootGroup, objectHeaderOffset);
202206
HdfObjectHeaderPrefix objectHeader = null;
203-
if ( hardLink == null ) {
207+
if (hardLink == null) {
204208
// objectHeader = readObjectHeader(fileChannel, objectHeaderOffset, this);
205209
objectHeader = readObjectHeaderPrefixFromSeekableByteChannel(fileChannel, objectHeaderOffset, this, groupName);
206210
}
207211
// HdfObjectHeaderPrefix objectHeaderG1 = readObjectHeaderPrefixFromSeekableByteChannel(fileChannel, objectHeaderOffset, this, groupName);
208212
// System.out.println(groupName + ":" + objectHeaderG1.getHeaderMessages());
209213

210-
if ( objectHeader != null && objectHeader.findMessageByType(DataLayoutMessage.class).isEmpty() ) {
214+
if (objectHeader != null && objectHeader.findMessageByType(DataLayoutMessage.class).isEmpty()) {
211215
HdfGroup groupObject = new HdfGroup(groupName, objectHeader, rootGroup, hardLink);
212216
rootGroup.addChild(groupObject);
213-
System.out.println("ADDED GROUP: " + groupObject.getObjectPath() + " at " + objectHeaderOffset);
217+
System.out.println("ADDED GROUP: " + groupObject.getObjectPath() + " at " + objectHeaderOffset);
214218
// HdfDisplayUtils.displayLinkMessages(objectHeader);
215219
addLinkMessageDatasets(fileChannel, groupObject, this);
216220

217-
if ( hardLink == null ) {
221+
if (hardLink == null) {
218222
LinkInfoMessage linkInfoMessage = objectHeader.findMessageByType(LinkInfoMessage.class).orElseThrow();
219-
if ( !linkInfoMessage.getFractalHeapAddress().isUndefined() && !linkInfoMessage.getV2BTreeNameIndexAddress().isUndefined() ) {
223+
if (!linkInfoMessage.getFractalHeapAddress().isUndefined() && !linkInfoMessage.getV2BTreeNameIndexAddress().isUndefined()) {
220224
readV2Arch(fileChannel, groupObject);
221225
}
222226
}
223227

224228
} else {
225229
HdfDataset datasetObject = new HdfDataset(groupName, objectHeader, rootGroup, hardLink);
226230
rootGroup.addChild(datasetObject);
227-
System.out.println("ADDED DATASET: " + datasetObject.getObjectPath() + " at " + objectHeaderOffset);
231+
System.out.println("ADDED DATASET: " + datasetObject.getObjectPath() + " at " + objectHeaderOffset);
228232
}
229-
230-
231233
}
232234

233235
/*

0 commit comments

Comments
 (0)