001    /*
002     * The contents of this file are subject to the Mozilla Public
003     * License Version 1.1 (the "License"); you may not use this file
004     * except in compliance with the License. You may obtain a copy of
005     * the License at http://www.mozilla.org/MPL/
006     *
007     * Software distributed under the License is distributed on an "AS
008     * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
009     * implied. See the License for the specific language governing
010     * rights and limitations under the License.
011     *
012     * The Original Code is Knowtator.
013     *
014     * The Initial Developer of the Original Code is University of Colorado.  
015     * Copyright (C) 2005 - 2008.  All Rights Reserved.
016     *
017     * Knowtator was developed by the Center for Computational Pharmacology
018     * (http://compbio.uchcs.edu) at the University of Colorado Health 
019     *  Sciences Center School of Medicine with support from the National 
020     *  Library of Medicine.  
021     *
022     * Current information about Knowtator can be obtained at 
023     * http://knowtator.sourceforge.net/
024     *
025     * Contributor(s):
026     *   Philip V. Ogren <philip@ogren.info> (Original Author)
027     */
028    package edu.uchsc.ccp.iaa.matcher;
029    
030    import java.util.Set;
031    
032    import edu.uchsc.ccp.iaa.Annotation;
033    import edu.uchsc.ccp.iaa.IAA;
034    
035    public interface Matcher {
036            /**
037             * @param annotation
038             *            the annotation that is to be matched
039             * @param compareSetName
040             *            the set of annotations that we will look for a match in
041             * @param excludeAnnotations
042             *            a set of annotations that cannot be the return value
043             * @param iaa
044             *            an instance of IAA from which to get information about
045             *            annotations
046             * @param matchResult
047             *            instantiate a new MatchType and pass it to the method. The
048             *            method must set the result to one of the four result values
049             *            given in MatchResult.
050             * @return the annotation that was matched. If none exists then return null.
051             */
052            public Annotation match(Annotation annotation, String compareSetName, Set<Annotation> excludeAnnotations, IAA iaa,
053                            MatchResult matchResult);
054    
055            public String getName();
056    
057            public String getDescription();
058    
059            public boolean returnsTrivials();
060    }