From 2cdd234a9626cd54b2a4f5ecc865a92e32997165 Mon Sep 17 00:00:00 2001 From: Christian Tischer Date: Thu, 6 Feb 2020 11:55:40 +0100 Subject: [PATCH 1/2] Make N5ImageLoader accept N5Reader in constructor --- src/main/java/bdv/img/n5/N5ImageLoader.java | 16 ++++++++++------ src/main/java/bdv/img/n5/XmlIoN5ImageLoader.java | 9 ++++++++- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/main/java/bdv/img/n5/N5ImageLoader.java b/src/main/java/bdv/img/n5/N5ImageLoader.java index 3a774d0b1..28e0424f6 100644 --- a/src/main/java/bdv/img/n5/N5ImageLoader.java +++ b/src/main/java/bdv/img/n5/N5ImageLoader.java @@ -102,7 +102,7 @@ public class N5ImageLoader implements ViewerImgLoader, MultiResolutionImgLoader { - private final File n5File; + private final N5Reader n5; // TODO: it would be good if this would not be needed // find available setups from the n5 @@ -113,9 +113,9 @@ public class N5ImageLoader implements ViewerImgLoader, MultiResolutionImgLoader */ private final Map< Integer, SetupImgLoader > setupImgLoaders = new HashMap<>(); - public N5ImageLoader( final File n5File, final AbstractSequenceDescription< ?, ?, ? > sequenceDescription ) + public N5ImageLoader( final N5Reader n5, final AbstractSequenceDescription< ?, ?, ? > sequenceDescription ) { - this.n5File = n5File; + this.n5 = n5; this.seq = sequenceDescription; } @@ -124,10 +124,16 @@ public File getN5File() return n5File; } + public void setN5File( File n5File ) + { + this.n5File = n5File; + } + + private File n5File; private volatile boolean isOpen = false; private FetcherThreads fetchers; private VolatileGlobalCellCache cache; - private N5Reader n5; + private void open() { @@ -140,8 +146,6 @@ private void open() try { - this.n5 = new N5FSReader( n5File.getAbsolutePath() ); - int maxNumLevels = 0; final List< ? extends BasicViewSetup > setups = seq.getViewSetupsOrdered(); for ( final BasicViewSetup setup : setups ) diff --git a/src/main/java/bdv/img/n5/XmlIoN5ImageLoader.java b/src/main/java/bdv/img/n5/XmlIoN5ImageLoader.java index 10e40feb6..64af673ca 100644 --- a/src/main/java/bdv/img/n5/XmlIoN5ImageLoader.java +++ b/src/main/java/bdv/img/n5/XmlIoN5ImageLoader.java @@ -30,10 +30,13 @@ package bdv.img.n5; import java.io.File; +import java.io.IOException; + import mpicbg.spim.data.XmlHelpers; import mpicbg.spim.data.generic.sequence.AbstractSequenceDescription; import mpicbg.spim.data.generic.sequence.ImgLoaderIo; import mpicbg.spim.data.generic.sequence.XmlIoBasicImgLoader; +import org.janelia.saalfeldlab.n5.N5FSReader; import org.jdom2.Element; import static mpicbg.spim.data.XmlHelpers.loadPath; @@ -57,6 +60,10 @@ public N5ImageLoader fromXml( final Element elem, final File basePath, final Abs { // final String version = elem.getAttributeValue( "version" ); final File path = loadPath( elem, "n5", basePath ); - return new N5ImageLoader( path, sequenceDescription ); + final N5FSReader n5FSReader; + n5FSReader = new N5FSReader( path.getAbsolutePath() ); + final N5ImageLoader n5ImageLoader = new N5ImageLoader( n5FSReader, sequenceDescription ); + n5ImageLoader.setN5File( path ); + return n5ImageLoader; } } From 0e5e0068a1914c8f70036280b3b108288833b460 Mon Sep 17 00:00:00 2001 From: Christian Tischer Date: Thu, 6 Feb 2020 11:58:21 +0100 Subject: [PATCH 2/2] Handle IOException in XmlIoN5ImageLoader --- .../java/bdv/img/n5/XmlIoN5ImageLoader.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/bdv/img/n5/XmlIoN5ImageLoader.java b/src/main/java/bdv/img/n5/XmlIoN5ImageLoader.java index 64af673ca..c82307c38 100644 --- a/src/main/java/bdv/img/n5/XmlIoN5ImageLoader.java +++ b/src/main/java/bdv/img/n5/XmlIoN5ImageLoader.java @@ -59,11 +59,18 @@ public Element toXml( final N5ImageLoader imgLoader, final File basePath ) public N5ImageLoader fromXml( final Element elem, final File basePath, final AbstractSequenceDescription< ?, ?, ? > sequenceDescription ) { // final String version = elem.getAttributeValue( "version" ); - final File path = loadPath( elem, "n5", basePath ); - final N5FSReader n5FSReader; - n5FSReader = new N5FSReader( path.getAbsolutePath() ); - final N5ImageLoader n5ImageLoader = new N5ImageLoader( n5FSReader, sequenceDescription ); - n5ImageLoader.setN5File( path ); - return n5ImageLoader; + + try + { + final File path = loadPath( elem, "n5", basePath ); + final N5FSReader n5FSReader = new N5FSReader( path.getAbsolutePath() ); + final N5ImageLoader n5ImageLoader = new N5ImageLoader( n5FSReader, sequenceDescription ); + n5ImageLoader.setN5File( path ); + return n5ImageLoader; + } + catch ( IOException e ) + { + throw new RuntimeException( e ); + } } }