From 9ab9b8b355588b58d0557781664da80f26680cf0 Mon Sep 17 00:00:00 2001 From: ebner Date: Tue, 14 Apr 2015 13:55:19 +0200 Subject: [PATCH] tried to implement close of file CTRLHA-109 --- .../java/ch/psi/imagej/hdf5/HDF5Reader.java | 2 +- .../ch/psi/imagej/hdf5/SelectionPanel.java | 1 + .../ch/psi/imagej/hdf5/VirtualStackHDF5.java | 19 ++++++++++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/ch/psi/imagej/hdf5/HDF5Reader.java b/src/main/java/ch/psi/imagej/hdf5/HDF5Reader.java index 63262a7..a6b1191 100644 --- a/src/main/java/ch/psi/imagej/hdf5/HDF5Reader.java +++ b/src/main/java/ch/psi/imagej/hdf5/HDF5Reader.java @@ -213,7 +213,7 @@ public class HDF5Reader implements PlugIn { if(selectedDatasets.isVirtualStack()){ logger.info("Use virtual stack"); - stack = new VirtualStackHDF5(var); + stack = new VirtualStackHDF5(file, var); } else{ if(selectedDatasets.getSlice()!=null){ diff --git a/src/main/java/ch/psi/imagej/hdf5/SelectionPanel.java b/src/main/java/ch/psi/imagej/hdf5/SelectionPanel.java index 5ed4652..6def54e 100644 --- a/src/main/java/ch/psi/imagej/hdf5/SelectionPanel.java +++ b/src/main/java/ch/psi/imagej/hdf5/SelectionPanel.java @@ -64,6 +64,7 @@ public class SelectionPanel extends JPanel { add(checkbox); checkBoxVirtualStack = new JCheckBox("Virtual Stack"); + checkBoxVirtualStack.setSelected(true); add(checkBoxVirtualStack); panel = new JPanel(); diff --git a/src/main/java/ch/psi/imagej/hdf5/VirtualStackHDF5.java b/src/main/java/ch/psi/imagej/hdf5/VirtualStackHDF5.java index 3716f1d..0cfc5d1 100644 --- a/src/main/java/ch/psi/imagej/hdf5/VirtualStackHDF5.java +++ b/src/main/java/ch/psi/imagej/hdf5/VirtualStackHDF5.java @@ -4,6 +4,7 @@ import java.util.logging.Level; import java.util.logging.Logger; import ncsa.hdf.object.Dataset; +import ncsa.hdf.object.h5.H5File; import ij.ImageStack; import ij.process.ByteProcessor; import ij.process.ColorProcessor; @@ -18,10 +19,12 @@ public class VirtualStackHDF5 extends ImageStack { private int bitDepth = 0; private Dataset dataset; + private H5File file; - public VirtualStackHDF5(Dataset dataset){ + public VirtualStackHDF5(H5File file, Dataset dataset){ super((int) dataset.getDims()[2], (int) dataset.getDims()[1]); this.dataset = dataset; + this.file = file; } /** Does noting. */ @@ -154,4 +157,18 @@ public class VirtualStackHDF5 extends ImageStack { public int getBitDepth() { return bitDepth; } + + @Override + protected void finalize() throws Throwable { + super.finalize(); + + logger.info("Closing HDF5 file"); + try{ + file.close(); + } + catch(Exception e){ + logger.log(Level.WARNING, "Unable to close HDF5 file", e); + } + + } }