@Override public void setId(String id) throws FormatException, IOException { final File memoRW = getMemoFile(id); if (!(memoRW == null || memoRW.canRead())) { /* This memoizer would use but does not yet have a memo file for the given image. */ for (final MemoizerReadOnly fallback : fallbacks) { final File memoRO = fallback.getMemoFile(id); if (memoRO != null && memoRO.canRead()) { /* A fallback memoizer does have a memo file so we copy it. */ LOGGER.info("for setId({}) copying {} to {}", id, memoRO, memoRW); try { Files.copy(memoRO.toPath(), memoRW.toPath()); break; } catch (IOException e) { LOGGER.warn("copy failed, continuing anyway", e); } } } } super.setId(id); } }
/** * Create an {@link IFormatReader} with the appropriate {@link loci.formats.ReaderWrapper} * instances and {@link IFormatReader#setFlattenedResolutions(boolean)} set to false. */ protected IFormatReader createBfReader() { IFormatReader reader = new ImageReader(); reader = new ChannelFiller(reader); reader = new ChannelSeparator(reader); if (memoizerDirectoryLocalRW == null) { reader = new Memoizer(reader, getMemoizerWait(), getMemoizerDirectory()); } else { reader = new MemoizerFallback(reader, getMemoizerWait(), memoizerDirectoryLocalRW, Collections.singleton( new MemoizerReadOnly(reader, getMemoizerWait(), getMemoizerDirectory()))); } reader.setFlattenedResolutions(false); reader.setMetadataFiltered(true); return reader; }