package kr.ac.snu.selab.soot.graph.refgraph;
import java.io.CharArrayWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import kr.ac.snu.selab.soot.analyzer.LocalInfo;
import kr.ac.snu.selab.soot.graph.Node;
import kr.ac.snu.selab.soot.util.XMLWriter;
import org.apache.log4j.Logger;
public class LocalInfoNode extends Node {
private static Logger log = Logger.getLogger(LocalInfoNode.class);
private ArrayList<LocalInfoNode> sourceNodes, targetNodes;
public LocalInfoNode(LocalInfo element) {
super(element);
sourceNodes = new ArrayList<LocalInfoNode>();
targetNodes = new ArrayList<LocalInfoNode>();
}
List<LocalInfoNode> getSources() {
return sourceNodes;
}
List<LocalInfoNode> getTargets() {
return targetNodes;
}
public int hashCode() {
return element.toString().hashCode();
}
@Override
public boolean equals(Object o) {
if (o.getClass() != getClass())
return false;
LocalInfoNode compare = (LocalInfoNode) o;
return element.equals(compare.element);
}
@Override
public String toXML() {
CharArrayWriter writer = new CharArrayWriter();
XMLWriter w = new XMLWriter(writer);
writeXML(w);
w.close();
return writer.toString();
}
@Override
public void writeXML(XMLWriter writer) {
try {
writer.simpleElement("LocalInfo", element.toString());
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
void addSource(LocalInfoNode node) {
sourceNodes.add(node);
}
void addTarget(LocalInfoNode node) {
targetNodes.add(node);
}
@Override
public String toString() {
if (element == null)
return "Empty node";
return element.toString();
}
}