001    package org.maltparser.core.syntaxgraph;
002    
003    import java.util.Set;
004    
005    import org.maltparser.core.exception.MaltChainedException;
006    import org.maltparser.core.symbol.SymbolTable;
007    /**
008    *
009    *
010    * @author Johan Hall
011    */
012    public interface Element {
013            /**
014             * Adds a label (a string value) to the symbol table and to the graph element. 
015             * 
016             * @param table the symbol table
017             * @param symbol a label symbol
018             * @throws MaltChainedException
019             */
020            public void addLabel(SymbolTable table, String symbol) throws MaltChainedException;
021            /**
022             * Adds a label (an integer value) to the symbol table and to the graph element.
023             * 
024             * @param table the symbol table
025             * @param code a label code
026             * @throws MaltChainedException
027             */
028            public void addLabel(SymbolTable table, int code) throws MaltChainedException;
029            /**
030             * Adds the labels of the label set to the label set of the graph element.
031             * 
032             * @param labelSet a label set.
033             * @throws MaltChainedException
034             */
035            public void addLabel(LabelSet labelSet) throws MaltChainedException;
036            /**
037             * Returns <i>true</i> if the graph element has a label for the symbol table, otherwise <i>false</i>.
038             * 
039             * @param table the symbol table
040             * @return <i>true</i> if the graph element has a label for the symbol table, otherwise <i>false</i>.
041             * @throws MaltChainedException
042             */
043            public boolean hasLabel(SymbolTable table) throws MaltChainedException;
044            /**
045             * Returns the label symbol(a string representation) of the symbol table if it exists, otherwise 
046             * an exception is thrown.
047             * 
048             * @param table the symbol table
049             * @return the label (a string representation) of the symbol table if it exists.
050             * @throws MaltChainedException
051             */
052            public String getLabelSymbol(SymbolTable table) throws MaltChainedException;
053            /**
054             * Returns the label code (an integer representation) of the symbol table if it exists, otherwise 
055             * an exception is thrown.
056             * 
057             * @param table the symbol table
058             * @return the label code (an integer representation) of the symbol table if it exists
059             * @throws MaltChainedException
060             */
061            public int getLabelCode(SymbolTable table) throws MaltChainedException;
062            /**
063             * Returns <i>true</i> if the graph element has one or more labels, otherwise <i>false</i>.
064             * 
065             * @return <i>true</i> if the graph element has one or more labels, otherwise <i>false</i>.
066             */
067            public boolean isLabeled();
068            /**
069             * Returns the number of labels of the graph element.
070             * 
071             * @return the number of labels of the graph element.
072             */
073            public int nLabels();
074            /**
075             * Returns a set of symbol tables (labeling functions or label types) that labels the graph element.
076             * 
077             * @return a set of symbol tables (labeling functions or label types)
078             */
079            public Set<SymbolTable> getLabelTypes();
080            /**
081             * Returns the label set.
082             * 
083             * @return the label set.
084             */
085            public LabelSet getLabelSet();
086            
087            public void removeLabel(SymbolTable table) throws MaltChainedException;
088            public void removeLabels() throws MaltChainedException;
089            
090            /**
091             * Returns the graph (structure) in which the graph element belongs to. 
092             * 
093             * @return the graph (structure) in which the graph element belongs to. 
094             */
095            public SyntaxGraph getBelongsToGraph();
096            /**
097             * Sets the graph (structure) in which the graph element belongs to. 
098             * 
099             * @param belongsToGraph a graph (structure).
100             */
101            public void setBelongsToGraph(SyntaxGraph belongsToGraph);
102            /**
103             * Resets the graph element.
104             * 
105             * @throws MaltChainedException
106             */
107            public void clear() throws MaltChainedException;
108    }