private boolean _has_graph;\r
\r
/**\r
- * annotation is associated with a\r
- * range on a particular group of alignment sequences\r
+ * annotation is associated with\r
+ * a range on a particular group of alignment\r
+ * sequences\r
*/\r
private java.util.Vector _seqrefs;\r
\r
if (obj instanceof AlignmentAnnotation) {\r
\r
AlignmentAnnotation temp = (AlignmentAnnotation)obj;\r
+ boolean thcycle;\r
+ boolean tmcycle;\r
if (this._graph != temp._graph)\r
return false;\r
if (this._has_graph != temp._has_graph)\r
return false;\r
if (this._seqrefs != null) {\r
if (temp._seqrefs == null) return false;\r
- else if (!(this._seqrefs.equals(temp._seqrefs))) \r
- return false;\r
- }\r
- else if (temp._seqrefs != null)\r
+ if (this._seqrefs != temp._seqrefs) {\r
+ thcycle=org.castor.util.CycleBreaker.startingToCycle(this._seqrefs);\r
+ tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._seqrefs);\r
+ if (thcycle!=tmcycle) {\r
+ if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._seqrefs); };\r
+ if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._seqrefs); };\r
+ return false;\r
+ }\r
+ if (!thcycle) {\r
+ if (!this._seqrefs.equals(temp._seqrefs)) {\r
+ org.castor.util.CycleBreaker.releaseCycleHandle(this._seqrefs);\r
+ org.castor.util.CycleBreaker.releaseCycleHandle(temp._seqrefs);\r
+ return false;\r
+ }\r
+ org.castor.util.CycleBreaker.releaseCycleHandle(this._seqrefs);\r
+ org.castor.util.CycleBreaker.releaseCycleHandle(temp._seqrefs);\r
+ }\r
+ }\r
+ } else if (temp._seqrefs != null)\r
return false;\r
if (this._provenance != null) {\r
if (temp._provenance == null) return false;\r
- else if (!(this._provenance.equals(temp._provenance))) \r
- return false;\r
- }\r
- else if (temp._provenance != null)\r
+ if (this._provenance != temp._provenance) {\r
+ thcycle=org.castor.util.CycleBreaker.startingToCycle(this._provenance);\r
+ tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._provenance);\r
+ if (thcycle!=tmcycle) {\r
+ if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._provenance); };\r
+ if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._provenance); };\r
+ return false;\r
+ }\r
+ if (!thcycle) {\r
+ if (!this._provenance.equals(temp._provenance)) {\r
+ org.castor.util.CycleBreaker.releaseCycleHandle(this._provenance);\r
+ org.castor.util.CycleBreaker.releaseCycleHandle(temp._provenance);\r
+ return false;\r
+ }\r
+ org.castor.util.CycleBreaker.releaseCycleHandle(this._provenance);\r
+ org.castor.util.CycleBreaker.releaseCycleHandle(temp._provenance);\r
+ }\r
+ }\r
+ } else if (temp._provenance != null)\r
return false;\r
return true;\r
}\r
\r
long tmp;\r
result = 37 * result + (_graph?0:1);\r
- if (_seqrefs != null) {\r
+ if (_seqrefs != null\r
+ && !org.castor.util.CycleBreaker.startingToCycle(_seqrefs)) {\r
result = 37 * result + _seqrefs.hashCode();\r
+ org.castor.util.CycleBreaker.releaseCycleHandle(_seqrefs);\r
}\r
- if (_provenance != null) {\r
+ if (_provenance != null\r
+ && !org.castor.util.CycleBreaker.startingToCycle(_provenance)) {\r
result = 37 * result + _provenance.hashCode();\r
+ org.castor.util.CycleBreaker.releaseCycleHandle(_provenance);\r
}\r
\r
return result;\r