/*
* EuroCarbDB, a framework for carbohydrate bioinformatics
*
* Copyright (c) 2006-2009, Eurocarb project, or third-party contributors as
* indicated by the @author tags or express copyright attribution
* statements applied by the authors.
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
* A copy of this license accompanies this distribution in the file LICENSE.txt.
*
* 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 Lesser General Public License
* for more details.
*
* Last commit: $Rev: 1147 $ by $Author: glycoslave $ on $Date:: 2009-06-04 #$
*/
package org.eurocarbdb.dataaccess.core;
import java.util.Set;
import java.util.List;
import org.eurocarbdb.dataaccess.core.*;
/**
*<p>
* This interface identifies the implementing class as able
* to be considered part of a {@link BiologicalContext}.
*</p>
*<p>
* Since BiologicalContext is effectively an aggregation/abstraction
* of different biological aspects ({@link Taxonomy},
* {@link TissueTaxonomy}, {@link Disease}, {@link Perturbation},
* {@link Glycoconjugate} association, etc) of a sample/biological
* source, some common interface (ie: this interface) is required to
* be able to group & manipulate these disparate information sources
* together.
*</p>
*<p>
* Accordingly, any class that wants to be considered "part of" a
* BiologicalContext should implement this interface.
*</p>
*
* @author mjh
* @see BiologicalContext
* @see BiologicalContext.getAllAssociations()
*/
public interface BiologicalContextAssociation
{
/**
* Returns the {@link List} of all {@link BiologicalContext}s
* that are associated to this object.
*/
public Set<BiologicalContext> getAllContexts()
;
/**
* Returns an ID for this object that identifies it uniquely
* within its own hierachy. For example, for a {@link Taxonomy}
* this method returns its {@link Taxonomy.getTaxonomyId() Taxonomy id}.
*/
public int getId()
;
/**
* Returns a {@link Reference} for this object that would allow
* it to be looked up outside of Eurocarb.
*/
public Reference getExternalReference()
;
} // end interface