001package org.maltparser.core.symbol.nullvalue;
002
003import org.maltparser.core.symbol.SymbolTable;
004/**
005
006
007@author Johan Hall
008@since 1.0
009 */
010public 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(2, "#novalue#");
068                        setNextCode(3);
069                }
070        }
071        
072        public String toString() {
073                StringBuilder sb = new StringBuilder();
074                
075                return sb.toString();
076        }
077}