001    /*
002     *                    BioJava development code
003     *
004     * This code may be freely distributed and modified under the
005     * terms of the GNU Lesser General Public Licence.  This should
006     * be distributed with the code.  If you do not have a copy,
007     * see:
008     *
009     *      http://www.gnu.org/copyleft/lesser.html
010     *
011     * Copyright for this code is held jointly by the individual
012     * authors.  These should be listed in @author doc comments.
013     *
014     * For more information on the BioJava project and its aims,
015     * or to join the biojava-l mailing list, visit the home page
016     * at:
017     *
018     *      http://www.biojava.org/
019     *
020     * Created on 01-21-2010
021     *
022     * @author Richard Holland
023     *
024     *
025     */
026    package org.biojava3.core.sequence.template;
027    
028    import java.util.List;
029    import java.util.Set;
030    
031    import org.biojava3.core.exceptions.CompoundNotFoundError;
032    
033    public interface CompoundSet<C extends Compound> {
034    
035        /**
036         * Returns the maximum size of a compound String this set holds
037         */
038            public int getMaxSingleCompoundStringLength();
039    
040        /**
041         * Returns true if all String representations of Compounds are of the
042         * same length.
043         */
044        public boolean isCompoundStringLengthEqual();
045    
046            /**
047             * Return null if not recognised. Throw IllegalArgumentException if string
048             * is longer than maximum allowed by {@link #getStringForCompound(Compound)}.
049             */
050            public C getCompoundForString(String string);
051    
052            public String getStringForCompound(C compound);
053    
054            public boolean compoundsEquivalent(C compoundOne, C compoundTwo);
055    
056            public void verifySequence(Sequence<C> sequence) throws CompoundNotFoundError;
057    
058            public Set<C> getEquivalentCompounds(C compound);
059    
060            public boolean hasCompound(C compound);
061    
062            public List<C> getAllCompounds();
063    
064        boolean isComplementable();
065    }