001 package org.maltparser.core.syntaxgraph.headrules;
002
003 import org.maltparser.core.exception.MaltChainedException;
004 import org.maltparser.core.io.dataformat.ColumnDescription;
005 import org.maltparser.core.symbol.SymbolTable;
006 /**
007 *
008 *
009 * @author Johan Hall
010 */
011 public class PrioSetMember {
012 protected enum RelationToPrevMember {
013 START, DISJUNCTION, CONJUNCTION
014 };
015 protected PrioSet prioSet;
016 protected SymbolTable table;
017 protected ColumnDescription column;
018 protected int symbolCode;
019 protected RelationToPrevMember relationToPrevMember;
020
021 public PrioSetMember(PrioSet prioSet, SymbolTable table, ColumnDescription column, int symbolCode, RelationToPrevMember relationToPrevMember) {
022 setPrioSet(prioSet);
023 setTable(table);
024 setColumn(column);
025 setSymbolCode(symbolCode);
026 setRelationToPrevMember(relationToPrevMember);
027 }
028
029 public PrioSetMember(PrioSet prioSet, SymbolTable table, ColumnDescription column, String symbolString, RelationToPrevMember relationToPrevMember) throws MaltChainedException {
030 setPrioSet(prioSet);
031 setTable(table);
032 setColumn(column);
033 if (table != null) {
034 setSymbolCode(table.getSymbolStringToCode(symbolString));
035 } else {
036 setSymbolCode(-1);
037 }
038 setRelationToPrevMember(relationToPrevMember);
039 }
040
041 public PrioSet getPrioSet() {
042 return prioSet;
043 }
044
045 public void setPrioSet(PrioSet prioSet) {
046 this.prioSet = prioSet;
047 }
048
049
050 public ColumnDescription getColumn() {
051 return column;
052 }
053
054 public void setColumn(ColumnDescription column) {
055 this.column = column;
056 }
057
058 public SymbolTable getTable() {
059 return table;
060 }
061
062 public void setTable(SymbolTable table) {
063 this.table = table;
064 }
065
066 public int getSymbolCode() {
067 return symbolCode;
068 }
069
070 public String getSymbolString() throws MaltChainedException {
071 if (table != null && symbolCode >= 0) {
072 return table.getSymbolCodeToString(symbolCode);
073 } else {
074 return null;
075 }
076 }
077
078 public void setSymbolCode(int symbolCode) {
079 this.symbolCode = symbolCode;
080 }
081
082 public RelationToPrevMember getRelationToPrevMember() {
083 return relationToPrevMember;
084 }
085
086 public void setRelationToPrevMember(RelationToPrevMember relationToPrevMember) {
087 this.relationToPrevMember = relationToPrevMember;
088 }
089
090 public int hashCode() {
091 final int prime = 31;
092 int result = 1;
093 result = prime * result + symbolCode;
094 result = prime
095 * result
096 + ((relationToPrevMember == null) ? 0 : relationToPrevMember
097 .hashCode());
098 return result;
099 }
100
101
102 public boolean equals(Object obj) {
103 if (this == obj)
104 return true;
105 if (obj == null)
106 return false;
107 if (getClass() != obj.getClass())
108 return false;
109 PrioSetMember other = (PrioSetMember) obj;
110 if (symbolCode != other.symbolCode)
111 return false;
112 if (relationToPrevMember == null) {
113 if (other.relationToPrevMember != null)
114 return false;
115 } else if (!relationToPrevMember.equals(other.relationToPrevMember))
116 return false;
117
118 return true;
119 }
120
121 public String toString() {
122 final StringBuilder sb = new StringBuilder();
123 sb.append(table.getName());
124 sb.append(':');
125 try {
126 sb.append(getSymbolString());
127 } catch (MaltChainedException e) {
128 if (prioSet.getLogger().isDebugEnabled()) {
129 prioSet.getLogger().debug("",e);
130 } else {
131 prioSet.getLogger().error(e.getMessageChain());
132 }
133 }
134 return sb.toString();
135 }
136 }