package org.maltparser.core.syntaxgraph.edge;
import org.maltparser.core.exception.MaltChainedException;
import org.maltparser.core.syntaxgraph.Weightable;
import org.maltparser.core.syntaxgraph.node.Node;
/**
*
*
* @author Johan Hall
*/
public class WeightedEdge extends GraphEdge implements Weightable {
private Double weight = Double.NaN;
public WeightedEdge() {
}
public WeightedEdge(Node source, Node target, int type) throws MaltChainedException {
super(source, target, type);
}
public WeightedEdge(Node source, Node target, int type, Double weight) throws MaltChainedException {
super(source, target, type);
setWeight(weight);
}
@Override
public void clear() throws MaltChainedException {
super.clear();
weight = Double.NaN;
}
public double getWeight() {
return weight.doubleValue();
}
public void setWeight(double weight) {
this.weight = weight;
}
public int compareTo(WeightedEdge that) {
if (this == that) {
return 0;
}
int comparison = this.weight.compareTo(that.getWeight());
if (comparison != 0) {
return comparison;
}
return super.compareTo(that);
}
@Override
public boolean equals(Object obj) {
WeightedEdge e = (WeightedEdge) obj;
return weight.equals(e.getWeight()) && super.equals(obj);
}
@Override
public int hashCode() {
int hash = 7;
hash = 31 * hash + (null == weight ? 0 : weight.hashCode());
return 31 * hash + super.hashCode();
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append(getWeight());
sb.append(' ');
sb.append(getSource().getIndex());
sb.append("->");
sb.append(getTarget().getIndex());
sb.append(' ');
sb.append(super.toString());
return sb.toString();
}
}