X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fuk%2Fac%2Fvamsas%2Fobjects%2Fcore%2FDataSetAnnotations.java;h=861f0fe2dbd0c64ab1efeefd8ed4e64faba13000;hb=f5306591821b5f6d4e381ff30b647bd149d51f43;hp=2d1c91a601d5de42958109a87e9f35825aedfad9;hpb=ac12127b5cf22bb34b6042e543d506894164a94c;p=vamsas.git diff --git a/src/uk/ac/vamsas/objects/core/DataSetAnnotations.java b/src/uk/ac/vamsas/objects/core/DataSetAnnotations.java index 2d1c91a..861f0fe 100644 --- a/src/uk/ac/vamsas/objects/core/DataSetAnnotations.java +++ b/src/uk/ac/vamsas/objects/core/DataSetAnnotations.java @@ -32,7 +32,7 @@ implements java.io.Serializable * annotation is associated with a * particular dataset sequence */ - private java.lang.Object _seqRef; + private java.util.Vector _seqRef; /** * Field _provenance. @@ -46,6 +46,7 @@ implements java.io.Serializable public DataSetAnnotations() { super(); + this._seqRef = new java.util.Vector(); } @@ -54,6 +55,44 @@ implements java.io.Serializable //-----------/ /** + * + * + * @param vSeqRef + * @throws java.lang.IndexOutOfBoundsException if the index + * given is outside the bounds of the collection + */ + public void addSeqRef( + final java.lang.Object vSeqRef) + throws java.lang.IndexOutOfBoundsException { + this._seqRef.addElement(vSeqRef); + } + + /** + * + * + * @param index + * @param vSeqRef + * @throws java.lang.IndexOutOfBoundsException if the index + * given is outside the bounds of the collection + */ + public void addSeqRef( + final int index, + final java.lang.Object vSeqRef) + throws java.lang.IndexOutOfBoundsException { + this._seqRef.add(index, vSeqRef); + } + + /** + * Method enumerateSeqRef. + * + * @return an Enumeration over all java.lang.Object elements + */ + public java.util.Enumeration enumerateSeqRef( + ) { + return this._seqRef.elements(); + } + + /** * Overrides the java.lang.Object.equals method. * * @param obj @@ -70,19 +109,51 @@ implements java.io.Serializable if (obj instanceof DataSetAnnotations) { DataSetAnnotations temp = (DataSetAnnotations)obj; + boolean thcycle; + boolean tmcycle; if (this._seqRef != null) { if (temp._seqRef == null) return false; - else if (!(this._seqRef.equals(temp._seqRef))) - return false; - } - else if (temp._seqRef != null) + if (this._seqRef != temp._seqRef) { + thcycle=org.castor.util.CycleBreaker.startingToCycle(this._seqRef); + tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._seqRef); + if (thcycle!=tmcycle) { + if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._seqRef); }; + if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._seqRef); }; + return false; + } + if (!thcycle) { + if (!this._seqRef.equals(temp._seqRef)) { + org.castor.util.CycleBreaker.releaseCycleHandle(this._seqRef); + org.castor.util.CycleBreaker.releaseCycleHandle(temp._seqRef); + return false; + } + org.castor.util.CycleBreaker.releaseCycleHandle(this._seqRef); + org.castor.util.CycleBreaker.releaseCycleHandle(temp._seqRef); + } + } + } else if (temp._seqRef != null) return false; if (this._provenance != null) { if (temp._provenance == null) return false; - else if (!(this._provenance.equals(temp._provenance))) - return false; - } - else if (temp._provenance != null) + if (this._provenance != temp._provenance) { + thcycle=org.castor.util.CycleBreaker.startingToCycle(this._provenance); + tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._provenance); + if (thcycle!=tmcycle) { + if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._provenance); }; + if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._provenance); }; + return false; + } + if (!thcycle) { + if (!this._provenance.equals(temp._provenance)) { + org.castor.util.CycleBreaker.releaseCycleHandle(this._provenance); + org.castor.util.CycleBreaker.releaseCycleHandle(temp._provenance); + return false; + } + org.castor.util.CycleBreaker.releaseCycleHandle(this._provenance); + org.castor.util.CycleBreaker.releaseCycleHandle(temp._provenance); + } + } + } else if (temp._provenance != null) return false; return true; } @@ -100,18 +171,62 @@ implements java.io.Serializable } /** - * Returns the value of field 'seqRef'. The field 'seqRef' has - * the following description: annotation is associated with a - * particular dataset sequence + * Method getSeqRef. * - * @return the value of field 'SeqRef'. + * @param index + * @throws java.lang.IndexOutOfBoundsException if the index + * given is outside the bounds of the collection + * @return the value of the java.lang.Object at the given index */ public java.lang.Object getSeqRef( + final int index) + throws java.lang.IndexOutOfBoundsException { + // check bounds for index + if (index < 0 || index >= this._seqRef.size()) { + throw new IndexOutOfBoundsException("getSeqRef: Index value '" + index + "' not in range [0.." + (this._seqRef.size() - 1) + "]"); + } + + return _seqRef.get(index); + } + + /** + * Method getSeqRef.Returns the contents of the collection in + * an Array.

Note: Just in case the collection contents + * are changing in another thread, we pass a 0-length Array of + * the correct type into the API call. This way we know + * that the Array returned is of exactly the correct length. + * + * @return this collection as an Array + */ + public java.lang.Object[] getSeqRef( + ) { + java.lang.Object[] array = new java.lang.Object[0]; + return (java.lang.Object[]) this._seqRef.toArray(array); + } + + /** + * Method getSeqRefAsReference.Returns a reference to + * '_seqRef'. No type checking is performed on any + * modifications to the Vector. + * + * @return a reference to the Vector backing this class + */ + public java.util.Vector getSeqRefAsReference( ) { return this._seqRef; } /** + * Method getSeqRefCount. + * + * @return the size of this collection + */ + public int getSeqRefCount( + ) { + return this._seqRef.size(); + } + + /** * Overrides the java.lang.Object.hashCode method. *

* The following steps came from Effective Java Programming @@ -124,11 +239,15 @@ implements java.io.Serializable int result = super.hashCode(); long tmp; - if (_seqRef != null) { + if (_seqRef != null + && !org.castor.util.CycleBreaker.startingToCycle(_seqRef)) { result = 37 * result + _seqRef.hashCode(); + org.castor.util.CycleBreaker.releaseCycleHandle(_seqRef); } - if (_provenance != null) { + if (_provenance != null + && !org.castor.util.CycleBreaker.startingToCycle(_provenance)) { result = 37 * result + _provenance.hashCode(); + org.castor.util.CycleBreaker.releaseCycleHandle(_provenance); } return result; @@ -182,6 +301,37 @@ implements java.io.Serializable } /** + */ + public void removeAllSeqRef( + ) { + this._seqRef.clear(); + } + + /** + * Method removeSeqRef. + * + * @param vSeqRef + * @return true if the object was removed from the collection. + */ + public boolean removeSeqRef( + final java.lang.Object vSeqRef) { + boolean removed = _seqRef.remove(vSeqRef); + return removed; + } + + /** + * Method removeSeqRefAt. + * + * @param index + * @return the element removed from the collection + */ + public java.lang.Object removeSeqRefAt( + final int index) { + java.lang.Object obj = this._seqRef.remove(index); + return obj; + } + + /** * Sets the value of field 'provenance'. * * @param provenance the value of field 'provenance'. @@ -192,15 +342,64 @@ implements java.io.Serializable } /** - * Sets the value of field 'seqRef'. The field 'seqRef' has the - * following description: annotation is associated with a - * particular dataset sequence * - * @param seqRef the value of field 'seqRef'. + * + * @param index + * @param vSeqRef + * @throws java.lang.IndexOutOfBoundsException if the index + * given is outside the bounds of the collection */ public void setSeqRef( - final java.lang.Object seqRef) { - this._seqRef = seqRef; + final int index, + final java.lang.Object vSeqRef) + throws java.lang.IndexOutOfBoundsException { + // check bounds for index + if (index < 0 || index >= this._seqRef.size()) { + throw new IndexOutOfBoundsException("setSeqRef: Index value '" + index + "' not in range [0.." + (this._seqRef.size() - 1) + "]"); + } + + this._seqRef.set(index, vSeqRef); + } + + /** + * + * + * @param vSeqRefArray + */ + public void setSeqRef( + final java.lang.Object[] vSeqRefArray) { + //-- copy array + _seqRef.clear(); + + for (int i = 0; i < vSeqRefArray.length; i++) { + this._seqRef.add(vSeqRefArray[i]); + } + } + + /** + * Sets the value of '_seqRef' by copying the given Vector. All + * elements will be checked for type safety. + * + * @param vSeqRefList the Vector to copy. + */ + public void setSeqRef( + final java.util.Vector vSeqRefList) { + // copy vector + this._seqRef.clear(); + + this._seqRef.addAll(vSeqRefList); + } + + /** + * Sets the value of '_seqRef' by setting it to the given + * Vector. No type checking is performed. + * @deprecated + * + * @param seqRefVector the Vector to set. + */ + public void setSeqRefAsReference( + final java.util.Vector seqRefVector) { + this._seqRef = seqRefVector; } /**