sequence mappings and DbRef mapping objects unified and source binding for castor...
[vamsas.git] / src / uk / ac / vamsas / objects / core / RangeAnnotation.java
index 869c4f5..2a2adda 100644 (file)
@@ -300,82 +300,249 @@ implements java.io.Serializable
         if (obj instanceof RangeAnnotation) {\r
         \r
             RangeAnnotation temp = (RangeAnnotation)obj;\r
+            boolean thcycle;\r
+            boolean tmcycle;\r
             if (this._id != null) {\r
                 if (temp._id == null) return false;\r
-                else if (!(this._id.equals(temp._id))) \r
-                    return false;\r
-            }\r
-            else if (temp._id != null)\r
+                if (this._id != temp._id) {\r
+                    thcycle=org.castor.util.CycleBreaker.startingToCycle(this._id);\r
+                    tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._id);\r
+                    if (thcycle!=tmcycle) {\r
+                        if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._id); };\r
+                        if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._id); };\r
+                        return false;\r
+                    }\r
+                    if (!thcycle) {\r
+                        if (!this._id.equals(temp._id)) {\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(this._id);\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(temp._id);\r
+                            return false;\r
+                        }\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(this._id);\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(temp._id);\r
+                    }\r
+                }\r
+            } else if (temp._id != null)\r
                 return false;\r
             if (this._modifiable != null) {\r
                 if (temp._modifiable == null) return false;\r
-                else if (!(this._modifiable.equals(temp._modifiable))) \r
-                    return false;\r
-            }\r
-            else if (temp._modifiable != null)\r
+                if (this._modifiable != temp._modifiable) {\r
+                    thcycle=org.castor.util.CycleBreaker.startingToCycle(this._modifiable);\r
+                    tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._modifiable);\r
+                    if (thcycle!=tmcycle) {\r
+                        if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._modifiable); };\r
+                        if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._modifiable); };\r
+                        return false;\r
+                    }\r
+                    if (!thcycle) {\r
+                        if (!this._modifiable.equals(temp._modifiable)) {\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(this._modifiable);\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(temp._modifiable);\r
+                            return false;\r
+                        }\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(this._modifiable);\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(temp._modifiable);\r
+                    }\r
+                }\r
+            } else if (temp._modifiable != null)\r
                 return false;\r
             if (this._group != null) {\r
                 if (temp._group == null) return false;\r
-                else if (!(this._group.equals(temp._group))) \r
-                    return false;\r
-            }\r
-            else if (temp._group != null)\r
+                if (this._group != temp._group) {\r
+                    thcycle=org.castor.util.CycleBreaker.startingToCycle(this._group);\r
+                    tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._group);\r
+                    if (thcycle!=tmcycle) {\r
+                        if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._group); };\r
+                        if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._group); };\r
+                        return false;\r
+                    }\r
+                    if (!thcycle) {\r
+                        if (!this._group.equals(temp._group)) {\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(this._group);\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(temp._group);\r
+                            return false;\r
+                        }\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(this._group);\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(temp._group);\r
+                    }\r
+                }\r
+            } else if (temp._group != null)\r
                 return false;\r
             if (this._type != null) {\r
                 if (temp._type == null) return false;\r
-                else if (!(this._type.equals(temp._type))) \r
-                    return false;\r
-            }\r
-            else if (temp._type != null)\r
+                if (this._type != temp._type) {\r
+                    thcycle=org.castor.util.CycleBreaker.startingToCycle(this._type);\r
+                    tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._type);\r
+                    if (thcycle!=tmcycle) {\r
+                        if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._type); };\r
+                        if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._type); };\r
+                        return false;\r
+                    }\r
+                    if (!thcycle) {\r
+                        if (!this._type.equals(temp._type)) {\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(this._type);\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(temp._type);\r
+                            return false;\r
+                        }\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(this._type);\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(temp._type);\r
+                    }\r
+                }\r
+            } else if (temp._type != null)\r
                 return false;\r
             if (this._label != null) {\r
                 if (temp._label == null) return false;\r
-                else if (!(this._label.equals(temp._label))) \r
-                    return false;\r
-            }\r
-            else if (temp._label != null)\r
+                if (this._label != temp._label) {\r
+                    thcycle=org.castor.util.CycleBreaker.startingToCycle(this._label);\r
+                    tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._label);\r
+                    if (thcycle!=tmcycle) {\r
+                        if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._label); };\r
+                        if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._label); };\r
+                        return false;\r
+                    }\r
+                    if (!thcycle) {\r
+                        if (!this._label.equals(temp._label)) {\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(this._label);\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(temp._label);\r
+                            return false;\r
+                        }\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(this._label);\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(temp._label);\r
+                    }\r
+                }\r
+            } else if (temp._label != null)\r
                 return false;\r
             if (this._description != null) {\r
                 if (temp._description == null) return false;\r
-                else if (!(this._description.equals(temp._description))) \r
-                    return false;\r
-            }\r
-            else if (temp._description != null)\r
+                if (this._description != temp._description) {\r
+                    thcycle=org.castor.util.CycleBreaker.startingToCycle(this._description);\r
+                    tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._description);\r
+                    if (thcycle!=tmcycle) {\r
+                        if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._description); };\r
+                        if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._description); };\r
+                        return false;\r
+                    }\r
+                    if (!thcycle) {\r
+                        if (!this._description.equals(temp._description)) {\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(this._description);\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(temp._description);\r
+                            return false;\r
+                        }\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(this._description);\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(temp._description);\r
+                    }\r
+                }\r
+            } else if (temp._description != null)\r
                 return false;\r
             if (this._status != null) {\r
                 if (temp._status == null) return false;\r
-                else if (!(this._status.equals(temp._status))) \r
-                    return false;\r
-            }\r
-            else if (temp._status != null)\r
+                if (this._status != temp._status) {\r
+                    thcycle=org.castor.util.CycleBreaker.startingToCycle(this._status);\r
+                    tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._status);\r
+                    if (thcycle!=tmcycle) {\r
+                        if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._status); };\r
+                        if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._status); };\r
+                        return false;\r
+                    }\r
+                    if (!thcycle) {\r
+                        if (!this._status.equals(temp._status)) {\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(this._status);\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(temp._status);\r
+                            return false;\r
+                        }\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(this._status);\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(temp._status);\r
+                    }\r
+                }\r
+            } else if (temp._status != null)\r
                 return false;\r
             if (this._annotationElementList != null) {\r
                 if (temp._annotationElementList == null) return false;\r
-                else if (!(this._annotationElementList.equals(temp._annotationElementList))) \r
-                    return false;\r
-            }\r
-            else if (temp._annotationElementList != null)\r
+                if (this._annotationElementList != temp._annotationElementList) {\r
+                    thcycle=org.castor.util.CycleBreaker.startingToCycle(this._annotationElementList);\r
+                    tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._annotationElementList);\r
+                    if (thcycle!=tmcycle) {\r
+                        if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._annotationElementList); };\r
+                        if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._annotationElementList); };\r
+                        return false;\r
+                    }\r
+                    if (!thcycle) {\r
+                        if (!this._annotationElementList.equals(temp._annotationElementList)) {\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(this._annotationElementList);\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(temp._annotationElementList);\r
+                            return false;\r
+                        }\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(this._annotationElementList);\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(temp._annotationElementList);\r
+                    }\r
+                }\r
+            } else if (temp._annotationElementList != null)\r
                 return false;\r
             if (this._scoreList != null) {\r
                 if (temp._scoreList == null) return false;\r
-                else if (!(this._scoreList.equals(temp._scoreList))) \r
-                    return false;\r
-            }\r
-            else if (temp._scoreList != null)\r
+                if (this._scoreList != temp._scoreList) {\r
+                    thcycle=org.castor.util.CycleBreaker.startingToCycle(this._scoreList);\r
+                    tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._scoreList);\r
+                    if (thcycle!=tmcycle) {\r
+                        if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._scoreList); };\r
+                        if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._scoreList); };\r
+                        return false;\r
+                    }\r
+                    if (!thcycle) {\r
+                        if (!this._scoreList.equals(temp._scoreList)) {\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(this._scoreList);\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(temp._scoreList);\r
+                            return false;\r
+                        }\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(this._scoreList);\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(temp._scoreList);\r
+                    }\r
+                }\r
+            } else if (temp._scoreList != null)\r
                 return false;\r
             if (this._linkList != null) {\r
                 if (temp._linkList == null) return false;\r
-                else if (!(this._linkList.equals(temp._linkList))) \r
-                    return false;\r
-            }\r
-            else if (temp._linkList != null)\r
+                if (this._linkList != temp._linkList) {\r
+                    thcycle=org.castor.util.CycleBreaker.startingToCycle(this._linkList);\r
+                    tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._linkList);\r
+                    if (thcycle!=tmcycle) {\r
+                        if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._linkList); };\r
+                        if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._linkList); };\r
+                        return false;\r
+                    }\r
+                    if (!thcycle) {\r
+                        if (!this._linkList.equals(temp._linkList)) {\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(this._linkList);\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(temp._linkList);\r
+                            return false;\r
+                        }\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(this._linkList);\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(temp._linkList);\r
+                    }\r
+                }\r
+            } else if (temp._linkList != null)\r
                 return false;\r
             if (this._propertyList != null) {\r
                 if (temp._propertyList == null) return false;\r
-                else if (!(this._propertyList.equals(temp._propertyList))) \r
-                    return false;\r
-            }\r
-            else if (temp._propertyList != null)\r
+                if (this._propertyList != temp._propertyList) {\r
+                    thcycle=org.castor.util.CycleBreaker.startingToCycle(this._propertyList);\r
+                    tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._propertyList);\r
+                    if (thcycle!=tmcycle) {\r
+                        if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._propertyList); };\r
+                        if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._propertyList); };\r
+                        return false;\r
+                    }\r
+                    if (!thcycle) {\r
+                        if (!this._propertyList.equals(temp._propertyList)) {\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(this._propertyList);\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(temp._propertyList);\r
+                            return false;\r
+                        }\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(this._propertyList);\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(temp._propertyList);\r
+                    }\r
+                }\r
+            } else if (temp._propertyList != null)\r
                 return false;\r
             return true;\r
         }\r
