package org.societies.context.user.refinement.impl.bayesianLibrary.inference.structures.impl;
import org.societies.context.user.refinement.impl.bayesianLibrary.inference.structures.interfaces.ConnectingNodes;
/**
* @author fran_ko
*
*/
public class UndirectedEdge implements ConnectingNodes {
private Node border1;
private Node border2;
public UndirectedEdge(Node source, Node target)
{
border1 = source;
border2 = target;
}
public String toString()
{
return border1 +" ---- "+ border2 + "\n";
}
/* (non-Javadoc)
* @see structures.ConnectingNodes#getBorder1()
*/
public Node getBorder1() {
return border1;
}
/* (non-Javadoc)
* @see structures.ConnectingNodes#getBorder2()
*/
public Node getBorder2() {
return border2;
}
/**
* input: 2 Nodes
* tests if this edge has the same borders
*
* returns 0 if not
* 1 if same source and same target
* -1 if source and target are switched
*/
public int hasBorders(Node s, Node t){
if (!s.equals(this.border1)){
if (!s.equals(this.border2)) return 0;
else if (t.equals(border1)) return -1;
}
else if (t.equals(border2)) return 1;
return 0;
//
}
public boolean equals(Object ue){
if (ue instanceof UndirectedEdge) return (hasBorders(((UndirectedEdge)ue).border1,((UndirectedEdge)ue).border2)!=0);
else return false;
}
/* (non-Javadoc)
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
public int compareTo(Object arg0) {
return toString().compareTo(((UndirectedEdge)arg0).toString());
}
}