/* * Copyright (c) 2012 European Synchrotron Radiation Facility, * 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 org.dawb.fable.extensions; import java.io.File; import org.dawb.common.ui.monitor.ProgressMonitorWrapper; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.dawnsci.analysis.api.dataset.IDataset; import org.eclipse.dawnsci.analysis.api.io.IDataHolder; import org.eclipse.dawnsci.analysis.api.monitor.IMonitor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import uk.ac.diamond.scisoft.analysis.io.LoaderFactory; import fable.framework.navigator.Activator; import fable.framework.navigator.preferences.FabioPreferenceConstants; import fable.imageviewer.model.IFableImage; import fable.imageviewer.model.IFableLoader; public class FableLoader implements IFableLoader { private static final Logger logger = LoggerFactory.getLogger(FableLoader.class); @Override public IFableImage loadFile(final String path, final String name, final boolean isFabioConfigured, final IProgressMonitor monitor) throws Exception { if (isFabioConfigured) { final String endings = Activator.getDefault().getPreferenceStore().getString(FabioPreferenceConstants.FILE_TYPE); String[] split = endings.split("\\|"); for (int i = 0; i < split.length; i++) { if (path.endsWith("."+split[i])) return null; } } IDataset set = null; final long start = System.currentTimeMillis(); final IMonitor mon = monitor!= null ? new ProgressMonitorWrapper(monitor) : null; try { if (name == null) { final IDataHolder dh = LoaderFactory.getData(path, mon); set = dh.getDataset(0); } else { set = LoaderFactory.getDataSet(path, name, mon); if (set==null) { final IDataHolder dh = LoaderFactory.getData(path, mon); set = dh.getDataset(name); } } } catch (NullPointerException ne) { return null; } catch (Exception ne) { logger.error("Cannot load "+path+" with GDA classes, trying to fabio.", ne); return null; } return new FableImageWrapper((new File(path)).getName(), set, System.currentTimeMillis()-start); } }