package org.maltparser.core.symbol.nullvalue;
import org.maltparser.core.symbol.SymbolTable;
/**
*
*
* @author Johan Hall
* @since 1.0
*/
public class OutputNullValues extends NullValues {
public OutputNullValues(String nullValueStrategy, SymbolTable table) {
super(table);
setNullValueEncoding(nullValueStrategy);
makeNullValues();
}
protected void setNullValueEncoding(String nullValueStrategy) {
setNullValueStrategy(nullValueStrategy);
if (nullValueStrategy.equalsIgnoreCase("none")) {
nullValueEncoding = NullValueDegree.NONE;
} else if (nullValueStrategy.equalsIgnoreCase("rootnode")) {
nullValueEncoding = NullValueDegree.ROOTNODE;
} else if (nullValueStrategy.equalsIgnoreCase("novalue")) {
nullValueEncoding = NullValueDegree.NOVALUE;
} else {
nullValueEncoding = NullValueDegree.ONE;
}
}
protected void makeNullValues() {
if (nullValueEncoding == NullValueDegree.NONE || nullValueEncoding == NullValueDegree.ONE) {
nullValue2SymbolMap.put(NullValueId.NO_NODE, "#null#");
nullValue2SymbolMap.put(NullValueId.ROOT_NODE, "#null#");
nullValue2SymbolMap.put(NullValueId.NO_VALUE, "#null#");
nullValue2CodeMap.put(NullValueId.NO_NODE, 0);
nullValue2CodeMap.put(NullValueId.ROOT_NODE, 0);
nullValue2CodeMap.put(NullValueId.NO_VALUE, 0);
symbol2CodeMap.put("#null#", 0);
code2SymbolMap.put(0, "#null#");
setNextCode(1);
} else if (nullValueEncoding == NullValueDegree.ROOTNODE) {
nullValue2SymbolMap.put(NullValueId.NO_NODE, "#null#");
nullValue2SymbolMap.put(NullValueId.ROOT_NODE, "#rootnode#");
nullValue2SymbolMap.put(NullValueId.NO_VALUE, "#rootnode#"); // maybe #null#
nullValue2CodeMap.put(NullValueId.NO_NODE, 0);
nullValue2CodeMap.put(NullValueId.ROOT_NODE, 1);
nullValue2CodeMap.put(NullValueId.NO_VALUE, 1); // maybe 0
symbol2CodeMap.put("#null#", 0);
symbol2CodeMap.put("#rootnode#", 1);
code2SymbolMap.put(0, "#null#");
code2SymbolMap.put(1, "#rootnode#");
setNextCode(2);
} else if (nullValueEncoding == NullValueDegree.NOVALUE) {
nullValue2SymbolMap.put(NullValueId.NO_NODE, "#null#");
nullValue2SymbolMap.put(NullValueId.ROOT_NODE, "#rootnode#");
nullValue2SymbolMap.put(NullValueId.NO_VALUE, "#novalue#");
nullValue2CodeMap.put(NullValueId.NO_NODE, 0);
nullValue2CodeMap.put(NullValueId.ROOT_NODE, 1);
nullValue2CodeMap.put(NullValueId.NO_VALUE, 2);
symbol2CodeMap.put("#null#", 0);
symbol2CodeMap.put("#rootnode#", 1);
symbol2CodeMap.put("#novalue#", 2);
code2SymbolMap.put(0, "#null#");
code2SymbolMap.put(1, "#rootnode#");
code2SymbolMap.put(1, "#novalue#");
setNextCode(3);
}
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
return sb.toString();
}
}