/*
*------------------------------------------------------------------------------
* 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.util;
import java.util.Collection;
import java.util.Map;
import org.openmicroscopy.shoola.env.data.model.AnnotationLinkData;
import omero.gateway.model.AnnotationData;
import omero.gateway.model.DataObject;
import omero.gateway.model.FileAnnotationData;
import omero.gateway.model.MapAnnotationData;
import omero.gateway.model.RatingAnnotationData;
import omero.gateway.model.TagAnnotationData;
import omero.gateway.model.TermAnnotationData;
import omero.gateway.model.TextualAnnotationData;
import omero.gateway.model.XMLAnnotationData;
/**
* Helper class storing the various data related to a given object.
*
* @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 class StructuredDataResults
{
/** The tags related to the object. */
private Collection<TagAnnotationData> tags;
/** The attachments related to the object. */
private Collection<FileAnnotationData> attachments;
/** The terms related to the object. */
private Collection<TermAnnotationData> terms;
/** The textual annotations. */
private Collection<TextualAnnotationData> texts;
/** The ratings of the objects. */
private Collection<RatingAnnotationData> ratings;
/** The XML type of the objects. */
private Collection<XMLAnnotationData> xmlAnnotations;
/** Collection of annotations not already stored. */
private Collection<AnnotationData> otherAnnotation;
/** The MapAnnotations. */
private Collection<MapAnnotationData> mapAnnotations;
/** The object the results are for. */
private DataObject relatedObject;
/** The collection of links for in-place imports.*/
private Collection<AnnotationData> transferlinks;
/**
* Collection of parents.
* Filled when the related object is an <code>image</code> or
* <code>dataset</code>.
*/
private Collection parents;
/** The tags and documents links. */
private Map links;
/** The concrete links.*/
private Collection<AnnotationLinkData> annotationLinks;
/** Flag indicating if the annotations have been loaded or not.*/
private boolean loaded;
/**
* Creates a new instance.
*
* @param relatedObject The object the results are for.
* Mustn't be <code>null</code>.
*/
public StructuredDataResults(DataObject relatedObject)
{
this(relatedObject, true);
}
/**
* Creates a new instance.
*
* @param relatedObject The object the results are for.
* Mustn't be <code>null</code>.
* @param loaded Flag indicating if the annotations have been loaded or not.
* The default value is <code>true</code>
*/
public StructuredDataResults(DataObject relatedObject, boolean loaded)
{
if (relatedObject == null)
throw new IllegalArgumentException("No object related.");
this.relatedObject = relatedObject;
this.loaded = loaded;
}
/**
* Returns <code>true</code> if the annotations are loaded,
* <code>false</code> otherwise.
*
* @return See above.
*/
public boolean isLoaded() { return loaded; }
/**
* Returns the object the results are for.
*
* @return See above.
*/
public Object getRelatedObject() { return relatedObject; }
/**
* Returns the identifier of the data object.
*
* @return See above.
*/
public long getObjectId() { return relatedObject.getId(); }
/**
* Returns the collection of parents.
*
* @return See above.
*/
public Collection getParents() { return parents; }
/**
* Sets the collection of parents.
*
* @param parents The value to set.
*/
public void setParents(Collection parents) { this.parents = parents; }
/**
* Returns the annotations.
*
* @return See above.
*/
public Collection<TextualAnnotationData> getTextualAnnotations()
{
return texts;
}
/**
* Sets the collection of annotations.
*
* @param texts The value to set.
*/
public void setTextualAnnotations(Collection<TextualAnnotationData> texts)
{
this.texts = texts;
}
/**
* Returns the collection of attachments.
*
* @return See above.
*/
public Collection<FileAnnotationData> getAttachments()
{
return attachments;
}
/**
* Sets the collections of attachments.
*
* @param attachments The value to set.
*/
public void setAttachments(Collection<FileAnnotationData> attachments)
{
this.attachments = attachments;
}
/**
* Returns the collection of <code>XML</code> annotations.
*
* @return See above.
*/
public Collection<XMLAnnotationData> getXMLAnnotations()
{
return xmlAnnotations;
}
/**
* Sets the collections of <code>XML</code> annotations.
*
* @param xmlAnnotations The value to set.
*/
public void setXMLAnnotations(Collection<XMLAnnotationData> xmlAnnotations)
{
this.xmlAnnotations = xmlAnnotations;
}
/**
* Returns the ratings.
*
* @return See above.
*/
public Collection<RatingAnnotationData> getRatings() { return ratings; }
/**
* Sets the ratings.
*
* @param ratings The value to set.
*/
public void setRatings(Collection<RatingAnnotationData> ratings)
{
this.ratings = ratings;
}
/**
* Returns the collection of tags.
*
* @return See above.
*/
public Collection<TagAnnotationData> getTags() { return tags; }
/**
* Sets the collections of tags.
*
* @param tags The value to set.
*/
public void setTags(Collection<TagAnnotationData> tags)
{
this.tags = tags;
}
/**
* Returns the collection of terms.
*
* @return See above.
*/
public Collection<TermAnnotationData> getTerms() { return terms; }
/**
* Sets the collections of terms.
*
* @param terms The value to set.
*/
public void setTerms(Collection<TermAnnotationData> terms)
{
this.terms = terms;
}
/**
* Returns the collection of annotations.
*
* @return See above.
*/
public Collection<AnnotationData> getOtherAnnotations()
{
return otherAnnotation;
}
/**
* Sets the collections of annotations.
*
* @param otherAnnotation The value to set.
*/
public void setOtherAnnotation(Collection<AnnotationData> otherAnnotation)
{
this.otherAnnotation = otherAnnotation;
}
/**
* Returns the collection of links.
*
* @return See above.
*/
public Map getLinks() { return links; }
/**
* Sets the collection.
*
* @param links The collection to set.
*/
public void setLinks(Map links) { this.links = links; }
/**
* Returns the collection of links.
*
* @return See above.
*/
public Collection<AnnotationLinkData> getAnnotationLinks()
{
return annotationLinks;
}
/**
* Sets the collection.
*
* @param annotationLinks The collection to set.
*/
public void setAnnotationLinks(Collection<AnnotationLinkData> annotationLinks)
{
this.annotationLinks = annotationLinks;
}
/**
* Sets the collection of transferlink annotations (in-place imports)
* @param transferlinks Transferlink annotations to set
*/
public void setTransferlinks(Collection<AnnotationData> transferlinks)
{
this.transferlinks = transferlinks;
}
/**
* Returns the collection of links (in-place imports).
*
* @return See above.
*/
public Collection<AnnotationData> getTransferLinks()
{
return transferlinks;
}
/**
* Returns the collection of {@link MapAnnotationData}.
*
* @return See above.
*/
public Collection<MapAnnotationData> getMapAnnotations() {
return mapAnnotations;
}
/**
* Sets the collection of {@link MapAnnotationData}.
*
* @param mapAnnotations The value to set.
*/
public void setMapAnnotations(Collection<MapAnnotationData> mapAnnotations)
{
this.mapAnnotations = mapAnnotations;
}
}