/* *------------------------------------------------------------------------------ * Copyright (C) 2006-2014 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; import java.io.File; import java.util.Collection; import java.util.List; import java.util.Map; import omero.model.AcquisitionMode; import omero.model.ArcType; import omero.model.Binning; import omero.model.ContrastMethod; import omero.model.Correction; import omero.model.DetectorType; import omero.model.FilamentType; import omero.model.FilterType; import omero.model.Format; import omero.model.IObject; import omero.model.Illumination; import omero.model.Immersion; import omero.model.LaserMedium; import omero.model.LaserType; import omero.model.Medium; import omero.model.MicroscopeType; import omero.model.PhotometricInterpretation; import omero.model.Pulse; import org.openmicroscopy.shoola.env.data.model.TableParameters; import omero.gateway.model.TableResult; import org.openmicroscopy.shoola.env.data.model.TimeRefObject; import org.openmicroscopy.shoola.env.data.util.FilterContext; import omero.gateway.SecurityContext; import omero.gateway.exception.DSAccessException; import omero.gateway.exception.DSOutOfServiceException; import org.openmicroscopy.shoola.env.data.util.StructuredDataResults; import omero.gateway.model.AnnotationData; import omero.gateway.model.ChannelData; import omero.gateway.model.DataObject; import omero.gateway.model.FileAnnotationData; /** * List of methods to retrieve metadata. * * @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 */ public interface OmeroMetadataService { /** Identifies that the file is of type movie. */ public static final int MOVIE = 2; /** Identifies that the file is of type other. */ public static final int OTHER = 3; /** Identifies that the tag and tag set not owned. */ public static final int TAG_NOT_OWNED = 4; /** Indicates to retrieve the tags. */ public static final int LEVEL_TAG = 0; /** Indicates to retrieve the tag sets. */ public static final int LEVEL_TAG_SET = 1; /** Indicates to retrieve the tag sets and the tags. */ public static final int LEVEL_ALL = 2; /** Identified the <code>Immersion</code> enumeration. */ public static final String IMMERSION = Immersion.class.getName(); /** Identified the <code>Correction</code> enumeration. */ public static final String CORRECTION = Correction.class.getName(); /** Identified the <code>Medium</code> enumeration. */ public static final String MEDIUM = Medium.class.getName(); /** Identified the <code>Microscope type</code> enumeration. */ public static final String MICROSCOPE_TYPE = MicroscopeType.class.getName(); /** Identified the <code>Detector type</code> enumeration. */ public static final String DETECTOR_TYPE = DetectorType.class.getName(); /** Identified the <code>Filter type</code> enumeration. */ public static final String FILTER_TYPE = FilterType.class.getName(); /** Identified the <code>Binning</code> enumeration. */ public static final String BINNING = Binning.class.getName(); /** Identified the <code>contrast method</code> enumeration. */ public static final String CONTRAST_METHOD = ContrastMethod.class.getName(); /** Identified the <code>illumination type</code> enumeration. */ public static final String ILLUMINATION_TYPE = Illumination.class.getName(); /** Identified the <code>photometric Interpretation</code> enumeration. */ public static final String PHOTOMETRIC_INTERPRETATION = PhotometricInterpretation.class.getName(); /** Identified the <code>Acquisition mode</code> enumeration. */ public static final String ACQUISITION_MODE = AcquisitionMode.class.getName(); /** Identified the <code>laser medium</code> enumeration. */ public static final String LASER_MEDIUM = LaserMedium.class.getName(); /** Identified the <code>Pulse</code> enumeration. */ public static final String LASER_PULSE = Pulse.class.getName(); /** Identified the <code>laser type</code> enumeration. */ public static final String LASER_TYPE = LaserType.class.getName(); /** Identified the <code>arc type</code> enumeration. */ public static final String ARC_TYPE = ArcType.class.getName(); /** Identified the <code>filament type</code> enumeration. */ public static final String FILAMENT_TYPE = FilamentType.class.getName(); /** Identified the <code>Format</code> enumeration. */ public static final String FORMAT = Format.class.getName(); /** * Loads the ratings linked to an object identifying by the specified * type and id. * * @param ctx The security context. * @param type The type of the object. * @param id The id of the object. * @param userID The id of the user who added attachments to the object * or <code>-1</code> if the user is not specified. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Collection loadRatings(SecurityContext ctx, Class type, long id, long userID) throws DSOutOfServiceException, DSAccessException; /** * Loads all annotations related to the object specified by the class * type and the id. * * @param ctx The security context. * @param type The type of the object. * @param id The id of the object. * @param userID The id of the user who added attachments to the object * or <code>-1</code> if the user is not specified. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Collection loadStructuredAnnotations(SecurityContext ctx, Class type, long id, long userID) throws DSOutOfServiceException, DSAccessException; /** * Loads data related to the specified object. * * @param ctx The security context. * @param object The object to handle. * @param userID The id of the user who added attachments to the object * or <code>-1</code> if the user is not specified. * @param viewed Pass <code>true</code> to load the rendering settings * related to the objects, <code>false<code> otherwise. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public StructuredDataResults loadStructuredData(SecurityContext ctx, Object object, long userID, boolean viewed) throws DSOutOfServiceException, DSAccessException; /** * Loads data related to the specified objects * * @param ctx The security context. * @param data The objects to handle. * @param userID The id of the user who added attachments to the object * or <code>-1</code> if the user is not specified. * @param viewed Pass <code>true</code> to load the rendering settings * related to the objects, <code>false<code> otherwise. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Map<DataObject, StructuredDataResults> loadStructuredData( SecurityContext ctx, List<DataObject> data, long userID, boolean viewed) throws DSOutOfServiceException, DSAccessException; /** * Annotates the specified data object and returns the annotated object. * * @param ctx The security context. * @param toAnnotate The object to annotate. * Mustn't be <code>null</code>. * @param annotation The annotation to create. * Mustn't be <code>null</code>. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public DataObject annotate(SecurityContext ctx, DataObject toAnnotate, AnnotationData annotation) throws DSOutOfServiceException, DSAccessException; /** * Annotates the object and returns the annotated object. * * @param ctx The security context. * @param type The type of object to annotate. Mustn't be <code>null</code>. * @param id The id of the object to annotate. Mustn't be <code>null</code>. * @param annotation The annotation to create. Mustn't be <code>null</code>. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public DataObject annotate(SecurityContext ctx, Class type, long id, AnnotationData annotation) throws DSOutOfServiceException, DSAccessException; /** * Removes all annotations of a given type from the specified object. * * @param ctx The security context. * @param object The object to handle. Mustn't be <code>null</code>. * @param annotationType The type of annotation to clear. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public void clearAnnotation(SecurityContext ctx, DataObject object, Class annotationType) throws DSOutOfServiceException, DSAccessException; /** * Removes all annotations from the specified object. * * @param ctx The security context. * @param object The object to handle. Mustn't be <code>null</code>. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public void clearAnnotation(SecurityContext ctx, DataObject object) throws DSOutOfServiceException, DSAccessException; /** * Clears the annotation related to a given type object. * * @param ctx The security context. * @param type The type of object the annotations are related to. * @param id The object's id. * @param annotationType The type of annotation to delete. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public void clearAnnotation(SecurityContext ctx, Class type, long id, Class annotationType) throws DSOutOfServiceException, DSAccessException; /** * Loads the annotation. * * @param ctx The security context. * @param annotationID The id of the annotation. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public DataObject loadAnnotation(SecurityContext ctx, long annotationID) throws DSOutOfServiceException, DSAccessException; /** * Loads all annotations of a given type. * * @param ctx The security context. * @param annotationType The type of annotation to retrieve. * @param nameSpace The name space of the annotation or <code>null</code>. * @param userID The id of the user the annotations are related to. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Collection loadAnnotations(SecurityContext ctx, Class annotationType, String nameSpace, long userID) throws DSOutOfServiceException, DSAccessException; /** * Saves the object, adds (resp. removes) annotations to (resp. from) * the object if any. * * @param ctx The security context. * @param data The data object to handle. * @param toAdd Collection of annotations to add. * @param toRemove Collection of annotations to remove. * @param userID The id of the user. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Object saveData(SecurityContext ctx, Collection<DataObject> data, List<AnnotationData> toAdd, List<Object> toRemove, long userID) throws DSOutOfServiceException, DSAccessException; /** * Saves the objects contained in the specified objects, * adds (resp. removes) annotations to(resp. from) the object if any. * * @param ctx The security context. * @param data The data object to handle. * @param toAdd Collection of annotations to add. * @param toRemove Collection of annotations to remove. * @param userID The id of the user. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Object saveBatchData(SecurityContext ctx, Collection<DataObject> data, List<AnnotationData> toAdd, List<Object> toRemove, long userID) throws DSOutOfServiceException, DSAccessException; /** * Saves the objects contained in the specified objects, * adds (resp. removes) annotations to(resp. from) the object if any. * * @param ctx The security context. * @param data The data object to handle. * @param toAdd Collection of annotations to add. * @param toRemove Collection of annotations to remove. * @param userID The id of the user. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Object saveBatchData(SecurityContext ctx, TimeRefObject data, List<AnnotationData> toAdd, List<Object> toRemove, long userID) throws DSOutOfServiceException, DSAccessException; /** * Downloads a file previously uploaded to the server. * * @param ctx The security context. * @param file The file to write the data into. * @param fileID The id of the file to download. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public File downloadFile(SecurityContext ctx, File file, long fileID) throws DSOutOfServiceException, DSAccessException; /** * Loads the ratings associated to the passed objects. * * @param ctx The security context. * @param nodeType The type of object. * @param nodeIds The ids of the object. * @param userID The user id. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Map<Long, Collection> loadRatings(SecurityContext ctx, Class nodeType, List<Long> nodeIds, long userID) throws DSOutOfServiceException, DSAccessException; /** * Returns a sub-collection of the passed collection of nodes * annotated by the passed type of annotation. * * @param ctx The security context. * @param nodeType * @param nodeIds * @param annotationType * @param terms * @param userID * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Collection filterByAnnotation(SecurityContext ctx, Class nodeType, List<Long> nodeIds, Class annotationType, List<String> terms, long userID) throws DSOutOfServiceException, DSAccessException; /** * Returns a sub-collection of the passed collection of nodes * annotated by the passed type of annotation. * * @param ctx The security context. * @param nodeType * @param nodeIds * @param annotationType * @param annotated * @param userID * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Collection filterByAnnotated(SecurityContext ctx, Class nodeType, List<Long> nodeIds, Class annotationType, boolean annotated, long userID) throws DSOutOfServiceException, DSAccessException; /** * * @param ctx The security context. * @param nodeType * @param ids * @param filter * @param userID * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Collection filterByAnnotation(SecurityContext ctx, Class nodeType, List<Long> ids, FilterContext filter, long userID) throws DSOutOfServiceException, DSAccessException; /** * Returns the enumeration corresponding to the specified type. * * @param ctx The security context. * @param type The type of enumeration. * One of the enumerations defined by this class. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Collection getEnumeration(SecurityContext ctx, String type) throws DSOutOfServiceException, DSAccessException; /** * Loads the acquisition metadata for an image or a given channel. * * @param ctx The security context. * @param refObject Either an <code>ImageData</code> or * <code>ChannelData</code> node. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Object loadAcquisitionData(SecurityContext ctx, Object refObject) throws DSOutOfServiceException, DSAccessException; /** * Loads the acquisition metadata for an image or a given channel. * * @param ctx The security context. * @param refObject Either an <code>ImageAcquisitionData</code> or * <code>ChannelAcquisitionData</code> node. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Object saveAcquisitionData(SecurityContext ctx, Object refObject) throws DSOutOfServiceException, DSAccessException; /** * Saves the file back to the server. * * @param ctx The security context. * @param fileAnnotation The annotation hosting the previous info. * @param file The file to save. * @param index One of the constants defined by this class. * @param linkTo The <code>DataObject</code> to link the * annotation to. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Object archivedFile(SecurityContext ctx, FileAnnotationData fileAnnotation, File file, int index, DataObject linkTo) throws DSOutOfServiceException, DSAccessException; /** * Loads the <code>Tag Set</code> object(s) or <code>Tag</code> object(s) * depending on the specified parameters. Returns a collection of * <code>TagAnnotationData</code>s. * * @param ctx The security context. * @param id The id if specified. * @param topLevel Pass <code>true</code> to indicate to load the * <code>Tag Set</code> objects, <code>false</code> to * load the <code>Tag</code> objects. * @param userID The identifier of the user. * @param groupID The identifier of the user's group. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Collection loadTags(SecurityContext ctx, Long id, boolean topLevel, long userID, long groupID) throws DSOutOfServiceException, DSAccessException; /** * Returns the number of files of a given type. * * @param ctx The security context. * @param userID The user's identifier. * @param fileType One of the constants above. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public long countFileType(SecurityContext ctx, long userID, int fileType) throws DSOutOfServiceException, DSAccessException; /** * Loads the files specified by the given type. Returns a collection * of <code>FileAnnotationData</code>s. * * @param ctx The security context. * @param fileType One of the constants above. * @param userID The id of the user. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Collection loadFiles(SecurityContext ctx, int fileType, long userID) throws DSOutOfServiceException, DSAccessException; /** * Loads the instrument. * * @param ctx The security context. * @param instrumentID The id of the instrument. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public Object loadInstrument(SecurityContext ctx, long instrumentID) throws DSOutOfServiceException, DSAccessException; /** * Returns a collection of tabular data corresponding to the specified * parameters. * * @param ctx The security context. * @param parameters The parameters to handle. * @param userID The user's identifier. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public List<TableResult> loadTabularData(SecurityContext ctx, TableParameters parameters, long userID) throws DSOutOfServiceException, DSAccessException; /** * Loads the parents of the specified annotation * (taking the current user context into account). * @param ctx The security context. * @param annotationId The annotation to handle. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public List<DataObject> loadParentsOfAnnotations(SecurityContext ctx, long annotationId) throws DSOutOfServiceException, DSAccessException; /** * Loads the parents of the specified annotation * (in the scope of the given user context) * * @param ctx The security context. * @param annotationId The annotation to handle. * @param userId The id of the user * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public List<DataObject> loadParentsOfAnnotations(SecurityContext ctx, long annotationId, long userId) throws DSOutOfServiceException, DSAccessException; /** * Saves the channels. Applies the changes to the images contained in * the specified objects whose number of channels matches the number of * speficied channels. This could be datasets, plates or images. * Returns the identifiers of the images whose channels have been updated, * or an empty list if no images were updated. * * @param ctx The security context. * @param channels The channels to update. * @param objects The objects to apply the changes to. If the objects are * datasets, then all the images within the datasets will be updated. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public List<Long> saveChannelData(SecurityContext ctx, List<ChannelData> channels, List<DataObject> objects) throws DSOutOfServiceException, DSAccessException; /** * Retrieves the channel data for the specified pixels set. * * @param ctx The security context. * @param pixelsID The id of pixels set. * @return A list of channels. * @throws DSOutOfServiceException If the connection is broken, or logged in * @throws DSAccessException If an error occurred while trying to * retrieve data from OMERO service. */ public List<ChannelData> getChannelsMetadata(SecurityContext ctx, long pixelsID) throws DSOutOfServiceException, DSAccessException; /** * Downloads a file previously uploaded to the server. * * @param ctx The security context. * @param file The file to write the data into. * @param id The id of the image. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged in * @throws DSAccessException If an error occurred while trying to * retrieve data from OMERO service. * @throws ProcessException If an error occurred while starting the process. */ public RequestCallback downloadMetadataFile(SecurityContext ctx, File file, long id) throws DSOutOfServiceException, DSAccessException, ProcessException; /** * Loads the annotations of the given type linked to the specified objects. * Returns a map whose keys are the object's id and the values are a * collection of annotation linked to that object. * * @param ctx The security context. * @param rootType The type of object the annotations are linked to e.g. * Image. * @param rootIDs The collection of object's ids the annotations are linked * to. * @param annotationType The type of annotation to load. * @param nsInclude The annotation's name space to include if any. * @param nsExlcude The annotation's name space to exclude if any. * @return See above * @throws DSOutOfServiceException If the connection is broken, or logged in * @throws DSAccessException If an error occurred while trying to * retrieve data from OMERO service. */ public Map<Long, Collection<AnnotationData>> loadAnnotations(SecurityContext ctx, Class<?> rootType, List<Long> rootIDs, Class<?> annotationType, List<String> nsInclude, List<String> nsExlcude) throws DSOutOfServiceException, DSAccessException; /** * Loads the log files linked to the specified objects. * * @param ctx The security context. * @param rootType The type of object to handle. * @param rootIDs The collection of object's identifiers. * @return See above. * @throws DSOutOfServiceException If the connection is broken, or logged in * @throws DSAccessException If an error occurred while trying to * retrieve data from OMERO service. */ public Map<Long, List<IObject>> loadLogFiles(SecurityContext ctx, Class<?> rootType, List<Long> rootIDs) throws DSOutOfServiceException, DSAccessException; /** * Add (resp. removes) annotations to (resp. from) the objects if any. * * @param ctx The security context. * @param toAdd Collection of annotations to add. * @param toRemove Collection of annotations to remove. * @param userID The id of the user. * @throws DSOutOfServiceException If the connection is broken, or logged * in. * @throws DSAccessException If an error occurred while trying to * retrieve data from OMEDS service. */ public void saveAnnotationData(SecurityContext ctx, Map<DataObject, List<AnnotationData>> toAdd, Map<DataObject, List<AnnotationData>> toRemove, long userID) throws DSOutOfServiceException, DSAccessException; }