/*
*------------------------------------------------------------------------------
* Copyright (C) 2006-2015 University of Dundee. All rights reserved.
*
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*------------------------------------------------------------------------------
*/
package org.openmicroscopy.shoola.env.data.views;
import java.io.File;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import omero.romio.PlaneDef;
import org.openmicroscopy.shoola.env.data.model.ImportableObject;
import org.openmicroscopy.shoola.env.data.model.MovieExportParam;
import org.openmicroscopy.shoola.env.data.model.ProjectionParam;
import org.openmicroscopy.shoola.env.data.model.ResultsObject;
import org.openmicroscopy.shoola.env.data.model.SaveAsParam;
import org.openmicroscopy.shoola.env.data.model.ScriptObject;
import org.openmicroscopy.shoola.env.data.util.Target;
import omero.gateway.SecurityContext;
import org.openmicroscopy.shoola.env.data.views.calls.AcquisitionDataLoader;
import org.openmicroscopy.shoola.env.data.views.calls.AcquisitionDataSaver;
import org.openmicroscopy.shoola.env.data.views.calls.Analyser;
import org.openmicroscopy.shoola.env.data.views.calls.EnumerationLoader;
import org.openmicroscopy.shoola.env.data.views.calls.ExportLoader;
import org.openmicroscopy.shoola.env.data.views.calls.FigureCreator;
import org.openmicroscopy.shoola.env.data.views.calls.ImageRenderer;
import org.openmicroscopy.shoola.env.data.views.calls.ImagesImporter;
import org.openmicroscopy.shoola.env.data.views.calls.ImagesLoader;
import org.openmicroscopy.shoola.env.data.views.calls.MovieCreator;
import org.openmicroscopy.shoola.env.data.views.calls.OverlaysRenderer;
import org.openmicroscopy.shoola.env.data.views.calls.PixelsDataLoader;
import org.openmicroscopy.shoola.env.data.views.calls.PlaneInfoLoader;
import org.openmicroscopy.shoola.env.data.views.calls.ProjectionSaver;
import org.openmicroscopy.shoola.env.data.views.calls.ROICountLoader;
import org.openmicroscopy.shoola.env.data.views.calls.ROILoader;
import org.openmicroscopy.shoola.env.data.views.calls.ResultsSaver;
import org.openmicroscopy.shoola.env.data.views.calls.SaveAsLoader;
import org.openmicroscopy.shoola.env.data.views.calls.ScriptRunner;
import org.openmicroscopy.shoola.env.data.views.calls.ScriptUploader;
import org.openmicroscopy.shoola.env.data.views.calls.ServerSideROILoader;
import org.openmicroscopy.shoola.env.data.views.calls.ROISaver;
import org.openmicroscopy.shoola.env.data.views.calls.RenderingControlLoader;
import org.openmicroscopy.shoola.env.data.views.calls.RenderingSettingsLoader;
import org.openmicroscopy.shoola.env.data.views.calls.RenderingSettingsSaver;
import org.openmicroscopy.shoola.env.data.views.calls.TileLoader;
import org.openmicroscopy.shoola.env.event.AgentEventListener;
import org.openmicroscopy.shoola.env.rnd.RenderingControl;
import org.openmicroscopy.shoola.env.rnd.RndProxyDef;
import org.openmicroscopy.shoola.env.rnd.data.Tile;
import org.openmicroscopy.shoola.util.roi.model.util.Coord3D;
import omero.gateway.model.DataObject;
import omero.gateway.model.PixelsData;
import omero.gateway.model.ROIData;
/**
* Implementation of the {@link ImageDataView} interface.
*
* @author Jean-Marie Burel
* <a href="mailto:j.burel@dundee.ac.uk">j.burel@dundee.ac.uk</a>
* @author Andrea Falconi
* <a href="mailto:a.falconi@dundee.ac.uk">a.falconi@dundee.ac.uk</a>
* @author Donald MacDonald
* <a href="mailto:donald@lifesci.dundee.ac.uk">donald@lifesci.dundee.ac.uk</a>
* @version 3.0
* @since OME2.2
*/
class ImageDataViewImpl
implements ImageDataView
{
/**
* Implemented as specified by the view interface.
* @see ImageDataView#loadRenderingControl(long, int,
* AgentEventListener)
*/
public CallHandle loadRenderingControl(SecurityContext ctx, long pixelsID,
int index, AgentEventListener observer)
{
int i = -1;
switch (index) {
default:
case LOAD:
i = RenderingControlLoader.LOAD;
break;
case RELOAD:
i = RenderingControlLoader.RELOAD;
break;
case RESET:
i = RenderingControlLoader.RESET;
}
BatchCallTree cmd = new RenderingControlLoader(ctx, pixelsID, i);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#render(SecurityContext, long, PlaneDef, boolean, int,
* AgentEventListener)
*/
public CallHandle render(SecurityContext ctx, long pixelsID, PlaneDef pd,
boolean largeImage, int compression, AgentEventListener observer)
{
BatchCallTree cmd = new ImageRenderer(ctx, pixelsID, pd,
largeImage, compression);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#loadPixels(long, AgentEventListener)
*/
public CallHandle loadPixels(SecurityContext ctx, long pixelsID,
AgentEventListener observer)
{
BatchCallTree cmd = new PixelsDataLoader(ctx, pixelsID,
PixelsDataLoader.SET);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#analyseShapes(PixelsData, Collection, List,
* AgentEventListener)
*/
public CallHandle analyseShapes(SecurityContext ctx, PixelsData pixels,
Collection channels, List shapes, Coord3D plane, AgentEventListener observer)
{
BatchCallTree cmd = new Analyser(ctx, pixels, channels, shapes, plane);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#getRenderingSettings(long, AgentEventListener)
*/
public CallHandle getRenderingSettings(SecurityContext ctx, long pixelsID,
AgentEventListener observer)
{
return getRenderingSettings(ctx, pixelsID, -1, observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#getRenderingSettings(long, long, AgentEventListener)
*/
public CallHandle getRenderingSettings(SecurityContext ctx,
long pixelsID, long userID, AgentEventListener observer)
{
BatchCallTree cmd = new RenderingSettingsLoader(ctx, pixelsID, userID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#renderProjected(long, int, int, int, int, List,
* AgentEventListener)
*/
public CallHandle renderProjected(SecurityContext ctx,
long pixelsID, int startZ, int endZ, int stepping, int algorithm,
List<Integer> channels, AgentEventListener observer)
{
BatchCallTree cmd = new ProjectionSaver(ctx, pixelsID, startZ, endZ,
stepping, algorithm, channels);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#projectImage(ProjectionParam, AgentEventListener)
*/
public CallHandle projectImage(SecurityContext ctx, ProjectionParam ref,
AgentEventListener observer)
{
BatchCallTree cmd = new ProjectionSaver(ctx, ref);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#createRndSetting(long, RndProxyDef, List,
* AgentEventListener)
*/
public CallHandle createRndSetting(SecurityContext ctx, long pixelsID,
RndProxyDef rndToCopy, List<Integer> indexes,
AgentEventListener observer)
{
BatchCallTree cmd = new RenderingSettingsSaver(ctx, pixelsID, rndToCopy,
indexes);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#loadAcquisitionData(Object, AgentEventListener)
*/
public CallHandle loadAcquisitionData(SecurityContext ctx, Object refObject,
AgentEventListener observer)
{
BatchCallTree cmd = new AcquisitionDataLoader(ctx, refObject);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#loadInstrumentData(long, AgentEventListener)
*/
public CallHandle loadInstrumentData(SecurityContext ctx, long instrumentID,
AgentEventListener observer)
{
BatchCallTree cmd = new AcquisitionDataLoader(ctx,
AcquisitionDataLoader.INSTRUMENT, instrumentID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#saveAcquisitionData(Object, AgentEventListener)
*/
public CallHandle saveAcquisitionData(SecurityContext ctx, Object refObject,
AgentEventListener observer)
{
BatchCallTree cmd = new AcquisitionDataSaver(ctx, refObject);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#loadPlaneInfo(long, int, int, int, AgentEventListener)
*/
public CallHandle loadPlaneInfo(SecurityContext ctx, long pixelsID, int z,
int t, int channel, AgentEventListener observer)
{
BatchCallTree cmd = new PlaneInfoLoader(ctx, pixelsID, z, t, channel);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#loadChannelMetadataEnumerations(AgentEventListener)
*/
public CallHandle loadChannelMetadataEnumerations(SecurityContext ctx,
AgentEventListener observer)
{
BatchCallTree cmd = new EnumerationLoader(ctx,
EnumerationLoader.CHANNEL);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#loadImageMetadataEnumerations(AgentEventListener)
*/
public CallHandle loadImageMetadataEnumerations(SecurityContext ctx,
AgentEventListener observer)
{
BatchCallTree cmd = new EnumerationLoader(ctx, EnumerationLoader.IMAGE);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#importImages(long, long, AgentEventListener)
*/
public CallHandle importFiles(ImportableObject context,
AgentEventListener observer)
{
BatchCallTree cmd = new ImagesImporter(context);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#monitorDirectory(File, DataObject, long, long,
* AgentEventListener)
*/
public CallHandle monitorDirectory(SecurityContext ctx, File directory,
DataObject container, long userID, long groupID,
AgentEventListener observer)
{
return null;
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#loadImage(long, AgentEventListener)
*/
public CallHandle loadImage(SecurityContext ctx, long imageID,
AgentEventListener observer)
{
BatchCallTree cmd = new ImagesLoader(ctx, imageID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#createMovie(long, long, List, MovieExportParam,
* AgentEventListener)
*/
public CallHandle createMovie(SecurityContext ctx, long imageID,
long pixelsID, List<Integer> channels, MovieExportParam param,
AgentEventListener observer)
{
BatchCallTree cmd = new MovieCreator(ctx, imageID, pixelsID, channels,
param);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#createFigure(List, Class, Object, AgentEventListener)
*/
public CallHandle createFigure(SecurityContext ctx, List<Long> ids,
Class type, Object param, AgentEventListener observer)
{
BatchCallTree cmd = new FigureCreator(ctx, ids, type, param);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#loadROI(long, Long, long, AgentEventListener)
*/
public CallHandle loadROI(SecurityContext ctx, long imageID,
List<Long> fileID, long userID, AgentEventListener observer)
{
BatchCallTree cmd = new ROILoader(ctx, imageID, fileID, userID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#saveROI(long, Long, long, AgentEventListener)
*/
public CallHandle saveROI(SecurityContext ctx, long imageID, long userID,
List<ROIData> roiList, AgentEventListener observer)
{
BatchCallTree cmd = new ROISaver(ctx, imageID, userID, roiList);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#exportImageAsOMETiff(SecurityContext, long, File, Target,
* AgentEventListener)
*/
public CallHandle exportImageAsOMETiff(SecurityContext ctx, long imageID,
File file, Target target, AgentEventListener observer)
{
BatchCallTree cmd = new ExportLoader(ctx, imageID, file,
ExportLoader.EXPORT_AS_OMETIFF, target);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#loadROIFromServer(SecurityContext, long, long, AgentEventListener)
*/
public CallHandle loadROIFromServer(SecurityContext ctx, long imageID,
long userID, AgentEventListener observer)
{
BatchCallTree cmd = new ServerSideROILoader(ctx, imageID, userID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#getROICount(SecurityContext, long, AgentEventListener)
*/
public CallHandle getROICount(SecurityContext ctx, long imageID, AgentEventListener observer)
{
BatchCallTree cmd = new ROICountLoader(ctx, imageID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#renderOverLays(long, PlaneDef, long, Map,
* AgentEventListener)
*/
public CallHandle renderOverLays(SecurityContext ctx, long pixelsID,
PlaneDef pd, long tableID, Map<Long, Integer> overlays,
AgentEventListener observer)
{
BatchCallTree cmd = new OverlaysRenderer(ctx, pixelsID, pd, tableID,
overlays);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#runScript(ScriptObject, AgentEventListener)
*/
public CallHandle runScript(SecurityContext ctx, ScriptObject script,
AgentEventListener observer)
{
BatchCallTree cmd = new ScriptRunner(ctx, script);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#uploadScript(ScriptObject, AgentEventListener)
*/
public CallHandle uploadScript(SecurityContext ctx,ScriptObject script,
AgentEventListener observer)
{
BatchCallTree cmd = new ScriptUploader(ctx, script);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#saveAs(SaveAsParam, AgentEventListener)
*/
public CallHandle saveAs(SecurityContext ctx,SaveAsParam parameters,
AgentEventListener observer)
{
BatchCallTree cmd = new SaveAsLoader(ctx, parameters);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#loadTiles(long, PlaneDef, List, AgentEventListener)
*/
public CallHandle loadTiles(SecurityContext ctx, long pixelsID,
PlaneDef pDef, RenderingControl proxy, Collection<Tile> tiles,
AgentEventListener observer)
{
BatchCallTree cmd = new TileLoader(ctx, pixelsID, pDef, proxy, tiles);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#shutDownRenderingControl(long, AgentEventListener)
*/
public CallHandle shutDownRenderingControl(SecurityContext ctx,
long pixelsID, AgentEventListener observer)
{
BatchCallTree cmd = new RenderingControlLoader(ctx, pixelsID,
RenderingControlLoader.SHUTDOWN);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see ImageDataView#saveResults(SecurityContext, ResultsObject, AgentEventListener)
*/
public CallHandle saveResults(SecurityContext ctx,
ResultsObject results, AgentEventListener observer)
{
BatchCallTree cmd = new ResultsSaver(ctx, results);
return cmd.exec(observer);
}
}