001 package org.maltparser.core.syntaxgraph.edge;
002
003 import org.maltparser.core.exception.MaltChainedException;
004 import org.maltparser.core.syntaxgraph.Weightable;
005 import org.maltparser.core.syntaxgraph.node.Node;
006 /**
007 *
008 *
009 * @author Johan Hall
010 */
011 public class WeightedEdge extends GraphEdge implements Weightable {
012 private Double weight = Double.NaN;
013
014 public WeightedEdge() { }
015
016 public WeightedEdge(Node source, Node target, int type) throws MaltChainedException {
017 super(source, target, type);
018 }
019
020 public WeightedEdge(Node source, Node target, int type, Double weight) throws MaltChainedException {
021 super(source, target, type);
022 setWeight(weight);
023 }
024
025 public void clear() throws MaltChainedException {
026 super.clear();
027 weight = Double.NaN;
028 }
029
030 public double getWeight() {
031 return weight.doubleValue();
032 }
033
034 public void setWeight(double weight) {
035 this.weight = weight;
036 }
037
038 public int compareTo(WeightedEdge that) {
039 if (this == that) return 0;
040 int comparison = this.weight.compareTo(that.getWeight());
041 if ( comparison != 0 ) return comparison;
042
043 return super.compareTo(that);
044 }
045
046 public boolean equals(Object obj) {
047 WeightedEdge e = (WeightedEdge)obj;
048 return weight.equals(e.getWeight()) && super.equals(obj);
049 }
050
051 public int hashCode() {
052 int hash = 7;
053 hash = 31 * hash + (null == weight ? 0 : weight.hashCode());
054 return 31 * hash + super.hashCode();
055 }
056
057 public String toString() {
058 final StringBuilder sb = new StringBuilder();
059 sb.append(getWeight());
060 sb.append(' ');
061 sb.append(getSource().getIndex());
062 sb.append("->");
063 sb.append(getTarget().getIndex());
064 sb.append(' ');
065 sb.append(super.toString());
066 return sb.toString();
067 }
068 }