X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fuk%2Fac%2Fvamsas%2Fobjects%2Fcore%2FRangeType.java;h=3e1f6da181a70c54000388f6da10b310b1166a94;hb=1890f014c0a312a7a2203c878e4802e3eb914e47;hp=91338e28f4711b3176a3d3707cd0181e4cdb3aea;hpb=de558440c776d39285b02d970a21df7002e85a3c;p=vamsas.git diff --git a/src/uk/ac/vamsas/objects/core/RangeType.java b/src/uk/ac/vamsas/objects/core/RangeType.java index 91338e2..3e1f6da 100644 --- a/src/uk/ac/vamsas/objects/core/RangeType.java +++ b/src/uk/ac/vamsas/objects/core/RangeType.java @@ -155,26 +155,73 @@ implements java.io.Serializable if (obj instanceof RangeType) { RangeType temp = (RangeType)obj; + boolean thcycle; + boolean tmcycle; if (this._choiceValue != null) { if (temp._choiceValue == null) return false; - else if (!(this._choiceValue.equals(temp._choiceValue))) - return false; - } - else if (temp._choiceValue != null) + if (this._choiceValue != temp._choiceValue) { + thcycle=org.castor.util.CycleBreaker.startingToCycle(this._choiceValue); + tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._choiceValue); + if (thcycle!=tmcycle) { + if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._choiceValue); }; + if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._choiceValue); }; + return false; + } + if (!thcycle) { + if (!this._choiceValue.equals(temp._choiceValue)) { + org.castor.util.CycleBreaker.releaseCycleHandle(this._choiceValue); + org.castor.util.CycleBreaker.releaseCycleHandle(temp._choiceValue); + return false; + } + org.castor.util.CycleBreaker.releaseCycleHandle(this._choiceValue); + org.castor.util.CycleBreaker.releaseCycleHandle(temp._choiceValue); + } + } + } else if (temp._choiceValue != null) return false; if (this._posList != null) { if (temp._posList == null) return false; - else if (!(this._posList.equals(temp._posList))) - return false; - } - else if (temp._posList != null) + if (this._posList != temp._posList) { + thcycle=org.castor.util.CycleBreaker.startingToCycle(this._posList); + tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._posList); + if (thcycle!=tmcycle) { + if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._posList); }; + if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._posList); }; + return false; + } + if (!thcycle) { + if (!this._posList.equals(temp._posList)) { + org.castor.util.CycleBreaker.releaseCycleHandle(this._posList); + org.castor.util.CycleBreaker.releaseCycleHandle(temp._posList); + return false; + } + org.castor.util.CycleBreaker.releaseCycleHandle(this._posList); + org.castor.util.CycleBreaker.releaseCycleHandle(temp._posList); + } + } + } else if (temp._posList != null) return false; if (this._segList != null) { if (temp._segList == null) return false; - else if (!(this._segList.equals(temp._segList))) - return false; - } - else if (temp._segList != null) + if (this._segList != temp._segList) { + thcycle=org.castor.util.CycleBreaker.startingToCycle(this._segList); + tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._segList); + if (thcycle!=tmcycle) { + if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._segList); }; + if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._segList); }; + return false; + } + if (!thcycle) { + if (!this._segList.equals(temp._segList)) { + org.castor.util.CycleBreaker.releaseCycleHandle(this._segList); + org.castor.util.CycleBreaker.releaseCycleHandle(temp._segList); + return false; + } + org.castor.util.CycleBreaker.releaseCycleHandle(this._segList); + org.castor.util.CycleBreaker.releaseCycleHandle(temp._segList); + } + } + } else if (temp._segList != null) return false; return true; } @@ -320,14 +367,20 @@ implements java.io.Serializable int result = super.hashCode(); long tmp; - if (_choiceValue != null) { + if (_choiceValue != null + && !org.castor.util.CycleBreaker.startingToCycle(_choiceValue)) { result = 37 * result + _choiceValue.hashCode(); + org.castor.util.CycleBreaker.releaseCycleHandle(_choiceValue); } - if (_posList != null) { + if (_posList != null + && !org.castor.util.CycleBreaker.startingToCycle(_posList)) { result = 37 * result + _posList.hashCode(); + org.castor.util.CycleBreaker.releaseCycleHandle(_posList); } - if (_segList != null) { + if (_segList != null + && !org.castor.util.CycleBreaker.startingToCycle(_segList)) { result = 37 * result + _segList.hashCode(); + org.castor.util.CycleBreaker.releaseCycleHandle(_segList); } return result;