    001    package org.maltparser.core.symbol.nullvalue;
    002
    003    import org.maltparser.core.symbol.SymbolTable;
    004    /**
    005
    006
    007    @author Johan Hall
    008    @since 1.0
    009     */
    010    public class OutputNullValues extends NullValues {
    011
    012            public OutputNullValues(String nullValueStrategy, SymbolTable table) {
    013                    super(table);
    014
    015                    setNullValueEncoding(nullValueStrategy);
    016                    makeNullValues();
    017            }
    018
    019            protected void setNullValueEncoding(String nullValueStrategy) {
    020                    setNullValueStrategy(nullValueStrategy);
    021                    if (nullValueStrategy.equalsIgnoreCase("none")) {
    022                            nullValueEncoding = NullValueDegree.NONE;
    023                    } else if (nullValueStrategy.equalsIgnoreCase("rootnode")) {
    024                            nullValueEncoding = NullValueDegree.ROOTNODE;
    025                    } else if (nullValueStrategy.equalsIgnoreCase("novalue")) {
    026                            nullValueEncoding = NullValueDegree.NOVALUE;
    027                    } else {
    028                            nullValueEncoding = NullValueDegree.ONE;
    029                    }
    030            }
    031
    032            protected void makeNullValues() {
    033                    if (nullValueEncoding == NullValueDegree.NONE || nullValueEncoding == NullValueDegree.ONE) {
    034                            nullValue2SymbolMap.put(NullValueId.NO_NODE, "#null#");
    035                            nullValue2SymbolMap.put(NullValueId.ROOT_NODE, "#null#");
    036                            nullValue2SymbolMap.put(NullValueId.NO_VALUE, "#null#");
    037                            nullValue2CodeMap.put(NullValueId.NO_NODE, 0);
    038                            nullValue2CodeMap.put(NullValueId.ROOT_NODE, 0);
    039                            nullValue2CodeMap.put(NullValueId.NO_VALUE, 0);
    040                            symbol2CodeMap.put("#null#", 0);
    041                            code2SymbolMap.put(0, "#null#");
    042                            setNextCode(1);
    043                    } else if (nullValueEncoding == NullValueDegree.ROOTNODE) {
    044                            nullValue2SymbolMap.put(NullValueId.NO_NODE, "#null#");
    045                            nullValue2SymbolMap.put(NullValueId.ROOT_NODE, "#rootnode#");
    046                            nullValue2SymbolMap.put(NullValueId.NO_VALUE, "#rootnode#"); // maybe #null#
    047                            nullValue2CodeMap.put(NullValueId.NO_NODE, 0);
    048                            nullValue2CodeMap.put(NullValueId.ROOT_NODE, 1);
    049                            nullValue2CodeMap.put(NullValueId.NO_VALUE, 1); // maybe 0
    050                            symbol2CodeMap.put("#null#", 0);
    051                            symbol2CodeMap.put("#rootnode#", 1);
    052                            code2SymbolMap.put(0, "#null#");
    053                            code2SymbolMap.put(1, "#rootnode#");
    054                            setNextCode(2);
    055                    } else if (nullValueEncoding == NullValueDegree.NOVALUE) {
    056                            nullValue2SymbolMap.put(NullValueId.NO_NODE, "#null#");
    057                            nullValue2SymbolMap.put(NullValueId.ROOT_NODE, "#rootnode#");
    058                            nullValue2SymbolMap.put(NullValueId.NO_VALUE, "#novalue#");
    059                            nullValue2CodeMap.put(NullValueId.NO_NODE, 0);
    060                            nullValue2CodeMap.put(NullValueId.ROOT_NODE, 1);
    061                            nullValue2CodeMap.put(NullValueId.NO_VALUE, 2);
    062                            symbol2CodeMap.put("#null#", 0);
    063                            symbol2CodeMap.put("#rootnode#", 1);
    064                            symbol2CodeMap.put("#novalue#", 2);
    065                            code2SymbolMap.put(0, "#null#");
    066                            code2SymbolMap.put(1, "#rootnode#");
    067                            code2SymbolMap.put(1, "#novalue#");
    068                            setNextCode(3);
    069                    }
    070            }
    071
    072            public String toString() {
    073                    StringBuilder sb = new StringBuilder();
    074
    075                    return sb.toString();
    076            }
    077    }