merge from 2_4_Release branch
[jalview.git] / src / jalview / schemabinding / version2 / Annotation.java
1 /*\r
2  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)\r
3  * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
4  * \r
5  * This program is free software; you can redistribute it and/or\r
6  * modify it under the terms of the GNU General Public License\r
7  * as published by the Free Software Foundation; either version 2\r
8  * of the License, or (at your option) any later version.\r
9  * \r
10  * This program is distributed in the hope that it will be useful,\r
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13  * GNU General Public License for more details.\r
14  * \r
15  * You should have received a copy of the GNU General Public License\r
16  * along with this program; if not, write to the Free Software\r
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
18  */\r
19 package jalview.schemabinding.version2;\r
20 \r
21 // ---------------------------------/\r
22 // - Imported classes and packages -/\r
23 // ---------------------------------/\r
24 \r
25 import org.exolab.castor.xml.Marshaller;\r
26 import org.exolab.castor.xml.Unmarshaller;\r
27 \r
28 /**\r
29  * Class Annotation.\r
30  * \r
31  * @version $Revision$ $Date$\r
32  */\r
33 public class Annotation implements java.io.Serializable\r
34 {\r
35 \r
36   // --------------------------/\r
37   // - Class/Member Variables -/\r
38   // --------------------------/\r
39 \r
40   /**\r
41    * Field _graph.\r
42    */\r
43   private boolean _graph;\r
44 \r
45   /**\r
46    * keeps track of state for field: _graph\r
47    */\r
48   private boolean _has_graph;\r
49 \r
50   /**\r
51    * Field _graphType.\r
52    */\r
53   private int _graphType;\r
54 \r
55   /**\r
56    * keeps track of state for field: _graphType\r
57    */\r
58   private boolean _has_graphType;\r
59 \r
60   /**\r
61    * Field _sequenceRef.\r
62    */\r
63   private java.lang.String _sequenceRef;\r
64 \r
65   /**\r
66    * Field _graphColour.\r
67    */\r
68   private int _graphColour;\r
69 \r
70   /**\r
71    * keeps track of state for field: _graphColour\r
72    */\r
73   private boolean _has_graphColour;\r
74 \r
75   /**\r
76    * Field _graphGroup.\r
77    */\r
78   private int _graphGroup;\r
79 \r
80   /**\r
81    * keeps track of state for field: _graphGroup\r
82    */\r
83   private boolean _has_graphGroup;\r
84 \r
85   /**\r
86    * Field _id.\r
87    */\r
88   private java.lang.String _id;\r
89 \r
90   /**\r
91    * Field _scoreOnly.\r
92    */\r
93   private boolean _scoreOnly = false;\r
94 \r
95   /**\r
96    * keeps track of state for field: _scoreOnly\r
97    */\r
98   private boolean _has_scoreOnly;\r
99 \r
100   /**\r
101    * Field _score.\r
102    */\r
103   private double _score;\r
104 \r
105   /**\r
106    * keeps track of state for field: _score\r
107    */\r
108   private boolean _has_score;\r
109 \r
110   /**\r
111    * Field _visible.\r
112    */\r
113   private boolean _visible;\r
114 \r
115   /**\r
116    * keeps track of state for field: _visible\r
117    */\r
118   private boolean _has_visible;\r
119 \r
120   /**\r
121    * Field _annotationElementList.\r
122    */\r
123   private java.util.Vector _annotationElementList;\r
124 \r
125   /**\r
126    * Field _label.\r
127    */\r
128   private java.lang.String _label;\r
129 \r
130   /**\r
131    * Field _description.\r
132    */\r
133   private java.lang.String _description;\r
134 \r
135   /**\r
136    * Field _thresholdLine.\r
137    */\r
138   private jalview.schemabinding.version2.ThresholdLine _thresholdLine;\r
139 \r
140   // ----------------/\r
141   // - Constructors -/\r
142   // ----------------/\r
143 \r
144   public Annotation()\r
145   {\r
146     super();\r
147     this._annotationElementList = new java.util.Vector();\r
148   }\r
149 \r
150   // -----------/\r
151   // - Methods -/\r
152   // -----------/\r
153 \r
154   /**\r
155    * \r
156    * \r
157    * @param vAnnotationElement\r
158    * @throws java.lang.IndexOutOfBoundsException\r
159    *                 if the index given is outside the bounds of the collection\r
160    */\r
161   public void addAnnotationElement(\r
162           final jalview.schemabinding.version2.AnnotationElement vAnnotationElement)\r
163           throws java.lang.IndexOutOfBoundsException\r
164   {\r
165     this._annotationElementList.addElement(vAnnotationElement);\r
166   }\r
167 \r
168   /**\r
169    * \r
170    * \r
171    * @param index\r
172    * @param vAnnotationElement\r
173    * @throws java.lang.IndexOutOfBoundsException\r
174    *                 if the index given is outside the bounds of the collection\r
175    */\r
176   public void addAnnotationElement(\r
177           final int index,\r
178           final jalview.schemabinding.version2.AnnotationElement vAnnotationElement)\r
179           throws java.lang.IndexOutOfBoundsException\r
180   {\r
181     this._annotationElementList.add(index, vAnnotationElement);\r
182   }\r
183 \r
184   /**\r
185    */\r
186   public void deleteGraph()\r
187   {\r
188     this._has_graph = false;\r
189   }\r
190 \r
191   /**\r
192    */\r
193   public void deleteGraphColour()\r
194   {\r
195     this._has_graphColour = false;\r
196   }\r
197 \r
198   /**\r
199    */\r
200   public void deleteGraphGroup()\r
201   {\r
202     this._has_graphGroup = false;\r
203   }\r
204 \r
205   /**\r
206    */\r
207   public void deleteGraphType()\r
208   {\r
209     this._has_graphType = false;\r
210   }\r
211 \r
212   /**\r
213    */\r
214   public void deleteScore()\r
215   {\r
216     this._has_score = false;\r
217   }\r
218 \r
219   /**\r
220    */\r
221   public void deleteScoreOnly()\r
222   {\r
223     this._has_scoreOnly = false;\r
224   }\r
225 \r
226   /**\r
227    */\r
228   public void deleteVisible()\r
229   {\r
230     this._has_visible = false;\r
231   }\r
232 \r
233   /**\r
234    * Method enumerateAnnotationElement.\r
235    * \r
236    * @return an Enumeration over all\r
237    *         jalview.schemabinding.version2.AnnotationElement elements\r
238    */\r
239   public java.util.Enumeration enumerateAnnotationElement()\r
240   {\r
241     return this._annotationElementList.elements();\r
242   }\r
243 \r
244   /**\r
245    * Method getAnnotationElement.\r
246    * \r
247    * @param index\r
248    * @throws java.lang.IndexOutOfBoundsException\r
249    *                 if the index given is outside the bounds of the collection\r
250    * @return the value of the jalview.schemabinding.version2.AnnotationElement\r
251    *         at the given index\r
252    */\r
253   public jalview.schemabinding.version2.AnnotationElement getAnnotationElement(\r
254           final int index) throws java.lang.IndexOutOfBoundsException\r
255   {\r
256     // check bounds for index\r
257     if (index < 0 || index >= this._annotationElementList.size())\r
258     {\r
259       throw new IndexOutOfBoundsException(\r
260               "getAnnotationElement: Index value '" + index\r
261                       + "' not in range [0.."\r
262                       + (this._annotationElementList.size() - 1) + "]");\r
263     }\r
264 \r
265     return (jalview.schemabinding.version2.AnnotationElement) _annotationElementList\r
266             .get(index);\r
267   }\r
268 \r
269   /**\r
270    * Method getAnnotationElement.Returns the contents of the collection in an\r
271    * Array.\r
272    * <p>\r
273    * Note: Just in case the collection contents are changing in another thread,\r
274    * we pass a 0-length Array of the correct type into the API call. This way we\r
275    * <i>know</i> that the Array returned is of exactly the correct length.\r
276    * \r
277    * @return this collection as an Array\r
278    */\r
279   public jalview.schemabinding.version2.AnnotationElement[] getAnnotationElement()\r
280   {\r
281     jalview.schemabinding.version2.AnnotationElement[] array = new jalview.schemabinding.version2.AnnotationElement[0];\r
282     return (jalview.schemabinding.version2.AnnotationElement[]) this._annotationElementList\r
283             .toArray(array);\r
284   }\r
285 \r
286   /**\r
287    * Method getAnnotationElementCount.\r
288    * \r
289    * @return the size of this collection\r
290    */\r
291   public int getAnnotationElementCount()\r
292   {\r
293     return this._annotationElementList.size();\r
294   }\r
295 \r
296   /**\r
297    * Returns the value of field 'description'.\r
298    * \r
299    * @return the value of field 'Description'.\r
300    */\r
301   public java.lang.String getDescription()\r
302   {\r
303     return this._description;\r
304   }\r
305 \r
306   /**\r
307    * Returns the value of field 'graph'.\r
308    * \r
309    * @return the value of field 'Graph'.\r
310    */\r
311   public boolean getGraph()\r
312   {\r
313     return this._graph;\r
314   }\r
315 \r
316   /**\r
317    * Returns the value of field 'graphColour'.\r
318    * \r
319    * @return the value of field 'GraphColour'.\r
320    */\r
321   public int getGraphColour()\r
322   {\r
323     return this._graphColour;\r
324   }\r
325 \r
326   /**\r
327    * Returns the value of field 'graphGroup'.\r
328    * \r
329    * @return the value of field 'GraphGroup'.\r
330    */\r
331   public int getGraphGroup()\r
332   {\r
333     return this._graphGroup;\r
334   }\r
335 \r
336   /**\r
337    * Returns the value of field 'graphType'.\r
338    * \r
339    * @return the value of field 'GraphType'.\r
340    */\r
341   public int getGraphType()\r
342   {\r
343     return this._graphType;\r
344   }\r
345 \r
346   /**\r
347    * Returns the value of field 'id'.\r
348    * \r
349    * @return the value of field 'Id'.\r
350    */\r
351   public java.lang.String getId()\r
352   {\r
353     return this._id;\r
354   }\r
355 \r
356   /**\r
357    * Returns the value of field 'label'.\r
358    * \r
359    * @return the value of field 'Label'.\r
360    */\r
361   public java.lang.String getLabel()\r
362   {\r
363     return this._label;\r
364   }\r
365 \r
366   /**\r
367    * Returns the value of field 'score'.\r
368    * \r
369    * @return the value of field 'Score'.\r
370    */\r
371   public double getScore()\r
372   {\r
373     return this._score;\r
374   }\r
375 \r
376   /**\r
377    * Returns the value of field 'scoreOnly'.\r
378    * \r
379    * @return the value of field 'ScoreOnly'.\r
380    */\r
381   public boolean getScoreOnly()\r
382   {\r
383     return this._scoreOnly;\r
384   }\r
385 \r
386   /**\r
387    * Returns the value of field 'sequenceRef'.\r
388    * \r
389    * @return the value of field 'SequenceRef'.\r
390    */\r
391   public java.lang.String getSequenceRef()\r
392   {\r
393     return this._sequenceRef;\r
394   }\r
395 \r
396   /**\r
397    * Returns the value of field 'thresholdLine'.\r
398    * \r
399    * @return the value of field 'ThresholdLine'.\r
400    */\r
401   public jalview.schemabinding.version2.ThresholdLine getThresholdLine()\r
402   {\r
403     return this._thresholdLine;\r
404   }\r
405 \r
406   /**\r
407    * Returns the value of field 'visible'.\r
408    * \r
409    * @return the value of field 'Visible'.\r
410    */\r
411   public boolean getVisible()\r
412   {\r
413     return this._visible;\r
414   }\r
415 \r
416   /**\r
417    * Method hasGraph.\r
418    * \r
419    * @return true if at least one Graph has been added\r
420    */\r
421   public boolean hasGraph()\r
422   {\r
423     return this._has_graph;\r
424   }\r
425 \r
426   /**\r
427    * Method hasGraphColour.\r
428    * \r
429    * @return true if at least one GraphColour has been added\r
430    */\r
431   public boolean hasGraphColour()\r
432   {\r
433     return this._has_graphColour;\r
434   }\r
435 \r
436   /**\r
437    * Method hasGraphGroup.\r
438    * \r
439    * @return true if at least one GraphGroup has been added\r
440    */\r
441   public boolean hasGraphGroup()\r
442   {\r
443     return this._has_graphGroup;\r
444   }\r
445 \r
446   /**\r
447    * Method hasGraphType.\r
448    * \r
449    * @return true if at least one GraphType has been added\r
450    */\r
451   public boolean hasGraphType()\r
452   {\r
453     return this._has_graphType;\r
454   }\r
455 \r
456   /**\r
457    * Method hasScore.\r
458    * \r
459    * @return true if at least one Score has been added\r
460    */\r
461   public boolean hasScore()\r
462   {\r
463     return this._has_score;\r
464   }\r
465 \r
466   /**\r
467    * Method hasScoreOnly.\r
468    * \r
469    * @return true if at least one ScoreOnly has been added\r
470    */\r
471   public boolean hasScoreOnly()\r
472   {\r
473     return this._has_scoreOnly;\r
474   }\r
475 \r
476   /**\r
477    * Method hasVisible.\r
478    * \r
479    * @return true if at least one Visible has been added\r
480    */\r
481   public boolean hasVisible()\r
482   {\r
483     return this._has_visible;\r
484   }\r
485 \r
486   /**\r
487    * Returns the value of field 'graph'.\r
488    * \r
489    * @return the value of field 'Graph'.\r
490    */\r
491   public boolean isGraph()\r
492   {\r
493     return this._graph;\r
494   }\r
495 \r
496   /**\r
497    * Returns the value of field 'scoreOnly'.\r
498    * \r
499    * @return the value of field 'ScoreOnly'.\r
500    */\r
501   public boolean isScoreOnly()\r
502   {\r
503     return this._scoreOnly;\r
504   }\r
505 \r
506   /**\r
507    * Method isValid.\r
508    * \r
509    * @return true if this object is valid according to the schema\r
510    */\r
511   public boolean isValid()\r
512   {\r
513     try\r
514     {\r
515       validate();\r
516     } catch (org.exolab.castor.xml.ValidationException vex)\r
517     {\r
518       return false;\r
519     }\r
520     return true;\r
521   }\r
522 \r
523   /**\r
524    * Returns the value of field 'visible'.\r
525    * \r
526    * @return the value of field 'Visible'.\r
527    */\r
528   public boolean isVisible()\r
529   {\r
530     return this._visible;\r
531   }\r
532 \r
533   /**\r
534    * \r
535    * \r
536    * @param out\r
537    * @throws org.exolab.castor.xml.MarshalException\r
538    *                 if object is null or if any SAXException is thrown during\r
539    *                 marshaling\r
540    * @throws org.exolab.castor.xml.ValidationException\r
541    *                 if this object is an invalid instance according to the\r
542    *                 schema\r
543    */\r
544   public void marshal(final java.io.Writer out)\r
545           throws org.exolab.castor.xml.MarshalException,\r
546           org.exolab.castor.xml.ValidationException\r
547   {\r
548     Marshaller.marshal(this, out);\r
549   }\r
550 \r
551   /**\r
552    * \r
553    * \r
554    * @param handler\r
555    * @throws java.io.IOException\r
556    *                 if an IOException occurs during marshaling\r
557    * @throws org.exolab.castor.xml.ValidationException\r
558    *                 if this object is an invalid instance according to the\r
559    *                 schema\r
560    * @throws org.exolab.castor.xml.MarshalException\r
561    *                 if object is null or if any SAXException is thrown during\r
562    *                 marshaling\r
563    */\r
564   public void marshal(final org.xml.sax.ContentHandler handler)\r
565           throws java.io.IOException,\r
566           org.exolab.castor.xml.MarshalException,\r
567           org.exolab.castor.xml.ValidationException\r
568   {\r
569     Marshaller.marshal(this, handler);\r
570   }\r
571 \r
572   /**\r
573    */\r
574   public void removeAllAnnotationElement()\r
575   {\r
576     this._annotationElementList.clear();\r
577   }\r
578 \r
579   /**\r
580    * Method removeAnnotationElement.\r
581    * \r
582    * @param vAnnotationElement\r
583    * @return true if the object was removed from the collection.\r
584    */\r
585   public boolean removeAnnotationElement(\r
586           final jalview.schemabinding.version2.AnnotationElement vAnnotationElement)\r
587   {\r
588     boolean removed = _annotationElementList.remove(vAnnotationElement);\r
589     return removed;\r
590   }\r
591 \r
592   /**\r
593    * Method removeAnnotationElementAt.\r
594    * \r
595    * @param index\r
596    * @return the element removed from the collection\r
597    */\r
598   public jalview.schemabinding.version2.AnnotationElement removeAnnotationElementAt(\r
599           final int index)\r
600   {\r
601     java.lang.Object obj = this._annotationElementList.remove(index);\r
602     return (jalview.schemabinding.version2.AnnotationElement) obj;\r
603   }\r
604 \r
605   /**\r
606    * \r
607    * \r
608    * @param index\r
609    * @param vAnnotationElement\r
610    * @throws java.lang.IndexOutOfBoundsException\r
611    *                 if the index given is outside the bounds of the collection\r
612    */\r
613   public void setAnnotationElement(\r
614           final int index,\r
615           final jalview.schemabinding.version2.AnnotationElement vAnnotationElement)\r
616           throws java.lang.IndexOutOfBoundsException\r
617   {\r
618     // check bounds for index\r
619     if (index < 0 || index >= this._annotationElementList.size())\r
620     {\r
621       throw new IndexOutOfBoundsException(\r
622               "setAnnotationElement: Index value '" + index\r
623                       + "' not in range [0.."\r
624                       + (this._annotationElementList.size() - 1) + "]");\r
625     }\r
626 \r
627     this._annotationElementList.set(index, vAnnotationElement);\r
628   }\r
629 \r
630   /**\r
631    * \r
632    * \r
633    * @param vAnnotationElementArray\r
634    */\r
635   public void setAnnotationElement(\r
636           final jalview.schemabinding.version2.AnnotationElement[] vAnnotationElementArray)\r
637   {\r
638     // -- copy array\r
639     _annotationElementList.clear();\r
640 \r
641     for (int i = 0; i < vAnnotationElementArray.length; i++)\r
642     {\r
643       this._annotationElementList.add(vAnnotationElementArray[i]);\r
644     }\r
645   }\r
646 \r
647   /**\r
648    * Sets the value of field 'description'.\r
649    * \r
650    * @param description\r
651    *                the value of field 'description'.\r
652    */\r
653   public void setDescription(final java.lang.String description)\r
654   {\r
655     this._description = description;\r
656   }\r
657 \r
658   /**\r
659    * Sets the value of field 'graph'.\r
660    * \r
661    * @param graph\r
662    *                the value of field 'graph'.\r
663    */\r
664   public void setGraph(final boolean graph)\r
665   {\r
666     this._graph = graph;\r
667     this._has_graph = true;\r
668   }\r
669 \r
670   /**\r
671    * Sets the value of field 'graphColour'.\r
672    * \r
673    * @param graphColour\r
674    *                the value of field 'graphColour'.\r
675    */\r
676   public void setGraphColour(final int graphColour)\r
677   {\r
678     this._graphColour = graphColour;\r
679     this._has_graphColour = true;\r
680   }\r
681 \r
682   /**\r
683    * Sets the value of field 'graphGroup'.\r
684    * \r
685    * @param graphGroup\r
686    *                the value of field 'graphGroup'.\r
687    */\r
688   public void setGraphGroup(final int graphGroup)\r
689   {\r
690     this._graphGroup = graphGroup;\r
691     this._has_graphGroup = true;\r
692   }\r
693 \r
694   /**\r
695    * Sets the value of field 'graphType'.\r
696    * \r
697    * @param graphType\r
698    *                the value of field 'graphType'.\r
699    */\r
700   public void setGraphType(final int graphType)\r
701   {\r
702     this._graphType = graphType;\r
703     this._has_graphType = true;\r
704   }\r
705 \r
706   /**\r
707    * Sets the value of field 'id'.\r
708    * \r
709    * @param id\r
710    *                the value of field 'id'.\r
711    */\r
712   public void setId(final java.lang.String id)\r
713   {\r
714     this._id = id;\r
715   }\r
716 \r
717   /**\r
718    * Sets the value of field 'label'.\r
719    * \r
720    * @param label\r
721    *                the value of field 'label'.\r
722    */\r
723   public void setLabel(final java.lang.String label)\r
724   {\r
725     this._label = label;\r
726   }\r
727 \r
728   /**\r
729    * Sets the value of field 'score'.\r
730    * \r
731    * @param score\r
732    *                the value of field 'score'.\r
733    */\r
734   public void setScore(final double score)\r
735   {\r
736     this._score = score;\r
737     this._has_score = true;\r
738   }\r
739 \r
740   /**\r
741    * Sets the value of field 'scoreOnly'.\r
742    * \r
743    * @param scoreOnly\r
744    *                the value of field 'scoreOnly'.\r
745    */\r
746   public void setScoreOnly(final boolean scoreOnly)\r
747   {\r
748     this._scoreOnly = scoreOnly;\r
749     this._has_scoreOnly = true;\r
750   }\r
751 \r
752   /**\r
753    * Sets the value of field 'sequenceRef'.\r
754    * \r
755    * @param sequenceRef\r
756    *                the value of field 'sequenceRef'.\r
757    */\r
758   public void setSequenceRef(final java.lang.String sequenceRef)\r
759   {\r
760     this._sequenceRef = sequenceRef;\r
761   }\r
762 \r
763   /**\r
764    * Sets the value of field 'thresholdLine'.\r
765    * \r
766    * @param thresholdLine\r
767    *                the value of field 'thresholdLine'.\r
768    */\r
769   public void setThresholdLine(\r
770           final jalview.schemabinding.version2.ThresholdLine thresholdLine)\r
771   {\r
772     this._thresholdLine = thresholdLine;\r
773   }\r
774 \r
775   /**\r
776    * Sets the value of field 'visible'.\r
777    * \r
778    * @param visible\r
779    *                the value of field 'visible'.\r
780    */\r
781   public void setVisible(final boolean visible)\r
782   {\r
783     this._visible = visible;\r
784     this._has_visible = true;\r
785   }\r
786 \r
787   /**\r
788    * Method unmarshal.\r
789    * \r
790    * @param reader\r
791    * @throws org.exolab.castor.xml.MarshalException\r
792    *                 if object is null or if any SAXException is thrown during\r
793    *                 marshaling\r
794    * @throws org.exolab.castor.xml.ValidationException\r
795    *                 if this object is an invalid instance according to the\r
796    *                 schema\r
797    * @return the unmarshaled jalview.schemabinding.version2.Annotation\r
798    */\r
799   public static jalview.schemabinding.version2.Annotation unmarshal(\r
800           final java.io.Reader reader)\r
801           throws org.exolab.castor.xml.MarshalException,\r
802           org.exolab.castor.xml.ValidationException\r
803   {\r
804     return (jalview.schemabinding.version2.Annotation) Unmarshaller\r
805             .unmarshal(jalview.schemabinding.version2.Annotation.class,\r
806                     reader);\r
807   }\r
808 \r
809   /**\r
810    * \r
811    * \r
812    * @throws org.exolab.castor.xml.ValidationException\r
813    *                 if this object is an invalid instance according to the\r
814    *                 schema\r
815    */\r
816   public void validate() throws org.exolab.castor.xml.ValidationException\r
817   {\r
818     org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();\r
819     validator.validate(this);\r
820   }\r
821 \r
822 }\r