@@ -722,38 +889,60 @@ implements java.io.Serializable
         int result = super.hashCode();\r
         \r
         long tmp;\r
-        if (_id != null) {\r
+        if (_id != null\r
+            && !org.castor.util.CycleBreaker.startingToCycle(_id)) {\r
            result = 37 * result + _id.hashCode();\r
+           org.castor.util.CycleBreaker.releaseCycleHandle(_id);\r
         }\r
-        if (_modifiable != null) {\r
+        if (_modifiable != null\r
+            && !org.castor.util.CycleBreaker.startingToCycle(_modifiable)) {\r
            result = 37 * result + _modifiable.hashCode();\r
+           org.castor.util.CycleBreaker.releaseCycleHandle(_modifiable);\r
         }\r
-        if (_group != null) {\r
+        if (_group != null\r
+            && !org.castor.util.CycleBreaker.startingToCycle(_group)) {\r
            result = 37 * result + _group.hashCode();\r
+           org.castor.util.CycleBreaker.releaseCycleHandle(_group);\r
         }\r
-        if (_type != null) {\r
+        if (_type != null\r
+            && !org.castor.util.CycleBreaker.startingToCycle(_type)) {\r
            result = 37 * result + _type.hashCode();\r
+           org.castor.util.CycleBreaker.releaseCycleHandle(_type);\r
         }\r
-        if (_label != null) {\r
+        if (_label != null\r
+            && !org.castor.util.CycleBreaker.startingToCycle(_label)) {\r
            result = 37 * result + _label.hashCode();\r
+           org.castor.util.CycleBreaker.releaseCycleHandle(_label);\r
         }\r
-        if (_description != null) {\r
+        if (_description != null\r
+            && !org.castor.util.CycleBreaker.startingToCycle(_description)) {\r
            result = 37 * result + _description.hashCode();\r
+           org.castor.util.CycleBreaker.releaseCycleHandle(_description);\r
         }\r
-        if (_status != null) {\r
+        if (_status != null\r
+            && !org.castor.util.CycleBreaker.startingToCycle(_status)) {\r
            result = 37 * result + _status.hashCode();\r
+           org.castor.util.CycleBreaker.releaseCycleHandle(_status);\r
         }\r
-        if (_annotationElementList != null) {\r
+        if (_annotationElementList != null\r
+            && !org.castor.util.CycleBreaker.startingToCycle(_annotationElementList)) {\r
            result = 37 * result + _annotationElementList.hashCode();\r
+           org.castor.util.CycleBreaker.releaseCycleHandle(_annotationElementList);\r
         }\r
-        if (_scoreList != null) {\r
+        if (_scoreList != null\r
+            && !org.castor.util.CycleBreaker.startingToCycle(_scoreList)) {\r
            result = 37 * result + _scoreList.hashCode();\r
+           org.castor.util.CycleBreaker.releaseCycleHandle(_scoreList);\r
         }\r
-        if (_linkList != null) {\r
+        if (_linkList != null\r
+            && !org.castor.util.CycleBreaker.startingToCycle(_linkList)) {\r
            result = 37 * result + _linkList.hashCode();\r
+           org.castor.util.CycleBreaker.releaseCycleHandle(_linkList);\r
         }\r
-        if (_propertyList != null) {\r
+        if (_propertyList != null\r
+            && !org.castor.util.CycleBreaker.startingToCycle(_propertyList)) {\r
            result = 37 * result + _propertyList.hashCode();\r
+           org.castor.util.CycleBreaker.releaseCycleHandle(_propertyList);\r
         }\r
         \r
         return result;\r