sequence mappings and DbRef mapping objects unified and source binding for castor...
[vamsas.git] / src / uk / ac / vamsas / objects / core / NodeType.java
index 7f480d1..488c0ee 100644 (file)
@@ -49,7 +49,8 @@ implements java.io.Serializable
     private java.lang.String _description;\r
 \r
     /**\r
-     * Direct associations between this node and any vamsas objects\r
+     * Direct associations between this node and any vamsas\r
+     *  objects\r
      */\r
     private java.util.Vector _vrefList;\r
 \r
@@ -169,47 +170,139 @@ implements java.io.Serializable
         if (obj instanceof NodeType) {\r
         \r
             NodeType temp = (NodeType)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._name != null) {\r
                 if (temp._name == null) return false;\r
-                else if (!(this._name.equals(temp._name))) \r
-                    return false;\r
-            }\r
-            else if (temp._name != null)\r
+                if (this._name != temp._name) {\r
+                    thcycle=org.castor.util.CycleBreaker.startingToCycle(this._name);\r
+                    tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._name);\r
+                    if (thcycle!=tmcycle) {\r
+                        if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._name); };\r
+                        if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._name); };\r
+                        return false;\r
+                    }\r
+                    if (!thcycle) {\r
+                        if (!this._name.equals(temp._name)) {\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(this._name);\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(temp._name);\r
+                            return false;\r
+                        }\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(this._name);\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(temp._name);\r
+                    }\r
+                }\r
+            } else if (temp._name != 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._vrefList != null) {\r
                 if (temp._vrefList == null) return false;\r
-                else if (!(this._vrefList.equals(temp._vrefList))) \r
-                    return false;\r
-            }\r
-            else if (temp._vrefList != null)\r
+                if (this._vrefList != temp._vrefList) {\r
+                    thcycle=org.castor.util.CycleBreaker.startingToCycle(this._vrefList);\r
+                    tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._vrefList);\r
+                    if (thcycle!=tmcycle) {\r
+                        if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._vrefList); };\r
+                        if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._vrefList); };\r
+                        return false;\r
+                    }\r
+                    if (!thcycle) {\r
+                        if (!this._vrefList.equals(temp._vrefList)) {\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(this._vrefList);\r
+                            org.castor.util.CycleBreaker.releaseCycleHandle(temp._vrefList);\r
+                            return false;\r
+                        }\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(this._vrefList);\r
+                        org.castor.util.CycleBreaker.releaseCycleHandle(temp._vrefList);\r
+                    }\r
+                }\r
+            } else if (temp._vrefList != 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
@@ -388,23 +481,35 @@ 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 (_name != null) {\r
+        if (_name != null\r
+            && !org.castor.util.CycleBreaker.startingToCycle(_name)) {\r
            result = 37 * result + _name.hashCode();\r
+           org.castor.util.CycleBreaker.releaseCycleHandle(_name);\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 (_vrefList != null) {\r
+        if (_vrefList != null\r
+            && !org.castor.util.CycleBreaker.startingToCycle(_vrefList)) {\r
            result = 37 * result + _vrefList.hashCode();\r
+           org.castor.util.CycleBreaker.releaseCycleHandle(_vrefList);\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