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}