/*
*------------------------------------------------------------------------------
* 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 java.util.Set;
import org.openmicroscopy.shoola.env.data.model.TableParameters;
import org.openmicroscopy.shoola.env.data.model.TimeRefObject;
import org.openmicroscopy.shoola.env.data.util.FilterContext;
import omero.gateway.SecurityContext;
import org.openmicroscopy.shoola.env.data.views.calls.ArchivedFilesLoader;
import org.openmicroscopy.shoola.env.data.views.calls.ArchivedFilesSaver;
import org.openmicroscopy.shoola.env.data.views.calls.ArchivedImageLoader;
import org.openmicroscopy.shoola.env.data.views.calls.DataFilter;
import org.openmicroscopy.shoola.env.data.views.calls.DataObjectSaver;
import org.openmicroscopy.shoola.env.data.views.calls.FileAnnotationCheckLoader;
import org.openmicroscopy.shoola.env.data.views.calls.FileUploader;
import org.openmicroscopy.shoola.env.data.views.calls.FilesLoader;
import org.openmicroscopy.shoola.env.data.views.calls.FilesetLoader;
import org.openmicroscopy.shoola.env.data.views.calls.RelatedContainersLoader;
import org.openmicroscopy.shoola.env.data.views.calls.ScriptsLoader;
import org.openmicroscopy.shoola.env.data.views.calls.StructuredAnnotationLoader;
import org.openmicroscopy.shoola.env.data.views.calls.StructuredAnnotationSaver;
import org.openmicroscopy.shoola.env.data.views.calls.TabularDataLoader;
import org.openmicroscopy.shoola.env.data.views.calls.ThumbnailLoader;
import org.openmicroscopy.shoola.env.event.AgentEventListener;
import org.openmicroscopy.shoola.util.ui.MessengerDetails;
import omero.gateway.model.AnnotationData;
import omero.gateway.model.DataObject;
import omero.gateway.model.FileAnnotationData;
import omero.gateway.model.ImageData;
/**
* Implementation of the {@link MetadataHandlerView} interface.
*
* @author Jean-Marie Burel
* <a href="mailto:j.burel@dundee.ac.uk">j.burel@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 OME3.0
*/
class MetadataHandlerViewImpl
implements MetadataHandlerView
{
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadContainers(SecurityContext, Class, long,
* long, AgentEventListener)
*/
public CallHandle loadContainers(SecurityContext ctx, Class type, long id,
long userID, AgentEventListener observer)
{
BatchCallTree cmd = new RelatedContainersLoader(ctx, type, id, userID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadThumbnails(SecurityContext, ImageData,
* Set, int, int, AgentEventListener)
*/
public CallHandle loadThumbnails(SecurityContext ctx, ImageData image,
Set<Long> userIDs, int thumbWidth, int thumbHeight,
AgentEventListener observer)
{
BatchCallTree cmd = new ThumbnailLoader(ctx, image, thumbWidth,
thumbHeight, userIDs);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadStructuredData(SecurityContext, DataObject,
* long, AgentEventListener)
*/
public CallHandle loadStructuredData(SecurityContext ctx, Object dataObject,
long userID, AgentEventListener observer)
{
BatchCallTree cmd = new StructuredAnnotationLoader(ctx,
StructuredAnnotationLoader.ALL, dataObject, userID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadStructuredData(SecurityContext, List,
* long, boolean, AgentEventListener)
*/
public CallHandle loadStructuredData(SecurityContext ctx,
List<DataObject> data, long userID, boolean viewed,
AgentEventListener observer)
{
BatchCallTree cmd = new StructuredAnnotationLoader(ctx,
StructuredAnnotationLoader.ALL, data, userID, viewed);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadExistingAnnotations(SecurityContext, Class,
* long, long, AgentEventListener)
*/
public CallHandle loadExistingAnnotations(SecurityContext ctx,
Class annotation, long userID, AgentEventListener observer)
{
BatchCallTree cmd = new StructuredAnnotationLoader(ctx, annotation,
userID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#checkFileAnnotationDeletion(SecurityContext, List, List, AgentEventListener)
*/
public CallHandle checkFileAnnotationDeletion(SecurityContext ctx, List<FileAnnotationData> annotations, List<DataObject> referenceObjects, AgentEventListener observer) {
BatchCallTree cmd = new FileAnnotationCheckLoader(ctx, annotations, referenceObjects);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadExistingAnnotations(SecurityContext,
* Class, long, AgentEventListener)
*/
public CallHandle loadExistingAnnotations(List<SecurityContext> ctx,
Class annotation, long userID, AgentEventListener observer)
{
BatchCallTree cmd = new StructuredAnnotationLoader(ctx, annotation,
userID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#saveData(SecurityContext, Collection, List,
* List, long, AgentEventListener)
*/
public CallHandle saveData(SecurityContext ctx,
Collection<DataObject> data, List<AnnotationData> toAdd,
List<Object> toRemove, List<Object> metadata, long userID,
AgentEventListener observer)
{
BatchCallTree cmd = new StructuredAnnotationSaver(ctx, data,
toAdd, toRemove, metadata, userID, false);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#saveBatchData(SecurityContext, Collection,
* List, List, long, AgentEventListener)
*/
public CallHandle saveBatchData(SecurityContext ctx,
Collection<DataObject> data, List<AnnotationData> toAdd,
List<Object> toRemove, long userID,
AgentEventListener observer)
{
BatchCallTree cmd = new StructuredAnnotationSaver(ctx, data,
toAdd, toRemove, null, userID, true);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#saveBatchData(SecurityContext, TimeRefObject,
* List, List, long, AgentEventListener)
*/
public CallHandle saveBatchData(SecurityContext ctx,
TimeRefObject refObject, List<AnnotationData> toAdd,
List<Object> toRemove, long userID, AgentEventListener observer)
{
BatchCallTree cmd = new StructuredAnnotationSaver(ctx, refObject,
toAdd, toRemove, userID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadFile(SecurityContext, File, long,
* AgentEventListener)
*/
public CallHandle loadFile(SecurityContext ctx, File file, long fileID,
AgentEventListener observer)
{
BatchCallTree cmd = new FilesLoader(ctx, file, fileID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadFile(SecurityContext, File, long, int,
* AgentEventListener)
*/
public CallHandle loadFile(SecurityContext ctx, File file, long fileID,
int index, AgentEventListener observer)
{
BatchCallTree cmd = new FilesLoader(ctx, file, fileID, index);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadOriginalFiles(Collection, AgentEventListener)
*/
public CallHandle loadOriginalFiles(SecurityContext ctx,
Collection<Long> pixelsID, AgentEventListener observer)
{
BatchCallTree cmd = new ArchivedFilesLoader(ctx, pixelsID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadArchivedImage(SecurityContext, List, File,
* String, boolean, boolean, boolean AgentEventListener)
*/
public CallHandle loadArchivedImage(SecurityContext ctx, List<Long> imageIDs,
File path, boolean override, boolean zip, boolean keepOriginalPaths,
AgentEventListener observer)
{
BatchCallTree cmd = new ArchivedImageLoader(ctx, imageIDs, path,
override, zip, keepOriginalPaths);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadRatings(SecurityContext, Class, List, long,
* AgentEventListener)
*/
public CallHandle loadRatings(SecurityContext ctx, Class nodeType,
List<Long> nodeIDs, long userID, AgentEventListener observer)
{
BatchCallTree cmd = new StructuredAnnotationLoader(ctx,
StructuredAnnotationLoader.RATING, nodeType, nodeIDs, userID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#filterByAnnotation(SecurityContext, Class, List,
* Class, List, long, AgentEventListener)
*/
public CallHandle filterByAnnotation(SecurityContext ctx, Class nodeType,
List<Long> nodeIds, Class annotationType, List<String> terms,
long userID, AgentEventListener observer)
{
BatchCallTree cmd = new DataFilter(ctx, annotationType, nodeType,
nodeIds, terms, userID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#filterByAnnotated(SecurityContext, Class, List,
* Class, boolean, long, AgentEventListener)
*/
public CallHandle filterByAnnotated(SecurityContext ctx, Class nodeType,
List<Long> nodeIds, Class annotationType, boolean annotated,
long userID, AgentEventListener observer)
{
BatchCallTree cmd = new DataFilter(ctx, annotationType, nodeType,
nodeIds, annotated, userID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#filterData(SecurityContext, Class, List,
* FilterContext, long, AgentEventListener)
*/
public CallHandle filterData(SecurityContext ctx, Class nodeType,
List<Long> nodeIds, FilterContext context, long userID,
AgentEventListener observer)
{
BatchCallTree cmd = new DataFilter(ctx, nodeType, nodeIds, context,
userID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#createDataObject(SecurityContext, DataObject, DataObject,
* Collection, AgentEventListener)
*/
public CallHandle createDataObject(SecurityContext ctx, DataObject parent,
DataObject data, Collection children, AgentEventListener observer)
{
BatchCallTree cmd = new DataObjectSaver(ctx, parent, data, children);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#saveFile(SecurityContext, FileAnnotationData, File, int,
* DataObject, AgentEventListener)
*/
public CallHandle saveFile(SecurityContext ctx,
FileAnnotationData fileAnnotation, File file, int index,
DataObject linkTo, AgentEventListener observer)
{
BatchCallTree cmd = new ArchivedFilesSaver(ctx, fileAnnotation, file,
index, linkTo);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadAnnotation(SecurityContext, long, AgentEventListener)
*/
public CallHandle loadAnnotation(SecurityContext ctx, long annotationID,
AgentEventListener observer)
{
BatchCallTree cmd = new StructuredAnnotationLoader(ctx, annotationID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#updateDataObjects(SecurityContext, List, AgentEventListener)
*/
public CallHandle updateDataObjects(SecurityContext ctx,
List<DataObject> objects, AgentEventListener observer)
{
BatchCallTree cmd = new DataObjectSaver(ctx, objects, null,
DataObjectSaver.UPDATE);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#submitFiles(SecurityContext,
* MessengerDetails, AgentEventListener)
*/
public CallHandle submitFiles(SecurityContext ctx, MessengerDetails details,
AgentEventListener observer)
{
BatchCallTree cmd = new FileUploader(details);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadRatings(SecurityContext, Object, long,
* AgentEventListener)
*/
public CallHandle loadROIMeasurement(SecurityContext ctx,
Object dataObject, long userID, AgentEventListener observer)
{
BatchCallTree cmd = new StructuredAnnotationLoader(ctx,
StructuredAnnotationLoader.ROI_MEASUREMENT, dataObject,
userID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadFiles(SecurityContext, Map, AgentEventListener)
*/
public CallHandle loadFiles(SecurityContext ctx,
Map<FileAnnotationData, File> files, AgentEventListener observer)
{
return loadFiles(ctx, false, files,observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadFiles(SecurityContext, boolean, Map,
* AgentEventListener)
*/
public CallHandle loadFiles(SecurityContext ctx, boolean zipDirectory,
Map<FileAnnotationData, File> files, AgentEventListener observer)
{
BatchCallTree cmd = new FilesLoader(ctx, files, zipDirectory);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadScripts(SecurityContext, long, boolean,
* AgentEventListener)
*/
public CallHandle loadScripts(SecurityContext ctx, long userID, boolean all,
AgentEventListener observer)
{
int index = ScriptsLoader.DEFAULT_SCRIPTS;
if (all) index = ScriptsLoader.ALL_SCRIPTS;
BatchCallTree cmd = new ScriptsLoader(ctx, userID, index);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadScript(SecurityContext, long, AgentEventListener)
*/
public CallHandle loadScript(SecurityContext ctx, long scriptID,
AgentEventListener observer)
{
BatchCallTree cmd = new ScriptsLoader(ctx, scriptID,
ScriptsLoader.SINGLE_SCRIPT);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadTabularData(SecurityContext, TableParameters,
* long, AgentEventListener)
*/
public CallHandle loadTabularData(SecurityContext ctx,
TableParameters parameters, long userID,
AgentEventListener observer)
{
BatchCallTree cmd = new TabularDataLoader(ctx, parameters, userID);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadFileset(SecurityContext, long,
* AgentEventListener)
*/
public CallHandle loadFileset(SecurityContext ctx, long imageId,
AgentEventListener observer)
{
BatchCallTree cmd = new FilesetLoader(ctx, imageId);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#loadAnnotations(SecurityContext, Class, List,
* Class, List, List, AgentEventListener)
*/
public CallHandle loadAnnotations(SecurityContext ctx, Class<?> rootType,
List<Long> rootIDs, Class<?> annotationType, List<String> nsInclude,
List<String> nsExlcude, AgentEventListener observer)
{
BatchCallTree cmd = new StructuredAnnotationLoader(ctx, rootType,
rootIDs, annotationType, nsInclude, nsExlcude);
return cmd.exec(observer);
}
/**
* Implemented as specified by the view interface.
* @see MetadataHandlerView#annotateData(SecurityContext, Map, Map, long,
* AgentEventListener)
*/
public CallHandle annotateData(SecurityContext ctx,
Map<DataObject, List<AnnotationData>> toAdd,
Map<DataObject, List<AnnotationData>> toRemove, long userID,
AgentEventListener observer) {
BatchCallTree cmd = new StructuredAnnotationSaver(ctx, toAdd, toRemove,
userID);
return cmd.exec(observer);
}
}