001    package org.maltparser.parser.history.container;
002    
003    
004    import org.maltparser.core.exception.MaltChainedException;
005    import org.maltparser.core.symbol.Table;
006    /**
007    *
008    * @author Johan Hall
009    **/
010    public class ActionContainer {
011            private int actionCode;
012            private String actionSymbol;
013            private Table table;
014            private String name;
015            
016            public ActionContainer(TableContainer tableContainer) {
017                    this.table = tableContainer.getTable();
018                    this.name = tableContainer.getTableContainerName();
019                    clear();
020            }
021            
022            public void clear() {
023                    actionCode = -1;
024                    actionSymbol = null;
025            }
026    
027            public String getActionSymbol() {
028                    return actionSymbol;
029            }
030            
031            public int getActionCode() {
032                    return actionCode;
033            }
034            
035            public String setAction(int code) throws MaltChainedException {
036                    if (actionCode != code) {
037                            if (code < 0) {
038                                    clear();
039                            } else {
040                                    actionSymbol = table.getSymbolCodeToString(code);
041                                    if (actionSymbol == null) {
042                                            clear();
043                                    } else {
044                                            actionCode = code;
045                                    }
046                            }
047                    }
048                    return actionSymbol;
049            }
050            
051            public int setAction(String symbol) throws MaltChainedException {
052                    if (symbol == null) {
053                            clear();
054                    } else {
055                            actionCode = table.getSymbolStringToCode(symbol);
056                            if (actionCode == -1) {
057                                    clear();
058                            } else {
059                                    actionSymbol = symbol;
060                            }
061                    }
062                    return actionCode;
063            }
064            
065            public Table getTable() {
066                    return table;
067            }
068            
069            public String getTableName() {
070                    if (table == null) {
071                            return null;
072                    }
073                    return table.getName();         
074            }
075            
076            public String getTableContainerName() {
077                    return name;
078            }
079    
080    
081            
082            public String toString() {
083                    final StringBuilder sb = new StringBuilder();
084                    sb.append(name);
085                    sb.append(" -> ");
086                    sb.append(actionSymbol);
087                    sb.append(" = ");
088                    sb.append(actionCode);
089                    return sb.toString();
090            }
091    }