package edu.isi.karma.modeling.alignment;
import edu.isi.karma.modeling.alignment.learner.LinkCoherence;
import edu.isi.karma.rep.alignment.LabeledLink;
public class AlignmentScore implements Comparable<AlignmentScore>{
private LabeledLink link;
private LinkCoherence linkCoherence;
private double cost;
public AlignmentScore(LinkCoherence linkCoherence, double cost) {
this.linkCoherence = new LinkCoherence(linkCoherence);
this.cost = cost;
}
public AlignmentScore(LabeledLink link, AlignmentScore a) {
this.link = link;
if (a != null && link != null) {
this.linkCoherence = new LinkCoherence(a.getLinkCoherence());
this.linkCoherence.updateCoherence(this.link);
this.cost = a.getCost() + link.getWeight();
}
}
public LabeledLink getLink() {
return link;
}
public LinkCoherence getLinkCoherence() {
return linkCoherence;
}
public double getCost() {
return cost;
}
@Override
public int compareTo(AlignmentScore a) {
int lessThan = 1;
int greaterThan = -1;
double linkCoherence1 = this.linkCoherence.getCoherenceValue();
double linkCoherence2 = a.linkCoherence.getCoherenceValue();
if (linkCoherence1 > linkCoherence2)
return greaterThan;
else if (linkCoherence1 < linkCoherence2)
return lessThan;
if (this.cost < a.cost)
return greaterThan;
else if (a.cost < this.cost)
return lessThan;
return 0;
}
}