/* * Copyright (c) 2012 Diamond Light Source Ltd. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package uk.ac.diamond.scisoft.analysis.io.emulated; import org.eclipse.dawnsci.analysis.api.io.IDataHolder; import org.eclipse.dawnsci.analysis.api.io.IFileLoader; import org.eclipse.dawnsci.analysis.api.io.ScanFileHolderException; import org.eclipse.january.IMonitor; import uk.ac.diamond.scisoft.analysis.io.TIFFImageLoader; /** * An implementation of {@link IFileLoader} that wraps a 'real' {@link TIFFImageLoader} with a * {@link FileSystemEmulatingFileLoader}. File availability latency and file load time are configured with static * class variable to allow this loader to substitute for a {@link TIFFImageLoader} without changing the constructor. */ public class FileSystemEmulatingTIFFImageLoader implements IFileLoader { private static long emulatedFileAvailabilityLatencyMillis = 0; private static long emulatedFileLoadTimeMillis = 0; private FileSystemEmulatingFileLoader fileSystemEmulatingFileLoader; /** * Creates a {@link TIFFImageLoader} wrapped in a{@link FileSystemEmulatingFileLoader} * @param filename */ public FileSystemEmulatingTIFFImageLoader(String filename) { fileSystemEmulatingFileLoader = new FileSystemEmulatingFileLoader(new TIFFImageLoader(filename), getEmulatedFileAvailabilityLatencyMillis(), getEmulatedFileLoadTimeMillis()); } @Override public IDataHolder loadFile() throws ScanFileHolderException { return fileSystemEmulatingFileLoader.loadFile(); } @Override public IDataHolder loadFile(IMonitor mon) throws ScanFileHolderException { return fileSystemEmulatingFileLoader.loadFile(mon); } // public static void setEmulatedFileAvailabilityLatencyMillis(long emulatedFileAvailabilityLatencyMillis) { FileSystemEmulatingTIFFImageLoader.emulatedFileAvailabilityLatencyMillis = emulatedFileAvailabilityLatencyMillis; } public static long getEmulatedFileAvailabilityLatencyMillis() { return emulatedFileAvailabilityLatencyMillis; } public static void setEmulatedFileLoadTimeMillis(long emulatedFileLoadTimeMillis) { FileSystemEmulatingTIFFImageLoader.emulatedFileLoadTimeMillis = emulatedFileLoadTimeMillis; } public static long getEmulatedFileLoadTimeMillis() { return emulatedFileLoadTimeMillis; } @Override public void setLoadMetadata(boolean willLoadMetadata) { } @Override public void setLoadAllLazily(boolean willLoadLazily) { } @Override public void setAsyncLoad(boolean treeOnTop) { throw new RuntimeException("Asynchronous loadering is not supported!"); } @Override public boolean isLoading() { throw new RuntimeException("Asynchronous loadering is not supported!"); } }