package net.jaekl.cfb.store;
+import java.io.PrintWriter;
+
+import net.jaekl.cfb.util.Util;
import net.jaekl.cfb.xml.BugClass;
import net.jaekl.cfb.xml.BugMethod;
import net.jaekl.cfb.xml.SourceLine;
public class Location {
+ public static final String METHOD_CALLED = "METHOD_CALLED";
+
Long m_id;
String m_className;
String m_methodName;
String m_methodRole;
- int m_startLine;
- int m_endLine;
+ Integer m_startLine;
+ Integer m_endLine;
public Location(SourceLine sourceLine)
{
m_className = bugClass.getClassName();
}
- public Location(Long id, String className, String methodName, String methodRole, long startLine, long endLine)
+ public Location(Long id, String className, String methodName, String methodRole, Integer startLine, Integer endLine)
{
-
+ m_id = id;
+ m_className = className;
+ m_methodName = methodName;
+ m_methodRole = methodRole;
+ m_startLine = startLine;
+ m_endLine = endLine;
}
public String getClassName() { return m_className; }
public int getStart() { return m_startLine; }
public int getEnd() { return m_endLine; }
+ public void dump(PrintWriter pw, int indent)
+ {
+ String margin = String.format("%" + indent + "s", "");
+ String tab = margin + " ";
+ pw.println(margin + "Location");
+ if (null != m_className) {
+ pw.println(tab + "classname = " + m_className);
+ }
+ if (null != m_methodName) {
+ if (null != m_methodRole) {
+ pw.println(tab + "method = " + m_methodName + " (" + m_methodRole + ")");
+ }
+ else {
+ pw.println(tab + "method = " + m_methodName);
+ }
+ }
+ if (null != m_startLine) {
+ pw.println(tab + "lines = " + m_startLine + " .. " + m_endLine);
+ }
+ }
+
+ public boolean fuzzyEquals(Location that)
+ {
+ if (null == that) {
+ return false;
+ }
+
+ if (! Util.objsAreEqual(this.m_className, that.m_className)) {
+ return false;
+ }
+
+ if (! Util.objsAreEqual(this.m_methodName, that.m_methodName)) {
+ return false;
+ }
+
+ if (! Util.objsAreEqual(this.m_methodRole, that.m_methodRole)) {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public boolean equals(Object other)
+ {
+ if (null == other) {
+ return false;
+ }
+ if (other instanceof Location) {
+ return fuzzyEquals((Location)other);
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return Util.objHashCode(m_className)
+ ^ Util.objHashCode(m_methodName)
+ ^ Util.objHashCode(m_methodRole);
+ }
+
private void init(SourceLine[] sourceLines)
{
if (sourceLines.length > 0) {