001package org.maltparser.core.syntaxgraph.headrules; 002 003import org.maltparser.core.exception.MaltChainedException; 004import org.maltparser.core.io.dataformat.ColumnDescription; 005import org.maltparser.core.symbol.SymbolTable; 006/** 007* 008* 009* @author Johan Hall 010*/ 011public 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}