tried to implement close of file CTRLHA-109

This commit is contained in:
ebner 2015-04-14 13:55:19 +02:00
parent c46aa1f1ec
commit 9ab9b8b355
3 changed files with 20 additions and 2 deletions

View File

@ -213,7 +213,7 @@ public class HDF5Reader implements PlugIn {
if(selectedDatasets.isVirtualStack()){ if(selectedDatasets.isVirtualStack()){
logger.info("Use virtual stack"); logger.info("Use virtual stack");
stack = new VirtualStackHDF5(var); stack = new VirtualStackHDF5(file, var);
} }
else{ else{
if(selectedDatasets.getSlice()!=null){ if(selectedDatasets.getSlice()!=null){

View File

@ -64,6 +64,7 @@ public class SelectionPanel extends JPanel {
add(checkbox); add(checkbox);
checkBoxVirtualStack = new JCheckBox("Virtual Stack"); checkBoxVirtualStack = new JCheckBox("Virtual Stack");
checkBoxVirtualStack.setSelected(true);
add(checkBoxVirtualStack); add(checkBoxVirtualStack);
panel = new JPanel(); panel = new JPanel();

View File

@ -4,6 +4,7 @@ import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import ncsa.hdf.object.Dataset; import ncsa.hdf.object.Dataset;
import ncsa.hdf.object.h5.H5File;
import ij.ImageStack; import ij.ImageStack;
import ij.process.ByteProcessor; import ij.process.ByteProcessor;
import ij.process.ColorProcessor; import ij.process.ColorProcessor;
@ -18,10 +19,12 @@ public class VirtualStackHDF5 extends ImageStack {
private int bitDepth = 0; private int bitDepth = 0;
private Dataset dataset; 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]); super((int) dataset.getDims()[2], (int) dataset.getDims()[1]);
this.dataset = dataset; this.dataset = dataset;
this.file = file;
} }
/** Does noting. */ /** Does noting. */
@ -154,4 +157,18 @@ public class VirtualStackHDF5 extends ImageStack {
public int getBitDepth() { public int getBitDepth() {
return bitDepth; 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);
}
}
} }