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 }