    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    * @since 1.1
    010    **/
    011    public class ActionContainer {
    012            protected int actionCode;
    013            protected String actionSymbol;
    014            protected Table table;
    015            protected String name;
    016
    017            public ActionContainer(TableContainer tableContainer) {
    018                    setTable(tableContainer.getTable());
    019                    setName(tableContainer.getTableContainerName());
    020                    clear();
    021            }
    022
    023            public void clear() {
    024                    actionCode = -1;
    025                    actionSymbol = null;
    026            }
    027
    028            public String getActionSymbol() {
    029                    return actionSymbol;
    030            }
    031
    032            public int getActionCode() {
    033                    return actionCode;
    034            }
    035
    036            public String setAction(int code) throws MaltChainedException {
    037                    if (actionCode != code) {
    038                            if (code < 0) {
    039                                    clear();
    040                            } else {
    041                                    actionSymbol = table.getSymbolCodeToString(code);
    042                                    if (actionSymbol == null) {
    043                                            clear();
    044                                    } else {
    045                                            actionCode = code;
    046                                    }
    047                            }
    048                    }
    049                    return actionSymbol;
    050            }
    051
    052            public int setAction(String symbol) throws MaltChainedException {
    053                    if (symbol == null) {
    054                            clear();
    055                    } else {
    056                            actionCode = table.getSymbolStringToCode(symbol);
    057                            if (actionCode == -1) {
    058                                    clear();
    059                            } else {
    060                                    actionSymbol = symbol;
    061                            }
    062                    }
    063                    return actionCode;
    064            }
    065
    066            public Table getTable() {
    067                    return table;
    068            }
    069
    070            public String getTableName() {
    071                    if (table == null) {
    072                            return null;
    073                    }
    074                    return table.getName();
    075            }
    076
    077            public String getTableContainerName() {
    078                    return name;
    079            }
    080
    081            public void setTable(Table table) {
    082                    this.table = table;
    083            }
    084
    085            protected void setName(String name) {
    086                    this.name = name;
    087            }
    088
    089            public String toString() {
    090                    final StringBuilder sb = new StringBuilder();
    091                    sb.append(name);
    092                    sb.append(" -> ");
    093                    sb.append(actionSymbol);
    094                    sb.append(" = ");
    095                    sb.append(actionCode);
    096                    return sb.toString();
    097            }
    098    }