From 8669979d57e2019889afaefafe65b945ae7c172d Mon Sep 17 00:00:00 2001 From: gmungoc Date: Mon, 3 Dec 2018 15:03:53 +0000 Subject: [PATCH] JAL-3063 Castor removed from codebase --- .ant-targets-build.xml | 1 - .classpath | 1 - build.xml | 24 - lib/castor-1.1-cycle-xml.jar | Bin 1035961 -> 0 bytes resources/embl_mapping.xml | 139 - schemas/castor-mapping.xsd | 315 - src/castor.properties | 254 - src/jalview/binding/Alignment.java | 180 - src/jalview/binding/Annotation.java | 459 -- src/jalview/binding/AnnotationElement.java | 305 - src/jalview/binding/Colour.java | 707 --- src/jalview/binding/CompoundMatcher.java | 368 -- src/jalview/binding/Feature.java | 304 - src/jalview/binding/FeatureMatcher.java | 381 -- src/jalview/binding/FeatureMatcherSet.java | 200 - src/jalview/binding/FeatureSettings.java | 289 - src/jalview/binding/Features.java | 124 - src/jalview/binding/Filter.java | 180 - src/jalview/binding/JGroup.java | 761 --- src/jalview/binding/JSeq.java | 645 --- src/jalview/binding/JalviewModel.java | 233 - src/jalview/binding/JalviewModelSequence.java | 955 ---- src/jalview/binding/JalviewUserColours.java | 503 -- src/jalview/binding/MatchCondition.java | 125 - src/jalview/binding/MatcherSet.java | 125 - src/jalview/binding/Pdbentry.java | 344 -- src/jalview/binding/PdbentryItem.java | 196 - src/jalview/binding/Pdbids.java | 124 - src/jalview/binding/Property.java | 180 - src/jalview/binding/Sequence.java | 124 - src/jalview/binding/SequenceSet.java | 538 -- src/jalview/binding/SequenceType.java | 206 - src/jalview/binding/Setting.java | 262 - src/jalview/binding/Tree.java | 843 --- src/jalview/binding/UserColourScheme.java | 125 - src/jalview/binding/UserColours.java | 181 - src/jalview/binding/VAMSAS.java | 605 -- src/jalview/binding/VamsasModel.java | 124 - src/jalview/binding/Viewport.java | 1463 ----- .../binding/types/ColourThreshTypeType.java | 168 - .../binding/types/FeatureMatcherByType.java | 168 - src/jalview/binding/types/NoValueColour.java | 169 - src/jalview/gui/Desktop.java | 51 +- src/jalview/gui/Jalview2XML.java | 5999 -------------------- src/jalview/gui/Jalview2XML_V1.java | 513 -- src/jalview/io/VamsasAppDatastore.java | 8 +- src/jalview/jbgui/GDesktop.java | 44 +- src/jalview/project/Jalview2XML.java | 12 +- src/jalview/schemabinding/version2/.castor.cdr | 53 - src/jalview/schemabinding/version2/AlcodMap.java | 192 - src/jalview/schemabinding/version2/Alcodon.java | 275 - .../schemabinding/version2/AlcodonFrame.java | 466 -- src/jalview/schemabinding/version2/Annotation.java | 1396 ----- .../version2/AnnotationColourScheme.java | 497 -- .../schemabinding/version2/AnnotationColours.java | 128 - .../schemabinding/version2/AnnotationElement.java | 356 -- .../schemabinding/version2/CalcIdParam.java | 300 - src/jalview/schemabinding/version2/Colour.java | 708 --- .../schemabinding/version2/CompoundMatcher.java | 374 -- src/jalview/schemabinding/version2/DBRef.java | 233 - src/jalview/schemabinding/version2/Feature.java | 548 -- .../schemabinding/version2/FeatureMatcher.java | 383 -- .../schemabinding/version2/FeatureMatcherSet.java | 200 - .../schemabinding/version2/FeatureSettings.java | 462 -- src/jalview/schemabinding/version2/Features.java | 124 - src/jalview/schemabinding/version2/Filter.java | 181 - src/jalview/schemabinding/version2/Group.java | 213 - .../schemabinding/version2/HiddenColumns.java | 227 - src/jalview/schemabinding/version2/JGroup.java | 1260 ---- src/jalview/schemabinding/version2/JSeq.java | 1097 ---- .../schemabinding/version2/JalviewModel.java | 235 - .../version2/JalviewModelSequence.java | 986 ---- .../schemabinding/version2/JalviewUserColours.java | 505 -- .../schemabinding/version2/MapListFrom.java | 227 - src/jalview/schemabinding/version2/MapListTo.java | 227 - .../schemabinding/version2/MapListType.java | 597 -- src/jalview/schemabinding/version2/Mapping.java | 173 - .../schemabinding/version2/MappingChoice.java | 182 - .../schemabinding/version2/MatchCondition.java | 126 - src/jalview/schemabinding/version2/MatcherSet.java | 126 - src/jalview/schemabinding/version2/OtherData.java | 199 - src/jalview/schemabinding/version2/Pdbentry.java | 375 -- .../schemabinding/version2/PdbentryItem.java | 204 - src/jalview/schemabinding/version2/Pdbids.java | 303 - src/jalview/schemabinding/version2/Property.java | 181 - src/jalview/schemabinding/version2/RnaViewer.java | 668 --- .../schemabinding/version2/SecondaryStructure.java | 290 - src/jalview/schemabinding/version2/Sequence.java | 328 -- .../schemabinding/version2/SequenceSet.java | 872 --- .../version2/SequenceSetProperties.java | 183 - .../schemabinding/version2/SequenceType.java | 233 - src/jalview/schemabinding/version2/Setting.java | 923 --- .../schemabinding/version2/StructureState.java | 706 --- .../schemabinding/version2/ThresholdLine.java | 253 - src/jalview/schemabinding/version2/Tree.java | 878 --- .../schemabinding/version2/UserColourScheme.java | 127 - .../schemabinding/version2/UserColours.java | 182 - src/jalview/schemabinding/version2/VAMSAS.java | 454 -- .../schemabinding/version2/VamsasModel.java | 124 - src/jalview/schemabinding/version2/Viewport.java | 2803 --------- .../version2/WebServiceParameterSet.java | 436 -- .../version2/descriptors/AlcodMapDescriptor.java | 247 - .../version2/descriptors/AlcodonDescriptor.java | 313 - .../descriptors/AlcodonFrameDescriptor.java | 267 - .../AnnotationColourSchemeDescriptor.java | 573 -- .../descriptors/AnnotationColoursDescriptor.java | 149 - .../version2/descriptors/AnnotationDescriptor.java | 1298 ----- .../descriptors/AnnotationElementDescriptor.java | 464 -- .../descriptors/CalcIdParamDescriptor.java | 313 - .../version2/descriptors/ColourDescriptor.java | 719 --- .../descriptors/CompoundMatcherDescriptor.java | 270 - .../version2/descriptors/DBRefDescriptor.java | 333 -- .../version2/descriptors/FeatureDescriptor.java | 564 -- .../descriptors/FeatureMatcherDescriptor.java | 356 -- .../descriptors/FeatureMatcherSetDescriptor.java | 258 - .../descriptors/FeatureSettingsDescriptor.java | 267 - .../version2/descriptors/FeaturesDescriptor.java | 148 - .../version2/descriptors/FilterDescriptor.java | 246 - .../version2/descriptors/GroupDescriptor.java | 257 - .../descriptors/HiddenColumnsDescriptor.java | 264 - .../version2/descriptors/JGroupDescriptor.java | 1275 ----- .../version2/descriptors/JSeqDescriptor.java | 714 --- .../descriptors/JalviewModelDescriptor.java | 341 -- .../JalviewModelSequenceDescriptor.java | 474 -- .../descriptors/JalviewUserColoursDescriptor.java | 380 -- .../descriptors/MapListFromDescriptor.java | 268 - .../version2/descriptors/MapListToDescriptor.java | 268 - .../descriptors/MapListTypeDescriptor.java | 381 -- .../descriptors/MappingChoiceDescriptor.java | 243 - .../version2/descriptors/MappingDescriptor.java | 202 - .../descriptors/MatchConditionDescriptor.java | 148 - .../version2/descriptors/MatcherSetDescriptor.java | 148 - .../version2/descriptors/OtherDataDescriptor.java | 272 - .../version2/descriptors/PdbentryDescriptor.java | 346 -- .../descriptors/PdbentryItemDescriptor.java | 212 - .../version2/descriptors/PdbidsDescriptor.java | 214 - .../version2/descriptors/PropertyDescriptor.java | 248 - .../version2/descriptors/RnaViewerDescriptor.java | 634 --- .../descriptors/SecondaryStructureDescriptor.java | 345 -- .../version2/descriptors/SequenceDescriptor.java | 258 - .../descriptors/SequenceSetDescriptor.java | 472 -- .../SequenceSetPropertiesDescriptor.java | 244 - .../descriptors/SequenceTypeDescriptor.java | 339 -- .../version2/descriptors/SettingDescriptor.java | 905 --- .../descriptors/StructureStateDescriptor.java | 727 --- .../descriptors/ThresholdLineDescriptor.java | 309 - .../version2/descriptors/TreeDescriptor.java | 995 ---- .../descriptors/UserColourSchemeDescriptor.java | 149 - .../descriptors/UserColoursDescriptor.java | 246 - .../version2/descriptors/VAMSASDescriptor.java | 273 - .../descriptors/VamsasModelDescriptor.java | 148 - .../version2/descriptors/ViewportDescriptor.java | 2717 --------- .../WebServiceParameterSetDescriptor.java | 396 -- .../schemabinding/version2/types/.castor.cdr | 5 - .../version2/types/ColourThreshTypeType.java | 168 - .../version2/types/FeatureMatcherByType.java | 168 - .../version2/types/NoValueColour.java | 169 - .../ColourThreshTypeTypeDescriptor.java | 150 - .../FeatureMatcherByTypeDescriptor.java | 150 - .../types/descriptors/NoValueColourDescriptor.java | 147 - src/jalview/schemes/ColourSchemeLoader.java | 31 +- test/jalview/gui/AlignFrameTest.java | 2 +- test/jalview/io/CrossRef2xmlTests.java | 6 +- test/jalview/io/Jalview2xmlTests.java | 1038 ---- test/jalview/ws/jabaws/RNAStructExportImport.java | 6 +- utils/castor-1.1-cycle-codegen-anttask.jar | Bin 15495 -> 0 bytes utils/castor-1.1-cycle-codegen.jar | Bin 488832 -> 0 bytes 167 files changed, 34 insertions(+), 68407 deletions(-) delete mode 100644 lib/castor-1.1-cycle-xml.jar delete mode 100644 resources/embl_mapping.xml delete mode 100644 schemas/castor-mapping.xsd delete mode 100644 src/castor.properties delete mode 100644 src/jalview/binding/Alignment.java delete mode 100644 src/jalview/binding/Annotation.java delete mode 100644 src/jalview/binding/AnnotationElement.java delete mode 100644 src/jalview/binding/Colour.java delete mode 100644 src/jalview/binding/CompoundMatcher.java delete mode 100644 src/jalview/binding/Feature.java delete mode 100644 src/jalview/binding/FeatureMatcher.java delete mode 100644 src/jalview/binding/FeatureMatcherSet.java delete mode 100644 src/jalview/binding/FeatureSettings.java delete mode 100644 src/jalview/binding/Features.java delete mode 100644 src/jalview/binding/Filter.java delete mode 100644 src/jalview/binding/JGroup.java delete mode 100644 src/jalview/binding/JSeq.java delete mode 100644 src/jalview/binding/JalviewModel.java delete mode 100644 src/jalview/binding/JalviewModelSequence.java delete mode 100644 src/jalview/binding/JalviewUserColours.java delete mode 100644 src/jalview/binding/MatchCondition.java delete mode 100644 src/jalview/binding/MatcherSet.java delete mode 100644 src/jalview/binding/Pdbentry.java delete mode 100644 src/jalview/binding/PdbentryItem.java delete mode 100644 src/jalview/binding/Pdbids.java delete mode 100644 src/jalview/binding/Property.java delete mode 100644 src/jalview/binding/Sequence.java delete mode 100644 src/jalview/binding/SequenceSet.java delete mode 100644 src/jalview/binding/SequenceType.java delete mode 100644 src/jalview/binding/Setting.java delete mode 100644 src/jalview/binding/Tree.java delete mode 100644 src/jalview/binding/UserColourScheme.java delete mode 100644 src/jalview/binding/UserColours.java delete mode 100644 src/jalview/binding/VAMSAS.java delete mode 100644 src/jalview/binding/VamsasModel.java delete mode 100644 src/jalview/binding/Viewport.java delete mode 100644 src/jalview/binding/types/ColourThreshTypeType.java delete mode 100644 src/jalview/binding/types/FeatureMatcherByType.java delete mode 100644 src/jalview/binding/types/NoValueColour.java delete mode 100644 src/jalview/gui/Jalview2XML.java delete mode 100755 src/jalview/gui/Jalview2XML_V1.java delete mode 100644 src/jalview/schemabinding/version2/.castor.cdr delete mode 100644 src/jalview/schemabinding/version2/AlcodMap.java delete mode 100644 src/jalview/schemabinding/version2/Alcodon.java delete mode 100644 src/jalview/schemabinding/version2/AlcodonFrame.java delete mode 100644 src/jalview/schemabinding/version2/Annotation.java delete mode 100644 src/jalview/schemabinding/version2/AnnotationColourScheme.java delete mode 100644 src/jalview/schemabinding/version2/AnnotationColours.java delete mode 100644 src/jalview/schemabinding/version2/AnnotationElement.java delete mode 100644 src/jalview/schemabinding/version2/CalcIdParam.java delete mode 100644 src/jalview/schemabinding/version2/Colour.java delete mode 100644 src/jalview/schemabinding/version2/CompoundMatcher.java delete mode 100644 src/jalview/schemabinding/version2/DBRef.java delete mode 100644 src/jalview/schemabinding/version2/Feature.java delete mode 100644 src/jalview/schemabinding/version2/FeatureMatcher.java delete mode 100644 src/jalview/schemabinding/version2/FeatureMatcherSet.java delete mode 100644 src/jalview/schemabinding/version2/FeatureSettings.java delete mode 100644 src/jalview/schemabinding/version2/Features.java delete mode 100644 src/jalview/schemabinding/version2/Filter.java delete mode 100644 src/jalview/schemabinding/version2/Group.java delete mode 100644 src/jalview/schemabinding/version2/HiddenColumns.java delete mode 100644 src/jalview/schemabinding/version2/JGroup.java delete mode 100644 src/jalview/schemabinding/version2/JSeq.java delete mode 100644 src/jalview/schemabinding/version2/JalviewModel.java delete mode 100644 src/jalview/schemabinding/version2/JalviewModelSequence.java delete mode 100644 src/jalview/schemabinding/version2/JalviewUserColours.java delete mode 100644 src/jalview/schemabinding/version2/MapListFrom.java delete mode 100644 src/jalview/schemabinding/version2/MapListTo.java delete mode 100644 src/jalview/schemabinding/version2/MapListType.java delete mode 100644 src/jalview/schemabinding/version2/Mapping.java delete mode 100644 src/jalview/schemabinding/version2/MappingChoice.java delete mode 100644 src/jalview/schemabinding/version2/MatchCondition.java delete mode 100644 src/jalview/schemabinding/version2/MatcherSet.java delete mode 100644 src/jalview/schemabinding/version2/OtherData.java delete mode 100644 src/jalview/schemabinding/version2/Pdbentry.java delete mode 100644 src/jalview/schemabinding/version2/PdbentryItem.java delete mode 100644 src/jalview/schemabinding/version2/Pdbids.java delete mode 100644 src/jalview/schemabinding/version2/Property.java delete mode 100644 src/jalview/schemabinding/version2/RnaViewer.java delete mode 100644 src/jalview/schemabinding/version2/SecondaryStructure.java delete mode 100644 src/jalview/schemabinding/version2/Sequence.java delete mode 100644 src/jalview/schemabinding/version2/SequenceSet.java delete mode 100644 src/jalview/schemabinding/version2/SequenceSetProperties.java delete mode 100644 src/jalview/schemabinding/version2/SequenceType.java delete mode 100644 src/jalview/schemabinding/version2/Setting.java delete mode 100644 src/jalview/schemabinding/version2/StructureState.java delete mode 100644 src/jalview/schemabinding/version2/ThresholdLine.java delete mode 100644 src/jalview/schemabinding/version2/Tree.java delete mode 100644 src/jalview/schemabinding/version2/UserColourScheme.java delete mode 100644 src/jalview/schemabinding/version2/UserColours.java delete mode 100644 src/jalview/schemabinding/version2/VAMSAS.java delete mode 100644 src/jalview/schemabinding/version2/VamsasModel.java delete mode 100644 src/jalview/schemabinding/version2/Viewport.java delete mode 100644 src/jalview/schemabinding/version2/WebServiceParameterSet.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/AlcodMapDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/AlcodonDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/AlcodonFrameDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/AnnotationColourSchemeDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/AnnotationColoursDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/AnnotationDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/AnnotationElementDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/CalcIdParamDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/ColourDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/CompoundMatcherDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/DBRefDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/FeatureDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/FeatureMatcherDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/FeatureMatcherSetDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/FeatureSettingsDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/FeaturesDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/FilterDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/GroupDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/HiddenColumnsDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/JGroupDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/JSeqDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/JalviewModelDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/JalviewModelSequenceDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/JalviewUserColoursDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/MapListFromDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/MapListToDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/MapListTypeDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/MappingChoiceDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/MappingDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/MatchConditionDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/MatcherSetDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/OtherDataDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/PdbentryDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/PdbentryItemDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/PdbidsDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/PropertyDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/RnaViewerDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/SecondaryStructureDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/SequenceDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/SequenceSetDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/SequenceSetPropertiesDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/SequenceTypeDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/SettingDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/StructureStateDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/ThresholdLineDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/TreeDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/UserColourSchemeDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/UserColoursDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/VAMSASDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/VamsasModelDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/ViewportDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/descriptors/WebServiceParameterSetDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/types/.castor.cdr delete mode 100644 src/jalview/schemabinding/version2/types/ColourThreshTypeType.java delete mode 100644 src/jalview/schemabinding/version2/types/FeatureMatcherByType.java delete mode 100644 src/jalview/schemabinding/version2/types/NoValueColour.java delete mode 100644 src/jalview/schemabinding/version2/types/descriptors/ColourThreshTypeTypeDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/types/descriptors/FeatureMatcherByTypeDescriptor.java delete mode 100644 src/jalview/schemabinding/version2/types/descriptors/NoValueColourDescriptor.java delete mode 100644 test/jalview/io/Jalview2xmlTests.java delete mode 100644 utils/castor-1.1-cycle-codegen-anttask.jar delete mode 100644 utils/castor-1.1-cycle-codegen.jar diff --git a/.ant-targets-build.xml b/.ant-targets-build.xml index 15432a1..6edefcd 100644 --- a/.ant-targets-build.xml +++ b/.ant-targets-build.xml @@ -3,7 +3,6 @@ buildPropertiesFile buildTests buildextclients buildindices -castorbinding clean compileApplet distclean diff --git a/.classpath b/.classpath index 0da91bb..cacda5a 100644 --- a/.classpath +++ b/.classpath @@ -13,7 +13,6 @@ - diff --git a/build.xml b/build.xml index 5ca105a..0415735 100755 --- a/build.xml +++ b/build.xml @@ -699,30 +699,6 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/castor-1.1-cycle-xml.jar b/lib/castor-1.1-cycle-xml.jar deleted file mode 100644 index 5070435b55bc5ec6d315685a9fa57f81804cc37d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1035961 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%0D6NFG-%&Ai#;0^qAD}&cvz51kG*V5rE;g$g zL<1HBIwx}xMmgZOY{)0GspA>GcwYSC55IhOJzeqZ+SOdAtj=wye7NC_ zVa;C`#SZKbP@zE2i;vsWMPB&yP0=}UPm1kXP-~SlZ|C?~GZO9+_a?`^4hG#l@H(rw zVAy46v65snHlhp>@x(7;yuvCn$QHjY^6RtnOnH8Wd|2-i9NEV@})U&f-_MdQqwfH$MQ zTb%fu^ktOcEAV8JU0TAg;4VdIm+qglRx~=Bg6D5c4gW`&`g>C@Ve7xRsoS}mQ`FAk z9g{rFj~!hO1OZ;iu9sf>9>Bl1+1jF}z(RcK+i~qilvy56DNhj(JPtjZ`6ik%Yb~kL znut`hZqq?_>LVlj{~(I!{~&4={_lti{Vzl@{)H%szawhwzYwMI>zYh-5gpJhKZjnZ zzN~7U2F)SNRd>p)Ak-wXqoQ)OXzZ$rQIAJK5?T+QsjVu-Oqwk3Bi z_jRn}p^vawh$1P2#JV64?bvF;F`5S8RhSD)j!^?M%y(x7lWCOWlOF8l8H{8|1ab;^ za{(P$+!OS{4_Sm+F@mClKC$GN8C7WF$NFbd?={#pvi_9Gv)+x-B%*aSt3QxFQz4MS zn;e&bbp1-Zl~JLQZ_8w{x@ZmIoq$r)6Z>j5lh$a`TCe*J8*V5!HOm?4V*yQ7IVm_~ zkFMj@Ax~j|u;hBkCX_K47s9XOFSg1A#zX^4ELhQ{%}n*}a)vGnJt`PfiaIt)zo9_L ztY7A&)_YmtTmv^Q&a@bBS#;#?+aw4I#4hs|L@6*%Cgh#Q+~yQRJS*=0qj#34W}5hU z#th5u0L^h$)e(9oQs+8yHaPxr&#LZmo+INmZ~(yL%>CL#kq;hyO>`z0tTgPXk5bt! z8)raq)oeQC6Pw3{|2!GJk7{ktN6?AK{sj5;f;`ABjTmp#WMnMVAhW{L@lg@k3JhEx zS>WKuj?<+F-Z1(jd?^Q?b^l*@+JCRSs96J0!g*|m#eg~BSdvbXu|^?cSYF)dg|^!d@|G^tXC0S~eW#nU88Kf#EY=nxPW%b@&yX@sqBFhyhE(%^ z1gXC_&Jy1K2C0oj4oIx{;h*xz1HC?!Z~*)s)Zh8u=QmH;Y%Km1Uy7?@I^G(9dq(ob zAh|(dkk9{$zFBXwbiiU*iQD)q<;%W1=Xr6shwUN84M6BE38|&`@Q`iljkZIG*9U%i zA?1?|M(Bf1Hh!_E3gAGvBSaNiHwLFQ3o@o-0uP;a0`(r7D2I-XFfNgm2&^#YQLN)M zGr(XfK0XU8ys0m~U(?ix1%OsqrB|XVq#DeVNDGWGvl=_CDy35AC`PuLkAoVUiZZqw zYb)JXmh@syWOUM=TuC#lpcK(jt=zqyAOy+Vzk|LDooKpMh;<6A;-0jQ-!aHHZjc{@ zpHlAOz9dEEpN~ZsD62wM>Mx3km&X2it4 z_K&R0coRXc9Hv>xyP~%tHlkJ~nKT+FRb;%%?FC+0sC0^ZNeYk|Kxh8xQBB-kOp_RG zQgw1nnu!)hkc2M%dMpz!R)OStET2zHNiZ*vA=-uQH@7g1Y0?&<;ae<8sEKIj-f>5) z+U^P<$ZFdr=33hQ!6}a&0}BkEan$g67!Kij$JM_3u;-EL-is_m(5*izL`Q^f6Y-5F z$nM+)+p#oDlvaDd2Wb$THg=!rg;Bj#-ZG{!`Vk;3uQCE(nBX!QVRd^7&Ms=_$4=QD zEZC=ShBxt1Hg+%%ZO*Q3kHd&5X0@9&V}nCEc`F3CJ8eg#es$D);s{y7b~C1ZgFuwZ zh+smMq}O>Y(dcxHR+SLy1A#Z$HC)4<2@JaefGFj*g%SxG_YR9{NTaI0wT1UmgUU5N zua@&7@UBceu>FKLK^qf)JR;c%Xc7Du)IWo1ex{J1`@5?G_1#tZ_l8FQs&-=eTNhec z+XhP*nP*SiUE5u;y-0cwl3ech})#AJ!u{g)Ppt5k=>&D4+mUNAgB_P`}1 z7wBoz6e)ba`8rpXekDM8GY?t_7!&3UNxkTd?Bu%@Vx69F2;!T#44oKhil}6k3A2`x zow%Rp9S3Tk6+UrTx`=X;)*HxT%GARZO<3ba&Xa0QW}`~$Y5H^+StLif@((r|Gyveo zM#Bu9aaIi)q%=pARm}>_TfeOgTh*8}y3SCrMC#2rsD#&8PK#7KxYg~g)+%0-&L*&A zHds3sXG<{<8BU#i>s!ZY_L}4yV1l%?yM%{RGm~yIN$cu7>Ivu{`LL_dCmA!3GfJG) z#bSZB4Xo)2Ynvyy0B6^NHi{lw%+g`zZ%SGDd@M#PE;N7JO_{MtO~<&4xzU{A4B??8 zE0KClvckx2Klk%D--f?k=3U7r_Izq}iw;w=(6(7s8|yUunyT}M{Y;3Mv-{BxD2nT9 z$$2QhXopeIUQOn(X}VDm+#@$V)EWhXy(ou3&QnJYnlPZ1f3mg0&7TYwziK>dE3D_` z{2;;tAj0QmTr4k&qRP^dx2N1e8f_*&%wBaeG7h8&IBW7-{RZ&lLflB02ip=1l*)1N z9_^Qv^`v*TKugy`sYc-n>HCQ`v4EbrDx^4F3j=n<{;Q4fbRzN-TwQ$YflZN-i{!O& z6uKKd+XyWl6R(*OcOZ1O^kokl^AMj!M!i2a%F5l1!2LevfIGGjJtF%kS|nPaVdpoI zxd7g#x+4bnZ|mj)+b%)<>1)t<29I^NtFVQOJuzi{B|!4Yw+!qAjY`i}mt{MzMDFzyZLlDck-LBh^DjMptewS?ev#vTI1*!yoB6 zsqq-Ov^rL`@C;_ltM`XL*TSorJlp@-86<)oa71UR$?+31bA z9%vQ$Q2cZEJt5nOR`eMlyY~+Llns~s7DpeE>*fq8*&f~SRt^=l0O70U~z zU!3On=n_0jNH#1=+6SHcn?E7>)V4Nr1)lYKu3J{PcJaPv zQ{tPC(d2ey7-l4b&>%<96=yP|Bc&sTBTy7UeNd(QzsG_Yys+EmHXnurcO0Zi1W0Z9 z=6{%*<8Rg>eDb(;a1yi-^0g)a_Ni4UY$&$cO$wrc{dsdB>t^R28Pl!%!of#{a@RWw>CegsD4tq?_;zwzCDiYxzJ*^}cq6`GxXpnJ}yZ z)2facA=64BiY-?%0E@vby<&=Sf{rP0u^4?+03*rHAt~1M_Y2?ACths&xl2^W-l zW?CbLAoO}z7YubwWlVDTjO*=UP1LLIKl9VqdH&48_w@{)Z;q1rw?J^GR8rkbR z+Svckd$iMkozxiaw$W^F(56N;@69fGH)YU|jEx_X1OiaF&e_=xlv;y;PMwNbq1o}~ zhtuJ9oe?tJ-^Saqhw$*<>666$csg=IGMv&MzG8%(w2lOPt0N5ZneQrE?bG3 zSwlq_1@X4~td{C8r#Tx>yY97Gr!j6_QL%ztR9qO2T9v0hG7z{hmK*ZBBK}O{u`rZF zv1-;sk{rtw(?q5#M#P~+4QlGC%wa%1MbXU)tcr?FiO|?u>+{ck^$!wmNP6GA=)fQ0 zB_L`78^etHciy9fQrcB9a_y$`#aZ6|7)R_dbS8@eUmOyO5vnBL!C)R1D z1BRfD5iit@NQbH}d@)2Guj5i>0G?v%z4VlZ2=!-s5Uzbkk^#|%;JC)~POxkWbhWQ< zDShYvO;D?ydgzAoJ=P5U7SyWzKffPE8+%8iU())v|D$jGzr$Olik0HGM}(J5-Dpq^ ztC<8vZ*o&YQ!Ye-f`u!R6%h>ug(pN&&L2DRsv5`m$aLxA1-etP2Y>ILuNk=KLTJXl z1-joux_flC+-&Ns0DhUH;7m^k>ke6W84lB}>D`|%7tTKnpSdHDQo!@!kSIy}uMH(& z=P8Z*z$JFTI>Gf-21WG)4tR;496DPQG`Y5 zD<3{cj3Tr0kE>AjO{KV1lBzxNPt`5W?UovymY?M5I8bwGFP1Ck*CnyibP}K6U)%`N zH}2$XOEEcjDiKN%+he^V@mQTkI5|7{Hx|K3iok}m!}lW?^|gNC4_DP!42I*K#M) z--Y2=q*@nY`12Or2p#BR4SYZ}%0FgUPLwsHpVh!l*oPgCK2q1pPXdM!@u5mqDf%IXb7 zenRoy+;9)v++Pw-+}vAV2x!LgpKrtT!A2o8A(#!?MOghzmpjH7zLxe^^hO#qWZY*Y zxLhkZqZ+PX2&=31`Es2XOt^mkaoZg6j^lUliDkba809uX5z#gRMQcy|Le@ZfX}8EO z_5ud_8Eg1j3d6n&Aj-X6D=wz7PLVR94Ii6bLR4YLm z6kwX&hsq^-x|;PjZ^ssT_0ENe07}&tmdAzvI>asAKzA z@dAb_J;Kl$Eix|nK`RhNadL%jx`$L^#1Tm|72d<$6xHjWy@DXo;I-=gjO(rf>|7lJ zA;{-t_yrO{Bs!LV76a-ls#7gT6VAh|tB#`xoVL*I*djP{yDhn@N|FLKYoryGwECNp z9LvoigL6=6B-ud}tCv9Dx+qqr+DMzM6m{n*-8LF=DvNBaF&Ep6SKXA^SL;WSQeL-D z2yQdlbt(}rO(gN|quY#6C)`>eeLHW-X!^;d1AdX@jO907hpfPa!lM|mmF9o2OnC=DnI{+87(r!l<6retInJ?3s3 zGZF=-<=vTxjdVgmlasp+kb5@qqnXnzv1;QAR<3)wRUD>WQ2lZ@06*FL7?|{MOF;E;w|eZS`1s1QZI1**ELt7&4<5FK zvzW`Y%3A3MwA*|9rMYq-b=_PSV)yx@*tLuE#k~TbSTm`Sc9B`f^&Y;nF?a?IRe*hZ zI)!--#<9M_4fdFyZ$Cz-N7(z0)jil1XY51h3ZSptJtVxrNPCoU=>^^N%=O{k)xNTrCn0 zUJx8R#}+?ub&SsCd+#+V|3{6aa$eMfW?5elt18hir{b` z!m*|@c>G)oJ(rYLZGVhzqq>h)&VLg!U5S&f3x<&Yr2Ia8-<2qqMu_+OZE0@wl0}GZ z(9_I#*UHcvJKHYKx{;*c#r*LH&_Cy&nk*(Nqu=>MIrP7)I{6p*=igK(NfwH0BFI5o zAchcw!1Mw35EO+)00MSB1O(^b$zB4)-3bQ%{cCe!WiQIDoyFHcW=-(FHCAQ)Q7wt{`-kmlEEei|KB z+sG=Xu{~IbDn`FvEM$U;DRB_nnjgwVF6RkkJZSfJi+VhR50WoB_-mBSHrKS#L z&FH8kn_g$-w3fc6&ZDAYVp@t@Q2DAx!O2VL-s^gtlCq@3)0B=9bX{P5dI<&H_yIJI z+-F8r%)m_Qq$r7UTb|ZgP=)y`l(e$KoVvVe>W##3q_b3UeHaht3MwCrNCx3t?P;`p zukgn5tH+Rp@!Tpcx7u6xa;{3co($AuPQ9L`Z$^_Rrf!|1T<_4hxo(wo31MFxHx@_- zV}GNB9+? z3&hslum|w8p+X-Vw29wPti9z78+NbyOcJcai~c7F3|Zgiv z1SwSx6cf&zd4{kiB1(U?D=FoMCzJ%qUSM3EYS%jN)p#_n^oK;WH+O2+FYnNb=*n3J6wN1+@S{=Z;6hfX z+>_q9fd!!f%yOyDrk5RORv$~N-WyZ8)uVK_dUnEh%J&u>0X`ruDA);YY{T|BpA>?k z9gkl5_l$$r>K>1V7yHBv+5kRApHJ}`vo&|LV2UlPT&f*q&^j0zaSq~c(2@*8p@A?hh2Okzj4>DB*8hp;55 zQU1OO&#fSY1(to?!wS%Zuq>k&{N1iQr_Kxa7v-su^w9?XjpQQb6Za#VIxpB?)>SY1 zhdcN=$+a247+?g->~OCMca5x%Cot}G4bDAO-6#?sxj{@m8MmWcj(-5G-Mu>8!+vmh zh{JtB@DKF@O(T)c+douTf1Rjpg=*ok{2s-$!G9+=|4xOarb+jfC$7z3|ks$`n?y8yl*;vK|3^Bbk&h0*3>9QG*9Hcz+5AULyw->5$n)JD3jIEh#65Ckr^jdsi=tA z&o-{f)zB}=Bp0WMVN@QR%lw!vO{b^q6#f{4@HKoCX;QIQ*AX{vcd zFB78Ta6*AK4KN-yPmu@>VDcQMTQOqvN!jR(3s$RDP!*C0(=LXCK((BdVrnVUfKx^b zt+W*8tI6(SfVr7G=o2eVmHHY+nLh}w1^O@BMhu2Ho!QF4KUw?xCFZaNYb14@eQEmXY5F>*FC%e2U4YK{r0R_t2G=OiylZ-tKhl!*sM z!DLv!IFR=Eg=ObJJzEJf-{^j8rX+n0eU9JFf9-u8>3l1f(LstxgH5L$l`?l#5;8xJ z12B0u^;6WTL7cQ2IqTHhsh79qtj9)6XxJqCdJ7XW#m zXT;78aI29{WlXv|NYrqR`6~{~;ZfhGDZ+;ru`yJPf6W-G;fOHej!P%xofzBOb;mO2 zn+Fe}QKi$_OJmdSG(;RR49K~Yu?Dr*k@5u5=cyG&O3l+7b@z z5sjoXEz|88HAuP$50#fB&W31=&G#D+NoO=uAn9R5>x=bSFzO7eGup9(KphY}buP{9 zCYc|iTb`z6Fd{-kW@uSpG;(ghBxz{Em#i}MSD-v8#7DHZR=L;647qJC&Xz|k(wZ(mC*LkN$?g}?((m6qAyHH3Y(G&eQr`Dt-w>uWRx zlt{GnXL*4<@Z^GZp0_(NpBySA(@+?OgLdFs-H$ENN?DJLASs)nNoI{K*6+UH&zMC0 z@SMX0O{Rq65QSZ+z&<%M!>lE7${(GS@07{AWH(}rWi_1vF{xf z$hFZgT87;?iGdJF`*4J0VhC}rxwvKZzL#T7N=Foh5*Jk5O&6d!Y3!1lf*FiY@Gj&g zIaN21+xBHQ5FhX-5Zx`IJ0$mu-N z20PSo!N__w1jrWST1FvIfG$00h)Q(G7Mng%#d2^2+i3$Qa{NhyNuyY9t7H5ZPo-5@ z#q8gI=m&A16Pnxu-Z{hUwT2};WJ+H^2&~}`u>?HDYv0piwh$lP1-ygvpM5L52iU#* zqO$dO(Z*tQ?J&D{tlp!XuY+wrkR>3_`en`uKl7R6abxSxZ43VAhjC{+f8+j-Ah(t2 z^uC19KD`{`D?Cf``MYiSC|}@D4yzc1{^NZ|cAw-U|1W#sD<|OU5g?{yq821=*zLrZ zZAj5;-gD<4?wiv<)%L*7Tz;J|+is%Q0Qc-Zsz>A2zk%_Ds)1ajd0YMrE3 zNq?8q9;!+-kQUB6XohX-k6^K{=8K?%UUFM?u1m-%1WH%jnSnBzYmq5`)MicV#(uj# zXS2tmELo;5-HC;ND3f}?@INk+{zY8TtUZ-8->qfB@2Z^T-z6>w;(w;E#JFke@00vP z-O?HCu-55C$l%_q-~T(PxgF?(0z@e}Wv~jzeUo_8iAocj1{X>P7+qhlz-|xFHQ>89 z%D_aESV?P7FH^R&@zL9bIp4?YH9`-on>4d6nNKte>=||&HY@x3L+#04*Uy-2bj|Z| zC5VQ%;#;Yq&@z7eEyD0}12Pn}yCOlZ+4s9mV;li$|g->c6N_Us2 zh0F9^%Dog|7gYGmcC$H>fq(?;=qdfd?tdRCbOM~MhK zgMGD?l&8aVZ_=6GG%#ah(bGWV;36s;CW{c(CIMj6pcX&+0l;8k>OfQdm0=*?XTA+! zjbt1CoYlSX<=1BU<2iTJne;zCU6Kb>lm!as{3rO? ze8j|KyHNA{f&jEiHxhICVwJqlC^t&A!WNMz`0SlfI`9Ei>M$EMgsoWwz8YGuUCf8` zjOhWVb>IvG)*a+|0)vMqbB=Goi{F3UCz<$8YE1lugWz4d>l@8jKVAN z9Xc(&wYRmkmFYTVeLUuR{*XJocF`xqt<;YVLh9V^F`#3w9e{$>Bw&V{ z8sgAF4D+%3wqW)uB+Eb6ttGUfc7s(9VWV=OH zqnxt^bXODkb^*x64DC|t9o6Fi0?IR!qvHe#ZHE4+&@H)bk17l-(uv-0?MuboqF`4J zTy;3*3ON1Lqd?N}b2|{T>PF#<&=<|Ur+7aZ{Jl0P*{!r&W!s2agY4QKrutd{EdPuL zUg204_*1E$s&nBhwWnOov9SjRuzKfE#Fr248Oquk(WSEIti`pnXA-d4W!s=|57d{< z+$BEwwHw)`9&C}~g$B^Oa7Tsi!3Mp`XR0P!eX!@N`4;aWL;xd&jTlX5#HG!{t>x+di9Mt;oq$n^i?vc1-QZNDXq6v z2~9-KQjoysNJb7qL(&wl=`r$6LK+(+ANp*DOrh?k*vy z9%P(WymwrzKxe!u;lv-dqW*}2&_ znaTV+lP5K6jPcZ{0_BX-2U|C-iGIB_+-m5z3>+Fz9GpAs>lg8t^<_47b|r+7{9OcA zDCNNqCWXz_AE#andrJQ+m~I$uE>e6@U59<$a*B|wOjT!l3M1auSLd%;Z9?!ma53xR z5^jNjPr-tswoQ{|rE1kudW?PIyuh4hX?~Nuh?RkKu$hb7U?^yRqsl%!up~Mzm?ECj z3``JE9Wp|u2r@cR>rs%F1ZOTS!X2BlTk{K1g!12?T~u0Da@bNkD4n`!021}N=SjM8 zq^#rWuplmMm~3xT1y9l?iEc`fN^U(C2BB#Kzpps(&EQ0NAsI1jcZe?M!dg(vr_Sz% z**ONcq?zp@TT<^WSKrFDZBu7(iqPl_qsl4rq!E=1)O3Hiut7z+Fc41Qx?ZSw)Tf$X zb+kMPHZabvaXCfBeVC#&c`{JKG)qvEteRTK^L6eg28}~o{LEvV=arN?uNSQ`TZ()~q5gIqb2+~R^r@e}*hPdz4p zk|1BbQ`&-_&6O=fU%fZu_^n;em4j8y3kCm3^S5G-YGVfr`lFFq#Wrq2}T0-SMvcbps~&JEyiAHmF33~_eIG6^0l zMs!1U!-2(hhqu#}B?=p5z;o45{aQL{WNVy8V;TcTH5tcDp<6s^0Wb1eLWo`p>JVzy zx35TGpecIiFvqDVzL_!R9d3V(Qj&W#9Z=l9>_d=av$Fgbzeyr zF|X@})hMgwc=AHhows}K{K50p$7?by6et~7<1#tqkM$LI`H?Uc8VMOq&uAbl8B4+) zEq@0buP5e@hx;9=ryyB$nHTNb*E4VYN!;`koj!7MV^TG;TFBtM^p`1@V4^-Z~c-w;#b%SCAoRF&G0Vlob!4hElf}ey}=!cZL zEZe|6HQ*FKpdyixfTKlL7x)63)prxhURKX!1 zVzxldLS?YIYtL@6SylhBwAm)Q7E%S>N&gntESn(qjKP$+m_!kQ-h^sP&o<+ zp0j?ksj>V_BLw}ennXiG3Y3~w4z)wGw0C)Ti21v$o@>arfy8xox0tXBtVK@}Zr6`e z>9Bw-xwOy4JuQrz3Ph>gDe6sff@+d@K$&89rBW>|UfU%3lA_vD zc}E~*Sd2&IniEG{F56g!kDSB~SrL!gT+&rZIb_A7u^?^yi&|AIo-NTBPK!n;!`N<| zV=;x2<*dTEYAmS-&W>bXsGZJ%XlF3*PA{Y-A$Z4w@!aaXYzE``w}id;%pa`=hImsl}dc(8nWhZvO>zkWGD z$TDe8$zD9_u4%D2|GdDbsZ5`%koEDc^xDm9?T**MZDsAmis%}}%c!)3u5^x;>Lx6$ z8sjys9Ikwl$B`^Cd&4=P;{I?`ls=u6S7A`0>Eu*$ix~vD+;U>Z9ragcipjEa{?c~y zUkKNd&G5=_HE3b8TN;%uWQ%fb+OhsDorgB4p~(v2ahD+a_V8HEH>{CJfRtNTJz~^^ zUrl=k7rqO(cO9nfaWyUnTe7@d$7VO$dR3n(t;?*DXDuJX?CmG-Tgt8cRq!ofYd}8L z)?*@xHXJ`2Y;VPAk5$R=dcTk3j|=Abe}~F}cFWEWgT|}*0X}J%Ki!HT!|Q3l7aEk< z6JD1j%tfB}J^6>Nsg0g#iH;d;)QCQGL73e9`Ytn2SfFq^RZyn-Epq>A@ZGFY6xbYK z zmlu0Bxfz#4p3A>9ddNVZo*^X2D|{pjZbK z>}sZeayqV%Iv$u#v@_86)mN|8U*+7;Ews}vv@1^dK_+X((;6DpYjYK%UURw?zLLsz zuS#@#06>-Lz;q~jDH%`cT26i0Sv}oPt(Istq!d}th9<&}%Zxs21$Sl0e`c=roq9zP9ukKuf+?Ll$cFR-N{RsMvo}o@maB;79-^) z!pNo{C*Q3o4nzOk-=kDh-d7ik+-NJA+xy6E>SC-VvPG^9P(+Dd1jlvB--POLt|g8e z&|>il^NJ~o7rq@LzkMb~zGQBBL4qEDvl>$uwPgUEXuU*BQ|_Q?3=hjNL`fMh$+IFW zq=o${jDimpAM-&Vd2jY3--0#r45yeFSx$*p+4npvN<#iSKCdHhuBnmJm{lldk{CTo z-n4ugfWyi36GwFG#E3(Y!_p}0lWkGe5wHQ%$OvCW1CC3Nkwp*GpikUx!04$DWhw-F z)XP2jhlv3`c~Ac|A%UU_ED#%akZV-y0-5(u@hF?>00pyUz(TnY2|iM=oF24<8;;FlwZgTnn)#ERMn-93CpP_U z)f>`4ho(ae_Gk$-!Xikjan}VF?ZDM|4kNU{9#HP|SgWFQKojXcj9-~06_f814nLHi zlHzdeDK(s6jQ5%E4xPz+G3CQY1TnMuzqsKjPdH%B1WB^Zv$jz?q2~jW>Wktnf)A@O zQ=>X{;qeS!OV=I{i@pm>^!asHZOQG{AQPGcGl(0j$4-4Jq;A(CChRzphlPB>=i%E1 z!?;9n8NlabFsy;-X#H>h!jLRx2S~kt!|nJg z@LRkcRW<40_h@q8z~)2Y^_;2tQ6YBkEu#q~Ii;_z6;8H)!T?Yg z5VjRhb_li>rUnq-Hi)$oO?CIto_7o2{6_SzA6ws)JCpTLl|9!Ml-umfZwKs)!lvsX zt{sI=5no>%a>rdBT}2p zcx3XB;9>L0Z~_g9Q|+OhLf~(cxBxwnuX+x9NLzD57)G3Db#7tyxOAe_M%2D}8l9se(sVfH;e-cP8lI^R4 zDlTi7UoCxb&<69O9~Y^3TomPS`(S0Vb=AoY2zQl6Yn3p0Wb#TRACyzf*q9}$)uvj= z;rPM_3`ynG4h$t|U59pIK+9J%_G*dYreLzmdQBl&7cQhS96fibMJi5bq6g~PF{E3_ z*J2w58fz#z&^1vn;~H}!ZH$_A>TKd|h?)agz){YVE;t<6+290vyjt(b9Q988iC#F8fmPk-Y$cN=y0t}JDNpgvZ8v}BaV5$^nB_XS%`8kj@WoA8K zvTAbgiJf(Uun6*?_v{UDmg!yN`j^G6VXJlwb^A!dr;{FH_U$cjmKnX%@>e81Y39yT zyS3+lNxVTZYqM8#$X&aPS27qfGRX3Bkeo?`_>^XoklGmmVdH02Ky;>N!9aCr@+y#L z^&xeHW<`U2s&k`|)>75&x`TWKW=VsqRc1*cZ6x`Hh@Ek-g3poj^AsB~nS64Q(O?p0 zlfTfpwFTK8dUgy)gd=UW;bCjjJJ+%{8+? z_NZjP6ZbJTRIsyh2P=qr;on8@^ z7+TmG|Ga74ZLFITwk-qcQHHOfyM>a^MLTTKMb5^T=XE0c|F(mN-l}gh#}PN5uhUt+ z#b~lYA%k$dW?jF_B8?C;QlfJAwp;-a?MMq#=z+c%agY&ld)Rx*+Ib0uE(jf^ zL8>10HoZP5$VT+n5=(n5?PIkCr%UEy{UUD7GwmgS7s%huwcF~ejk)@GNA%QTzA-98 zCajn{np9nJx#V%eh(;(xw#|(^;5g@CNemz^N4#eS- zg-1B0P96EFQvo@XWJd`o+eqs*vu@2wTQGjoAz0n{y!PO6e9FTT^^&W{hd9_c*{Gvq z3k^YUEN_EVt%F$ZZ8PNIkZ;$?_tx^0UoEX_6-b+y$9e=O*1Oxtzr%0DUy& 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

R&}!3Bnu#9O2-1Hw zZP_)`q}>=OMoXD#VZo;Z~h7q`k6HFX&vRjJg;fW10Q&%S{cYnWUxRFBp+ zS*=|mhB|At17l&j6&vf!%`?|HO4jG&FHh1DR+-+L*r?5*G^tEWFuzd$g^EF!qrl)= z|F$0V+;m@^yFJ9tp?K*VmDlW~gd9FtS8evuU+L zYl_%FX*_I0)63SuU1ri!W3H;xgUDR(E3mV&%zvN;Nkr-B8K3R4a0gBsq6|SzB^znk zKP_9`qKbOQ>Y1)%!P_n=8QA~oFXUvd)B@y*HV1kE%gMJ2kDQW}W!;j+oB_L$^``#4 zkOsZWImu}A_RSQLurilDg}Ll5`q~O=V!X*{)zJSHW6(JqLF2?u)#cdHA93Rre8YsU z%O0WHlRSu~E&it&6_Natis+sLx%b(Dd8k$@SK>Wl^j^pWaL0VL4BK!i-rS6uc=500 zC}+c1yJ-4(_mJ|ZOS1-RXTbd;R>YUI(z6DuK0A6^1kDum)g=@jMD!D5pCw8yoNp{xo7{!L7HqE zA(f?Ji&x&t-nCJ2+v-GR?=eh1>bhhHCfaCz~Actw^UY^?Jhu;*5wP!J2KT z55~&uKzlkKcMP=yZcS+ldaJr_QxBpx)p_PFVTLDU^hQ`CCX%9nu6bDS3r`WJc2%Yr z|C9g{6xgh=N-yG|>qVWuY6UpD3AI0jW-+r8@_}%iV`p@If4mbThzm4QP`?9pzN7y! zZNKyh!4?Ljht!Q+J|oduQ7uS2JCc%AS!TedW&l4DWj^1jbYwW&dw~&iZ?1qa%OXLU zB~5fl3P;jKda(HV{4X4+^Gs3gA{r!zGR?)cU4Pk}u*JjrWY9!X7NqS2P>@g|>0*x{ zJ(Oh{r>bx-B2!O~&CcH?`DXGG>7`_c)@0kA-V1G7SvtMr`5r8Z>FPl>MfpLhY)J@K z;S*C#YxFB|-Q)3(5Np$Bns*7)%xxV(4Aot~JY1$|x*UtKCbfYtw&2qC1J=lEt6iA9 z&&HlP$OG-U*Uj*oeV#&6R9?NIaM|)Fbz+*hJGSamsusCL2x!b(qDL32$(ajK4HqfuoPWU>pbGDeKr z(JfadcC%AE*s&+NQ+qV#;|tDc8O}p8v%vrj*1k)lia%+W8+_!1Q_^9j2Dx^iT1#y4 z8phPfDhqe8+IIhjJNT4W`}hJ&?!n2cy@l`pV(hKL;%u|6-QdC9Ey3O0-QC^Y-66QU zyA#|sxVyVc6$A-ZIDx?C>;C@Lz1Hr%_Fq?>yvH@4x8^hE81oJ@-2WzCy-X%vhT|W& zMLx|_$rhwc^UD1DWG|uGDe$3b{S!n8S8T%m=QvM*!*9W8-)o%95roTdGn!_Dmzj5yHo)x3MaaG>uA zs#{w5nX_-af6qwH#v~cTJQ~B)z?y#sU%SVRA6|;H0lI4>4W-zN>gkiu!Pl!mf%DR> zdD>;UEE4>wWveisjk2?+5f<`VM%7~a^c+g%uJfNigsa9Jin*YlZJ)ll`@*vN!L_5# zg)F@a-=QCkXa``o-hw@iZ;|cjgR_VqSgwnv2KPWx?}mT*6V7zbW{NM{V)qWN6Cr|s z4C=+Eo!Oxzf^4g)YJ8!M+ez?We$a+eH(R=Rm_Sw?o!|SP)ETpp^kUWz1&Z>cb&&qQ zY8(EC{`AjY;ypI_Ds7W9FS zmlzddTEHV9oN?I+4WU9vt`r(ejWH9BA(k4Qaa95_L{(-tg|EJd_MSYmey{LCD&U|e zlA7Z@648eIS;|jY2fz0qLrT)%*CqFz6@eZdzAhJYu`QCtuB(l2%!#W@KyD91w0l1d zQq*_BV`Sy|hxLKtjdg?v2PS_Euj+RD3eRRN?Epfa`*tRM?xOi+I>7;J>6pIe6I29D z(3idi_tR5*g|emZ7NNO-Sw3p6MEYHTXUD0N=V&*FzpU1c+}!?w_vH5$e;B%vKiMU)tgyPO)1hlah1TBOHf5pS{1Llg>8ic z3s2xdj8A9n%&g)yhpmQI`@{sphD%WVRTu|hsJ;8hjx%TCc57rJovUF-H1EO8OFB-o zx}_)EFDZjEnG(Vw>(YhM`DTySMXnfEp4oC|Fl^kmdJnzuo$3LJ4h$X!W{kHX;84Ri z@-mj=OwKxtjNk4n@Vu8?CgHs3$*F8qv$bS1AeW8rkt36wUbfmRnW=XarHTv)x=nG4 zHtrdlOO4${cRs2^qRs3d7{f%>`kggihR732dXg zZ{WY?{Dsa5YfUg9Zq}^26SyvmppYA~H1gCP?FQNsEyV23cs&y3nPXa1k|ZwiTWBGO zQNQV$;u*h^l3jBhx@+>|d+|2L0MOkoMu~1_=N)oAI#2fEdX(cM*eI=L4|_#@!R5<3 zd9KknzfNX6MIOSFDU9tY%fV1@LGe!(6!Gp;$IVGSyEgTbz1ZG(iEr$NW`{?1NBkr@ zFPWyXP}ZkVDZlhNWsr!KUsv4SM9YJ5Vp{a3nvOzS%%r z-T&LBfo$Wqs9xP_`9Z~FC8N~NYiN4=R7D?tMI|14SdclIDHn#s&k0TUL;*IgpxS=J z|1R15^wo=p{*Y`4KO~#~jo|&4t^c2g@LwnMzXTiCe}_WJ7E&vrACjd>6=|wiIXj^{ z5$NQgWVBV%ITA2`klzkDUWkUetbYS9987J9 ztry?^h*A%t^d>RII;M2+22-1*XeFKaDh?vJ=-m+hgW!Gjhm43UiFkkq4o#x*E1)Ry z>c5St6D-w<_)w?G^Q%I-S3~r5hZs&3}7KcdK=wdS)R@ zZxrwM+-4RpvNi7Xm+E%Vn6lmN=GN@LskUe9S#LSn6>Pl0-6E{nJs~}JCwXpXk3JB{ z)?0;NCMl7&>nw57+uQOJe>uUcS;5Epfz|HWkt;+e5apz_hL1Q{n8!phWF1nX=-ToD z@g^+BbZVmv`68-9L@m(#NB@Hi^@;pr=zPkg!4sSIP{5v z<}S5VKRzI=UdxXmvDK^g(Bo_5XjlFPhB}f{*m$OrQM*jT(EJ+=71F11^b?hmOD}CmJpo?Fjx#6H9=A{Acz_1HDP&pwcT0|uGYTW0i$v(x zk`FEvFN@7OX5#bS3c1l`OQffJ!aYrV0hgYM$(ZwytxWNafn|RAniX@IS+PT{tMZ7f zJsVLqz8xINp3Gz(nD>s%zhK_GJpX`sv+ygk-o1@{2sX_q*I)k~=FRzkVBWR=1@rDqz?lh*`G9!~ z46orRk{g%TQb(wO1k!#%GH>i za!NHV9`3(-t#sc{J#>8Icj7OI`OC}uu4bl0GI8guXR}@||6D%$_c?a$^?1MaDe^-Y z!5Z8Hl|EHFa|P;NJK*l33(rn*p`;VOpn06V5j{Tp4iIE{uMvRGx?to^2yL@E2c~~xt{60Y;Mj`%cJKyNAmc8l>fEvj6-wdEnUu`07>`-TFBCW>s z;*G5_u2tWMW8AFj-^s#X#GF21Zt^i?X05>f-8#_1F!+N^e!&W54N3XH(Oj{P32h1a zaB{ zIf`?KQLFOU$Ym}g;K$C%$mR$>7o6_ZoEfburJ+DTD5a`F=N-5<1Tb;3F2p|VEW*TfzY?49(z1Uv7o(9Ru^zS>= zQ6oX>09wuX&S32WaZFd``5BW<6{h3jo%@jkV||l@30tU?%{m0b8snx#`H+{pQgN^h z>nOvv%wg4mo9JT4WQh8-UyEco1I$}7=}Gah@*b{3LvESI1Wj3Zj24yncpCFM-*tb3 z(PDA3Jhw1(;k$;#QndZ1CoRbUa(X6*vsm^uOZE!oPRN|$BT^6gG&)5&xt7SzVc(It zv*6avOrgLY7PD$J1iNe}P!HtJ-Jn!+`__=_Uo1Ui^aDn8?N9rF!E z+_Y>J5y{lh+OgI-Gy}h@NBYcY`j#!}gUYb8%rqV8lgw4cC(ZS+m}#eK zGHFPu;R#I)Y@*pU8LXt|+-W47HAYgrWJb89=a-&3qb)-{i1reXIMq*ZG?FC3+1095 zHgGrnyfjAIukA7SP>=RT9=(bw&K#O^L#1K;(e^Y^3@~--5yRRZA3^~Wsrk-&7$Zf- zU3{Vkv$J9*Nm{SDRQ|gW*lOL88EUVeAZP+2!8GjeZ+>oYjrTFD(qM4VdKC7lehMfB zi~*h%$)E+(4lJ8qxdVy-8D82Wv|J?s&8Jp4h(6_pLLDiwdkX^+?(c<_i;b3)@Cxg! z#?nTi{wl<)=N`*`14#vLNa`;33l6)71OWzLcgzl)gD~xfD4GEH4`ySM=8k86Smn|B5sUU@~RE$wi;z^Av6}5 zbX2qj)hP(Am4bfeRnDHLP)uvcpQ^@w!!bB#LsnqCdqTi#NPF-@)l0&7;0l>rD}2LvnV|x zU)V984>bV&q8p_)Ks2bYp zFo?JZ{!*yxYB2We!J#>}(W%P_5*H-`@yvbaj7BC zaSoE(Gue~#hvz~NzgA#R2OJ)GO6m$Ve`p%c=m-B%c0wb-Q4E>A&dtJs8LQ_6=!v(p z5jx{$4rT!)To>u(;K4bb7Pk?EmO|xx=}6Zs!$Y{s58-U|!azK}2#hQP3kX8sZsKsM znEq8bZb!?0V^*BsYxm{RLuIGb>seM!NV&RL>yS!ActaV&+!89)T3s0_1(;4l)n!w7 zUKhyHLo;cA*wF(wDbKF-!1T*J_2STJi;DF(WLYivBWcB_9-dI;9G*N*Sk^#2o*`ybLFm`RAC#UyiBPe^S8)-Mw;Rt-k zPnt{ev9u)TH0uLn(8r~mza}e_+4_;AOnC`_EN006`O}_k&Hy2fA`3CH7Ihcjw64Bsa~qQeFLC|MB7(ks(xf)O>*(N{kN$1xz=QIz!PBhToI z_0wk+w$}WNR{=@_<~nk}{Bi9TIU#R*z)~At>vW)}3fL&Wp%lBH0Jn_+iTs)U9Cyp& z?UWD6fH%2b0Kw9U2o-?A_$}_vKIlq7F8~Q1T_I4aljI2t>28TVns!c-ltB?zGf%uD zRD2eP~yqRM8Q}b^}Xd|iS2ZnIxG!c9@6{MR^}NwtR@pjbeaF1 z#RhDRb88p3?(E)59ARb8>x|nUYIAf=0!jarEt4Dvm-eo$Y@CdC7rq#ewHvgLfLCd~ zo?Nf3tkw#8p46BN1=tg-X1((RcH8P2GxE2iyjxC=lfLGT_W`>16pudPxwnzv*Y=B3 zxJ_Q-wJ&q&bTE`h%OZr_yJ6rxDG+8&P^%jkosoZ1kY+_x9NT^%?-%B_z5kE-MKRJE zgZGCJVfrCN{BNP=zZ#Q&U3AF)di;Nj4|!_3su+?OZ$6$Lmbj8+G!zveto|_ZRoQMZ zX6#g{rb2aF<%34tPNQk2W_DJb2Wk*wW_$OOQQ1wR>_AASOqI$+ihA$wZz|6|9)!^A zR7VQ-ijSwRy|;N+cXu)0-k;$6sV;R+M#~t^$08^gbjN|wVbwn4z-*$rU&eCCK%Yz| zP*Q*)3#c(l5i%OognwUvO|=&6R9UqOuE?N9h&v*z6_;8-;dy8|5u1lPa+ zPRv-n?v5jP@Y}&pw6MuCu!tMXltoJo9LA=u-a=CoOU+A>!K;O!1}gsUr`gGw`<9he zGB`h;)uj3^!2XochX$je+}|)PB|nx#JmHt`;d~!@lzLja8Xskk`cHhiwaY1(rZeep zl|GgSy)FPy(GEpzJ_7D{YtMD|>}e7wKx^rV<&KW48mR|_APa~(ON=_DnK09B|2t;f zij3%&@>NJ5Rt9PgbWEZaC3^XDgPcyxs#?FEJQ~X10hZd_hD#IrZa@lnzo_guT>c#KxFW%%~&{67L^_}jnra# z5UJ-k3E}|bLBrE_g}FT^B7E2#{M7n{8^pwH;p%vSDcq=1ay_ezLQC^m7cs(qB^8^t zOylDA=pVV`LmKwhhH{_sE!eQF!50(~q42#~*Kgm!cr$`Ae{g2^t1nq7v>;2JDjpse z3>fSM{bmW#kx`aiw%{EhSeZ}4t}Jk1t>>wFCi?evO@NPeP2%?1%`YEk`r!X36#L)L z^xxuz`jzH~d#wi^7QYR?G^ki*xa~U|*ff@It&Ux55$Yz&a%rj-CTGr9yML^KD>-1i zv4uZQB;r1koI5360p@I=fN!+92~N)@cz#4;XLGVL>fe6D{6(}T{~%h&$9BO%e-N#O z{qTo+jOD)I4>gIrzrcM@1hVddEW}4?-UTBMj1iuVYl;euAb+v+W`H0hUn>eDlY^c4 z0JQilL{sajD2%K-Gg;GBbtfJxCUubRD{Waht!{Is`Jw9?)ee|tdjoeRCA{jE1i<2Bi^u)ZT(WQYfxT)%Wkv!Y9z^ehK%Lz+`BB}CF!Tx4ud`)?7? z-@hKnd@9wN_@coQnRe%iKP~IhNQOY4)poj<#FQ!HC>3dzM{~rV&S|e`6iT;WL3P6S+ZUW+MWMv7od6w0t4gmnt(Pwdu>}lf6m)RgooKwkJPV zB!mU4srrXJ5oy7#uvN+=-++oMVAgtb<%K?k-EXNe?8v>Uk$mXPstP0TyKO`6#0Z`s zwM6&}X^Q!(Q&!PS4NXZ6fO0$4>D0cFY?>ekgTVMB9t%PG5s$@Gyl#%h2q@CuEbFJK zJE#h^R-r+sN`pw2^^uks|)^(SLgX^aWc0? z;>-0|6GM#VDuK+gIKlu}3aIhHvkfyceU1J?8&5xPI?GM*(?G~4U2xdQ`|VQ_NAbG{ zld{f-W|kjw z=V-~IB`-(z&nG)a%fDYHDf+g{LKxwD6QkdyO}pAW{=8}Fvv=uo+B<4O>Z8ysh@@#; zgiT)}S7C1c)eQd_}C8~7Y3qGDhO_n<0Tm{v|1ut8EBPfx$(vK~+S{l0yG2*gUK z*Q&tlFcKDB35|-$QlAQ!g|0LEHYT(q6f)pPCr;%>f)?)Wm?L;}`2|trF+BD42R4~? zjxj(71?tp2JXzJya-P@OkZIaWnCucM-z}_ruIuZ}w2yN_#4kPQtOCWeQw<@z=H?Mn z!_dY#qk6HV#JogGn)708**(lTK%(akk>a8jk}Hl(_qt(#(^&Nd7!_&EQU z7Mb`o6#X9V*!IjP>R%^j?s)Ju%kKQX(4f!tRdl`V2Bub;a>cs{N$ z5gZcMdyx-$O;1HuX+C&AO2J|~R6 zM-VOdx9DD0u4)<=h11z3h50Ip*3MXNJjCC`AVQ}9N$qs8 zH{-?Z#+3R(#_-{ehhqkES=$g)a-V^bQmz~yOM-!@h?H*Nk= zZK^xw4_2}OryvN`duJLn@jJ@(=XyS{{UU_R?axEJP^B}O>DWCijj;p11TJVUJf{(Iu_$$SXqOYarOp1C`#Sggj!QAu=L>~%ACHSnpS1hJo<9fj{`9D- zQx>|Tt+&wSwD{g3W!gOl?wtaP(9BQEIX}cQhAx*a+`xEMp9>~KGGIJXWPI2sA*NPK z4ES5S1WECzsvk29qJJY=_1qIf<~5K%?wI9adng^H%f*@wis6Pwp>j~4Gzr=55%7dmmesdN+#=Ts8Q|Iq?Se(CUT(mZ)c0tCMn z-=hzr2^Ka`Hz;pd*+uW6{UJM6=8wdzFhMeBPGD{fq;8DVZVZKLjHaGs?h=y&;&}&Y z>nT=m96sk*_(wdnBGbDl)gVW<_C86}X-!1e>Vfp?Ix;aeT}N(z07Nvp^JopmF{`yf zC3+x|bQKVTIc=`J{i1HJV90oIxE$?e<%3oAmo=t@?-t8d%u@iQ+~o2x+k~{^`R1 zxj*1a(D{?kU$4iHs{PMnqW@5}D&}_P|HU#&Q~ju0Aq@VMVGm&EX?DXE6hV1h(K+OY ze@hAqLM2A05P4i$vXa(RwoO;L7mjRG=8M;1Py)?%V+0w!w-wvsb{6krZrAKph@&9b z^1?iGtPLs;9U?p7^EnHt!iUemw&UxeJfbU}12aO;-cRN8FtDM}=2M5Rwkv3RU+$>x z!X1<=zCzXn+{uj>4Z!mQkjllAfKg#w%>NL|fMqU`vzitmEX*m7HI~Pq-_XI|>gJ?% z>+Z)svTj`;Kq9|G*8JE?K)}=VBg`h;UjnrkXL`_b8LGVXlUQ`mev_V4VUQ}u z$T$RWsIZ>zdpnqw?u6RV)%zAIvTLkV+A;%7D*cI=6f($qIQ>QFX6L8$n5DZtQ$zl5 zIru3iUaCyK`d8b-RPBp38UD*g>YVqS$m!Nuu9K+)jb(shPm5>7_A1nJ|A!ERgJYa| z&WZ~ygTwBG?}@NI!jJffTLYvt-v=X7fq}Lb9Ma;f)SQvum9e6+{t|zf!_QuIW%Xuq zg{~;+nPmK%Yqml{nrh1|+t%Oe<-`dVU<=Nzqt!YP@ep(inR(1A{~Q1rqMl)IvZY$(vF15wo}tDZ~273Y^O*D% zI(*}^xbE3Oz0{kr4tAwd@HTN^J`f`hSGQIOfQI6< znJ>+cW~^GTIgov73a+=R7?!})J$$9$-lmJFRq2+;+b-VMKpc}D0)o_`+O0G5bGGXM zNR?gsNW7&_3fzA3Bl4V1H@0|o5lLz>Vr~EX%)U}SuLp>}bFBpCw>;n#(4#N=! z?eSKZx4>veS}&y`-1X7}-tkFeu@O-kqSXfc61d)KV^kt#W~y(G;|I#zeBbwd@$jzw zp#)K=>=k$(%D{cdvRckZL$efgt-;EMWV9?c(Wq?CIaB;KNLD1vzW+=QH(#h*p--}E z4ixO1)pHC-^CLcUJNIgGObV=LPLt!cSk!i)U}>qxX|^_8ZFSSe)|b>|v_G+OND&^* z_miK|M@+IhKC64UJ@UJ``58Ye<-2t@YhlCY*6OKbDVM$m$|qDD&GQLLHkxq(Q#7s0 zIG`y3m9C`Yo;02_G*cQ+(5W)BHg2~7UGlMga^JY7axvvM{J+{#r7`)6Ftc8io-2(; zQHuO1E~)H=qSY;_sdAfdA;&w0c4Z$^ElT$q)KO#o3R50yDy2E;Go>)5DlLL9i}+#G z)>t(DMB9$!O8IkMpFL~sH^C%1X!k1^D(ZYksKT<$1NR>~S9?7TU1zUFwd5P5sq+Mx}T%TdCcGqfC?XEMSVz3qZomL-aR|mN{BQdRfjY$#6EMM=e(7raI zvuc-UZLDJr{N}J*Hq?iHES7Q+tw{7R=kc46eL`c0gUP7(s%&U>gvn~*kjWxkK*hc! z9Fb)YghlQOA$Iq*)tM}s4`U;6b|JIQsSIsNi{=N%tjW)AO#udNeEr&3`^hJkEU>2f zJvp+{Us>XE5zuHwtImWva!pbZLc+36Qy}qCQ?;* zOw}n_qlTpyFH{k{*eH*3dLa9_@Q=2LU5gUp$an&R%YXRW*xF*gs*TMxB=}xyb%>-N zY1adB`KnC?^Or!be6>JtzA_-TmoeRONk<(}{8h#1VYt0J-f+TCyf!}Lx(VSSIv#>$ zww~OEWV{cLux~(suwDk_cyygjU@&&ofu7@{OG_u(R|I@Cvg9`>0d4$&&k!R*IA(95 zw~lXPTxdkwv6~0xw8s1KnZUa03Jnmubw>%FJ)yr%6ZQAI|M%H}zdg*HX_Iwo`69geq8<;_yJY~>zp3PT3dGS;LKH#CT?~#WYjlO zT;tqq8osYT)bgl|#!Um)Jr-#JH)2%T5U#frH!W6oG)7m?f#SKnTPMZ7WE@mQ$M5;6nvU<=W*CK*$0b6B_}piXUPbG& zMlqQ|ZPo))(ZcRI7m`bUI*F;xecxTx=zLBA9mZDGko1e;BYUS!oHe}^QO63N*34Yc z5|AizTw8qg=8q<4J2^IC8}dzg1!PU|C9eu~Ikz!lhwO2AAuH>+uLMs|6YHY;X<_#v zl%}*f`8OXT;Wxj}mCD@XkhuzDvHIKQIn3~spzxjXE0{3s+gp^Neo5|}Q19FVLngtz zTdM&-isM?S+Z1j`+RQblT?3{^=iU}0fh=N5k^E``UTW^VzTm#HX2~xeKWOv`*x$g9 z`$K%_fGPQ^gDy2r?(6Z~i^3DO%az4ac_|~M_SbR6rCV3H!lxxA*B*1YL5nl5SJeUKAI~xV%|z9 zOZQYc{U{1`7kyNm9V{40rTgxp<8Y!4i7-Po2k1EP^z_B@k#y#}FAq}}Wyi2FH?Cpg zW7`bp1mCT_a=;yNqnR#j%^ran6c{=d96(fec&gwOm#G@m_H!~8F9cvs!>OrR^EwqD z(88*jIh%AW&c{vCRUsM{4mML*Dm`$qMNc(xNkiW=*05o`%dP#A5y;COq1Iinpvo62 zE7#;vMkuTD;2XtlQFpoAiB(Ly?e^4UidjGe2Oz6;{uH2j+U6`jV*1=UpN>dO0PEFm zEO3x>F7fD1mTqkRv~MqI1e`Es^>Ye&A$XXt7-i4S_Psf-qQxIYfL%G?icHi|&l}0b zSi-V*7Ql^kd4@$Sv zerPY()&{}?L$(t~e1Q6X-VT+|dgR?5I!{hcvAn~z>kJNKNY0d(7@k0eMs&{@7$!QRA$|btHf{cZKS2E) z%@F_w;vm9!7xqZ*Cryz7Wp*V*QnJ=tl%bBtL=a=&R3>|0Ssr04w?#aTB&hy0z3hq{ z##3Wjx*s+{yziL1@l_JIN5Ks`1<>E25pzI*c$m+CSOp_=zfVU(@SHz6kJ63kfzVKO z#}wZZy^=b_J6Pa{Z*hdsXl5~9l8S2(?oAk>qo@TBv{U5OrlM#nRD%&%e}wXg4zJsP zArYz^Y+t3ak*@AMp%U47^Cr#Q8RtIm*7MozN@_~i>s_NbN z;5t!$p#3oZhiuI?b57QU|7sl7ASnX?1^!54Z&-9M3wdiE?9s2EilpTa#A!w z-xn(IGfAR=B=VLy!mKm)iv&|xYG>}3x}sM&y;BYu_=1sRy-0>ZXa;1#1gEqv)H(^) zZ{SZ|Z>jda2r|1)FMT;VK&{Bgx`{!oDa^NO^8Hiq_Qa@G#!icW6U zjt+lc$yKKQd9~qE0CXtoSWzR=)00ap_XO%!JCL|zCW*^p?Z__@H9y_(u)%7P5B{^@G`z;SkU*0OJqp|w@W?KYuGqpNFZX&oFEk>R*2Rs z-OZHP8`yzS5pQ~01@E5sxyB>>17Pll+cE2n<{jiqr$iK5k_30s3YyHQ3-ks+8Mx3i z>^@=douk$f8c+w7#bZ}s1Cq^RT3A%4d5@~&%RNME{q3=^u+H0*|M2>6> zKVWF{DTlwI*4#P~ATDQ(9qpN>BK)+8P3WM)kFi>>D6|<8nF*gU24fHU^M0yk;*OAlbrkTe;z0Gm?K~=#0Qr~IR@Ohw4GLEjz45&v zcY?)t0W^*-Dr&8<{9vUlY-)CgiSSn}hiQ5@7In=@?z_|EdvoO2&4)XBH&{fahf8j& z7Pc`z`En{pw4Ec9y?8hUU3mmm9aH1l%YAdK7Xo5yR#_K)0%FqhE{pT))u(L;Q&uPF zbu_B(m0UdnApZM(1M+QbxbR~#vG8GqV*Fq99!Gn7V~2k$E!V#<9h$aIYL>VG3LczY z8w4^Ri>*{ zeW%y)4ML>AIu+Leahz3@0JRAJ9B{?+!~+>&{B~VEINL+YF6DMVMvlIH$NqiCJ-Lj> zvkCdo4FrO4ChQ*AMX1cE5F~(rOyQ@7tpqWY0PkJxP%;%^i~%?mQhJkwlkJ@>OoQ&Q zrMMqMWQ4PpoFIt?G2%Wm*n9W1-`7CK$s6F!O=uuLH9$6ikKBOoV~+G`Zv1+x7=(#B z2kk@_cx-l4K|J^3EEiPI_+4BTPNcT0grv&iChuw{C8Su%t5hI^*jYP9t zUjD6g_|oWBD-~zLI!$K?fg*rJjj|F;Yt49+Ea8y_W!KRdJWX$OJ?!0@dP|}H@C;2j zs5qEB15I_KQ+Y%Il`*OVg0Y$_-jOQvLV~{pTNxzZU0mpvdz9W$CV5{P=r21`?Il0* z%S&_wHaB$*!Pc%{>Yk1h;M%2hxxigLY1KH7!*8;B1E|Q^O zb%zVR3CbHD3M0sn?m;b)lM{XJK2?;~X2=bEH%S2>wk2h#m5l953htfVo)~GCXMz{i zbb&8nxozKDHHlQ#ptTr|fYv+tZD^<4(TDDdaZdhno-)=djBeAl`D(lh@HZM8m`Bo) z3(y(-3{*?yrLpw%)@3}1)$b(!UR^l0jk-oOJ9$l(;;m(ywXTpp(;a2FB00aLBQr7(XB z7onWV)4TY~!Belt7G1U2AE(Cc7OtM8gY-CWU}Fi?x(q&M4xo)ToZ?jHz?Wz@%7j&| zC6Uy26@t9=8eGUxu{ec^Ito~>E22}izT1U~2cKOZJa2jkzE@M)u-A3@3rc(%b7qXw zmegNQ9?0DUV2JFbN;at}R450i2er5%^|p{h+ zO<^vcp$&F5HgH@Cdg#Jq9YkoAA?;PME+`C+L&HdlSA1A9nK2y@+iP17Xb4C6^pvp_ zBZ@L&rFrT~~)`{TL6M1zw4$>$ro0 zouD(~j4d?1Aj#u;T@1-W7F`VOp^ID$vp7Sv)owzk{Bfr*bMaDiPn@tVj9`8OH1vYD z8gSZ|+VeWX3z{u>MeS_81%KTJtRDZVnfpy$qG$}S$bk*txbj_87>0*%FHO1b^X4;i zDzo`dJC#ko`&|~tr#ogp6o%UXIyTM_Z&5BH?wGJv)U1iZ?q&~!49_%gNu{KmBuYh& zKKa?XTLTb6c=vrT3-?Pf_PnE_@1)mZm>$6(iRBRv$FfB^DakSXDw76xwWRWp|E|&z z4%R{!?MT*$o>uNavT6rSNZErA^c1xJd6; z=3AoSEeuG2Xn+w!^){W>hjK;iMesg={>m|p^D2(_Ey{^;=?R3)&Vb9e;q@rV6{wov~Pl$kTB3Og&?yJQS5X4moBK zv6xZ{n&d5&1Op~5eBcc@dvMHk8X>)o^rAT%lRc;0<)-4ehTfjAw)(f^>OFDBJhN^r zlfGXH@8VvKa1#LHm@`UcD=$j7Wgd)-2c~-9?JfLX-+3%3>ss;#_(DSH%GfcC7=eVa!A6Kelf{z~u`JF|bxcg(0XMdHw3U-4+m0>W?G*i(7; zr0Yk{MC==5c>PGTDcXJhHnOuU7}|I6^_390dEb?e!>N4;;1f@X<#`jb<(TnK^4%?d zWXKx}`B=>N?TeIU}VQu;Mnqe|g$G@I5jP2ab z|89EHlI0zjgiylw#zi2D;nrWu3-A_ZB}%WvD5VCu*Ce?Z7!us#x2 zM3+8XCR$nJ9WprUvf&=ec`Pg=YZkS#RZ(rD?IfPHPLh}= ze@}g3oWr=kfAM~h*?^+8-l5c{h{HG9dHI&8lO_|fS4{)FEPb>^UR?3X*R-G`rsaHX zUq2Cy9I{%3 zx0(NH-cZojVk;|)mPej8o2*1qA_||>Bk~Q69h>{JKrqxjlnvH>AY(s7TYt3p(BO-Z zHM<`9rLb$A7iM ze^toKKsc%9M}??<+_YH#Z!1K?+}O?C<-e*!SzZyG8O0ydY0VvVSaBH#dAK6#u5J__ zHVSqCBHY)LT6SWQe23w{(VGRdk9;kOyM>9#D8a~jCBG+k47|U1h7v-TB!XLaZa6k7 z=>OHMg^-CAMONWHYBy>%Z6@Zc1BT zruSCOCVcNJ{5X&qk-hI$dVd$a_)O-oX+xc}bU+d`o8Ij$4u8 zeSNiq-haEc{PjC&PyRBC`8dUZ52NJ&_3xzQ;^<`V;`aBXIxWrCbx8vy{4q52Gde>N z3PV|HY71E)xla)%mD)YIyD9G|i}gvybfdqCf)8C3=?3u5@LtvOcadPBVAYalQ(kT? zCJ*7SU_k+0V!nJ*wDO$g(psS~@9Us6^v0Y+}#ulNcZM~xqjI=EOD_g!q| zabA+9ibxyD?fpDMZ${>f#Lpje<%;PO9mJ?zr!pg^W_ywvfM*!7?j31K4A94X02rjO zsD`62Xl)B6jtgoNX%=MG;Xb$%8)r{|VCxGTmS3Qa6N#yc#fmQG7ouffmO|Q#l9jnr z#$rE!(zwPHm?+8p^4#>kd;S;g4oH@(usADXSLjUhqJujrBOU7 zny(|C5Sd3#JDk|}a9Xuo%mBGcSgvvg-a_$tNMuwkV&4n*(Yw*&YBxa&M^qEmnGd1^ z{az&`PU?$7lun*dX4L%*Pl5r;Wc$ulL6_Vn7*x9+JbZ(pdBSvQAr~7NJwXZuKR53J z&edmS=hAa=#1%s~Ch!;*EbpF4{!CN7_onVlVT4HbqEoz0^^?OMQ*Kv}ix3d{d*>s!|nE0b|xF zaDPm=cPlQ7Wt~tnjJ=%hBoSzOq#QJ90bK_A5gc}zUND;^u-IBJpqHQ&=efJ1L$T;g z3D~4YtH_B>Sly>KnC4kLXMNUh9w}yf&I&}1MdEwi@rrW%^ zi;CA&q(IkkwPuRm?RIB5wwV2y=nMXW7sf|{d*doZD^ZZ^+JO>hV z7p-QCc!w&+?3BK35%N+E{Aq=1hwF!w%lgFUHL(xB9|LU&Zph(<>o>Ch*sqD$3vIys z#PbwBzzO;S0UD?Ph=lPr~ggq`p5tBe}e(E>cIM`t*pEkJQ`ShK(ZmB z!6C(hA;*bO#1LZ6W5~c@n|?5pF&f*kq|C}OX|-!y01QTGY;1M6z*pOZ$smOn+9F$9 zYg=1a+YDRVE^V<}b?$kOdpTt-D82^t?ZF7{c3tf@J3emn^1Xo|kijZe;r!G@Qo7kT zWL5pflSk0jL@9Exq8Ymye!aOG1LCYpHk1uVyb7{n%QsuJas zXLKnFDG53$7B5yvGxv*p#L*SorAtTrhEI&wiz1BlH;X2W^dRHl8iuq-7H_(YF*xFA z@j61ca6XM}HA|HqX+(-z7VB1NOSnDu!Qur;+fzF4nv^jgZ@cRSiOs{ZX7P1bIi5Ai zb3B{3(iEUt~$ePR+B*=|{MhL>e?Id@Q5og~Pd^Jy%dGzq;@ zhAgL3EVq~`b+aY5CpzAGlnK9}enJQRP$n{DKcxUI&zKAmvbe@b8?v5ifOXB3=27f8 zED}=eoR-zccu$JIIA*$KeDYIm=p|p;dsx`HBV_bnE4_-6_Q-14lJvET%eZ7deWBR- zRYsh7CrVt0AzxogJW-;n^yqUcKwS6TpJK;xF(AdK+pWLUfS9lprrT|NEIZxzv>}6t zOe*?@ThT6BFyB_uG%Xo5yUP5%{yo(b}_J~SWcxOd${mzD;-Uc7gS5* z2@s>|S#@O1U4!;P^z8CMR&)f;^8|6cq(NFt1T@ks1rw>9QJ3VgI)K7-t_t#Cokf^5 zCOUCkb5@GPtqy*SEt|1mdC0k3BPyJnu{IidT}dXaupI5K;7+4)hZDO!6UkNRww4W( zR43IB*5wzpR7cOnNPEO4ycC!+Xx3TlwsyBR8iSln>1smVa~!iq)&gR4SI&|2mW>M! zs?k(QN@2XEbhs^uq?1)4UHq2_d2~AuOrip@$~h$F(67k>#uR1df4rwN$Rx&P0nTuwTCO^GQ=f zY1&%!OuYze+H`Tj^7yFY=ZutO$u8#tl}kcKjv~>P8d@(tNA%H_C&oi} z+T?nN6J{5e!s}*_ME)^4zR@JG&mBBd5hAo<&{^s*5(U?|vN|J?n*l!xyo;Jrb8n#n z#+{OWT9OaDZiCETcRJ5c4hq#e6Jic7AHwtz6Z8R1UNy+0ORQ9;|5ydL1%!Z8OA|ot!c@8|6TqMQ>qFR-K>kfmow8DnO`qq^1xy! zQ`$yT;kRt=#%oJEEMGgBL2fNu^RHe>DytbxT$*^E)g2`b6d3UmBVF2%vHptomoB~iJfcYlytdWAC@X{Z0dowhM5UKe>OQ_*|$J) z-B#sBFU8cvl!zaO7nEuqQ^LH)vI8mKz^VDe0CK4?)8!;-+}|qKkfJl)LDz*NdDOTB zBdU7k&_kDSysJnp<=h_59hIsa6-PlI>v4g*4Z#X6P^V9JnLnLU;2F#8ja>d8zTPp& zvZ(9Qtx8tfR;6v7bXMB7ZQHhO+qP}nwr$*eyZgr1-Er?1vE!WmXaAck=2~lx@eF2B z`XymM`qA=z9cW46oj=x4;AxuoHWY{B#%EE0NkkUeWeeV z1qf1-f0%ucA;62j!vy*e!o9?VsV{PcUw@_=8^N8ZuzAaU&NrG+n=VUzpA5~?LR<`M zwE5QiR^gm}w!A)gJ@`=3JG$Xfv-$x@D^H72m*qI?%JrA!{ADr(V)?lt39O($p%0fOBH+P3L#8A?&lNmMv!tfZr>%$d0=HJehZ*r``1 zftl3Qa*9J#Fg5mR;rhFJqmO$a>1%r7UXs#d`>d#3#6_OiJn`U^0Qz|{DMtCsHNS%f zkhQ!sI`~*6rTEq_dU^N6+0TEq?kCNtpHW#)bJv49(<%?(ZcBMQWBbw%#q z1ypgfZiCtJjOK^1fPG4r)jZ`><}Kg)V-q^$@PK?Ar}(gJ7Y=2dJujM}&x~ZP<`WpV z`Mz_P{=RaT$vzGj4)cdn)YAUE=9+Lz<`(W!Z9H}x)W`x^)UQBq^%r^Pj#SgO|KozB7y7Kcht{d?hr=ltKS;3SiqX$0L;}h zR8Nub#uLIOLQjcon`-&^QU%U?IhGM!40}}9(SwdrhevKE7Y&?*(0gq%#07&BDr)fOfphb1u)t`ri9qUQ zt&IiLsJeqe*+nd5`(_mjQ(SV0RzH=_#C4GBBg2T_n3zf0ufhFxSi!>OIEscr_G*&B zeYt|rcovWit@lc1>-|M$P*%GUGZNzCiJ2DBNBX1%eFaRsbs57P;o@tXesAdgxoLyS zV-KN!%cQXFijBZGbILTDrUIm?{H^u>$k!c9ffXp%Q(1;2NvAxOR!?N`veCdgkBLfG zt=auXL*`q|X(5&_^!JzEx|I-H*8+GhuSo7Hk%yFO%8HU`=ovI*X@`0;vg51sSd{*)dy70;}{PUtW37@M{SBOdtL464Bvb<}7 z6%{PD+8BpJ98H>n-0P77MO9MzOdK#9g)F~X zFrbDV(>Te52-MPX%pxrnm$N8a2D!f)W9?^f79J6^i3-LYSgt_PzzD{y(g&>gUC6zz z$$``@h7-IDK6Nj#A#>xFTXu`#t!15k5fXa?_`459Gs#esFr7Tp0j}#SdZ?Eg5u+jTk zo20xZPoAyJcxgam1(x?wllJyCcj)ApKEI5_n%0XW#!+h*M2CapIdsWQYb$l9+{1?{ z6@U*FGDq1oO?uW?kDQKG4!GVJD{ zL^XHs=A6?lHgF?XFYnd`w%^mdoDkY6(G!0H(Yw`=Yh5wPQ`4DjWJMGt;nGD=LQe}Z zjA%Kws(pq)E_$ecaiS9z3*bf$vD%>h**>TZ68rj68goYRuq*G;&)(p=Sx@LnSa#2{*a0{VUq!)j{m z=Ib}Q+9~vUs&0t!ld(R4D07!s72^rI=SO(6+cjoPe&CWPJ-4v zW(YXoM#lCpM&oy#$<#@O%M5nk$#strf4;i_1{~zk95ZVUP+a%cgpJ|8%%|chO@!l+ zCAUVvmfytB`g6{$0KpNLOc|O;R`iV}C>!9v1rV^${gx}p5rU)03m|j>%+vJGmwu3! z6XJ&M&&gz=z%EmeMz|nz8_!(Q7HCCisD6=E*nOAaMr?)db~yYI#DdeA@QPRoY&`s` zHPemYP*>J{*Z~PDlR0M`TYYo9TlKev+ZSMF>$-vuW5w+Q5dw_z)PfUtu$O|z!|9A6 zB(sh;p;G_R>nIne=J@k~7&J$TE?Auxpw$oU25f&SNws_bjq$*;G}m1d`xS}$_UoS; z9NNr#OW0TW1FbQ2at(@CL^j=JB)VUA*+lm*eOu({I}>DfTZz?_gCdIgxWMGsZ# zcNZY%3@lqVi{Uzh0=5xCl#^*38A}jlc-rbufBjzVt7Mas@*Det$SxeEz-}>&Rr3qK z+-ankv)})W#Jpb2-RK&t{60r>=BMj2v#Xzo}@#m^T02QDE7-o>rORMhq?z!Sx8m**hIB>!ZD= z%-I$z+&vV}xfU^hi^VzU#W9hUpfjdh>iB`$t>20_EQ6xN<`Sx$J#_6lur>6%IN5b&QbJHAUh>hTV5c}KF@C0nW+I5hyv1F{<<>DXJtn8t-n;&LKeX_0T zT{Ttp*`VF4#x9S4_aHH6y&Pxiz6%5C)o3RLpje+|eZAJ6?Z+IHIkMQ)Tdf&_)IcLK z)08jP{%5{XoKF57+sG8H{*qRaC2jal;kNr*SJI9yoZ3EtIzIpGkkP7Et;&Ib88MTI z8PWY@;*!=S%2=SC%$%~(9#J_xG+3s&c0=3y7tAB}R=E>9vvXr^!sg>>`sk!fLCt(s zP_Cvw(4|_$LKT0glYSmLS`Pg5es$PoL4Ztr!mj`{1qQPhtgorQj+fGa*>|KPDb%BL zstHz=ly;RA>uDl9q_rka^tQkQe$OGoC@ROR^!;VLCx~s$N&*@5tmyIcAAP$BG%ridlQx zDl6S^ZjgUmc)FfsO{e`fwcLowr(Pafcu`oc9`)Qn%_o5`QQTndkF|h`=wSp;hNv_7 z8}Uvc>9ax?G1`78HyEw?Vv1}h8`Je9vh-}}gh_QoLwhLHHp6?9JPYnbvZM`Z3GEzzB=;SJ(r#Rv_9P3n6d|e+w}e>gVt$|kbC9?(#gCxO)g0B=vIZAK5E3ardhpo_-HFQ^MLWS}R}%6C10%3c zGn2PQ^t|mJTX&?QQ`UVZPw=DjX5HE@B+5q)L}JB$v5(|^-aW%EEZTX%6HnjpOoAu3 zt$4Y>*x;C4c8lVdT=Q7{z1kVY7@QrPZ0baFg?cAv2c`Mkv71xU7qV;!YR{;`&*d%d2v(JRuI(eTx(6%}inzmu6l@eDyjBL<3-$>k_no+0Ebb{V^ zi*Mcl5AL0s*BJ3_VU0KLqqt{?rutP{RtJw>I>cJ-ke+a@d{lM~12jfDf(c=i8lB1e#$P><%SN zu+8Jp7;sC`lDgtSWH^^Gnwq&}a56@5J661tZX=_o;8}y*6zSM&)WQ*ps~}r-c}8N9 zhG3bUYv9l&dJ*5t8YHVrd0Q*X;l9BY+3@{4vXsS*OO@O7F@Hvf^6jk+SMY(8Miiw> ze(ZB4^!DWDwED-SbzD~`R`om}$UEG@H9mN#b9iWXuzEXrhm?;%mlI{2GPWmaqy}OcL;i_AQ5)qN-1^ zwd-vI>4B9o7;F89n=y;^ie<4F&~-6OmgTyxTaJD6NgfnCRM~4Bbb@yO$r!YH%u}l zu_EkC25qXmtoADllD6wIU0!~1CfSV+2Od!%-;hPOmt->RDbi+}6vYejuTWgKl#>|q z`}Wb97KKxOJ0Dw(6$732m{7tvva8|3$OoZKYb&rpIF27bEBg#x0MlVFU`(L!cP$*edRETZb+SB``&)k-xOutYl z2dmTdwE*WwsMD{tz{o=%2bqA?qyNqnl1JE&a&lHF^)qA=+Ju$zJ*qm&OBpH)$CCF- zbfUETi5}Ze_R49$f`5p_UL5*;fNlF8j;$qq$~}|TGK%0RU2to*Bt1B0Fm;(PiiEi6 zn435KuDe7qA6|VGU(gmBe|F?KvKh|(Y&2m>C8>`i71t+%v|6Hvg2So{-USxVuM5tx zK5+Tb1>E}mzfs8kbI(oU@0oS-Gi&_wqv-r^td;@_0&<4-))r2Nc0@n#qE<%M|5JNc zDW_>YPlwDUwMKFYgk^{oF-;HYpsNO1odaQtBv%MYq;?qzPI}KSZ7R1ay2y1G&6~%! z_djOP8t(r1vZ0cD_{+o3Z&~(L``0{OUcfbxq>c)<(*f@!6|6G-z;JL}4d@@X7{v^y zxO7bJ!ybM43C8^;+GMFP+A^BiCwvhSo63C0g<>H5mxU7swf#3;pU(5&V-{D83QqUH zbLtnP5*_5iwKBlC#eFH0NLg3*#FJlCs^n1xMmJAj?wc2M#(&yWNfxZe8c`Ki&JNAc zLrt^p0AejPb|{H~5`<D=(~2OQ)`jCzGuvm{0*}LkXH#PL(swKEI%q|9JZ7Pge(M z%RppL?F6Ya*4R|C``?E`!dA&?5UcUZ)|0gP*%2qv_YxR7OF`5Gocjn0rKlPd;DjeZ zw4zqRm#G*)E1s$k!mt}&2rL-0m+u<4;CYWPTiEFw`ppBkm>w=w6hy1rlV^;}Y-EY| z(n#&@L`6EER{iUzFSFjk{K)=4C)9>F%k9QLQ_t-m!RG%r;{Jc=fd99u`JdHtsI0Dl zHH`7)C2E3JTU%=}Jk%H&QA=1A9)J&q$boLdM<4+?6jV^!E&`QANu=7&0I*DJkW7C_ z(z0`$W3hD0wRFR`>@oFBOK#vUHjTo2OM8C6_dGk5mqvQdUPbu>lF|~*g>7Wq{rxrB z&6wZJ^U!-*45Qw~#YsuYJ%vi%^#r~|nG$y)m%P=4w3CT<2~ z{nYO$19nq9e1+g;dpYN@o%2y5iM}Hh2Ft7w>B#if_#v0DSRE=PR=MH`4Y`i?oN4a# z14wgLnM4uWQgmw-5Ga)*PYDAqWI_uFT4{AMvT$Zll5hpe{vWAj$Kc~-f&k#mO&sG? z)N^Hucs^dUP-K&V{cV1=gDYe7c#p*W;Yd)Uo8D?PrB}{;iQYIbU`CDsSjdbZKAi!{ zVxAR=wcd##9+gsO49&=bfU9>vk%MG3!izJNLE7MAKh=X>)*{#Fe!tY9gQr*iJkKy) zUQbN)>)O~mNg`gRQ3}*o&^yU58QCKlUzp5~AyROBp6YJa2H6?ujCCtNV2DKX8Ve`F z5pUkTz{;d(fjzC1uGl`VWfm|&8+!pZL^<-^jL!*SWV9;r|jB*ShZ?Nxu*h%DBA z5>^OMl1y@q^EBxGRQUlnTU*~f>=>bmD!k_U~he` zQ$iY_B_efXAEa`*n95UQq#I3r4gWXU}uRLP`j}D3#WPla~H$z zEap&#}A`y*VZVEHi?6Y69V(RG0!@K6XxLHAdna9M0(h+K|4P`KRI7HH$IBb zwKg}Gmwjcq7d;)<$Rd~qvV<7fbefboK77e}Eha@kUCtE#Q8Lg)%q?0zaBu>aFO-}| z0=-^CYXpV+fCa9pd)uu@f$?dQSQi=u>tJ@$hl6=FfB>^SJPzrVvm5LZSfd~LDcK)= zqYuM_(8jY!7oHt@{dtV(<*Us6fkEFy3%nN35 z_}auKh_)h}qBLE!L$X;8;2CQyvTBTPup=g!nz(l*99#~+9Bc$QI4*Ma920Cq98ib9 zLZG=P>MYB}A;caWq1dtLz2i5Nw^PHKW6B4#DW;UGb5>=-CX`|87`rI?{w?vlW_hN? z-Cb9^34QUP|~bS?(&L>3E+)hK<;v2nW3h zzllC%dH#?twc-05uhp{YyVR-0`>Y$p%g=>;*VlM32gKPAK zE}Hwc2k2{1xrsSEt$Uue&Nh%4&2A6M1zx!}ujOy<8Xx~;TlM1VvE>>cn?&oX*h);O zy*4a0W}2L=O5EqUi$_vbEl(7V!Tj9YXOkPg5{woOF|(^s>rsQ3G$#)`Fc&z?Mr;ujl@C2siI)BM)_#!s5wrRn6<($sif$&ZCCS zSWOjWsg(x8-mVOJ<2Z0^l4Bi^Uv0Zy^!#;J#@G^sxf&kMwIM~TIj>+2&>gD6_lxJe zxA&^Ty`(vjRsR?5QNijbzY(&b6$pE@YTERd4eKy9*b-J38t&$KztD*@M4B!iZWQck zCmzthUu+B3kPXEGedm` zAzgh3>;D(0k*FN5j=YTW4by%BosMFQLRgzJtE2JMiy4RL9||H%0a*YOASQv=Pj?Zu znmL%N8rT(|CX%%#y!Ij?hGqIjRAgAmG&8LH+4Ui7Ih~4;0IU;5XB&VL1tGQ?^H=3!JEFzL@2k-57?_1x9pd3|^6 z&iUa5&(i}Z_#rYN{?8(ac-PR%dm`Sr^*Jm+nK%Q99&NxWg+L4G)(yV0!-R6{j~@6I z@+~UuS5v?}0gcFuD15uF*h^_hHt6h>8V?)+SU8Tma38J9jX1(JSS=cws*7l!A%e1> z%LI;gqK)K$`@f5RL4@n@m&6d)-|7nyda9PBiSuIWTT6_V!N}@JHKsAdqY-)qah?$? zv^ly4OEvRpmE}Mz$t9}AOAQo-`EE%C>t-U<>Z4Lne>h9A+B|uEXy>>|dbX3(i2@`2 z+j3!!>ygsf$|MX#5OF6;#f&8A9dX_Hx-*xke~0#Fq>7m_wni|-Dxi!{rHV!oxr(IA z-C?|^hQ_CvJyTLhPROB0mX*df1B1Qllo%L07f`G`A%>QBXD_E`lDOR5M3hOcyG_*y ze5mzwnLQ#co;6Za7=;n6XaLjhoE)!rHYXCPnI>!$FZL}efmkf#uv=uNxK7PQD&Peg zr@N9wekhm{?eroF%BPRToEktxP5fd1gqd+ND;jNYio&avtQ(`pQgRaNnTl)O-4M}| zgfn$wXH_Li&f(6Cr;ycO{Jqaa4AL(|PB%%jXr?fq_NG^zI%dq=Ptu$n;z7SB`u|w2glh76~HN@J=Zq*eVpa5jmrhJfy=ItKId}f4;P*ZNF2QYp7n7815xMgs1jpIzhtu z#|WoRxyq4}oi;~S-F642{A+b;RKAU#+!#e&a=wEzGkfHutfK0;fK$+WD#&3RpK323 z-pYmvZ=ap|Z}#kELxoEz!Tl=<_APeucnTI7F05U}K>rGtL6J{!*?B@5BQs*vp=94$Tkxr#teftR7b@Lkc7tLVPi)PqN>?( zrAg!NOJ{w!bBu|qs?7#XbFxkUm~jZwQhtO221OBk({e11PkUog#_x^V%xb#UYO4@v!-lx8@i z`|z*~WEx<1RuwiFb4Wv1yI^@~vZ`(%4W2>1kdm!wf7hhPDRPAi0`QaoMSl&q;Uy`^ zF)czHmMMlN8^w?{2PE4T%~jpT*o;4oXvR^?tVfSac`?^gAIlp&Qui+BMXC}s$)cCY zMlYQ^HPv{~{_02{glh%=Hgr>CBmo_`mdh81f;$aG4jHd9INo3rgFsZmd3qmDL6=N# zWt<>h4OvpDBS~Q8(>qGRbt4uq)5N`qP49mQ*mEbhYw(2TIPGo51Ih}(LtHjHd-m}r z;-)3e->RGKt&8n>%<2j@O(;;xY2sGn-61?%$j$EhE&RgN#kU;;)q?;nBMyg-O^8fc zkL75=fQb}991@Q5HjMpQNi#Hmyp^**72{vtPuH2Wdd8Tw=v8-iUom8^!gZyRs40=C zc;$(rO&BTmKJE5I8}G@}$Q8OCgGiYS-}(C#mL&+wiU9CMUjPasf~el-i8c!#i2|=y z&>J*p!YRwUFT*r+Ipo-kn`6l9Yydp>khXj}_(jmU1j89+I=ooYt}(lql~>M%-dn;i z9lhUBJ#ot3rKMRMxNpE;(E5rlJGXFYeM_2DV_Li39Wl8NY5~DYt4rzX%EK(avZQ%E zs(vO4Z>1Xl)&?}``!dGqmIk~$BM0V|lVsMxHlwQdXu+%UvdxoJ>)BD*)z`FT5r-v8M33ew})-Z2#!)c`>k?p zas)HyhJ<#L)V~ciP$AN-|H587Bfjd6y+0raBJYArO2(Wnat-R?Z$vv&wmr~{J#-u% zF^z_iP0PTo-TUIS_roM$z8Zy38xi7~oE*H;q3XJW;5zgGS4(a0zg?PIUqLr7bb^43 zr230srBC7%?Yg3~LO>k?}e@gb*x@ zr|ZPQz%64hICX?w1X6sATf*-3>H4~IRcr5vL2t*&t?&-5DeUQS3x>$KxGP1RQ3@hy znWrFyt1+~7n+eLvS0fd~b=Jp@qhbtkK_BFqs-p?*z7goiR#Szz!X3o5o3%njl0+!%7*=xu*#5K*Ts%n1|CBh$Rd zqoQE4_d(v@M;w9jApKjI^|!D-NWCR9@(2o@1tlg;Tt63H}P5fNzky)X`VjlTtw z>Q5fS!%_E?G#{T`*Y8}@_np_yAJN~RyCgnVoH%^ggpwh;3M|LKE${;>e;}{mc82jI z_I-chLgzvd{^KNi4>r6PfsY>h(t}Tnh=J1u3jF1;Djh@@C|*a;7vahlGVDj^pOS>D z^vmfNBM>!lr-{i?iWU_{lOw);vrmh%&bW_dBKD-+5L11{`#S+%i)q}geme#&XD>ZV-?j%Ge67f1H@IwpY{?Q^fg1F%xTpr48K1>1y0uxrx~AEmNy? z$FJ)}4=Cb5wF1LNKI&)KU>9|VEh>x_jeP&ytWPK*m{*PP%hlzlh$+Z2Gfc)EvL`Y_g#I^p&81wdR^TI?#;U7n6Nzo-m2MuyMeW! z`=ykVg2tyLRxupI+E^~<5J|ifxSLY(XH!u^on3&^)0huc?O2%rthv(wi5j_I(e_f+ zd?@{2i|7nXVt?LQR?$|}4gnh26zN947T8W!HdrgjeKSL&*aZ?7_Zh~QRH3s{=sJmD zBG(T00=$M|R-4@=-5kZQ>0ozl(7|VMhbm3bS`68YhL|47CogEF5{pmO_i1O8BJw7Q3b^>IFsB9~bY}z>4$nPzrg^t7?ead*v2qGv` z;wKe-{c*}<;*W%5xPPND!%kQ8U9qLuCf?@@wayoJCh(DM3xuUZ{ZszH{g8COa z-Hh|E-t{KN`C#+mc;I$I>9P{WHvNnHUVgi!u$UuXDZctGo+8 z1umM7@|VLi_B%f3(_q1-sFgAqa2OY`JCd{`n%4`Hm~CR@E4#ihX@gd(EL8mf-4!@f zRn)Ok9g{ZftQU-o9Kxrij@^PQRm(Ow?On79>PM~ezg$!q#mmWDz{i#I9rr1WXOSO7 zD=pZcmwE8dg$R64f&?jRHldj0o}nwK7S`rxTeV&y|KvsDwECt;f<`5ZmXCzap>pI2@vUU)mOYkgS2JCt4Hs! z?7mUiJc5I7tPgJSG={wC!-+WwL9$S|IY~dNXoN>-er^lfUQ8TU76rA|9@A)+xik+> zXq3BIjE-%kbN`~mJ>4@0su8UQ#nVt0&Y*ciR4LqMEf6$Ob_>vX+5MJW_7H~>*B-#s z66!W?JzLV(Wc3cjsR9}sq?ytHjnib+7C{WZms~sm#N(8Rhat>K`2*x)9_E?<3KZ398{AN9rPo?8 zz2{m#;ID*za;D|Bsr(3nS?B{`=_fwW`&4bUFCPISbc)ROxG+46ahP}6n7hyVA@u&} zRh_$K>dd?|!y8{*m|Hg4%ZK0(hE2yBM9-gi|J6eOGi`x(B)s4GnYM`jxQ70lX^W_X zp`Gr}`CHJ+(egiU|3%S=(=?x#K_C7ml}vAxysS7^+HQZHV@mvyn+e9Oj{cRhVUPh~ ziwwSqm`4&tIt{+#`-eesQn(Y0m>sWlY(z_RFnXV~?W#2uo&6Kuwla_tL_x#e(hxAt ztkNPkh*-5WJJ^PR1zW||a=xEWPy7*kc|t=Mbyt_+)L>AvJYxQowv9uQ0n-qP#Sc^=ETJbBO?^D zq#d0Xu@ILRGVWzdKO#kg*)UiEfL)Lg>s4J9+giQ!n-XcIJEVDl-n0V z=O6!I?0t{(q7~7&*`dF_Stn~e+Q5UJZXu-#=8#PgEU&AZp6e9OT2y4tw+HC~Ok;K*x`nS&>$@)k~WmwjMnU*HKmxqUZJaP4ve zeSU{ibw^Zd;IpWR*g?+4f22_nr_fZys6ZEf2s+250G5QRD=%^IMhN+EX5};*zk93 z1%m@?seQ>M1M>@>w&SlaAwucR0I+um>%eOGMo0k5p6>D8bn7_Pvqb3*CEnwlfK7Wy9zD(p%6Fk*E$b<1gGHJv*_h(vj^NjOT$Nc=@4GA`jt zicg^ubu*5`yt(r7CS6`8`aDs>NEK?+lC{@pbUcLCWQD(iXGk{Mk}(eY)B?agK#wv91@;0S-IU8Mk3)@}u0Eb#VH ziA0C-qA*&b@?+4K#Kbpz1q89KXRw^WZ1_kCjJ_pXf{R zo?A#~@dT(TCtJKcGOyklY5FgUVa5RuPs``>wn2-~I1F$BA3-7!aOtdF<|-2XU}Zlxa*(&j`e>UQVL0@9mx3v`c9@t6J{hNs*`a^Q5RkZ0kyAR#~4q6XAcUu z#?X(px5K|Hoh*ujsk)*&*+YkVtZ=V~oazO%hTUy_tp?WYzkmH#C-~1{iZ*}B{?E_a z_Wpsz{x{yy|FyQ|42=a{Z2qt1ov5HLy}*mk)lcJ4s%WFwVGc?=-Y0jB)`QhT5+{g6 zj~h*qm%jiR| zAbIhx5KS-w!v;EoIaavP$Nto#%LnSzV^#n*8Crv8CoB}FMXiS!c%S6WhI})Pj?Q$a z%@+%(wG^D$SI<(gN|ZDv_juxT1+EjqH*;QgWr1Pgo4daBf;wQdn4$d<(EIH^H^lpBZVDsI~tK^Eb+!2K*?vb}pmQWe&p5aNp9r)<6 zZX4NVZLbUkwC<{KBV%*>QXwuxgOEHzZNP{8s{@D(u8SfPBRkuXrzc3w=3 zv&DT}tI*r0i(P929}Mzjl??O#VO&sZU@BV3%t@=-5~{8Nligs0C11K0(=)@9Fo;>_ zabeMKq@L%p(L@(X?pyvO5VR6|PExDZp#AE$x->qf73TNXZIIK#jMO*6vT^mvR$b>t zx$D`F*Oj3K$9=R6^3li!%9)Nz=Czs;_2j$oBd04*gWBee7E#^9-5@`=PtbSvGRg`n z;W5Qndqy_s#zRcq)gUEnuAWNUjr08K38fdJYlbTaDtjIOqW{S934F7wNwUaNN zboMzmy%t!Mu&E>>TE^rZn1HGW?{YiKH~O&V0T46yWBbV%@Z3us}AvvnkKupRC*Drwr#^&`NgXq#B@VO{vrg zdW~MuCJNyrfYdHiql!@RfP-Vvrid?M5XazDOnhC~;q%EGBxPpG{#Em9bNVIYI&`EL z(WMG->Tr=&>@4GEY}53K^nWd^|7@`eLMLh(f4H>^Kd#OHh9xCot*>kGKdB1;r+ZV? zRY&2l@jEl!;EGNINCHTg)WjzSW#9+Dyeij2q|#T#0vn%h;J|=nOoCpZD7#UDrxE}*^s{C?G0Z@{4Xv40qSz4h*S%(4AC z^_ppE_jWza1((COb+<$Kp*pPX@UaLC^S%EMmHTPOC}Z|E6r6nux}VIWEa>~u<|Q4= z`*{ZsXez{|Mw3aiZea}LF?N!56a!3C!)#`8N2#EH!B5x|);T;E@vE|Idsm@>z^8CK#$w7P9Cl(nQ=1WntRtH`1rQ~TX`PN7-#l%rW%uIXoHvPgW;s|4X* zAX#-QB9JGBK;PUz`J}!u(b(oNQ#asmfnvZ4(m(0fmu6GYI=6gu-<*>8Wn*p*K(0Ix zv;VuGp^9XcMQg*{AlPRq+q;rh?xF6Hcv;I^b0;U28mrP15yxk}vIo_aPDGy+z%S{0 zv|A7s=>7NN7()^@o|43-wY2ivsv}-XrlVO|dgi65iX z65dH35Pdx4$sb6vv)71R!oU#o){5jrEbIfOu8*}cR4s=R)5Q47*PsgQSW~-H+y!zc z>xn_b_%_`5x|A5lPK*Qzv21Lk_J2aw$Lbwq4vXd531G)Ppgw(Kh|* z-ITg#qUK{lliiimC&$^>l1fd^2qAjcx~+?6h{i1hQWF&YNhd>u5QcuO z)3DY-+mi41^kd6z?W4EhxMHw@bHaRS)a&iL2jjO=@aXnyhgqdzg)o9)>&LRIzo5GT z>C)XfcUkSxH*?W|Y2IT2mfj=hw~AEfZmf@4=RFxInAW)^z z*xrhR1+|s6ncNp!?wT+s6Y5Z3;1~oX(y#&w<{k5DVbD7?b{_&NzNezzaY@+1MBMxV zlu+d!_1si&(b3y>YMS5Bqj2Fu=X%Wh;cv|+GUiKWgKSQd5ie#=BDnLrkht5LoW1%& zD_{;AsLp?io+zCZrck|Y9-BSVhq9Wuj0d)^eM$8CVa1frDG2AdOO}^axqVsoR|u6N z2d+VZU8f~6 zF{Gf3I6Q{Ev1k?aBCUy-d6$J4W#nPMg}?-b5~fFeO)cgF=8fX<^PmoV9(tSVzVV8# zJW4}lgOG(6V19z9(ezuN<@Wr>MLH9fP-~@CH^neEp&~<8#hhS5C#$C#>~iLOS#3t1 zyKrN}vxLZnt{77m)TU$;!Yd_Ejj<}l^y<9wN3r9n1T!`TdS+VSS9pvTJ}I>nmH-lK zmpb6hG^aBAM&I(7fluMWY1^@mqRd=xL3=W6`s5b{*bx=s+It&eRn_4pH7+mP&a#Rj zgA2&jL$VrnR7_lkYDuT3PMCOw;Ofdrg+#^Gzo3d{xEa|(S^u_84;X_6G)Iw`_$O;o z&zt>FDmK8bKQGR_MY#4%&T470{-J4}hpRwt79g|xiQjJHCOAS<&=S8(;Jo~~%L4S& z#e>UtPT8iMjDaw$Lf6NdYTm5L$QIi5SDlrqwFwHqLWbLt2V7t)pN_ ztu~Zq!>WWbw^dqis{>q?ISh3m*E8d_kDu0);atW>L}PlY8WO|{pU-yV-&bU8UrvCBTC*JWf$?BCc?{H z%;t!jQXa=3Qmqm9sJ1W}FB3|I1=hxKMdB9KI=l@OAh_$nkOi)fOaGp&% zb%-R|iH6f6CNor9KX*<|1xvlhb%@}>SJdyKTiY+faeM}i99);S{(g#}@=pp>kSq4% zIzSH_mxu2b%r46PoTzN5!z}6j(S9 zggem+5w9LQAEqrDEoJ?1kd)TiBl$3E{ayr|j7CEk#(kw0)#n`9?FflJ+kBuBl2 zaCAq}QSyUl9pq?S&(O4^)~!cka3s>?8?l@hOwef(W1M$-Y&cnjXdMFgmr@sG#?_%| zBl+qA@`F&!?kDv*gM7aRIC)&0!j0N^^FGaJcEqV;c~Ks};iF1gwlH1c*l&qFo5yax zn%arp-GuTen<@%Ur@un_a~PexLbOH(4=+9uLq&{l2pE}DJtk>yhW)w?E4oZ!oRCug zl))6MMHi3MhFsIjUNIEk!jZl55&gJAfnmE>lg>gq5l;tNh|rRm-_sK|s}eS)SKABI zibjq$^q(S!vKsJwJ+<;jQj-i=~xfzHnP zot+2j%}@E|YZ(`LE@4~+S%ZYTd3667vOMuF#Qa~_Cz`&j_2)i57sZL1{w2|?y@_SPKG;=eQt%r+7Uj1;tIvR>2Y|CChDG+>ICYG-bIq2 zi{Hp~T;fTrTL+Q3jT+02qH6fEAG z_VKz^mt$_abz}?rw5%MORv#S{7mZkE;Psw6ws!F~1$JwQGF+DNh%Gr5Df}Zn@Qf5e z&raL_L)kk9NfvI~+Ff0CRhDhrwr$(C-Ni23?6TQq+qP}n_-fyCzq|K6arTb55t%=7 z{mIB!8FQ?6&M}`6RpN%;deJd=gX+;K&8H)=?vrE3QNZnwXWY9s>f9d8w0i*}%ju4F zvVB3+dhkWHON)W-kb*!uAoNq`g@PIz>N?pBEIYX2mVMrk`4CP}hUW>vlC0#s2}wRe zAJEW%lYY)$wH}b>2!1%4RT7t_PWIGG);3N2l&j)OL<&z|e@-xu+XJ`qTkAkT@B;BX z?l-zA?%>=ldv+2TL{qW7ARMCO?;BK_$42a)sRMG}Slf36PiiL}u|ONC?u$i`^+%HJ z#UK*6by>3Q$2*W=^GT3;UdKO45l=Yg7SBYohyfZfX?(7KRD@K9avy|98L>3iDk@;d z8v^ZR2zln|dFIRR<&`|4I2`3Cl3jBz(JgmDAhBiTe~wtV@1wXMs7S{y$&**-D{t1& zaxL=qBD(){@S6sxyEmv|3uG7TQ_5A=$2Noym&L8_&xkpkQ0#LG)=0O`r`6kE2d@GT z|7DDHbFpX%3}8%>YiEzaF!HpNAnGc}>@u`|VKMoDB^_yFetlz?^NsPi<0){8*5g5uqQ|zhM{CvSQ`sI_-kPNBpGgQA7{Aw#oJD+%KYSmUN zD`cTbfp11H$SdIQot{_auEQ4ayWKxW{nRsIxgmyq(nnIKybiTQsQs*C@W*E>KEW`U zfKH2>5gY5w1gYyDBP`NWk5cwV)EGwsvNf0hI1PAu5s})RehBMNrv~kDGj5HFgIvuq zu}W6fT(a<8h>Bd)FX2BF{IrfgI8tmMm0ER@3yX6cM0IxIidiX&O{+?1s4fQ4(i~bb z_9*r#kkwH;;uX4=!X{wgR8=Jcvs5FoZBStAN zY{j8WKc4aoeNa=m@NbrV_WQ3dJbMVcsCWro>8x)vdXc1`v7R{SRRe zrR=awka>)TVx%)U9gNrz1lNC7GQlw*E1D|_N~9+@+XCzzgoBZzvcfRzO)JtEDDnHD zl7G2F%%DIN1n9?wv&QkCGKz=t^@BNd-t=cb6R1D8J$bD=UGhA6e!d?yf&Va7NQ~=; z4n*$@P}fCXlVa5EH3X4T&`w4~ePf`8vf~J+>eWRV8{54IcW)zXZ@<3nZ6j^BLPREP zrZwnaq}HiSVjf$R*=tA|0~E9e?U2mX;4IinT2|%;^GTtX77rx;?84 z)?FvRMyHpTin26$yK~bSnEy3ZonM8Osx>84Z&k=b8;`@8Xj~|hT6o~^buTiLAatBoYn}z}u+y(7;~2YGMoK&3tt+&i za5$smv^@BBYq8`%(t-}JBlFkkEtD9shLJ?#2v{!wYR0Hb&P;1-J1RBWW0qQ6R<$oq zU6`6^FIlNKc9hiEo@z}S(l>94xKgdtTlc`oyf$n8xc3*dhLl!)Bm>P-4?=e?DVKaxRA36pkd{N@xLqTrn z71@DUL)(7f?#39l@;(%NGn=DYviEJ%jsP~=E58fGpAh8(o)Fv5z%qB!yMHXHR7Ifo zt6&?E;qFOPV1x|afK>kCz7VKlV&v!gX3#K90BGeS&zn4)QDZdpCLmRbZLNd#c#8r0}%@i#Py{ zTc>xlAF7HoN`@EccU6LZQm>o4B^$Q&SjCBsR`nHSc-IK5`##~^fZyU%^!{7%2&X;UR_8v zd#v8u?YNi6XmgO+bw$RJ_V*MlTR&mK+Bkiijron;b!dYj!To62XAJQ(`qfYF!|ytb za|Mu;10172hvXuOzhx`<=}*9bK;&lLV&amYh0GVfOQw3wl=Ly6HlZx_K*9a{sKavd zi%la>#p#c;+ksY@`0pnJAR_A7VQi4pGD*!ZS)21>hYa#li%{UTj4+O5C5la zf!H2NU;zZ-@`UF6^1*F1cll|lL&|;Pcz)sQ?HQ$Fi)7fo=yPe}&vbCU?ihd>k?;}- zflv983g`x2j@{Ld5Oj2G3~Z!VMJll@RRTv6$>!$voI7Z(Ar%8VoZs}VuOhgnPD$*9 z`+J4QPSidqFt1=_L1z=kbEeK#Ya3rP8>6>kT_qx9g;GzMzI%{T_YY?^wMdgbI_f%} zLrhfIvxBsTC)Q(9=aaACdT3hPUbQO z_W!>nQp*iV1^H7p-E`IY51Zy6a^!+oSJRN|aVD-m?ww;GZC0L9bZ}3^KFa&#^v}D`r=ATb&$Ke(xW5bU)yB z1ds!p*Wqxgt(pNM(6mw$73&kO+my2kn-h|8acE2X11zvhg`_krYuG>JQSigqB*G;iXt#pYrJ8Afpk+mB$@;a~lPcjcD{=_umt?bym->U3#xw0K zb}D>YNNb7KXg%gE!`1PWip4J16gA(jxes~$Gn%C_jqD^Pv`&6K%NcD}q{6%`xk!)f zmh`%hT?zkTinZE^Vo*)PJ_~>Q*$IuGS>G3mq=GrdGFXmo=kE*FsrNF*1CIDHXla-G zc~c!bUV<8S4<}lL7w;pg)F7FaMt1T}=%mx6B2lAdhRL%SNyjA8rA!xTtLjoALqZq! z$u9~^$%m~^AAVM@w3~QZy5Nx3(XeXQj$}-F8=BhAjE?SVLLJ8QXB;4REKsQ`{CVT! z3KmH^@75`IT&YvePJDudjfO*$;v95PA5wsU zhWVg#J#oh%V{WhP3#{HFmOUmXEHna;;1pknN1G%vx91yymUGf>XNS1Cw3ESK?WyZ1 zE|{J@{}^)iCLbseeuH?D$cG)n=j0pUv{T$@y3#oPOW5$1&LRU>ypOz|=_BT&93B){ z8{%O@YCYD@d~U_sj@8cM)Y58=Tw(fl1SNGVWh7XCT8(84>)^?1b<&~#I=2Yr&>O8u zC~cq^-w~DJ9K5R2&@k)|bzV**%ER6l1$BO4#rEy@>o2yWdlcB_a9N$gYw7g?cPW4? z?3p9RQ|xJ&QV*o>mxI8Nn{o7kHL&%QuW}g04Wfuq==|l1J;XX|6olEa8>!IwB;OtO zgI#D1Vd-M9ilyEb{|?#WCr^l~pxDTqFENU<-vH0A)dgQ!Jm;ZAe7U!6d=q(HX0SWQ-d3s`&?^YeFtBy_&X zAMf_D=2%D@uOL}ip@@ZDS_#@(EG-E#A8qN+De13wKoIX&Om-aI1Vo)7mnSn@%Z!ay z^^w_;h#^r@W+EdOiWW9rv z*PO19!v`4tjM)?3Z&Nu~bDI-`z&VP%#A>`mNPI_ZkDynb#$bA--ZAu+nJUB%*=gU= z-Dvg-QO@m}eeT^%Q5QMgBze#;P^x^Xv2|C;QR_S?%#~zJv%_&>)E^8Z?+sAg>JDXK zCvcc31PnvU`OBd3T@I^3egQmDbDu>c^+LooiPbyUOXOEz&qHU{1s{6tW^fK?{fSchO7(8Sw{`$}%l$x)4rOI*VIT z^^LO=IqPY$`>ia3msBK>V+qtg6lcwrEpwzeltB%wBncg=?fL;)b~TGC;U5K%5m)`S zC585g{s{W~2mnzCpeZ9^-5WMAoP>X|)&E0jYu~!W^S)Kq@|*Tf`tN_Ql7Xp-lCy!4 z)qiP6u;PU58b5mGlxsX|YL1}9iv)flT6~%MuH+bK5OU}-0kavaDONIOwXt1U*%2=! zc(eUUuq4VZ5akVKXfe5Wn}9YuzE#%>PL$ao-`D3?$IqGoHxp!fHPK%lTxBHllIr-< z`;1D2C!^GAoFB8R#M7(>&O*g4h@~gt#`w?~Y)dH(Sv&&dzRIPHXCQtpGbA8bul#_) zHOi#6z`gA8M`1bx)4EEdMilGGBXCCg-;`w34K9l@`|w$zy2ugh$JChUNy0ccDz1^C zU6l^gR0k18MuTXC6{T*Z$OSvri?A5E+dY27L2})TQ4A23 zDyAWbL8!>QQ2PKN_fwnBS22ab__uUydCqJHJni07VQrFDRIv#=(RR!aghP4Zup7`E z?)H6=M(8O8Q$kTgYUZzBzFZ^dQ+Y&a43kXQQ1t$4llA~5cs9JgqX?JJV#~Xqn~;=O z84J+Q#pEi1A9s4VSsNRkM=^~kODDji?aHK&HB)&~Z-)eIBneZT!()eH(R zIQBA4ul}2t4??89GwIvMcLnz!pQn@@tOYG>jpYp-olO3>i!Vy;!wuOC#g~+8Wksim z9{@-oEkgdeVQroq6E7*QCG|rB)*rJV#L%FQYlZs!lDh3LdV%JeVR>Uir3ke-Uw@3U zR8mY`P@c#~p_t!;`#bo(IS=j^P|UzlClhf-4Zq`LXUwX|SknhQtRRXL*z&@dUY|0FQ1=K8Zp@T_2@x%^9X8 z#AzJMbpr$_)2z2nda>~f76CWS2UFc`g*j*AkF9@|L8+hD zZFTRrKidP;h@NqE6P$*Go;%4o2&nkzuUo-<^adp?)H#ol6&7I| zlsQwv;W%-jMehiu$q-tggu4m|=>#|Ua)=r2>=1Fdt-H=a z!uE7J(_ZkFw4U zP%ATcKiJwB?P*mVt@bNLui&GVLBlv!?T68BlmlkjEbW8 z9pJ%t4NanFXwj5Jv2t(x*Dlg>mkXNp;C#Qvs>OA2vIWbo{?&b8HhKowwO8eZUYL$& zPTotMd5ScVZWy8nV=*toM19THBqbF7?FZI3AEdicn)tjugER*=v!Hp17naHvsr}5l zJWV~{U}ZguU})nsk=Ufum82zI_)5yyTawYvnVs=G5em}FN;A$D)xTAw)L)6zH`J#+ zu<37Zu8*kku!3O51%q6Pygd}DZ_rfQ@-JPBc+y>Un{8MmyIn*itD41rPK(O~(++04 z9UCORK?`6$h8v~#@%||Wi)|dFu5LOOW)-sVkmwg}1SEK)gs{qh6P-*0RXoO<>~S!V zsg7gTYbvC!!S5qGutc#|vjD76p|mK-6ehdbE;nteJ06;c9Hp^zqQgjkqB&R07#J_T z185h+wH6ZIZdn-a`c=>QqrR&beH*Ch6LzYceoold&J!l;R3QS@81qL69!|yZKpw{l zVbf4%Z){RShgItaEox;Vk5n<5a9wO6<3Thu&QN75WXq(>?=`!R_L|LU0+1uL=<{ zUL{boBu8Z#9~(va@h}mQ4=9GezO7h!3#Y*XKrtX*N5O`?R4Q?s9(Q%*&NUlnAfz~D zZ*{wi5-XBb9Kl4m8O3B-_nx{(@4s#E)toD}18&sOIta9zlp5khtRTD0e*hy=pkptH zt0?h6r=KppeE9fw={^up0O4cc`x!*5qpjHPQ_GcNKH}6$K@7Ii_J$5@{#Fn@ChV>4 z77;Gcz>o5fJvld8lSS^Ho4$d0;Gx1ZG~aPkeN z%r(=|5`zW0>>v{*GW@NhN40is(N4~19^KFGMG#0x;8zNo%C&tM-~0Yzynbgs+7`}?shP30zU3!P9R5&JH0c^mzFa#mP> zPJ?>?9@b@w@x8rc1XK1=F4=T4B73&ts>D-7oEM(Wr@GK5HokPn{vf`Z5&`GaC26wH zjHzPplciLW5u}Sa7|MBz=6G6-GOlr1&Ndw~RgMtE5PH#>n_?lpT(bjpDn^@Ya1E6l z8QT}Nrj|7043N<|=Ti~AGtzmWnU&Ffb2lxGW%jSyn70Sa}5=&A4LZEQ)8t()7ekk9+udyX61yXhT*%I+)zHj>N>w# z8o%fO07Yht`%W(uk??;OO&m_H#Q`S+akHtsa4FO=X@GL{EM_L4fu%t<|CQ`Do~6wX z$5O970i*XCZ0D^XqSxK+93lrZwW4CPprSePoO!1^>6LxgIpszC_25_C0f!&WS3XQY z*B5V4Zq6?tLNr;n3@;|C;9o8{xPtJQTdn@Ro&{B5%e&j4*s|kCdWZ9q_ntR~>MA4v0KbIqx>X&`Z1t2-oRt zhNc^Rjt`(K4~66i`G)j}WIiq+bcUpWwo_4dM%zLB+Dg0$k5nTW-uocRFCC8!viH>G zD<*SnWywHy!I?|vA>N7BU88JmJ%~PQi6;;!ZgAY@IR3>eP4n&ykHOr9vsSack(%GU3vw;VU` zAj_=9*OY>3Rxb+}=gxqRWie?xX$oG~SfpKw5i<|E#z;ZjuWA_D$YvxnD38ivOs4WC zG4-QdSn#k_aTUdukN)B^LnU!82qWCd7k?%P{1nLx4-jLW!nBne88=b$-#}T@p|gq~ z>oS7jF$zawedE=wzcVFp7^Q}p<{u*MbIbyTbn9Bn*Hb^9HD5J>tn3W5AX7~HyscNT z_YsdWO;)8C@OIA)x#xyoZ$8!GA!9e<^2jQ=yrHR5a7D^D?Tlr5bzVZhuDFLD=NN=3 zrcMHATFOJRA)1#lGa0d$hgw~3>}d#_wC8E!0tOhuT}RRm>uUG+RdY2$GT0g7QN<2j z64I9a>H(A(2uFT$OVl3V;TS$F~ zhlRfBX_J@kO(Ea{<`>4c>t_FWY0p#Zf|e3M3-vuYBuYz|KLb^bs?T2wy@z5%dQr?@ z8#!FcT`P%R9<$TznMr@NUlOytV|Pv4!!EI`cgr}c#-^Ws(`W^i2sqAWwfX?IBhL*X zOEu%YT?taVo?QkSXVd8?m4($ITj3vCwsP98hd=oO16Qoyk7vAfwU0n_k8IldZMI@> zxW1F!@R+^P!HwS)`f`MQ`Dg*NpPM>Ur0P`srk0zjhZduqRaJpHZ>$=hEMWNRt-BkTyn?< z8nzxc`5}nPZCdvpi>p~GRjKZZ-ox$JcO~Ys+9qV=ZhSfV(ox{N3kJMYsAW*fAvBFj zTk%ciMllZ}-Q$kq080`JPs;AUeZOdYV(u5b^wv(b-bW+T@)$v=aqpHH6zHQ&T){6Y zIE*lNTtSV$NPLu6(k1;*6EmGE3&HPfav~8L0-*eL&OBIkD1jIR@H{L_G zrgCT*37-+*_< zE!-OEK&dAIR;;4{K-g7nUsAcx>WNS;$HUlnEX=XKl{YoetWh-|ed-fWV_JKPAMcC* zsbx{`=@{u|TqPs)C$W~IL?j_pn~sAK5u{p1g;c5e__JCRqU(v0kz8xkJ4bC`R%d}I zBVmGgvjChww#-uNdJN!=h4IvK9|rHBi7P@`Z;M$U8nfw}HQUsG-%(B+ht^R^rKQ_7v-ip?sq5{sb>pwKoBYz(YhbiPi-yF)4e0$8sd7(^6^Lfsqh58!NQ+uT@0o9B>ACR^p%9^Sf1L;{2fgEHY+5I zVW_-=b=eMjg88z>-eVX?A!Fz6^;3B1I@*M&GgW8)L z(h$lg>dIzAdyg=8e5x3#*smNwOg*xYd5w`GU`3XpnZ2If%7bR4qW;nHKERBsH1o&PW}JDgl^ak_H5%4&J5{_?&- z`33QbC``ggiH*`HP|+=p0MsmCE!qfx@1BcQVxSB$!W;}dC+m;Ki%26Axl0TwF29EH z&D+&LnF6iF)PS9e_)IjH1xE}h-v#~NEWI{Fc+wXhm|}j{?)yd?AS9B2;gy zpmfdKtM*j~EC(RMb}e3~hi`$*9G5?|hVbV0*ad#~@5|h&LUG)+`nWJR7p}9zpIE&A z>t62^@Z=P{7g zrbJfiFo5PR$8uPT+9cd7;!D!z%*=%F_*T52|aS&(i9DZnm zI;EF`&g6HDhVA+&ZX@7gukRvXc{I`RiuxOX_NXLp@+3ScrKw9^w zFwm(?dT>!};_|=)HM*J!l&*mzWl}Mz-MZx%llsv}V(qkBv|-drA#g-i?mc$k4~0BA zKe?1YcLT@SGS2_zzK;2*C>s)PLoK=*ezcy*rqJHmV%{-#GC7cdlbqswI81&QPmzrg zxB1`@{>m-_DmxR;4*A=ZCPt|$X+kkJpuq)tgZ3AMI<0|@R=v8nXN%O|mZ~C|7>A?| z|IDE@a&OV>XUB5V=8HSP>a)642uo{;5eg^vpxYk zp(msj9D-wFAJbLWLc%@CibaW`)hK&h!hd!A8|iG1`pB0r_Cw!$5<_Fs<8?zJ6gWSB z5&v~6wO6PqWk)BT6I%Q;wci?Dz8CYXEJhX`Q6x1aK!27G6A_woALmdiEF2`lN=U>i z80FY_f(kD9z%AqKysZFQ-tR0dE#^(`OdLD!fa^DV!-GA0qr+YD=YwI%K(YXKjRAbv zM4UcKYhG|5$K@R~hho{DNDMk5ZSoFhJ{=3YzWMsP?s&%VxcOHEC+&_B=o#9GDkx7d zl1%9zZl_0Hrp%r-C4rvWmH?*G1H^U1Yk=;quY$cZs#qM`nCblG+M>t8ds8slC8Vzb zN{WkiPh!9V2`v?<4ycl1JBTbTJ&DtqXa$|Dl~6n5VY5NlFmiZER0ppCyMt&1i+*Hb zdqGdiFuJq#8U_+2x%%E~0IXGXT7#5c5NDBt%FxlX;6P+_*RE8j-`_P&oS{Z(N1tFT zs1PUuD;T=ax%UH|qhk4v9leFGK({?#Y#IdbHo!?~CXc=`_S7-j@y%oed5uR#hO1>a z{oOFcoTw78@TwD(D0K>yQ`PaTU3381Ei`ZA7a9$w-Hw8iJ_^31&Jm&+-CtEsTtqqH zgyq8&e8eu0xHUo&JU$e?vu_yurCr;}s7TKuRt=rLGB{4tob=rbEFclC%#u{RqO_b& zWxI-4PRqf+wfyoqpsCY$B+q4TSA?}3X3Vbz^Ar_zM1)B!zKV%7TuLKICAF_lHDo|( z4nQJtLnLm)JVi0zgoU<{Nn$;S$we&n&MvUZI`rJ``A|6ODYJdJ)KPvWsUnsH@a}r_ zstI~!`+fTWb#sYTiAds6tMtZ0Qq!T~b?^JNO8tH`AGYf0PI?2dLh$Dryg) zOuQ^Vl=3JviEwS`$3W2Nm;Sb7A2TIpB9*+*stS2+$Y33v!U|S%=r*4MPFX8d#}gnR zp=4Y73Hh=)ASuDUYL5_2jm0OL3piDv#0{+6tGJf5-WBRBy-0r07RpU#@6sy%uPMQi zXO2@J_oNIo$JGNzl*S~qatEO8+6I&MmF#(n<~8NHspIEXvBsOi#3RV)bYGIMqC-`2 zi_woZ1H^uTOUZ6w0IT9UM-UTx*ph@!NMN6$DCm=oP!os)+o=PH7{yj%K5q2n@C-aV zVJv%y?qkZx*_He?d-R+A-d0ds0O)sJIVXzN*7Q=Q&lam31 z|JEyifSC!i1s}>A-)x7wGDFJZrHjg1e_?VJ)!ca(|1ePd3t|9xBlhs~w@%(~g4!pQ zxTK9;h+p4JFgZ#CE0a$5GT!P7MeGO`UGa)Un91pNyS3*DKv-L1e*}RMU1yCo<1Btx<(B z`DdaMi4g@qg(310IhhzRc2+WxRMGj$*>ny`^)Fo{KC?tp!pa2hUV&V&qC2x%3=mHY z43jzXE>YQOngi`8oAOwu7|D)BhpL~PPCF%;una_+D`-{m3Bl#SPf{=4Arae{txH0@aso#M5j~ql}3j=FAGrI5Hz;E8Q ziSYmW^j|ZVBo!$qn1I`1Byo2Tz)z4qtrKa^gb;}* z`nfQSuqnr#)hHF-SU|a}qawSK&t=O|w%4Uw zr<3hdhhOIhE~^e)D|sv#eoumi&HpyLDwb|@4v=ny z$MiIFC-Df<%&<}r56k%>K}jD)CfHe-=nRfz4{pKYY4?m-3LggPUwl_7V0nM;1e4sGbJVtate6p+3S^0-d%Pw%AO2 zs-=ZNb$&}~{DzS%rDs+sr09OUpogX{$5QGAKi7dM!KA`^GJBX)nR<<32A7QTT$Z6+DEd!BQ&M1u0qsEE^STx*9LQA4Uw=?v+c#@{b z4^XUHil0h7B-+vV`T9RIkk$1w&GYDuCY;$yZOQ^{mM60*O0q0_hONp(2I_*@aL!~R zK+^NeDBu>9jX13eumu%KD#For(=nUK&oeQvqMIa3XqBuG!*A-E0RplDxN9ivyWo?F(KT4%i-MBBW^Mq6@Cq=|+J>(HRvr%iv@D_EcBAV_5F3TI-)_6;bB?K* zxpMV%d3JGWY6MiK7*c}E3%F-o@QG_~Ky#k^yn}_tHlebp<+4t6qHRki# zWo{pri8yP2YwE-5cyPVe2lu6|=2LO8iQ0`f5WR4w z+J4iSC&dJry$mLE+(OCo4z0LG1BUGHxC^wDe=bX796;0)^+!i2DRGk#PxmVrGBvsb z5eH`rtkyLlk`s!rC<=!PsiYF+t2%p9o!JV$H{KwAZg>kDN5uS4-2ThJjFyR{MI27w+MtVm~MBn>(TD}zkp5R*e z(TF&IJ1e<}=vA}Rp9|JxwA#Er993PR2sXD9b7u@R??AI(>>QJ{@0jPQI?pB-nR+o` zra;TwTtgMN+&1Ay(ne@it>{)A36k!F+DPUk?cExodyGw{bjjhqv8+A1CQcEmC{%_E zeSwtgf?Y>oDm-L-BcqD(f@=aa+h7|SmO-MP(6KM3Hn=J_1YLNSe_qGARsYgho(dt0 z%qMdii7h+LS}s#r{mda$MDq2kBE>%Ij6Tp_-E9=O$YVvQJzJM;o*`vj`rV-mL4Rbs zXo~SDU-W@%-Ul@b-~5W$@{!tTWqin4?i`r)!O>whGKj_=O}7Hd)^bOc`i!Y&KUTPn z;AUy8QG;<9e!j>{J$r94@>ahuRS#i<)`0J3R+EulB7k+3F!Y7{3PHEhMsvIObP4z5 z(^OJb=a+o`gwX|3XugEOL!1Ydhf&4L%^MQ}M3YQzcu}gamS5u&!dY2Z8|qR&VA|i? zCSc*ZV^-OY38ld^G-tugtgWe*RJY2@ryehP+LebN%VFk~9;-n;^BPybQj>1GMg42GjFo!ebR%-hebr}v z$4&K=cj_as;_GBD@@C-ahgnL@-?5>Vh9IR~E}{O57qtJod27IkwbAf>#uWa~PPhLp z3;(JIQPB)gz5ECwU*^)x3N<%i0jtJVwaOJB5x;^rNJ$O)(t}-yJXxUOw{!c6p;!?! z4L8l)na1}#+JLVa?6*0Nkut>(!luP~&09yF)0jr?5EX+gEK6cKcix3MDc#)+oEi19dA3E_uaXE%4w$p`qo4n%pX74{{2DQ z@jLs$-)AvZ=jJN)VhH?(}lChCeZ3i@Yn8$C~NXY2_D{f~UJgbqN}bMR#58 zek14qb^TP`rQOoXAusyjDc3OwjW z)R(o15p$FC9PoTf5X}1T)$W@PqvwLFdYegGw`Gmp6Tvf?*Jrx`(p_ zc1WL3-30)8P6sidd&`u$CxK9fcvVSFG}qT45@I@$rkK%>u}`${KitHuLYHoJfE`>d zNtW0m!Zvwrh0=FEPE9;9HMXGba|;>~rI3+~N7(4*2!|M2y&K|w`l+_|tR!|$6;2q& zlkK(n=Yp_#H{V`MUIOS>HR!MR&p9COEpp1(h52kSD5xKK_(*=!K(td%a!bM-%f1=} zs=KF)#`KJ*NKLg@DgyGtDoLJogwSP_jZr-WvS;cLlGWCFZK);U@-A}{wFY8lSiKNU z-B6Tall_a@`ZHr$^ZMcT?dt|X+IBiJpn`=hA<%>O%J|9@y@-^&;Tn^ZlFuBE8trv< zqa^&Sx)tr=XlFJNO__w~(ZGD3yJLU)N^@6?#+>aSow4@I=0O^0^a+)Ix0THb7gouv z?UKf#jQ`Z;$^s9yyCxap%l)P-_1UY*4k5oSJ~RI)GL^HykaF$af85ieUH{YR-7V6n zJ;88InN^N~h^tG=s{dff-MPK+s#`$h!ePGpw&gN& zqv(bF8U97X(G2Xi>LJG9@T5bGds;DY{D$h7uE|~k5|u%}AgwQql^aG~Fh!;)5+~9x zL?K9!Z>w)}LjNdZ@#Xzm=k>+t(Em5w%kD?a%2{#m(AE~p=GTn36Vp&wAUd#VtK?MQ zd}GI+9P5SeXQwTC(b6}-`n)}M3y<_r?W0B5BIVT zh~?;T%SV-J`?ZtRz3YKKy&E?4!{?Lo3?@%DAH37$RpMK9L;$TH(B2g)o@l+GZ_gt&j|f5*=DetKOf=OXt_ji;a@fn$ zt`hy=FA=tSwziJ0RBMWl`EAAc#(X}GwloNOFFWbWAKa`8$c4ZL>2&=)#5Z1FL}AJbp@lAdU5k? z{8j$o&uVLnZ>7WF4{cL4YX=<9-MdS+VY#7#X z>df8;=fEjs$XMaUrZwEVMCusDCtq%1lU5T$y<&1 zO}+Zk_+UO3lseSBY+E}pih+ID38KwjOC2u`_u5Sz7m&-Rn|DtE>K7j;kjOK8MxXx@ ztn`onfQnIJ_vZKgr$_sbTR8tzR$~Ka1LyyxtH#d8S?V@+Ype*Lx_`cQ4#(vgmqpSm zh0I)VW|#3INo+G(yIbw*g@?3BW|1g{z+U&HKi@Ix)Z8A=T6pQmV=LIzEw9xSgU=vJj-Zk3wc2j?%iO3?a&1iP` zN8aEabV#D-n~p|d%%y!yK4qckR6m=mOJ+kZA2j0{@DVJVnW#2^<~cZfnS z1rJxM1StJ^3$jgujPyteqErvDCtWw*EW>1}P0t#$9ajn)TG`udNFJR^r_nia3}C|r>$A~@2e;9d zef;YapQK0@D9WnmTpQ_D6NQ$$$#HdDsT<_UwLBOBhq@t?I-(9+A&QeIEq;i-B$u@k zc?%Aco81_b%L6OU0>xvU_g)g1hdoz~KdQBk?#4qTY1Z^G#tYsGh-3WRMqUw6gQiIp zuLRt&m&~1l#pDd9)i0(djK-p!a}?QkXm3vP(L9vq5w9p)6tCn%H>c^+RdccWXyZRT$E<8Y5yj|tc>XPxEa)z9@{zLVkK1z#u5sB!I+_J z@^V-WVngK5LMIQl3P@HueeUrxjQj?=Yk|Hn9@l*#?Sf~kErj@v1TUS6#kZ5QfDZ49 zW(sQ&JW`G`pzLzxvbHLjgF}D53HhngOL@B4El=3nnb#VODa4N6dXT9T;-xm(I%rjr zH4jI;svezjZkp~=cY%4tzoRJ5So_bZ&pN+2Ubtf z0z@9BMz5<2>u7J?epkK7iV1ioJEelQdJcx>0;X$^X~VJB#y9GcH92fl_Xq`X zQP}g>I5Jx}f+Zx~=y_lmT%`uZF5w@Ab0C2huWxO}oJcHc;WUb)aBKy(J@2^na8NL3 z6A^0)SA8c*dxwQK=*-p*UPD^ouk)5X&DjgB6ME}=I)P}io@m>i9ae1Nxo%&!4Y=CX zZabEh518K0-nBoFtLAO(xMVfbxoY{L5h$xO_PTxLjD}pA5OZ%u1F0bUeZ6L2(@=`&r;vfPENYL?3mHEd*?0>~PYEWEbx0d*d^;>qx9 z={IQ`mAJ^8{&M7+)sdVvbpV}># zdl1_!%UEq!CFiZVeLr5zw)R5l%tjE)WyXjt0FS3_YT)PgeqT9zA8LDck1IPnGd)dW zU(b(Q)(S^w!pi4Tzk5YyAQsmPSSH}UXg4QzG-}#QRNE!&f`xKkBX{6Ay+1Mf$}7S( zYnsWIs3$D`%zfOxBTKlBY=oD|Mr6WX+0H(T#+BNIvr65T7)Z2g|BM+cQMaiu3LmL$&GqoLhutM0MI$l<@Io$eHjn1D+V+ z0Eqi!CGiw(b-2LHCogDn3U>@iNha7^2zLIOml z=(m_8^`<|}jJ!zBlf*cX>_)2TcbYf$&mdkit;(BZ|DygA-;O&!H(d3VW*lOMF;S_O zL%M9@Mu9G`Kp)Lb@_5Tzi$+Zhd*jeVb9Kz_$o6zSFTCu)waNaR zkz~AGwE7}noQL>g)B5GJ0nw!E1&cHYOAR!Vi`&jSrfdx9@`tPXp_OtqUh`zqN(9yj z>;37$NvWV#5q87Y9?bEu?6>cA>5-!CbJvRFEVBw!ERi$XU2hIW)B&-@xzb7eF^1jd zm$mYY&%uM-9lI5hgwnpSD={2QRwV>g`0GZdiFy{4R zYD@oXI06!57YRg&E{iPG>*uvrDU z7%|qbb-GxPNP8@PK|5f5k!G1RYdNAct7aLjvj2~=Z;B4BYnF}e9ox2T+uX73?AW$# z+qP}nPIheGd>04*IOmLUAJ*G?nR9i|Ro%0?Y5`Mofk~mLW${*7U{HRO&EG#19KwMA zur=;^mmxkGS5*I@sj(WL-qqgSg^{l>dp>7YXH6hfkV|-kv05a|8x&hRSui(V`GYnk zPj0{Ah$~P;brA1+#r*B}&hVvf14JZk7tfTdwit4Yus9WzRpAm#sRsaz^cpahxKOc{ zb&Jx@a-EMZUl0Q_ZL>i=o`G?cx`Lt-At6*nN>_v)o z2*J?Bh@eFC8Ag7(ASx|)CpMBe(#|!;LAwdju1!wH$6s$f$Y&&2b3hg?1!(fHHm;xw z??GXIcQHL%GXcM(dFr_uTCR5{r)L)Vvs&2E{&vcEclrTCK=Z77F?}(=|NV#*(G}>V z8~BW?M6D6vjwizF}BlTSfVkmb8 z>FEz}><2~s^`GpQMo@Qve&Hhrdf-DG_Rg5SRNpW8}FN6rmL`UBc zg?~!V$-4`pwhR1|RaaHPRF0KgJ%v#!xV{1(3zDd?)gPO0fyNa3zpJx7dQ=aT`wz(#>$ZR z;lv1hQ)?ptNk|QVuzDz=ns)wXuB#%Q5s`BXB?+@kuOoaRT96BrDcGVl(oW$!N7a@H za{__Jv zo*vg1Rs~tLTpu^6C-#G=5lD6D(QppHQ?DztMv$ z$5qC6C#h7D>TGOkUhV?V8tPgUZQdsNj03L(wI)?D&_e*NoKG(wH|so<&`y>ebr>;f zZ^Sd3(npz^Y@)PWnNM=mf*h`1|EN>+W0wQ_6q{grI12Of87Ujp3A5B8X>ADIQwf{Z zJk+G+GTkdHKj?E*3XyQe26d!amM%17662SBb6F=H--9~olPBC>qJtfL?k$FK9|f^rDMwdwX5!_`M9_%Yxwsd?EyS|p zqn%epW3)Db;i|deSDbPLOP7fOX6T;kYrG|zLvPt@D#d?fzv<>jH`9xm>RC)`(fHAr znSAND7svnbg;-tW$tKT&^~h$;i*n`7iY=P}9~sj1t45uw?-Mqp5Z{sB&3ddX9{t} z{ya8>fwY+mlHpWooUni@|g;A_lDJbYeRdh;+jzu{Ky2U3%6~4S9$uNzU z3A>dF^_-KBBlOp{C}&!&(wvO(sQ21Eh{ZD=4_GABqfNrX$v&K`EtXnnEHjw*tE5!n zaxxPMZJ%an-iEp|JRG4Auo_K;FpjN1&`M1~`a+f)98xJAy@&Z;tnRf3A18t6wh%~b zcf{vGdcbB>nobM>my^O57Ma2On$)S9ZNuniICO;7j}z?Kz~GbTBakNTkGS?2adMzz z=;cK=^Gsc$m7q^XH7IOCR*x6o_tpTDYY)b1`n*R^nFtpb{W7%XczGzn0Cy5+*;?&a zYBD@Vk54R0Y#b(4&d2E78lsWkOelK`{pPQS)0w*HAT3zE>L^H44amuo(@f|ki5S5! zXmjE1eFADve#BnEWQ=4Vy^N2yU$`joL716z!hse*Ii!RU)4?j3OV3@iU3x@EUuwy` zs`!dYdDSLGQ`Xy9MwT;l_BEkm_S`+gmU`;E@f^O-sd4GAYi5#x=iOejB)Q_AoqWLVMl3&P%3wSsTJuoiK#bz* zG^6U=ZEKuX1+|_Ik6LYkVNBkasSa$ps@L4@^}5r7ch4cEa}`q3n{v0k08ahz81{&M zI^(sop5-(<0XEPbLrcc}kUu~ZkO?y{h2H{mM|{&oJ1?CgRnp!a@l3uL$Wet=#L41K zfGIur_pVwPrkb`&?Qt0D;(VV}9Oj{HgaQaG%Pupz`>9qCo(<}G2}dwQCW=pIM|uWB zR;^TUeARJiZs1$e{z0Q5mfFc^|FwSiX1CBM&(kP~IjM!GS(e2PZXMJ?k%Z@mZA*5F z>l~$NQMge43&JfHpH?-3IYs1yCSxEoA1aWfSSDM>RjHH-j?vzaifEUFF>eJ8bh)tb;K0lhx&sjj`sfN-W zoy@U{|H#@~&}esN1g)24Fl9)56&eh2n_!4+XOiRym3Jbvi`-OG_ZH+^^srW6v` zyLpHA*rDTjK5w-gd=3PBPU#8>v&kso{{6ePwIy@aorb*hxc%V(4}RHJU`{{%@E-=i z|EUMhOqq=&e(FJV{{R1a(ACjs3(NA)!sw$TN60t5%F}M|dK}JpGCDXbv3`b_iJJdOqe;9{K6IV{~IC zK9q&MmDeGb&3^L8__l;sHuRz)W!_5gZ@tL@@X(JTi9~}#(OaZff~<we#TDbL=24P3OCj*OnKJ&lx%G)Nl{tnUk*0?su`+E%! zJ`>{O{`H4hcAyBn@_ibp5`wQZwZ`u?JAq@35sVj1{SG!+a1P{EBmCHvH<%?Zp;w*z zR_M~+o3OuAu%uP;FZ>)N_!vt#?MaADtVb%-ll7s0FC<0`uXfkY&byu4lfS&)nn7nT zDaaMJrq!}DveqaD@LV)B4B$EgJt8V+V2m6WHv=7$o}kv*EsT1u`0=$}C&aH)4l0|Wee ztbk;XT77a^sGd^<=Py@CE|LMKlFO(|#tn2w>!=Q*45D&MG&QfjbwL#A{HDM}z2{*- zo!`Hrh{^FZ6(R?S@cEkfxgpgduOIJb=ua9r4TBk0v#bfDrzDa7N&6}J6E zOyb}TvflSV5z#LvyMvCW1%LC@h4+DWLuO-Z{*EcjUye*2QHW=OAx|xV!(4-@pxmd- z4xr5Tne9dM7-HpCLAA~A;kPofgsI$)9Ul`ZUt_5gyC1v;gkvXgJc3GE+w2e1s1^FO z)8xZut^8$2L~$(7lP9dR7g-9+miH*HtVESN>tPM}lAY?}LMZAd4sCtB9wVxI6F;-( zAJ?AK56c!2pYj2?$J{d@ChdvsO6NnoAjaCUO9iO>LsofPQb`QSs0n;1DitZG6|~&} zeyInntXA^&hKC-vR@9K>UNb;c)*yWhLzo1j%-+)ewYws6NARG3qKdZOFjk4;dE_+M zB@bqj=Bl<+xclZ$9>1v{8EUoOCnMG%4sbbRxIzn9Lby%?9i zuAiscTDYg0eHW^An`m5wx{TthOS!00NjFDg6Y(V)NzW#>+a$H?L`WQsOoJjL5Qc~o z8t33yInnN)q}E(zTwz0h4t{>p6ie(&&lD`a_y-u#Z+TC4ps6uAVV)04x}W?q z$W_uY2^S%vgk7O?Aa|Qb{6v!=oB&Q-tcBv78xU54Xi&dGe@)b<1yLr2P{KRl5^}~U zQ(}r`L5gPI2=I!1+=N@QxS;TujS15PnNmw1?iJaSgRhuUD_Z7!G0^HRzBr?pWv=>4 zO0r%4%TA;8Q<*@RJQ-gkYHi#v+3u?OjKDE@Sd4griC0f5Ehj9r63nPoSuh^xAdcq< zMxeNN^AAaqq&#iDHT2AZ6@^=+hG>#$;3wHC?4alZ(H(5ReH1Oh3gPc6jGKgUTb{*g z`U~-XmI{3i0NPdvHB5M^-c_@tlwbi)AFO6+iq>Sd?YA<_x~og%`IQ5O1|dTVBAOC$ zHr0SOOr1L`842pCwe;j3w(>xY@}GLaGOY_=7MWW#fHp1QP21!So8A;Tu@rx(*C;bk z8yR>%Zlr}Teq9!tv#Q@E?h=`xtyl5@PWtuOsK}o^Px{9ngL(1GZwm^P+v-r z5*M-zkvLGmaOd96Z1TGT6kuuehbI5n4l!swWh1=f`sSPqmE`+HP zzgOYW%}Ea&rNw6k|}Q*J|fM4v_rqd{nTpp@t9_yG`7eR4s;n9 zj+4qRpvjj*I(K~8W&<@9ol&e@DHDZAkdtj8D5)yKKq#mkQCO*+biKTH9Eoz^UWs0^ z%-u2Scy|Wl!uP{BhpI=b44tojQ|VBXa>gn%8n=Sokg5ZI9M6jmfdrL--*DLROMT)S z`asY_&{`OE(|B*ix`1}vv>kY3>)#c~gvNte@X+gcC|{|E`YqSZF1%-N%8^J88H`#I zBcal+jAfdkfCKp&6x(HBhvHbEiB>?MLv>7)XzIOdDy7p9Jg2;G&kN_7a@a&;Y|h-n zXjgjyUe>$TUpwyClxt3>20l6Mk!2CGUhoq2lhhFr`9<&R5 z_@zZKeKi0ce@F|3pL{_W#O?57^yLxtryK3{RImD!0vi$wo0w`rXMZzzpBs)zv?P#N zyJbdS)IQJ?Kq|rbG`rI!*hk7JJGB9515009_CM9~@J;)&Z zS=}lZXld2>XDa_G$-NIr;}0kv@A@z>^T*SgVo^m$T;3NS`SdFv5v)QeD+(|BTFS|m z7Z*S|Jz?4Cy;}H0s-vv_Jx4r56cJRwTrr%HRd^nGEN0kz2K-KCR}k!W(AL;}cESkZ z`%%N))o{tK;W&Kvx4LR!jYHp?A3-|7XvB*fKr9J86!45d&|1v7bPhz6Ieg6{#zD3y ziDL4?Mrrz@1~wHGBc0MDxp2ZxZKlFY4g`^HL?u;Vt;QMZtSGfa)JPP7Ui2&J& zc3PDl1_awA?@&R<{A2W^Pg4*PsmdZVP5yWmAR=<2rK3<)#SvF>x~aaZs&zG0@jNhb z6PE@M!w1kw#77dVK>lGp6;uXxMn1!&zA3ATr^nnTj|$KYGb{vCjWCFfRMwl>?ne*} z$?7acGSKoq$zU1066V$fm|r7CkN#=pKy!tS0wQ%mh+9U6$%{sseaBc^i83O7H00aC z$U^NpMIvKkY_)XQXT!hUG?y%pS~uVPPB_Ct=FvO8217=}n4!uAR5Ul{grTmu2d&uI z&DXXT2V0`x0buO#D}z2$e+2FojR_NM5#_3ARxuN<9wP8k{L9Z{do?OC`Vdy zVCq4)VO&%~U}dnCt?q7CHX%og@0Sfsz$DxK3yg@Om*UuC@K0Xt+(@g#8YRqqcS%cG zB&%+mi%U8pWhjDg{06aNWCAZQ&7z$2NK=THhGYpb%d_mA0^G7fv-e`Z%wF=E%EtL{ z2-WoXnL`!((VM``X-&+6O)3n)RL+tXhmsZpP>O<7neGO!Ro(Pxbv=vXjkMk6IOv>9 z%y5e-95lHtZV-=@^p$ojH}o256IimfZ9OZ^&dtrm*)!bD3Qf=0*ij54qMYDFuV>Xd zL+pF?EN2w{ZY!jFb)yh2mz>gk=7QC&uUUr@PyF<^ERage&K8+%YOGPrSE%ZXha0-J z3bi>#5T=)l2*pg2E&lYh9Twt%i<{i3p!e3=6z;?ZZR!dd67~!m+X1~s(5-I`?}vdY zbWX_23|+@pD6=biAB}vl`i>n{TB^;L>0fJm8XHi$t+;bGABaQa#y(_GE?Y{=GA8bS zVRs;Syr2D6)|~7(gVw3PN`xhZ>$;6?Qn+X$UM>|`FRdzGQG2QUYY_jaC2BCD@8y1N z)UY6ui9L5u2v^Jtm+Mw6$OnwiQR&9ague`-FV*WT(Y;>E-p|4sCvi{n@V?>r1pGr;f=`s2hSC zo9nPKO&)lgQ#gz-%b3v2JVn?(JoTe-Hff!XK_@s-^Tb?3KLTxaa{6i-V~M9wJilGk znC>{d!o_icBoO?5IORlh@NW_2UB{$oDQM!v!ojuy z?gJP&_{{rzfH$CJvhnR~v#qV|vrW#G$k<|ccjFj+2V+Pj@Mdml|BMgtf2PS6WFbls z{zz19{wT|m|CgL5S8FRe0mC1XsH38}shN}G{}rl=o3UBoM;Pvj`pfRTRSYXbkmv&o zstEiDjNrGf2trOs9;WEmTB%KCZ)aG`CO?>zvO63FodP9K66*?p3&qe;C&tcdPWJ6?5fZE(B{oMwz#Tx z1?>!WTo$NXEHFia94LN&iHY&mogHRK2CS-iyXe%VQ*6$F2pbGu^j#;`sTED3a52;i z*Vzq8G7Hps4ql0|skxHH!|#-wyv_`rN?PmTkUdE-M#U^88!rUPnQt7oW&M`?Hh?QH zl1`Sbn_-u(HOe@%Q6YFpp2u4~&3ky5P?A-4)DV&+7*xW6i1)Hh#uniPsNw+>RI?}y z%0zFj-1NvmKOs9~{=P6m$=#2+Z>&bVyIyMi*eJ&6{!n2;**;u33z^80LrgFF38PIY zNh{A0_l}9@)K!q@gM8HahLW4pTx)!!^2Xa^Ih^sw+jO zB9G_m|Ki`piRpQ@^Alg0Km57>Ah-3$Z6Q2Yf0V64itmJ8l^B(w%!hRGOWvYm&{mkZo+vFvD4;O%xG|Dj4 zuYP=eG^3o~h`66CO|Pu$>C|(1RP)qs-6p7j0%2!UR;f3;;1QOv`m5y4x}?Vq1kyf- zE(a@s&KDtdMF{uF%gduB-#j%_=Rs~7gCFsl6q(hTHwtI$MlF>~ff_o*=@pyl;v*&( zcYE`WxzycV9L;98Q7vv1dDtq0CdGyF_B zvbcc8iL@)c92FzMjaL$CPTpAJBnM3FV~SSo6iPvv91mbXkGPRfgEL4E>2BW znxeG3tY7>t&bGX?bd%0BTdcdGPO~izqI`G)>w^Z3s_Sr3gB7h8!F&(%6h~l|-A`5l zu~aoS*^Mh$kHJ~A@7{gObNov)uKZS5ueJ08mY8U$gN;Zc^A-E)X_MuL#apuwe0wk3 zss;2aO)1I@f)D6!WQ-KV5QPer+9q~^_$0?NEq+IQ{E#FKH>>JoofDf3A!r-}BT1uU zKPdrKhM^oHWrj)St79#I4=NK0(Jfj*#K*%@?-=4Rst?xt860?It@C19gSih-50JWk zUdwn)Caw_yVQ@>;F8)Jcd|o$MpkBOw{X4_RMfFHx{0nYQPKk0!xF}rWD@M84042k; z{`W;d`dsl_<9Q~aUJ>WI;U`JghT^s6VB+c0L3Ka1G8~yb=t5mRZ5DvrUo1vlBt#L^ zokEjXITO1iB*YgR7}{T%JbsE}c)@G>f(7H-I}ToKc9~3LJai+^m6>g8p?knbe8o0O z675Ry8=cwQQMhW~TA{7HaToVKt+FRRLIyTp|6$=bG!e_2iZBM2hN`!eXu4pxAg_AIu`x>>NE$^*^c2yH5Wm#)I4Hu4cij{ zZ(M!f2hs)@2nfE5dk5ARzLiUOH#B43F>?Fg)ApamD?3uyp8YJk=jUwuA-e$BI+)TK zyV_dm8_*g4?_8z(-)Z}w7q9p;dtv4BZ)$)sGO|Dd2tm4i;=o__0M9TAXTY(o3K~%i zeuG{M%A`V=?(;nH92x&iokRwKMCnB~l}h$>x_>ThyiZX161YQ^K$!;WOfLmcOc*4Y zZclO`&@KoZ3stv0O;0wm)ZGctwUB-ea1)mH&ULW-vYEHiUl!#eYSuC}!2U#eIBPvH z6H*ALRoHr8chErbMnRblqQR}zF8UV5;+EK7`i)z+@yb~vg3nxAW+G@t2xx?xN79bO61Rq06j0p>F*1+E{`w#6 zQvcaGfY&1Jx}RMO`#~R^|GzsYs&DucL~j2Fk7UKm$ZhZ=1n)=)N=Lq$N%Fk}2TSsk zJSnP_`@54vl#TlOLd+cuSL)4iHZQ~Z^9k1kK`X|+0lyWc4G&btFp_dlx}}mOt~g1Z=t2w?9SI4V^KhsJ&dIkd z%5vFIZp6wANU}&1n!^<>(O!iWeJGm-%IO=(1-6SvT7`?7xETzISPizvX*B26kDezs zc_on?|6Y^9uy@iRn-o?Z`^^(CwyJd=>oKZcTxOFMTGQ@4*=?Uz{&sh-xw19+TP)Ql zTpGO*J|NVzez~1A@pcp<{{(U zD4{>(4f{cO-n_kJ81UJ>A}BTt)29@{E9jS)-B*IQ@p8XqU~AMJ9lOs4ZNGv3a|&rw z-8uCA1c3NYF#OlLsK+5_R&Y z6j$;7w1mUN7fV!cUp$g(@_a&dn2v_aNjQ(T>}dcnGss1db0Ap3qg?4mRoP#npBj~L zl9)+Whuopgr@>4aHigqw3Vtvu$5xd0RdE#|^yo zu#e1)m)jUvNyc({GT_fjf!nsk<()h^eB43DZAn+t6 z#wNIGeWiA~{EuM&z7hXuj#>Q1f0qB@m(Tuaj{WyIN!ZxH*;HKL#>nd54iFU$yPqLu z9-cHK(u8SA|3Cx`q~x(-5aC5)Vm%-vY#?+9z1Y<><^;%w!E9WJ4)UubRH+HNio(Vh zB>{0t@mDgf~B1 zA{%TcB0}kWLF8Xjn^6jNeDVOmkaejx#6#YrQ3HZZ$Nh+C(d~B9evbIr%qWQYe*tnQT1TEz zC6#6ptaRPU%Z7dmKm*mD)l@Xi`m87AFxFhjUgU zNri+Pt5+LQ)h1bvvm4c zi}JV*W?(5dMzG;nd(-|+tU{~*QBYZ1RL)>2!)>;rRHMI zAFjv}VDqvS34x9&bw!RTbH$dUKWxWDkqb}g7lLo5C~dO`b_kayv)I@T#Wi{=KQLk+hHFB}ia zYI{vgn6x0ifm;zzBKN$!wKqBG`%Jw(3WkeOxm6QgsV_ zw zojqFkYz*UN0NOjGH~;W+G55x8iq`FrIm;%8=nTd# zos64NzSs;}H49kKwzF6&E7wsm;?pCEKB7}((mOwQgLJD{y7g?`Z#!LmbZStk^HxQ! zzmKb?#xq8(4pc4;@=+;VLH#nH&KF;)m!+g?jMqjbD_!ulA=yf({Pu?y3^dWQ#uTPM zJxHWRjHzNs&hFSF3s`}*#A$9=FkXTWeI{PtaTdOKPEO!2AMwh*Aw6!Gn8$@)f()(DWT-Ja_7{g6BWsh5zGWQ#SpC>7^bu`eqzW=35 zM0%tk();skuKg)a|NGzbza#s928sUvdX#HQcEQ6O z6pP4p1|?{ol|ci^liqKY86zd(qI%?dRaAz8@&@2bbTz>g-tlaE&K}s@>0+9k(cSR| zSREDx=e=s)+s}?^g1h%3!cDEcI>_UH*TBZ>boWMw2N{&tvuU9&)F#fnz<{=O|vdD*` znPs1E1WD)8h&w9*+CH|k9BkC;F4&5y7yLU#8dh$QcIf1;kT&i~TrqjN{_tSW$}(2} zQ8!;#wK+wjQ_z%f%#sDRm!;29q4>zi)CK)*)8a+QHwwU03Dz3i-23*uImS#4(i(2# z>*fS{3`;s`%mDYC@GHrJd!OmuvjHr5PB4RREziL&i1S5iMj>IqeJ!_gL?l&P6?-6I zrR=E;``G3iDF50sXhBz>y#{`vj4@|@Ri3N)P7O#uA7~43>JJ=dI8~#6dqAfdN@l)SaGE`hp zg&iI;?26D$gC8Q##sLhzaa1#W?H2%7zFDa5)T^7FRO@x1nkrNl**ld$8G=YjHFLs zi|da9O)TpFlp&(###ToE0$`ieJv@;g5x=Lej$IrzkRY%LK=u;FXj1}}BoPC00sV_% z^%%eqwAABe>K|}#uaNwo@{-rrEvl+w{F_y%M71h>WSe#C22R)qp?~r-tChdxVR6#V*(II&5Tp83?pZLji4HUwcxPep^`XLQvHY&t z17q_J&uP1L+$`NEWuvrfz<(1#wCQ6dxKyoMAxqzYvgh(X8?LbnG4rNz+AQ9mCY;TEB9tJYxX4#hHMiOw27k=2^sJ(7PG;t$Alv{;qh2zP&}NSqzDP2d5IXzd0u zGL4P8qK~Z7{d!T<1jHhF15aGr?;gpoKp%7u>rp5=TkF5k!5kAA8|!x4Vl^7OS9<_ky@FwHcwbJM@rc|>O|n5?GH+}JbNoYQC| z7)>0qEP|?Dfc!5jEC|RW2(3Ni<4LKkXfNQZ*b1hG-*PEn5X@QpX+#&1?g#Uct{c@) zFx-sRC{3X5UquU(ImXdbPKAqg72-u8!>}0sUtQbV$8ds7fICRS|e zwGQs@AS40QDRgbt z4+qk;#6dxzOAo^a<>-vL*PJ^Bb#$jOdU|ef&wlGwEHow!$|H*@zmF{$$bfN94TV{k z%I-bc-iusDQq~i?SxANT*J%E{)v2%@j;{fS(^Razpz0V&YID9$=z34OFRuVn%9*-P z5XUt1Sep6#1*p4pUmpkDPJW1p6L$y`CuXmO(!1o~+4c9xFM}hAN`lB492#u$sjT7_ z?a&9+b5|(23sBuL|5hpAis6L(2qU98 ze@H-7VcJVWZhUBrNU0a>hr<2(%c(O=#i@f5@*M%dQ+~kmyL8_f$97i+$9As z>R9#@DUd|$>Qkv97fMm2;t2})JNQYFI~^H4)glg(N59DTA=TCFI>BKCB(xlTzDckj z(HwDPfZhWs;%c7%BEq?`(!4az^&U!pV_YIcf1=!DeAbefE7J?RDs`PjbKM_@LW#J2 zFQTb2Rz1f>h!JY0$s3z$c2m-YKt9u|u>^9H$jJBx&yX}vt;x|M@9MylW&e%@gn8hZn? zg1%{!B`Jpfh$6)>p za@~g>ro>D#?>jSjwlJ6qC*E9`m=jyDf=nS)km9E4cjJedHw!6Q1r-a)Lfc{T70R9b2)A(8jPx&h zBF>ZBmMZ&Odu#|>VdQ!ca^ps!&4I3X+MYu^=?;6T!2LIyVSd1w!u1d{xNC!?R}S{y0U`>_7(NMl z-?OJDEw9$D-)k`#TJl5@82*;BN4E1_jE^uFcYayr*SHF`I;ePRCV zbfxbKJR>ACbKL1fK^)wgeCm=*CR1_s;`B>4eO7(S7on*Vqk2@1t6+$+u|}Q+@HRTC zfo796N(rKT3>yVx#vXaH4PLoP6~L)YD@2ndTaj6~E6cS$DW#}r9@C!$V+2xLSix@(Vje4^-C$XeN`NdSr?)4-`DHejKUl9?c9`(%$9_q zCw~FvoG9?81cMT2%}`UQ^|(^fanM7wZ|Z9g7(y*Bj|02G$qeXZ`*>y9-rFR(N1OHu zWUb&26u*o*;lSFe&bt7%>R`%arvGEQd=Wmcv_Bk+vPR0U+m~lhOfavBR*##GF zDVO%ir-m$@Fm*~uTmz>2GmPwd0Bx19uV+Ozb%%Fo)b_mEF~5tgUwmx_LK?B~<^o>e zdBS7PBtBB$4$!-XKRYs~c=7WMi6tn<=Ft@kDK_85lYo>7r}72OSy3b|O4Xqh)0`+| zVyg=s%=uKr33T)KZm%fqaTNi+rX0VQzINC1h!_h}zRF zxc)rm&FU&mX;5lgNn!vp$IQ4=ayJ5?IJH~j)C9y)awb@9jp9N^6~deaMp$)5e1rdI z{EFHU`nmMeg=d5KpZboX=2phiwubsn|L%97ykUc-f~-CA%+6{flU^)gA&nGj*uo%B zJ{uS-m0(bdB)^VNp2Xrpc14_!HjZ0R9@B~6ht)a922u`!lAlrtL5v%>8-%wD{sKA3 zX$rQ(i3-2=o_WxH5Tcuc{nFOyCG(3 zcLgK}6^mvH1Px~DfghNDeC+blZlY_-Uq0D7wJe}w`+K>(n6~aOW|2AaXvZ_UgAKZj zUt0ZEDcYk}bD2s6OV!zG)P5CkL#u#6+Hox=B}bfxV$NZtGvs8Fq-1aflVDgCu+(m$ zTsc-+`Ned4xWiGop!zob4%>PwQ5#3kHZjIxS)$&Qcdfi^9SmE?T>R8_W2#|CERdgx ziryt;_0sZH^)|kt=Y|c7Mf)HU`}S6@TUtV|xe*e3P#wrHLtHO0DTwIj-YOoX9RXE? z2@<*AM0~r&nr!lIFomg8)H!N>eFkG?;2&~*f{SLA?#uxVzp`&Uyp#qagNpW&6>Psq zA00AN;Ujbxdo7w~`wi`kP?!5+8*Mc9gBHYq47NUfm^YM}y96l$Uqkk3I!kPGZdl6Q z6O3NSZ8?KVFT8y`kIHGQhP#Auc&1>YT(963nQrK}xDUh7PIh5@Ja%FE^jWW@q#_&= zyjnj5)UZxroQcD3VG;iRsS)JjGm@vskSYc)exGr0F5TTGA^K>Dzp8kB9n`x#B8=xi zZp3#FnUt#YJlAs^k&yGIAE%^;=Jh3|F!_ymPxd+_S7O3l#jXvs1{rJt8mtPXO3@|0 ziu5NGFNx0xpAWhIMgDqUPBD=bgJu_Aj5hMY0;fD*-8F@W+NaHl<~5*q%oT;B3CJji zmbjpD$_h=85GQy9PBk)E3NcaDh`}2~+yM=|V}5w=@wV@zGw+Px?`eFuGPL`kbZ%o> z*`e6lY90IMk4(p&+f5j8E?R`;pz$w5PlPVD?k&?pZ~p4KaJ_G~6FPS*D3>E|;p%_D z^rqa~r<*$7$;3zso_qve0-O#R@{QL{c48^TeF9hC{~*#8h8&i~MoW=-xQ)O<;Oe)M z;qQS4cKXWe_9Dh-VPuQNKUqS32Y<_TA60J|4|E?qbepz4tDnNFk9Z~C0&KX3Lc!HV z<6BO|D1V6<#nf zFdi^j7cdtWFgQ`Lr~JkJkIZ^yQ7{(RoXWv^;m^#$PN&b^`25LECrcS(g73o0#X}@Z zQLyUWkNNyV<(5h8Tv~6r6#P&~5qJEiNEoPBk+Zillvj>0iMO$^A(B^-H{p`)1a^uSeoX z8t?x$vy}fjYzQOsQ2B@_9ThrfG$Lzm#vpGv&_FQ<7RwMwB&2deGLsO11;_nus)(k> z(11ECNGyS1Vor<4cv+dgk(a)fbU`9B@n_Mjy3Y1^zFcc~pXu@W0?iG~QU2Xu7&)UN zp2{5%k%}~h26a`II_!l3k33l_e?uQccbnv|0qV$jtP-iG*hh4$EniFCEd`{AI<-R4 z88X61$(U?hNnhyGj49`u;IUbDPdi|C)YfK<>1Vq(T)&oPA|4c4ZE0&Cv*$kas0p^? zV%=b}I8}Y^KJ2o=I)3j3Q$&2N6@4^AKj`r49Q=~Gv76s`bd!{;eXy<6V4_5SYAv>{0cF z8|B3w(MKtTPetXPMOH2x#R}nVs`t*RT}5;X67o#Y zPDH}!yIwHS3|83--IAuULuJ!Pe+x%vb6*LFC0VTxX2rS?oj@TggH=X|76q1w zeWtO2C5W0 zQIa)L>7}_whF5bkbrIrF>@8w}|1$b=QW@0%gi=jyS1tLlRWm)dXje%Tm(Y#lto)B! z-~V)3Z!Yb){$bfT{*Qc-fB%NI4#W~hKh0=!C$}Hr?;p0!ztIM=6tyie1(10PhNHCZ z_0x-WU+ISnE$}x&6roTl#G(C(;e$J4GWw*|O_SFoW_^};0|oK^VT(v!SH`campbX2 zT=P6j~a{&WQWv;cm;QM#Y;T02>qCV;Uf^?+3qSEBK{< zpIah`p>2($&GF|jjm}$aLmrppvaxigf-z@6=8}Y5h<1&KuyE_}^*hgmnK}qc2;9@I z@|d!9L$GIon0{LsG@r)ju`I-7zPOihLg0+rMD{789ooFv%NZ)e4EVN34quh5LV`yb z_jnr)+)r@2PciwM!|s9zij5o>a*{WGbL>-WqV97VUu~yjK6;QU4R&&%J{jBM^S>y2 z#~@9ja7(w#HoMqm+qP}H>MPr}ZQHh8^_6XQSzWffYWmFFn3!{7X70Taxij)d{@Ial zzI$iJv(`#pICSw)wCeTnejBxs&B$gi)$Gl5fTRG^XmTO-MP#{d{){g(FcZ?y20nHg1Tf zpqpDn$6NaM=g91nbCf~Jt4vL~f%9ayCYay8^9#WPc+0s1s=Va7Hh-$HgG zd&;>g)lv^QvNxC_&_XLmn{8U+yx~JTLttTnc@#^la73=!29S4TkPZH7C7)8LR0UA( z{PdN+Qr+S#+5XKLdu1J%z9X0PP2cZIs<<^pjLIPpqtffoj%)2)F)BsG0jK6vB0IfX z+C1tcHKMjgVz+=_QpxTeIq57X^A}h0&tLiSxUAyK>5zBZ=??~dq>E-ltf_UU#)!6P za=UJapUyFuCIoN@ub@2ND(Z&&b4GYE3Kp4P8Dpmle_!~|=2slf5LYY{$ZrqR-0E6t z7nAsnvvC6kl=snC(;UMu^|E}$A=H}kzA=V&`$R{u(kqy);3q0raJ~@t;YQRQ;yVVZ zkGz+Ue#H62rTGMsbw*>nL0aGAcin@rA0yMCZ*^7$et2kF+)9h_n#5vwtwrS$?h7rX z7tnJwz<&N0vgl6Y^>&5i$B%sJ|J#S{|JpMCN0YDhf$>pYdAj9#>GiZ{_S^`Q9fH%* z1SW(EhERf0W4B3yO0I)i&-XdFC^zajhwx^rK7D8BT^ymcAT>sK73;ld7Gw?6|p zz7w;(Gq-Eu-}x!*4im4oJ9i^_UN`oE^7!uDcOY0XMC=Y&Zhu}2;70dFdYs$iymcLj zuUGCA=rac935UZwJ%OR|2PU6w@w?B?51j7#^LJ9$yvM-u%xUwE2U-)qxbC^`TZm7V zVK1ezbX`U`gOgbrs>kOlGy@Z4DCLNywah+_oLBOj_h_`;0}OxHgRM`WvB;bI2m79v zUR57LfxQzEf{*b~!b6IfTNNz7F#okXXUKOk*e}Aqy2Et(+d~1D&vLl5Lyc{pnVEi% zVGeG;iy*)!N4(D%$!@nH%h%pe@GGI6A1M<|0Zbr$hgbx9A$004o@niSjxdGlP^L5* zJ%Rj6=zb8~9e258ak=CvdGH#5TP%%!n_hD)NuT2V?%t;S_LfBgtCPM%{P8qy;@5+& z@sG&tta4rB0&L)np zNoY(@M2a|iGOZX)Kf)oPg zK0~_W#LQ97IZ{dcIhJe8{POS8^0USvsp^)n8yfs3<6~;rET&4g5k^6be9~Dg1nfh!lv*+b1 z%ZKwag~|*8bAmvITG-I^^mmQ$EZ?V6gg)p6mCXZdTQc6#C9toP(ab(WlV$?(StcqY28)uDszR0@0Qbm)P|-)^4aB zA$)GcnV-oC403@aDvr`@_%+vV;iM6Y<1+*2yZ__mN{FqCSnwWy zA^b}XvUp#ygsqI*6T%mdlSKZi5QiE~49FG|BnP7WQACPe(k4|!eN@FBP1ZMGa{(={ z&M))exSYrUxOVbSKpJL%U|u1# zgoe^S?#%Ux=pcWFh_?}|zXJdHN4%q~*6y}_v&?*_@JDT+U`5I}k~mf4zn zbZcXp30W`40?%(1Hf+ngX0r=%4j$E|)rKJ_cE_yO3ZMOBl%4%Ue5!>sb!!AmnW5{3 z{>Ur!O181Bf06(yIUnKX+FrWfc{Yzqlt&RArz9TQ(XlHi+zQ&F>1>99qd&N+(^jBI z!j;mjE;7e+ntCiDhG4=sSVai@oDFOH!@ZT3g>0uu@2r?T1?d`-#{?RT<#F;RIU{C~Thwbs#oV=iRVSnig)xN$Jt_@-EskG?2Do_MqDkWmX z+^P&=cw%B6ycDnlJE-oHM^hhNWu<0Ql)7-x@In`ibIqEMQ<{@s5jKNtNFqlyx48}& zDX#{SrPhoS&D}^VlW}*jGCJZ-C}$0QM7RelrD9-JynzvQ7H2L+J58KpSa?|~v_Dg6 z=a3OxsvCly+gp?TWRXI+g49S%wWK(L5%7diTpC+~a%273fij)@wd+_F$VBdkkHJt_kwb%iXzaK8w+^Ys|1E#Fs=ZHRZdYhIQw6S#qO z4O@g6M&Rg5Sgs{Pi(}_tgKS`RPG|$$R*@e@K*9Ww;VOkfaX2Fw_a*xVrGF*ow1O}U z(?EVA?6B?edF%!t?a_hphs49bV)HZYsa*R(`g6>KK)E)KBS(wXg51n|HHy-*G2*kp zKN|6A2@@N)hyg94BNjw~XM#nvURrD-v}oq%2ecx~kci?t;FZMH@c(yhu}gBzg_`>_0?_Otj97PV5;b(lfeVJ zx4{sX>GP~9!akN9WZjS|7z@)D@|0LFNd7QZ$y$#aD;VC4WqDxwAvajxQDw|Em1hRz zXK*-6ceqLB@p$n=7j$&yQU=IN_yeww(8(MDl`Y(+{o6hNNqE+MX2pW?O!Na8hB}1+ z`fPiHj;~$~qv(%j}L*wbATp|2F?NAg6vP5_Q$f2VSX)wy|*+1l{@fNWFZu0 zQ5yYHu2RENc(DCqvE6-s1>PNesVYP75rzCC>@hwe<^C{iS5ln=!9H;c#~p$pSgK&Tru zlPHuYJrj`*hqnqQvcqWqi7n2I(T~}FaljGQA+l{55i5-PrURyv$a+GrTM;c6wk}I9 z+d`r@UEjq(ez9qR7?0q{0e9!_f?BkI+>hm+#B*W$pkQrnWsH=_<>SGdSY-_xdI9ek zziu2M(D3(fRv{KyyDIAMLa|)ZAzoonK!iY)H$tPDB4(VrVh}1LqS9gYd!<7a2*E($?z_5oCs_bT143Eq%Qnn+Od~ zaH#@mOnzpsP|`3DwI0A8ga;AVB+2d;0daIEb8cNUMqKwes>TNi%C1u;fD{49H*ruG zDm9}<2*De553Nx8X*0j~FC$3{xaIydSMd7|4{~tJeC3W3_NKC_39E>gNZReYgtP~r ze=;VTtlFDa-(*$ejw6vvZsH+Fl<^r8P`Be1>nl&Sw=DmVza>tj%CNu1)F+EIVKgGA zu_)#u?DdPd*E=6TTo@-5Mzzfntw17029TdKaiHd8n0@G@ws5moGk) z{Us~!zN9 z?xR*|6n>F&@L*w8;2{326kxlVZJgRY?-L3rUWKz=JD(bB( zMtGr2tbVXQl|KYuB-EV+b$hSf5<1{8*-R~QIg;WQ0=S1VD9dpeYvV~%uVEi()Rou9 zs4yKtLq@zi$ZT-U+tAq`E7M_7JVXHBUCw>GCG>E|5J6I z!&J+;y8= zUv~aHDMT(*7+NG|n+v=}@3hGcIZ|Ew*ov12sDEKKO{?m5K(fCU6{F8M*X!Ynq6U5) z=PvalY02?GV#fZJ%4acL^#-J4;x{5fZVAF`Qp8F>hL+D8mye~Xfg>i-%R?DELKSFF zDZBWq5HnUrflD}X(0ffzL@i>ll0Sh3^_k$95zC^!_Z(1o7@A{jBpabEXPl$iJ5#P> zf5nUzB|GA8+-&IoZGbk7-{4%aL_gWgRkivB_DnL{xTVigxkl%Z@DjE16%V{FEDADG z1O_+kTwr5MWh8`@d^%>N>EtOnyE-V1(ERPQQOQ`k&%iizZ#FDcbZlj|eY3TQKa z3nUkm!gcf*5KVnp35`%{S7FiCR-_OeAAHx<`LpJ8GfQ%8YU_yXSM0K5YN>y2@}W1D zCcj2QJr0-EW#wk(l+YcRW}nYcZI=wLKBsT7aXGS$ApgU!~DR8Bi=)aeasvC)9FJXnc<)DUQhAJ zQ~50}{H=7}pE=*3@$Mhke(<+n`P&v|ZKTwi>zU)@ji84ipK#vG&kve#;&kjb(#Ov# z-XGGxygZqv5B%l(wOo7oqe zd~plOAz|}d(H?Ih{&5+$5v}EeR6s!5652`t63S<2$xyQzS!vv$=x;z2!alp=(WX>r zZUL5CU~?OqvRgnkvb!KPhj?KV*y1Z)Zgz~YE0pQIj=B*FNABMBsE&9>KuPHkSptX- z5w08Zh{B-ZV$psH2n6W^Dt94s(tadqXXI^b3By>?U|IaGDmMoBpaF%Av;mp4n%C-8 zh@aZlFK>YoEQ}o_E&RO=#EnqaA#^NPL3yYn%+3!JsEn17kBG~I+=Mj{u!vaV7eRtN zy(Xml?OK-<+6ESxo zsEQ$ER{^HVKJ9b@Jcf43CVXWBI@@w&qA_Qn8?OvDwc)QT@3ah@DEduHCQpQ?x3wUX zsArKdp8hVluvJX=p$0ynCAXt21#6DH1$aJWEOPr82Bz!KxLs9v;?NJo9~e+UalyaP z!UgG1h8gi7LpkxJ9YabO^KZ`*g2GC|7)L_|AeYW2iGTTnHT|JJ=I6r?Sy{)CD7*WG zNpY4zQf877snrt2q0r(g%Ro!~hj7>XBLo~{{!sPo4A45}r|bu9LON~(X9{3)M@qB^0lE&KBHfSplO=nk?C|B>e5Yk_h^u%9P3M9mo)THG3UU9S4@ zXVoW{Qt#mvAfMQSEW3DrngKQel1fucTSR7hkZs?ueH41v9hLZ_SyUed8AN&Ka;Iaa z_K;pIGw3YCvNr)#JJW6s9?jF!zCDGB8mgw;4BB(Op{wsMEWi0$!OCjG0Wjw6IXMlp zk=wb~GmI?H594=$QTYra6eQNAR>TY`4`z2^GCmiUW-$3(xMpazRX@gVLv`E2%ncYd zR>5TQ-;3vBfHcd?fQ_qH^1>VvrJdzi)R(7$@LYg6)U+PbAHXO(rwJOo{aE*_D?z?` ztgH6Jk>$)5@S@%{ifsGs8_qTvW)xIPCs-`|9XE`BGHt9 zFS}Fr6J4q{0%z<`h??heY$}8SX3!U60lTxJhQA=S5>%Hu2xrd&xb1N&c~D`N4LXpv z@2Rw200~3Q_UC&BQp;X`i5laZGw367SIgA(#%8D z6h0v7HPa#=;nn=pIW4o+O)xvN7eU>1z;nxxZMT|jwO5<&X2nXp-Hoq?8NNg1S~CK@Nk_Vl14FU{!^4To zV3#&aIhx&`poK`le!T^+i^mM2I)CLK>(?W*^!pJ7FRS$cD(w(pevI z8}M>+unh4K!P?fgE^{BUEdgcyvbH~A@5oj98Wr~J7WL$@1}`LqlFq*VWhJ$PRl{<& z&CyWLHzxas1jrd|o)m(bJ^onoh~f)R&8iYbMS4&W08!N>)tCGcHluxuS~sbD=P)SFjsP-g)0G|M-eo>Q+JLwZPk3>KvgV!rsLl@Qo$ z1d|66+kp()0j=%86w-jWYRIP>gW$l%K7_Ci&an^MfdS?~0civmX2_EV*WG~de4y1>zs{vN&7Ya>%dU8Y_M?hWKvJ z;C8U|`lBzR`xfDHsDD5BmFpU%^0h&7OhSx+pFHee+ImoYG_#LzPLM)W=4(qv_*}Hv zYY_BabkR=(Osu_XWBfjHzbGi+%xhN%!Y;D=VYV@D9~lAA9mwya(GzhKsc{Q-2jWM{ zKNdf-_8J-VT3NJj9)*4kIn$Kska0RA}EV^Vw* zg;(xF5lJBw>&v2sT_Gyc#3z?tJ_KsE%EqWrKrezT)#VYBS1yfIp8qs%>XOVU%OfkR zCSsC7h^B6pn^v#Kf?IwvF6`2xRsW{6TA^>0^_9=5{8D>eMiT3N&$LkN$BaF9AG#4- zIC6+MMl9F-Gmd`B=_CeBq?mPuM>iUiY@B4$uW|Gk(H=8(>@z9rSl`D==T?uJ!c%e# zJ@j#GJ(PBgJw$YDE>_t-@X*{o_YnRZz02tszKiOZx{F&sdX;S9=|gqr>BH(@3Ry4u zY22Mg=4R1ZBr=7StDU%BnHs6L3Err~qsCj5OHZ(N5=GI1b64V)<{_;^l(#yIGG`%l zE-~`332|U{<#ZS2R_meGt%o;%jc#w@9^G%XHR8QVe^>aN@G7}Q!@op;W?-QZUEgvF zOy7h%z`Y81mG@TgsrMyDv@)O;{!mwP5pz7>h?1F8Q-0zllM~RNSf-%XdZ!&JUZdoC zHzw0~q5AtoKC-Nn!uwa(EPy}_@&b!eQD!G1leMgMB_ix*0= zcVFqsozj>ELiN#e1m*0be)4SClf=8eokSw}==>Ku}k$`l`Y=Qs@j zHw9JdtoE^sd9L!YO%dD7DmXfW7^Z|N#;|K(!2+9GwkWoWe-L# z#&G59bVKwL<)qv=k_pg93A854Vcam!Tb$UZV33rb{4(rBQ16F=nfUAjx_Gjg>X7>2 zhi~aptZsZ)<70&_FJc`7Ss0#;T1u$d7#Ej~@Q%%VX;l32u~gW&D%1s&K}EEYLQ2}k ziiX`DXyGVyke8?oDq-&sB}SnY#N98nCBu3LGQ4qTa%u`hapDJed+PmVy%3zRyyxL= zZCO{?(DYo{R~=yIWQg&_XaFOk!6`>x_~b_DXri?{#N#b8PMr58IbBjJ#xs6(W2!63 zVjV90v4+nxJ9SOg>fu`vylAt8N`mm4eHc!}re(&Rm_wK-9ou08W3H>SQ*4FjJ5gSk zrql;_3zjNbNhh7lrV%9lK?9H z_?S{z4=wwzSt-t4X)?OFn+09D?TKNZap*}PV^ zbCwrTKIySfMwKpf z>Lb5IC-$r&ed=+7Bhbm+6F|-Bz)uwg>hq>KKnu+BXe=SuZ_*O9+cCaD*CsKwO`tL8 zwF;iJ1@6|P!7^y$rHKoHYG|rBFs%|Of4!l_Tma-(?NhqFQvB2AVL)y5qoyurpf2y{ zLPLE;<-y>R!z8kgQ51dp^y?(GOQ}dTuW$`H>1ft}rT_j7(yz0OsHMj0JjBm~vR!0H zWPEN!)-qtpen%puCAa~5m}1Ll&`Fp^t*2Oj8JarjXQ4z8R?vhrtC1HqMJWmRBg;yb zjV0}RO1-9qF0ExV+kTuYcb)=BC)paDP+MHK`_rv;oT3p?rZF*&7vMK}0aKoUFA!?O zi@TFbab7GqGt@9XnxG>J@&urFyZ#Z(3?}^S?R61*xWA(tmooxTEh}&PwF4wUgBqr?Sz=k^H!uz05c9ORt-N{|BU6^7`V7n)t zp>wb>ntDO-mjK430ti`h^aJcHKRw^7vlu_j3-26%kN&QLz?Z^CtKil!>XKfw{D3=_ zerJ{bRm3*(K#6BR{x{p`(ywHCfgll#J!K3@6@1ePS4K4ocqKhXDY;;k6_=<+7NfE( z2=fX%%@V+HW);+InX6nC)myGa4tyY0N06~8{`*4ep>+k5`(k;Jj}DdDUIFC?o~M*v z188<*sGT6rE0d%N^@57R-IGp>^liMZZD+q+1KuON+aO)5*a+D=%*!OT2}t^YDovIGuK!E@S=b~;+`tN#ua^{3|qX4 zOtCBuq@EkmYWdC~&P#cl6Q%U78ENt&;NCVuPXST7e%R-u*N?jzm?IEsb`(N(Ii}rEpKPB z7+~9wYcWXy*XS#_K|Y=^C!D#z800E>)SJ3jd#_oz;w%|QH?I&Y9Oy-WzW9OdYWulZ zKIE9ho`PPR=EfN6k7T#hI9xVtzEtS4#64aJ-Kr&_>364P`?Ec|(ArsXo~9{E1PdH}U$Op)hUqVmTX4GlS54(7bu?pr5=! z%j3=eNfWn#xN~gtvEPIC%~GNlZnQGnsM3pJxthnY^c}e+VFa!UY3S{IXV{Ad>sx*k za7V6qq^nohLP5GR#4mjzdmx|ZF_5)RMd3EtTsVW)K1iQ;)dX;#*wD*1v3Y!yI#+QK zpBoT;(&E(e%)DoQ(iLq%9y(EgfB>IAGLwLRg z>RTJf=d7E^kt)$>K_Ds0^`1nFI4-BUUY8mkoeA3qtYKlv+^BWP08|}`A(->?+3+E1+@=& z5^$i%Ja>Z{;zI<{!AI=aEgZB9Mc_HS_bQgbV|j&i=wbGG=#ZIHjsZL2%Cp^z z_G}-1)q&r%@mds;LqGG!%ruB2QKKt7=0mL}*Mp6h>`7&S)&noE)m5kpFLByR?y;k-U-Ze}wm%{D*~CtcItD>I%kp@3fowy>J+uNCG^MFmnPp zhKi8rAvBvHs2Mc7VJt&(`q7}NzRyEgZFE~HeXZ*iv1a-nDuyrQh4bA5u3y&aJsR(F2jRJz!s)VkEo*uHeNEg#+!&@3s)TFo)e8;=P*$Lx>|2 z7uFDczg1AQOFxX2N00TvW{gm7r0~J8=klZT=MS|lc zzGVrNfFMBg(A_%)Re&ym$V2y#-m?re2hYQJ4IOX>oeRI6LiQ^)5}%q(jn-%-!&Q#n z!bz(+X)Aq;8L3vDz^KM-uhnf0O0U*o8$Z5?jTP4$9d}zP)g7C3%dIJ-wKR9GOLSes z&g`MO4GOz^+tFW=!r^KzTw=>jvkCumwAf~1HNR>FeRO}tr6E%Di~dGCvx_BGx81tM zTvi$#cbYESrkteQXu2y=6%tEZYf7(VP(!U(JXpZeUD4&uiN>1!)O%CTyfvxhvUN!u z5WBB=u1os<+b%k(oUT2$j@!98mud52QGB*Fw`+zkv#V5f&E^puJ+yYaDTuD6?Yy{5 zbqROoz<}f!5K9mhuf+v9bgt-x!!uoD?W$c?TuAy`u8%Z!&ePtq-kPS&baebUtGAs+ zLYYbV2dE{Fi8-4n9C4QHv5U}X4T@>TwySM!;bwAq+bCMLOhBR)}Y z&6=b=W7qV`v-EJONa=|4KD)B4Zt{Xmq}mE$@@|qHxq$LNNPC_pgDkChawxyKEeUh7 zEcths2%PjPnVQGUOb@(w&NLR+&`LXp?xxZ&}$SC+4#Dgq*U>dGoq*o)O#?ysnJm!4R6;n(aq_d9p| ze6i{{|Gj+fuhKodo^lhGwt4ShD(4thFm$W-s~F1$PSC43OB=(Z&GwF}Yq&tz5(JIZ zB7vDbuhbMZAuL@znrw~08%Ca3pD;f1@+x=b(G7x%LCO+5>D%;g~t zR<>?yX;QvqpoJsBOKmc!Q!Wh)kFT99``Yc2mL`!Hl>TKI`%xW-0MO9PHKiK%t|uWj zbIR?q-M`TGDrj@0>DUVjZ*%^y=kUN5KL8!g#z9xs~W&qC@t((Pf@erFOl`^trC=MyLkX$nN^!+Bl!>Xi-M7=*VOR34?4##NR8t0qRTEU0dRjgH2D|omp(-rg^%~ki(wYpP= z#2D7f$Kf~e#N>PjPHfMxK*g0VQxlUX9NA+m@u*#XKfK@-i@-28-qbzXe}BjK{DQJf zb|&}7*oJgwg`M)ImSA+*>H>j&7Ve%3vBYQ&C?onYZr6{XXp3iiIO;6Tl!km<7&p^E z66jaA4@~uchR21u6?@8_KE^-#uApDt?U!1e?= zqlpr~;^iF)l5#>Q5pcw?YfUft1Gs{hKDpr(RB=b*;7{f;mcz#J)N z>6wYVvk)PC^l-V7JLhB}VCy+lztKdApS=?CS!F#jver$ksv#Pezy?{A;eyl0^QsFvGK#pL`({nj<9p zFOkS&+4X`kM6W0Ub0aLiwuxF|KI{3zi;Pyj$g?1j5KQ&7?SMtm((i4M2s4;(kdPPn zOs+s7$mgYLZ;KOO?C1|Ix^PV%B>2#5<7gp*XeL(0Oq7$ky@LDBBc(8i)XVXP%K{1C zvj}1sM6zgsqLDSi>G(&^wAdxHMRBqjcpm{e5%}r+5lyQ&2Gjk7$>Aie zsgY1SMX~lQVtZJ_BX%$TDmQSQdV|MGy{^T%hvl<%$5m#YUII@uAyo2I-Ka)ZU2s=TFgV-K6~J%XO~7HazHvw)-Y z1Lk@&2)JYMdNVaD0s`u~;nyGyT@XJgzr=R3mPa)om{XQ1GujL|$%mzLtUI%N2#b&8 zS6Fu;>Cf{$(^c)>xIp&ZcBDJ7j3%Vgg~JsuhOvQf)9NuPQc5^Ac^5`*qdo z1QwOrg@PP0_zBpe1T|no4Y{~!kS4V`nk!ehCb@M)u_;}n?kY;L6TM>#Zye?E9gyiB z{6Lc{9y^%=b!@`RIP??Uv4=O(BPK^7=NA?-&G7`VLsv3~Qh`W5DLNwgxDrTp&w8M` zA(%t1Kp~$lbpY=Pd8gT#!Kp$|G@F!9u0FvMxzd!FksuS2e@|$TP*{n_k(VJCeP41eZsi^;p^`FJh9DQF55&zVUh5rWWzwy5} zaQ)B1XR#O|*da!A(bKg}RUwD{%~rcCunu=MhXu6HFl1$8ejp{^e|KvYjgDx>4jVJc ztN#EK3=R!au7Gh(qo*LmH)`H$2iw(zij(*M6WDNhloiAGZU|GY4sXuTm?=A?p0wna zGSJKJGm-S@f%tBYvid!yBA}T}16nwMP7TA7vNZI$1X0EDpJ##@4EC$?pTNoUpMx~* z|8XXAMo!KaMmGP|LOOX@9!&^+bZ&kzE$UvPBH~j^sIg_8?G9B$Sz68tR<5g+$jYW{ zY94XpwxmAo(HZu(kTiYhSsCWqzigkv|))c^bM9oi44TUr>H zb;Wy8DeZ}}q?jZdytaeel!2Bh(sK1&sdTtgSIhVxo??4$LY#FH`1SI&^tj*6_q{I{ z9w#(`%XT}I?6Ai@My%8;;=Rh7*67u0pv}i3oNDJCutoS~@MI=AXB4lf2;}0GF(Rebb}EpwE!IrZp1)aAKKbPX8|+ zY?vTDhC7~Ot`W87Fq1#QzK<+43ka(iN{Q`&)IBi(4i^DN*nkb{HecD(DBFf)GW^f% z>NHnD5~41lpbN^6c0?Oii|jK8dewuxdpUfZF=oHigs=>v4TP3pNVOfF=1hHkMG2*N zSTzuZM?-YkVNM9xI)&2y&d3kXGc1!|7hBOF1bjl)8J3f1BuDPv4qs<{VcB^~;|8wiqZyjRD>`J~VxKIn8Ar=KJm83#K^WgTsf-VPr_moJ=KK&L}dj z3rE-6P*S3^l^Q5Ap6=^wG*xyJRdp5d>#_B>O~2~GfdDfCnNX`AZa<$@WR2_7X z01CGne#nmPaiv4JL(?Lk;|qB873v}@BSol zO$`tui+aAyTRbh4LKO;4?>q|E>0h134_Fu&|AJv1WVBh2a_j5U{D|+CPu^aJ5x^E8zZlXd1xhRQh7(3UV+7h+Mt`7)|xkl1{xz{LL)+N`^!zYIPvbrBYJBGcY< za!=4a+Fc$tpaqFybremkS%2U?Gq=9GilIrmWO>6<^s5aO_3I5ia^B`1V4o5!@Wy`p zkxalOsepa-Dcl{afEiJYQdY=`V^##7uN%W0X7p_7$HEv&l#&0RJ6e?vls^2wZZ`Ta zI#A;O&*OD5bFwqC`9EnmOEq*f{`ppX$wR}0>=TE!sV=k_2O>*~^{9G@KxbiE&|!K1 zqk@i*!{h-6ri()gcUZ3n+MBIjD0*$Kbb79DCxr9I-3(tKt~W+mf=TXYwBDLx-jy=5rVS|X~ZE~t7Y$j&y~xP z3zJKWHEkXx9|Q1#g5mab&5W8Ro0~K?4pWBQWeS?InVgRt#Lxo3jh)+)Wya;UmX{)9 z^j&Nz8Z$Z2G)_*-@^74CKszZQHq~9%Tw`1&QpExjFP==y5i9{Oz_vPRm6OtAWm6B= z*!(5xx}oul&>*8@)Ye}_?!PG!bC9vCoF99x(brs^R~H`c>#nv>g0b3Z-SxU48xeAu zX@~hp8nzh)51)SOqd?1VX;IB{nQJ-~rYOjmODSX@{mE-)>FO-vf!zI=CI7?uX(7^I zOd*>~$)N06i)V&!S_UeioJNB$!(ly#Hm{sUhCes+H^VMrQP5YGevRJI<+Mb{*~-Vl zLm-Pw6kBCZO~q6AEe;XkMn;G)CswXg$8Pv-xrnixx?a$zq74c*{yhW2>TOY7NdB58 zzCi4%!0Dk>bDpKeuF;1y@GN>3^^A;oB3HvoK`V0)G?1S8j7*~LXSOO2b&{}IZubkl zfqY`wcym##!4kw`Rgm4S>|C$nct`Ru^09#CQ;m zLsMgr1~1kUE;#!HC()M9jj!Y9DG&H;@|H@`Kp-EGk0ScB6WU@dLp$s#9GOMVE(yMw zhxjYra0I$^Pc_X8(4oT+rHulWgHA%bqc*%7IS&Fil3=dGOp!1 zX1)e|@Fvq!|5$vOV^66OsJ*oZ)Qyz~5(Qh%{#G+*xlz;%RK_Y}u(MGLE2*QzaQLg_ zFvPTF##m5T^uK^S6J5-+s#PdoP8@u_JS)qh7wVMBufy2JQk*J|vPpaBd^YVH?~?af z-D0AGHVX&z~?@YuM6P>9CpbU5tsH@@-C>PMhWD` zL?~z=5RA1ErpXe379}8J?(VVA)1r&-8?s7qM~M7}hksWd!7IA;iS_-75v{V!cQbF) zbU6Rxj!%0;;|%%5F+dS9I{XYP-cglzFu)^9>5haPsK7~+XC(d^gFP}rnF-Qj4DKi$ zvp7U4?_o*di`wIrdaWMT*EA>I*p@DwGlU`>(oQ6V5{I3o9|*E+6Tz*dSgE9z zo7Af4RTXE*)s(ibNI!m%5&wVKLjKS7^nWa$rJ67vx+|_&s1FX&sN;tS6q(1xPFZMewEvopi4sC^;mzG12&HMdbmAY`5vNC zj@;L>f>#QV&t|mmgFzjStzbK!saX3%9?;LaS09CdZ)*NsEZH5$eJBqNoA<(h8Fu?) zps$gQ_xAFi-EiMVKfeC}74%*iz+UYszQ#ho*#f?u56tO%%zxbQz|a%-T#&enWbv8;_bVP0+92$j6VW>Xvs)`>Us1(loaM+bfhgNMvE4GGPSp>e) zx-1f}#`YXEYhG#(g)gzmYgf%PbGR+G!qT}H=hmSOz}{(5@mGUyScR@eIMxcc!md!M zDrn-#may@mMBdmUwE{^hm(}SoR!mI(l*lUvM~0M5nbC<=K$DBJ@}@#)E186Rd30D@TX;LQqM zYa))a473y|(ePrxVpN%gnwyq3k56m z8z-vZ{SH;m7cek13(_cR8Wbxj3g(zz%+(LBc<~a zrJ#Gw8ZPrCEiaMDUt@RZL^BULI@6-a>r_QT~ht zdXsp`4s3|&c#)0{s`8BCnq*fus>(1EoEDo%vD>*`#due4Ni;OKgd?$dY06-Yw@aV~ zI~IP}lDVZK8?iF8W1^vt;AtXGoq-qb!)9;BHo6j5#YWclNc^0DnfFL7_cX4Q=VQl_ z8AFt=#>Y7-qz+}xtb>*F2VNx+E~ZC&+dPUK|K){#E`Nh8c=P28&Q$2Clc zGo{rcvRmAI$Hq72@Fe?9`3Hc$zx#tCJOy*1n54`{`1L*~B&+-BM0TUJH0dt*lHK(? zU(_NNLH@{&d)lRk*)8B9IG6!fOlcACb3mW{P+pW3n#O6{K83Ir|43Xd_7zPon&aj zMTa>Vn>BltdGKk+)0s6-ZsGdcR6O3wmPv~_>UV*ZgQ`WcG>36icRUhzKtqinsyx7! z-4ywcm$Jqm^80F!5cUTsLX9&(Du2wFY8OQQaY4TKwW?!~o!TAB_E>B>XR}n!hUvQG z2u+5vqv)?wtb~pC>VpbFRSe{}`|3qobj3SC6pdmlsurm!~bzb=_$ zo6$}ip++RT33vn;6ERCgGC5?VNZVo7|3=t52WJw6>%J3DY<{tmiEZ1qZQC{`ww;NS zFSc#l*2J0UWZ$!Q-FtV{KBuZzb+79Fr+dA%diDFf{rn0QWJ)^D0;C*qj#zj`($%R1 zCHpgfky9*e@e3KlY!xL=^9fL)=*kw6zyD!mTcpH^5c`}cZt4?DVG`;N7V36%WAUjP z-ES)`Ddf-_qRMVz`v`(ow&5?HH*8lg`F59SjlWiR#CmqJXI_~vH3ALi8>R6?cH$b1 z9CQdlr=Huq`H;;#2`riz;Z+eCBD zV~9^{msPE)Y*x|B+fp{uQG#c-iM1};BwW_b*lp_*Zk>8q-ic2IUs$)t{UHOT0t`RZrHjrCN?yvMSqSZY79 z0y~?Ixzpo(HMF{Ta?lK<3qZ8*K|Tbx+f zjU!}L0BFaqj)2s0y|18kgStaTggIsk$RX8fQHG+pTRwBH3}@Q1TX^BZhD{dIgBa(r zNkT@2Nu#YLH=n9{I~nMX+RcnC`SzgbX`d|>Q~95R2igdXp@ut$o7*7j?w{yy%9e{i zF-79WE!kLF&Z4cPiA4~yhguu+sPvmF>ev#dxl*%r8GFsOOF68idVqH@S4BEH;;jlwng$a3ILy+Z!D z+g^R5B$F-MOw%7wkj-s-}M%iR7LP($HHgpBY_){ zx!r;zVCZuU6PI-e+AD^}H-5oKtujVdB5zIEYl5C;@Rba- zlp!xc4C@b8H+S!mY+flCBEPT9(|&8olWIDfZGKCfd~yee>-0CnGK;{Rs`q|ow{dN% zh-cj+Tl}gUbI*n!Lc4X3ghU`S$h&+z(r= zkNQ_pIxpQ)GsCB(Pn>v}$FNC!_voTfRncRbVGEx+KlC&7s_o2DUf>DS_^%~Q#@ZVi zp0eHDlq5}+41p9tIa4IHH^vG>p%CFQAOa?`oZ(5P@D8pLym`G>P10sbl9EkrMT=q0 zhz-XfvPWN(v*-Ez@5rT*e}CUyMuUF(J)E$PJIx&#PtaR5qP= zP#m08yH>anDw?A)Pa47(TfGgm@lG}j>jIVM))cv}FW2psQ_Rg1vJgO7U9lsEP*RX? z`SFdlPiSpp(2fE6b}vk4r0WYg+wFR+2W-o}t<6BoY^1$0LH9tyhi=?)3#ZV|9_1Uz z$Z`iRD*vJNJM!C{e6gXOxwvK^%sb4C4UheBZNrJCr@tNTZ+&lu9&(-I6%Rs) z*owOQcgT_Yh*Q%S;@l%Vy6nMo<3Zdsr`jNJ|?27gM2z!e)fy4o0n(%k!osK1r0anVvVPiM>Rcr z#k205@K%h57m925+AUw?Or$U51o#pVa*0V2IJw)fxvPY8lk@_bh9YR_&^G;FJ@g=} z5<#GlQZ++s6;o^S@Ed7&uPHEJ%UGd0Rpk#noi#jN$zQ%mdWQ;h6<0{r>f%b))iK$0u&Cs(Ygr@~rb=gu=^ztmn(p-{?JiQ`Gm!K@huj-bn zV)#@-U3~|e2{|5$#?*9P`o;#>o{5Z2V%&}MlU{|_hq5ty;~l-57WV8B$Z2wfyI*=E zXhM1;q-=7Axws#3$~RvclYE03C54tKD?7VYj(+%mx}t!?mL1k8>@O*>tBdXk>|QC7 zn}@)Aa}>Xxt~qP_^uc4vO&@%MW+QpyuK4K#41jr!^5hyFrTsm3XIvUG2T0n=UvzLf zXyjvEf&7^Zj&Rzv!$~@`!y|RML z39sOe;VV^+9sIx4tac;^yXBZGXA&)mS3}`Ty z?hv=032RJ>tMvod9KK*W#gu9vXK_wZ0KRiV5_LJe+WMFt>afqb0IO@m$z{LmA_ReJ zV=3>dOot=jkyyl=LEtTaA*VIoh(pSK4@>m+C;TpB)V}2WEere}Y3wcwUaw}9aiW-G z0*Xh*@GbRL@QTEUc5**=a-aO#GmT4n<(ZzA#B-xOpTNc`R_K}FdFg=*6t758azXHe z<1pX&pS;7HvQy}PEWUC0Y1^;pDu&FChtAWlkCwqx5I;mLfn3dswiEGk?F(6=@yf>3wgStqGb5(zO0sCn_g~V_D5yG(CSj|55Lp7ZNi| zV>^)Co**icLL@dR2x`vkQ*jI40^~pwc)52Hf2gy>5%e}Ndz1)`j zR>YdT|Ax|Vq)h9``p#$Wez*Ub_4%Jljf|zUi>cjz!8Ckh84-d6zNIIU2AJ4T{5}!D z(~l=LELc?7j?i~P6VtJ4D~_yCs9Oawi7Lu$v&6BijOUYA(BH(!>9B(#tw0}zW!)6= zDmKk(d?~A?{HLEV`>J=o?PsCcnIT7OW>U^tKnE#*+qo5%2+!7!$U!-i2iv55C;wDGz_&+(5Hru}4^8Lg?kj@n~``O>KDtP3pH0UNHqz$CPVHS2=1&Dnja z`VPyL>COXshI3p|C-z3w3c4ctS11+u+Bm=mP2MGv^_h3Pt|xxzQM>YTVc`&`0CSR> zk&K*njlNc}xGl%$xIBnkU zcwc(w@-G?9wKLSzi%3#aP%-~)xBm>q{B=KX)Xk5G=}Q&4%gn60G#fr}PmU9zEpzFw z>cdtk6!t&8$GH}I!LKHqTLN1O4og8&lFp*tVpfQg48k~M7Vw{NiBCw1gQwZ-Zb*!S zwj!E?F{ieJn$mT%8WHdK?OsW+9l!sC;uT*bH2PNA0zBhzOGo3u+8asB=HN%6BF4CX z-_gzA;m1wPI4b!CD&O%z9^y}r(I+J78_M_vN8f43Ox!Tg_Kc{$f=S(pXBY9zki_Bo zwuhI8QVwh5pvT$Fl3R0Hseoq+%99iyG2*gWDP?V1%+Nh7z273>Yg1w^>hBe))mzF@ z`U^>Y#?ZY=3)rv-(kA9&NXknj28Dt0#zOXp4E??aYv8n6e*vH4jaf+W_%X05>g5Wh zYhzdB4dCtSA{|9@u{q$N-4(`VUhV53bm-{z!vQ@MwzyNrIkayj^e@Y6=MUm~B-j2k zjT{q};vo7?BRAIM)&S0ZlouaxKzoaod+|dK7yN4pB)eEuH=hzxeiqIHIy1pP%Wg>U z#T=xwjRGE1*bbilxBTuF@`+JE8_oO`YCGVc<%UC_Ex{A5QhJo z^z$Fnhn%I2yph$ncjy1kMy4oj$bBkT9VctrO886qGda31+T2na$0=^a%2Pq>peTigq4S z?xw)kPNdTn4e$C!H%TnWGsR*Bi5Y1XY|1xTge6Ec4u-sSaBb>X(zv=|KPJr+(B5|> zdi|kyZfpEAK|@=vVHypme-Vs{+u3^wDQrl!mI#*;7Ik#KZKs?`Usyq12U}g@xkHvD?02H@nqyqqY_e<| z({$1J<$SGHG~z@M`-XbEoWzSdW@@^n{+W@!gWMB>h{((*Mfv6dsyD2id9(Y3EmkE} zF1iWBP1RyorgTvjgx#Jc+FpmiyC@J>4)w47!OH^%2flzHxg`U$4_Tx4v$wtvo=<~C z{FI>#K{1<{=++tSg^GiJfT5?CvS*OAr=OvE#V%Aq5Pfux65Wgwr)VBw&rzlcHv9o- zJ+#Z79c-77DC=cMce-O|0n5ZQatLP9l6J{2;8qR=D7&R;kyl5zX8`^0*r^Cqu%)2y zKuG?Uc>iaA$N$fJMBT~I!NJr?($38Ozd}Kq9!wDJvsBl%O!wTc2Lcgo%bZ9rQ-X8| zY|m4xNH^n}sbi4;)?Eed@3$4b;(qp0$RHRw=MJa&akhPTTW42KCn%*cT|Ar^nHR$_ z!!$#}kP5~E=zNH)>65B7ES%cR67Vht24~yQ<|DtJYS#I+E&ZT>6%j0OGL_)vZ*%YP z-Ar81WECzfN6KxoMYJma?3;RZX0v#u847yUsfK3W{dF-a`-eongVEAZXmdxOCgtum zWMDITQK7_wQ5(*BSed<0k(HjVsG~(!R_foUnT|<^*gr)%BJAB~= z;hjTd<~wNEJ8aR)U%pC31j3O4Ln4V1#26`3#HlHz9vpiFeFnrSe#qpE0h|8~H=tY~ z>7Xn2xPOw41yWzJ`bLa7zSMJrH>g9-DE zBp@S7Glc5ZFAJmLFCmI*;6r~D8fo^as$;rdS!-|Uy4wEHci&Qd&2!$#N;DB#yRqlr z`8pxF*>d0MI?45$?z)lj*-IPA1rH#)b4ApjsAYTsLiS99W$WL7^x5Cmh5F<`0DX9M z?TRO4UD`6}T4s;b+Be10HqM-&bgzpibY0d2(mKxO<xreH68)$y>yBx@!qd??$PsA@;|Gr&%F9S4v^V>8Y2ZpblA^qc8kC&TQ zyWk$H+Z7%M4t;T0LjBL)9fp@Ie2%EFo}<8epPaEBwpZ?lPu--R6T_7Ecyj-|Yl8H5 z;Us^P+jw4vl&`S~{=K~UR(|hS{TF@cjv2U5PUP3nw69oy%e&gsPvBS&<4X&Edc4d? znt$2e&fJlA@K-#PoQTcsT`(rX!570TKlCdB{5O*AYXgk+9Wv=l#K4d3g`UM1Q4f3< z&?nPZVV*<nnnVt{TW3= zDsHks7P1(r=Q37+*~Y>pQ_Z7%=)DJ~xQiZI7@;+UkBr=PHa~*o%j*z&dJ+l{^+$`t z5=aY7#Uh0S6b^z}i&Du_3Cl$}wZjQMMHeix$IuPHGX|yNM8cs#DOx8}QCsZxxp0Ok za3@2GB`EGQ2;sXgEScaD#udLg(KZUykobcu|3kj6 zl}JvcEmE|UBN9?&j@va->Dj1VC5uNQvAlqaagnut5KUUPJ|+|B!kH14BV>Fo)12;g zuE;71CTK%yARF?x;$hV$0wZX_ifG!_MN@9IHorTiR72EQj(O;;lw$zRJoDR`EBh*t zey|PSF_&Wp4HKytRlLP5=M3F?P<7Fr zb?l#d$hDTTj&YQ=tRr5<=woSX;H`c*&aY+EJN85@JEozju-2ggo_#gp&12-2Xztml zP*M7u;z;+oOn{7I3(ZHvnI#I3d^mZ6|X=Vl;yav$n5}&eUUg1F+S@c zIpVM5i%z4)Q$j55TSc3a3AS_Z7_AM<_XEAZAs+Kc+z|m~r*|wB56mJ5jTUA7OhfiE zf3vCFGL6!xa>b3&dsv5HOFib$=o1Y5%~Z#Kg*&ed4~DoydOPs{=Dv{VZnFDWDU98wBCLeEgz@a!c_MQfMYau za9*jUWkmbJ0jz8@)l}WOT&`Tk0=wxvt}HFpa5f!C6oWJxe<;EhDP>`!$J1I;QSG8( zYih6W?yfH|wa`77F9E_!hs#;&cwvFrZoV)&4>SCf<7~6?T$*jC_F?V-Vngjt#5i&k z04obz?NoIEHG2Sl!~JyQvPn%AXZlo7_!EM7ykqjahiSn^3N7TbT>qKzZCEf$;U z*v7+h8NI#Eo0sE*5=r>SlX-z3ftJRla_PLrldaIv!?OHt>)FtaSanj6T^O9OzhFj2 zv?{Z#v$OzN*tnIW5!E(Tf3$d-+AATr!)vN)0a{5|3rs9mDx`fK<&~yB#;)4FRUn$9 z7z*;PQ&k$$##?t-{rGcWmj|VCXP`8E;pu9q)>gX1y&6r$^=;iSAkP;dlMl_yrOnHc zR%mi8n6!Va$}5UOVHe?W7L})g@y5j}{IJ36ZKvxzhs3ul* z;4&NAZt|t*W1N_bMr56p5v#KrYr*XM-)kx$?W(*r;w8vNMGh486RXP7h?YXI#L>S8 z274`|n10-{d>X8W>x`C#MI>BX+J4V66w(sS634#$L!lq{I|7ZBb!3~ov6eXzhJ{4*_v0-cOdUBN zZbG3w;;kx=7$BMgMsH{tHyT%`Jj%MpVT^EV?~h}s=a|-WvAm@oHet9Y0xdX=^ou$N z0<4sd{Wxm#8m;)vm;8Q~*$o*P;3^$2UZu&b-!hnl{x|*7Y zmYxYoSvpm~9YPN-pRkGqPFvU5mOwN>axzue;-0%yNEX&tvl=pusdIF$Kf>0pQE|~3 zO?kj`wpL+j@-~&$`<=2J#toD~4wV@^w?yF8Zv+M#D3o9wsx2)}N|<|`YC*apl5Tlh z$aVoMJuTrZf0q}kwjw0PY+9>|ky-)NiQA#ismmxlL_RSi3wjOMfV4G#s%u0bShUp& z7Anik=s+{Kj<{KEmOioiB~!*4&sDC7LGT5K{%+&A%{ zloVHOe-TK|aE!$}r)(_OPK zOrM_ru*AO8OeZ$lw5hJNwQy7ess!zKGG)qXo;N+5XF|gtW_qu)yYxjsj-X(BIY=67 z3r}U6)@uT#(}3+63a#}-Y^4QeUcy_IXYi+N+K!ECMWms6){;6#mHxGzr_?&8ZB2xxPa^JSS< zchSkBts0ALO>FGVECr^&%T8#c8HGW{P$8p3lPuUPm#knKb zF*cJrhK0CxP>OQoPz=a$MwC`)+AE*nLYeJ*T}EPv=yB0#t)^YpL3zR37tfo`)}IVg zqefNeg*|thLJyE&+Eqscz?jRh<+(d6S7Z1t55$nQ<$U5#~()VTC<@>pw-sTAZ`IM)EuMge=9Tj=EC zg}3iMWdvCVTAg0rjr!#A4((Mk;1q530uG=QxU|%E!>s&9JvNv13m4DIv4NE0 zpGus%rsFfidKav%WLrzf>~pG&ybQLd2G1x5+=3%J0}z52skTOOI)v$;Milef4DT4| zdeS0$1>6#`v8(RyGa->(HgZj6oU~zgv$nCEHMo$u%tSQLtVFyDK*pk@oE=9&L3{o1 zSh8`X8AwT8EHsW;5umoVkoV7@Nm^Yl%A+eT%EQax_8d*{1w0dQWk`xRCZ-NNJB28J zo0bE3|7X;ALMxG$;7$@qS8m-?DozQ&=40jgGMkjFa;(dA!|^bBQ{V`Q-^wkjIT2jt z*N&+KZ+27pB9t%j)p}(nC4^uJ)y6Y9%~D6*QTk>_0nIe+AEJtWPw4pLe>sd)CxTF7 zM(WMi^pP1kc$760441ymbz9O4^fbch@!5Azk@QVfJn( z4m?p;PsZx+Vv?iZIcx;K!V7LVI@_mtG4ChsY^-bIWUES;t0zq+354q4{<>@XjL@4S ztzlX~ijEO2;OKhNIzrBY#L#w|*REcAJ)!7c*EtG1H%y&t22bH=CQZqejF>GOHL5L} z6-Cw7tx0)xMCF(@F05g*aVLFS0ynO4vT>*7m^a>6xPts?{x*=aW9=9j=`dY-EK~yj-CDi?h(FVhd0{9gTk$g=`;j10w;_CP2oR2s_BPr8Tb7dCxMk zs>+_WMQ#FY-1s}d7V=3ihnts4b+Uks9X4(h9TP}j#?b_W{IgL>qtpEYdfEiiqIav1 zcSZ@z!x9HZObHTqG3!WQO+)cN<=>^>0YzYVf8iy&#pb4Jv^Z-jBY$A+Q)s`__|*^L zKSdGsrOG(Ps7msj)zPPb1V8ux*gTEH;`gnT=12CcB?_f2SyTvpdgS~8CdMSGvWAp{ zM}$@Zn6E3Lq80YCIZI&+HiYtGNW=hvx~L>$e2nc)#lCbE{`YfFW--f18AkD+G-t`j8CDI!dZ5L5PAGqMYxEWNiG}W+ac*6GjP@Au-tl zbAbu}np2l0gpI9D9AzS5sp58r|G1)$SNoq(xx}pd_W#C*mhz?(MDZK_O{D#l$k{xZ zVkmsPc8UD-oA%yRP$xep-o(}opqrs5zgzc$9i z&)|C2X;1s&_R2m{Yzk4UG!Zq{W_TU^XqLH_>CB(&pl&SUIO;4S?HZ)P`@S|^HqAM< zji&bP4~82IyjwlOs@hK}A2w^>$TU`z0*;_FLwEcQCqnPh(9MJ9Uqj2z*#q@<0S@wd z_>x{Whp^jL#I~fx63{s)OKNE%I=E1r^;Il6_<_pu}sh@A~CsVU{BcC`-G4O zpTVph5rzyf_xu6#ualMxhHijh;ZHCLm#}b&2dSQVc|Y1(63S*=8fhENaXrB~H*?Gi z()Q3WRq(~%rp+{I7GiC@ct6%Jb&Y&pL2}Xy)bj^yQTh~w5gLyiV)C6rCYz5WJb%-Q z8(O5GyKrLJB9=V5YvT)nl+i%f)lP(#AK+wGp7uhj5=GTZ{58#|MI`&e1RfchOouNF zAUEUE#y1@)`XB@+`V!}q3)Fo(hZ#@QV`&|7Jhjt~MC-$G_NAh(EqTWmZaFjE<%s;7 zYt9y7Q5zp?<`I*tKT_eGN?mY-*Rh4XhJI$JTy-kVHf>ba$e}ftE{=gGsvALBZEMaJ zKO_*Bo=R(-1GMIeC#DNAhNz8=*&P6OhtYhnmG1hW{@4BPVZ*wwUQSvuy*x_~MutOM* z|ED6YthaiFy^i4?hHQ$IFieK5WgRhYGUs-7%%h;-wCt2?t4W5r(V(@w%0!;VfR&kR zz>d=dhZhgYSihjz+if-*seFR{Nf#vaOP@LoyJ0z%B56=A!59m-$({D9Q2DQm{PGxf zSXGN@un02Sn6m8}O~SZZ&02%({x*DL6?(DGFG+9pInz3xsbkm|A?;kbJ>4psiXj1jqm(yAFUutlgj7~p^n2lEJ_L`a+z3FRJA=sA~C$~p&rt>E<5IP%eJlS}2NoIgY zo+9(Fcc9vOqxJTzZ4J4$CDD&-of$2wK1|0a?^v0B$WhUG(=)wWNYfFO65_ApERY}V zMKM3Z5%?cwg~Lj16j-0_=6#fy9_*)WC;jpmN&WyT&)cIxP)~C8*Ll*i*M~gP(g^X3 zj})_XF`p$ZotP7!e&>$E%Alz%@}d=+3Da^VOGkEPuE(sugZdTF(vy7Z)791;rQCrE z*9flNayECubj-=rHXqeeCbnfD9n+seTBWF=%n(c0B`rr7p(JZ#SXM@>0tXdbvv9H) zF)g&CvVM4>yLsO1Un>cTtT|P8LcZ?z>Ytlwo&Th7C~m9gt2EjKHh0PyMYEaTL2_c} z>?^<#LOF5BELIgYp45lw*iQhCWScuRw~Z#Wk8IiUWQj;m2^I5D46sAy@ewxe-1ax{ zT-uU!26bCkk^m;DQy;7QAYPr?HI1enog=Bw zUMZ~UEsM=HQKUI;<8d$x2@F56FATt^_KadesEasD~+d z1UyL37hoi;wpJ`xaH%ZIORP17j^$3!D$sgUdQz0KJiPG)T=OiG5UBBAS=l_BvkPk_ zv;-7?`2_24CEJ1*FQ~NnX!Gii8V_}h@7OuID1c(ResNX46!4qLY~E*QzisodrEu&G zCUnayPO-G%UOQ?1r8O5MUV{L}$_p~u-INKyzIs(w1vzs?UNgq6={%d)2A?4_`-T<<)s&u= zHPu5rlCv)3c|HXerJIA&U6r zLtG}Wa#B$CK~?F$1v{T;x=f?JoE4^OA6_&_XDTwQ1NgM)C^=2sOGO8%s;ngL#;T8S zpkqqKhmfnfjVCB9{ww$LaL#}4JuB&@-9Ig8V%v5cot2*^qM+!K94hf^{drAp@-*gs zz@=0!ijg~&L8J)$I_k2znN{0!5xbnU%$^xC_;e5|i-RuC?tf$)b9oAiH9;rE9Y zc;mUNMr<0w4=TTX4_=z01PxhX8d;YQDwZdkT=grY2|Uo1D9L!r)Q}!`O;E_%;r>09 z&sVs1l4f8}#ip}1)vT9s6>~nxl?U^?S!t{4N*~RK4Ii(zQvYkuZRWBGtemZMX%QML zG`y^-tT-!3g`zN}i``ffQFn)WkT6I)zv6qt7u}g`?(;={|7Ckfa z;}9%?V68;KBTyaFLj-E+b|-Ki#YY(V+FGyNjnK64Ukhyh`&$wjByP?Vfw=)kP-tf`emm|-zQI1BH7vc={IEt6!v=fE{?Ds3TDRdgNv32qCikX;(Zg8$* z2|`$AJf^9zjg!^5R%xY|6IUu5DE}%p`c=ZwGh)@+G?eDaTPvCpQLQ>vJ=UPHw!aAV zCu$psYu#mMlg5X8r21dU3zHuDXW0Dm?VrrJ%tO%a^;FI&Rd`z9dBv9>dO5LwR;ID? z0YvOi;=dm(xiF;uasi3j-N?q z2S^Sf(b`69>nvRpuZL_jYXMLNATQJQTC+3Kt1x5;W>8J}xBNGhH<*grF!0o_?y%6o z-0A5A{PQ-@2$;IowpQd6kV_}ZR_$bDgCqd{r%=+t)CTa$T3gb>gJf$^sqVus| z@RB#c|cV}wI0Bq^gVE9p4G)bgR)Pr5K6y@dOSR9U=wGGxzi2(<+>*h97Q%SuC zkfbD-O4Nt~w_FonAiff^$~FUCnAAur)Cnnma6e}}mjM)Cfz|w}=`5ODO)j0uZ|()U zab&78o6-DV)mj|fK9rr@7-IsTZ|JzU*Xoc8`FQcz>iF}QIW@INr8AQ2>`8iu_|ibT zc+OhQjX;+)>uFc1;+7>m5!yJqS069Q_ez>@?M*t>}gtO4#+Cb#%+&A0+7T*DeJ6 zbd1y8r~vhqn2E}KsmiE|usN&E~Drr2REU0UOeclN8V8gU_FkFvj=RRG1UzH!F^)#iIb0B=G{9rAHB5aC$~c-tD1wnq3fc!>B#x^ zXyz?~iceK;mS%K&O9Pv${8o0R)IwOeL;-t@G>GxM6}xgQ(1_|}Z+NyXdi^*uxc z)E2$VNv#=X#oN&JJ=yh#(z73Sht5{5fqLZ|&XWB+1xN9TddM%n>Z=DA*|IWgZeHEA zI~FwUl}5mAI|5Z)kjVBA9rXr?2b6m37?d{bNt9-68m|Y132DqMI_!sK@oJg&mot=n z>ECpkE@P$A5yOv#Y6ya3CDQ41o{MSnX`o&-G+PkZ8{f2(IuBS8w`7~}?R)7K0Rk;M z*oUq1a{c&~BZY|7Co!8^5ZG%_f=yV>Tf#$7(7=&=#LIxdTL5J+rXj~WKJ_l51D4MZ z@xC$!knVu7TX>mp0t1A1@O$iF)C`2B$q>^?s7D$=rY4qJ9iIc&1uSO6rvobhe5Il9 zQcR~KZGgxPwL{bKmdg#c13i8Jz&3*5uOsPCR;#Hm{uhmPFfj4YG;9wfCI>X8TZ2|K z)e9*%4H&Q$Qmj@;?A5T#4!jK%Y)wz`U%oj2bN{oBYoCEy%Xf zdwop~=1!{?QDphv_7%=VNp%$fBH52aNPwL6tdBA1NEz|!fS~=mzsVU@hPwr@!0}-; zfIiE1iRz)Rq0|7)#AQI3&<5?4+zL5`h_DSx#$8_I0!VgJn2y755yS>tIkN@z#zX_3 zsOSL;bLpL}X0V}_r7v2Obb}Kh|Dg@82bUt)j0M9m32y*IGA--Hg0p94G@&t&jf(kM z$cjqih8RXfY+)FbA8HBQ)muRs38)#~dH26s45J7daKjP=F*2E9G&=Iv6jmz;%MPQv zc4-AE`jo}GPs((14ytEwd|RzeD9HA^J*Yz^;;w%hPpo!8s<-Bj$?Sokj!@m$+kO3q z!4Z=F_!GAsy->c-aPaubfg_GH=;g#>$$}}q+JW>h8|N>;hWK7D<6y@X14hdPf z2OmcP7`YrYek>%bCGTpVlvS0mAaRm6*(;`K9EdhNq#1>v8zWl1bbhifBzk&mjG=lj z>7>|k9cx{LE(Ap*ur6B{471UC55`Rx2C>G)vkup34J_H8=n=6YTnB#>7Kf9PqsoQC z11Wawf{58;k|oiJ6S~a?lTTifj|60G!|?oFN#)CO!+my)D^vzr(bJmWu zV-uQUf2sr4bqje6t^xFtigp8%8DbX8YZJ0@UfYu!F8Ar@;g!Z%7%@76qCKRG~gS!mk=%QKmYjfh^H0uXt*5-2M!gPRohiUeqiog$z!jS!THv;<=?Gw?DGa(|4Z~wibd|^X zl^=W7g+Lin%>s0D$U*N^BT@bu-n7>^urWTM$%8ChQmh5tSW zZyt!Wn29b;O);{E%4Ug$Ea+Epl(^$X%wfF^G`JP~JvEUZkS6TU2Of4;0F#FTDWW(3-0u zY2GnwjM6nj0cVvWZGXe`0A^Z4ps_i2{ZX>2pQBTXSxI+0wtF-Z5HBBy%ZEqoV;01r zAEo;&N3)&vv8;N$eF>qSp)YbEA*@vXOY%OU7=rir1NREBYf{hA5Wd8`(>lWYbPt>| zhwF7e`A|-p)V)U>*5QypYFK$^m<|=7v}_*vh`k|8J*elJr)ON-5iqVp)7sesTZ~Rc z=>Vl<^hvM^phF*NU32HiAy(2)WFn}~%nQeH=d;>8N4wnv5B>h^(djkTRr8*`&lYqvj4sJtY10^U}Rvr;V9tniMFif`yO!qe{GY-us?Y6B|3UmPZ zTCNL@ECqj{2Nx+UwgQW-WC$rxqOX?%JR~%vyFY}k-(8g43{Lr_y*s>#cAz9$K;_%!F?klRY(qpkNOH^z;AUE zffj2@E7%sVu5)qiz~B#<8s(sLURcUSe(M93hGZ5|6qvT5Dz^@6%5F-6+d|y)!KM61#DTgvC?%gMDn=CizDSyAC;$0E}5dpiJ-=Pdp%MK?jn4_zE(@$>bKv zd@rBrZUG&;LEq1v)wEOY=`h91Uv5lM zw`4wVtlj7eh_si0r)noX0 zSWV0f=I!Ys)a=B{Oz!)3;P$PJT_FQrmof>)oK{e(Tj3)r`y7Pnqo^bDGFMAL21-~m45anca`c$9*^ zI)A{XVB&ZT|J-tv&@$HxRb;hfwx_(BNko*us1_o{el$073t_aGA`{Y6NHCV@O(N2i zRd|qv+x#N)81~jT!KA{K!+zmwt^a6s% zk0rQQbQlhIv>#|gBQ3(I6P_f{MwkuLihs5@_WE8IzZ4e9X(V^1z@Kp7tDyn$y#r0b zTdnB$8DEq-oc8#t_V`;rLLbbSyUrZ8ZPe`9cCNT)X-(`+VDRc( zw}*eb<2^W8u1ES!mdH`nvC|CXR@d3;QGz|Qa*$=KAf4kxE%FZUTCR2@&?wO`yd9?px3Ye3#|_6HaO5Dj`o+T2g`kxXWR4p= z0CX$-4Qi;51-xIgy#+{S?im}RlmgLnqs>AabCX;85<)E1VDRZk8V3Y76T=z@BV_9u zY3A@?Oi8|kiPGFHD6KZmZvu3)`UrgZ&IkNWEZZ*jga=Pr#yfpGaG|>e@#1vISS&OlnIK5Fb_lwgIySsVvCbg zMTH|-h4VQ+b;V@=%IJZP}%PF z?c4&n(Lw6P-8C7Er8)`Q_ed-7o-9pIlDzYXry?-t1NDzFDBW%26V=gplg-TY5D3_dom^K-h=xHgoJ^%=Hu`K28<*ttinFDcL!h_kQ3ky+o1W{ zA>y1d`orTLtH&w>!Js>}oJ2Sdt5#q?wCRs_qP7HW+%%%5ZWW=AIQ?P56MNY!IijrB z7oR0HZx?KD&1>H8eWmRRTSLI5qfp$%i4+6n z&MjX+i>y}tV7gBOdQ=~*pyXG#Vf6R84`Z>Z$ zQUt~vhdAR0){e#c9kkBXrT{*);QbA56iP>?Xfbv5INT{>5KgGSt5R4e$PQq_2a3)1 zrmZmK$~7qw5U?M#ZZ~#!5(J5ikp3;alLnt2x%b@!+s`Fja+jNYp{}G{I#9j@3oR)N zh39;w_ZN=e#S{I>(@8)bZ-YQ62o>f`ww2+N%x!}B#GZoxc3@|x&;G;E$K6$G-VfDg zmk)^F`L2gnISgxhtV&GY6(8IczboBAg8d9_Ef09LS8`QZiRx6?o-#l=t0|f&V?$7K z1WW45Q(%PYhro)u%_$!pNEf0^g#&=+MB&&|_>L@m? zF=JdzGlmF7nH#W_)vu#iWyBkrhJ)~qP8H{t8JHLf<^pNEsubxj-10$*^k20wrlP%( zxTn`U9k%73pren&@0G@;?8Cd~f=pN@jFfC+(#7Vg3;+v^9>+H(S1hqIT>(VVFm6oi zt7t9^!L1e@dCI4vuQUQoi22msLGEzC3T4vHKobesL1$)g=V z!$Dhm(G=&n7rAjoYS|#W4DCmP5tL=aC;9gHLcnlD@Y|`+%g#;*%BRfqkyf1r?UNr+ zNfC8I^te!7O%b6>B%n)1k);$l^4#Eu_KZ@-j~2Gph+YO>azx(g{1PVXENdY9Rb)1*F;fhr-XR^b5LHf0R$_D~3g^;d4g-=H!M zFyo47dqIbXLac4G8J)k`K*&ny#9oi~e2}N*<7gF(VYBOnmxc}T;AmV0Z){udUK}So zsY8I=nH4rUg+1cAP1rmII!sUfi~2@9 z`U>#UlHc6_dT6Ic#q;w<(nXG~`*1bRgk z`VROiQi+J>T~&E}Vqgdo|4U@QimhDd-_)nt;wo++0KVnloBIw}Nwn%iU9`kLVy=dI zkNHIcpE}Xb8xaubiNYCv@1nK}>eP=wsLRlTi~Ult!@thU{upsPm&ljPeh%?APE|*4 zC5#7txo}cF7t}aCE3S);=ZMQpk;qO)TN}OQK1Wo0M*YVYsJ&X0lOj*a{SDcBq%7ef zQ*n#5;u4y2-++c4K8$Qn=Gj<_M8jaX6zPABd%`Gm3WJdhycaE>jU;<55E2i(|L%>6 zF)nh{7ZZvG!nThjg5oN5=G7N-AWKJSnt#Bb+&H;1(Tn~s%HAn=THEx&a~-T55gic*U5_B1`JFJbW7nqW#`?a%`N(IS zp*?REU=R-0-g{Q0435?|n_iV|PBr-9>!PuV3FJ=0xX4?`YfRuAsIyc7Z1Ty#{=pR{$qcBW zP)GeTF0AI;qdf{Ub~<#deinO}43erq3`2wr(yHJELwaqJsvz1yXS+^yD7*m~yO%Kj4A-9YU0FBrbugj`&mCHOA}_|v5Z_R!ZOR+sa}*>4{ncTXK~g#` zzR_?9*dKhr(LooEUwplYm~wUYyVM*qUpeN8ts1mJxO4Oy5=&IZ`ovufm!>EFc8PNn zwTPu<$Qz1wy^elDjH|k@rDYZJMEV-#mi?~l)w793R5vx4z1+N8oe?(Gitf7?{KQ+_ zU7k+gb;P|3B_MykL%y5c@#}2>2~+USKJG>`?k-jFdaqz#x^VEUASRoJ^;zoVs2uQH zk0Rg=F?Eb{*zhCvyuW$4>&<>8Mv(ILPHq3&M;YD0)v&=E7CYhqe~wN#x`aqd^siDs{%AFx~^0T|)OfH+2S#snPhs zyE@qphOT~qhc`TfKad$ruj%6Ru%wYnd=lu)B* z2jK2#7GIc%pYG|}6t>C5qrCg6x3cch>%Tpoe|P-cBxQ_$+&zBXr*Q9HC*d3=SoRRI ziLV|W+K0N8d@l6T^kK|iuzJo|RO`w~9K&ifxb?P9c>BRC%r>^n;_BG-6w>u8o|Qve_qMQSGyFQEsagVOnnn@+5mVgRx=fMQs)OUCX-Qqthj}w^1Qjj(2`|7LhZ& zfi$vr)yyctrGQx#&j`OVirvI~FG_S3+^E*2Vdl4yW}{IgYXdc~a8-E^*E-EUo?~M< zXM%}v)&y6pQ3DviYPBco)vcvv=9QCa=2b+`(lsl~;)zC~+M&=su%4r1AyBMi;!{w`EVxv~ z(mh|r@mcsjI@{2wD&G#ISz6QzvE-OEsm|mFWOvaoFP~z{|$TS z_*?j(bp~|-akjM@L8#@qf;O#t^Rr>g^To2AKcGR4U!-A)->6a0jl#^BBfqsd&)J!_`x;e4^{v7_>R+ggx|#!R6N~!oNN_M2GL{f}^ik-jR>A-WeA& zl*oxf{7ewt|IfD^sTt7g+ZeuQ49uAKH2*zU51+-N%%sW**+bdbZ5VdcJb=pY zSmW59xte%YY-QeXzHdhQo_0?z=Wku@y?_bG_%35jbG|tIMcn$~-Cq53>y&n``I+J@ z=DFxp?j`Az*Q@wU?s;<7^_gKd`%$N?ds{2Nd%s=xGxN&j9k8|WLfa+&ck7ksexu9! z#j>mU?~-@+neVlCdH2q%t}n0B($>iMyx=hWsqgss;?@-1>}SG?+9z54&rdeTl8>Wt zk^3o@nCb3eKB-SFlfn;`L$>#`@x6OnmgM6tKvsoswnp`5%1Xs2tz+Vc(qZEZW9r#G zf2u29>~ljes~%^=xGMtxok;)iTOSjvFB6?0C!f#S^~)Xn8WA(gn>Rwg;4<_R5~s&= z3|rm1QDp2VHtBh`!Tz%x6YM*?SZ#N2=+j!{<_Bx!#|Jy`+vfyO{}VEQz&A$W)OVQb z&K3LM;{u5M84r~IWH3tkR55D#8hPYQrr?;dn?Ovmm_RM!4nb709zxnM9YS0( zVM44%#e=3tmGvkAcY7kloVR82Ij&pn9k%iI5_(+4bhe@LzhCFipg#?Av72E}2*u2x zj8G)ec6k6NE*69> zD+8i{nKtUWu{Q3yp*Eq{dJD;uzdhg@37EDm4pix7j4Tfj#O;Q?WL`9}-wUUkYZ0K` zQqNvkYGE#4Z=trVu-94y-%F~%y5 zu!(z(`W>W zSJ&&K>_BFQ*7^+QbVGSKaJO=c#v<+Ts&)bpK0E+1y#csc%!uU2Pqo+Mrbnseqq^-CEYAvjtYl@ z*law96hPJrdZ@37MA{9o2g1n@O3SB*cd{Y293>(da~;iZ4A7d8>%`&)J1xcK#->8&l0`ez|8^m_z+a32A9 z`%9u@h<qO+%5Ss}OFdub+LBpH+azdW*pCPe&;=@OGD;%(-3>Ihhah}Ym;5$ZSm0I?pe2j;vwP8WE zRw^gkG^}qHN^(ea{r%`w{DtU!$P`CZh*ZE~7V`2CVBqSb_r$+<;#N%392wOV_LFOn zd(kPH_wZ}z3Lw7za$|VHAc~=f6F|H?L_-EcdLw<}$`19`RVCD(h!Hz$TB+H7_CkFC znC*E-mGR9M%iLz>y{Qxl(CpFaj#T}O_#E|#{#a)Ozqh?GJ+}SG8}zlk+E%Jf1b7{K z`^k|;G?($!KRMM&pRrBljuPG1={5-*u*NpwTQ>h?&JL4z=oA@;d!}?wa6KB%HvG@U&Lr=Tg3svE6i%MR#( z$YlMN8{QHoT|d&OCH;z8JRn|mAMgs`oU`J5Ka>mZxbJ!vknp;vU~HY-Ye89>L`HkC@7baognby0~5cgaUk&;+)J7Pwh3mho8wpEo|t~z z3Xw@VSPo3K*0`d&K~g`rNnL^$D!haAnp%q>$?>fcweFs>#GQKHsz=c)Sc-fpPe8t7 z`5T>!o%wYmqKib_Tv^p}B#DQ(p)3Cbx0AEAV%+$@b%Co*jwGb zXkV*Nc;LifPU^x*M4)@664|(%EE4THhAMxb#WBbtHA6+)ea&rK9}j^+<_uVc2Smi& zr*RKG^E5_gx@1Mjq$)hIFK&_+ z?Qa~Q>^0(<9H6zlqm-z(f2`!7FG9)R0p8-yt$v6>6@|w%p%rklr6O;vivTvRCzR@r z0MA(+)IWZvz`2yKy9r%Co{lCuDw@K^cB6!HrOioz3H!;F=%}1hkZ4+ZJ;eK5XR^5~ zUqvqt_DFKp#kdCHV6?*F0v;f~eB5qOs}-e~^im7QU6V*~@>HAOr>V|EgvkWoss}1n zDyjzx?}5iL4;56RAuKe4#c`8IWBG8tdAvwWGEjo)B~ZpYR%w6cr>xIQTTxDWdth^d z9Nd(dbBapYz8MeMG1KZxbil8?hq(w7=0?nldUUDDH`!PojziOV{n=}9C%h;{m~p-fcSBwW$ioCrs1~~dXCQlSq?#i%0siv#nPQG( z2WoRe)RP1w-UHnzI&1LFrhctPPMF&!$E?1fSEq%%V4|iMa?d51g)hDm5=n1TZM(@3 z!sf#q3}8^ll2JXNyw*?n)j+#x5K{|2xlAT8Yz@N|GG@T^8bbbZeEV*j*c9@y&%zaG zEnmWsL*WYoS&qI%hJ^E2x$Mx)_~zL)y3(Z|!GQ#->TneMqYr1Dn{0X;e{)o>KPh_k zp=&h-FSFz3wANuKB}h+NcS#5AcKm5_CbS2~*C^P)j0eJy_4F@b+$ckKA< z!QWx{6P3bp{X#qC_;Ce%;`Uux(TTf@1BTK-d@Lz$JuvTUP5OUWBEk_N3ep=-nxNml_Y){@q5RDny@pzQymXyQ`y-#%h&9Vd82IRt$DD0I?ZF4@Nj)FU$OID? zN@z?kv|<%Uxzaju)toI2^{lu{LO%6$i03-k9F1J>Dk4YXy+v}msKjbU>5;cFQroBm zQ`}%Ylujjglq!;W8AXpq7eU8Ov^hDtE7cyA+()n-NKv7FCWP*p)o{(EpVgW6F(4D^ zc`-=dxH5QiQIx5#4Lfg<+^)cxnx-FsTwnEDsgix#PzS+O-Ev3!47X*y4Y8`JDkP*5 zZyU{$z{|W+tuH$W*f`BUM;dbLES#W63pJo@nS}}v=$KS%7ev{rYzjg3=pU0pVB-SQ zOh8*ixpUp?cJrs*AUa17`oO3X5vn=4Yp%gjYOYUp%Vw|Cwtif;`fC)7$WdH@&U$Rr z{zf>~hLAZ;5No~x!@Z~@Z)N=>zXfl!(i3&9@)y-E)=dP;82<4f<4$rJo2!I>+IMQf z!(6>fpK#e%7N6FL1GY!G5OC=xP*1l}7v#H{jU2iLf^e{e`@4B>h6b`Gc%J1qSf9dE zgj@Fe}i@Dq~sm|q&#RO=lI z*4b$7=w?D&HHh?k7KZSj7`#G%Dtj^H$BvEn;5)KI6{Z5dfZ{d1m=0*K-TH8Y+}}Ql z{=N59&0Z?V$XClDkN;=ysV^=lz|qdY2;fNee_sF9swPTF#&+%pvUhw6Hq=}Kx|Eg~ zwG0i0lEo!4Lt-qA=mGNlE0FF)HCm^V0Dba}1QFxwme#jV@W5|3_M+ofc|Y@nOUVVN zB3(B?{5&V)=s~QkU|2o znx<437wWe76i)usiQP)hpcw@Qz{O@0Ej@>0m$=^L%G@iFzD42mW>p~0{G|N}7V({d z6j}kR#UFymTG;6(7Zua=bjpL0X9r1j0|hMoPQ7LXs_*D-_hy2DSk3#^m@!hO7P^mJ zt-NIv^=OG(F+&=_?g15knVpL|gHr~Y)l=A9bpW}C3+LC>n_mrmjD~s4nsf}Odd!>j z{C=AP&6!#9(@5iwR_bu)4!dE)U%^&0wOOc)$v{qH-}^nHnQZl9y*IQsm))5Z7n;qq z@aA=88iu&muhJjqb<37hlR>EXVr)>~|9}n2@nH7Wes!S|{UXxv{9{Y9|D%QfOBSLw z&ei}211DRDe+eX0Sx4@Rw#Cod?(|yQATcHmf&x*iQ=^3;lz$WSW40g(t(qfECzxKf-BoPKwj5s2^%|V$9W1tcnsl@u9zOZ4@6}5`2lERt>+Q> z-FsV;9wkFvCU=KW#Nw3|>7dBal_y0z^hywauo`{4_GNayiK2~O(rF=2$q43bfZ~31#dhgY1cG=& zAf95aROwqBxT7d#Bqt7Rp~L&Khh=K?0b$w{?ob|%;`i_+uB6OI5#C(e_7HTbD>v(I zY7T2^kt)4kqKBv0L*daV=uVN}^Y;WWohwGo5g-tduvI_A@q+(sl^bJ6G_B@dq+q2s z9kF14P9ld1k5XH26|Fh$Ml896bXCoV8eH1`NXh4nD_G0&4=0%&j;)+aJi?|B3P`Gdf*1i#-Gm_!ZYE_nNWje*-bDf3zL!fH~0`4UwlY49@-vwE7hVum}E5Jyd9O=*t`Hgj32B zeg0i>Kbf;A_va){#5v!RtfaP3jz3G|MRz-Yn@>&#gQ;(bX@Zhzic(=m35-Y8$VXOi zFkQU>mdi%e2gY3!Ccr0@qLTO*8mq(y=)doe!__ZyRB+$EnPUCF8hHKBLim^H3)MX3 zwHI(c30zimlB7e^p{#z?_5K{bT^<M)EegxcWuq&S`M{7aQcc zYwOXw`-=C-=Q_K26GT4h&ZeT*n)`a!WyMR0!-7}%`cG8SapZqMDd*SAsE zJrv}r(=rwIx-mRtUFY5t1O@nvMMG+@MUL68aaZPu898j1^_r4tjp4N)h$7+pP88k7 zME6R0Fs|fq-+(r>PBm!%d>x6;e>UJ)=c{|_EhO8W5|PYAlAc`Hx5wb6_aJDOyBMWr zCtT&OV#9qhU4|n#J17?3g{9avqVei6%tGCmA?g5so z%|m2HT|1|a8ubFsOyp0^DgksEvp+OELLgYu=CXsOMC*#qPoVW=l@NQ`34Wrk^6z!k z?n)b10?$4(^Zb{I@BHXnH2So9D-8P8G55&EK1vcxny6qKnoiBD1d9dMe{yhb)bhVS zTgk5Oy?<{r5q%zHm)?n{E(l+pi$9#KyIqM+=O-m!ZlEHK-@ubR<_9&b{*go&@1L(} zYZiKiHWSfjZTWh%P;h;+?)&PSICiIk|JDL&15QzxreUcam6)Xe#_# z`hXKLy5#VFWFdIV--hLbLAK6fKVPV)=qc%V2TCI7 zm$4*8xqf+hyac{bZf2=%MHMaWC}42{{qc;yL0(zJ!XQjLFG_MOO_9j)QeS{38)i)s zTae)m(65(Cgal_R^B99F!WevL40kXSI0b-|(0zg(eOAB}@{nIyfkC0vw-yqy_;@nzmlry&NX zaERU&HbFhlYaDXx2MOlm$)A>Lt-F&jJ9Q}m@^83utQZ}LZD#Jid;;od(D;0AH80y~ z7AIgyEj_1Ec%0yLVpMKm#Sm#OkCt6z`Q89@g+sVOF9rG{Q6w||E{Dsz$|~IhOT2mi z+)epuiHAf1u}v&xXS7h9wJZxicEyasel-p(GSCRt5anK+NEoZ@yI6QQ1#`NYIjUHEK5QjBHzeY#31RleKO&ExaV|`s8_W|>1LZ@K_LB$#*&N|=} zS%KGclh-pl#MSosd^p=D%@eav-nLGL3i8hoG(nYX)(pjK!YZReQhk1kPQjA_ZiuVB zBUl@d1E1eW#gc0)o!Pjl2`BE0s?C&9Jvh>sXeM1Q(!vNsxUcsT%H?WC1%9O5>_&2m zAqt21r`tIcG3}$=nRKcKc7voNI9b>SIC42a?u<1@{?v;$j-T1!3=Aw6n53LlFWD|^ zxNW2HI&@CuCfeHSZ`!@X+qq)=ga(F*S7Y0f?w|Ul=Mj%^bggy<$;`8!aZpOE{I*Y1 zXz>7Vps|Acd$ODFU`DvzEse1ZoK?o03Y8=DI{E_gB4nfz6KVQtZ5rnmd&eyAO7#$A z(sY#9sDH=wQUU+bZFb@swk@;gqV2<%CEmo)bJW&wMB~O~vSZpF#Y&%HR0tIQ_Y7sLalXhN%yb`U-ynN zhfe1gaM1$~!2^rJoIocF%aS;(Kq?M8W=CHoU53`5@ZBJ*nlGdS#@N*Zf6p$fk_#$i zXkmY(6g%LRsv~QCl$ol3_;J5+SVhHQrgZ;YLHjUuXyt9ve!LpDpPUdWo!RHNI_-P$ zA7{kD4;Z@hdo|@~qdyJOld}yd+O}&nL+mcq-l$`p4|D3;2GCiiTc?d`Swg+gxBE^8 zQQrFzF^mL2#j55)Y1)KYD{Ub^YNV65E>Of7k>*+6W&@PVA25jd@UDF^?GkD2wV028 z;2-0^A?b4x4n(&AEXNJ@H1HK6^q;?Xh?CpuUj^ z42%UYxyAl9845070QCJLgXzHsxDC#K0h&3TTxgi4U~lVkOxIqI~lzced$ z1fCg8K{sU;jYdiU1^sUJEKzFQnAI-vsFEOOzd%O8!+8puhZOjffNp8G!dQX|$9I%I2cug9g1+>3xTP7(d1#B1=ekySkj_x6#zN`C9Wy3OmzMVF(Rm zv$SC;n2Ca3P09c6zSVlO-CsRo z+rEPD5rqDmy+72Q;{7ShnzzD|hm#qM0yi7EY#C(7e=s(^FB3E^fVdTj4XdRIe^-Hh z*{}BNdwPjt5=3!#A4f2NwRuXq9A6eLd2WClV#5p;mjYLVTUEyO1YC+&LzuzxMh%_y zF}a?&!VNEZX}P@PfjPnbf;x&k0ZswDoeIdO;161hPHu=Z`jfhB000@+C`o`Br$T|s z-8Mos08wG7(~@eE_~(hH4S^A&a=P0zxQo>BSgk<#>Q63_$aC!p*^?U&jH+%Z_}Q^- zD6QEfZki)GW~eipIlt5(q;hzaIz5L`ehX}49%hswo~9_64KnX+=(IuViUEp2x@aI_ zIW~Bt{I?a<*>UKmA{62^^cHwrq`dt@xz;Zlr_BrL+E>mYz$}+iQ%R$vP*Ju!5H(*6 zPla82acMMpn>9Kg1zlAI_b%wLV@z+*{WWY9bIv-y2@SKZJaraX#||2!H4o1{4=NcN zVK5JCOq2*TkLXM^G+Pm@MeKN)nq-+i&kW1{90g{bE*QT2O>#dey=|gks<1!KX4I(Z z-kvN%r`x&2h8;;|C=zX+-gMBwID&W1?W$&<7nw!&m*4vn&6cFb>ja59-(Zd?#;m<< zUpB{yHL}A%KiMED6>3Z&MCbCXY9y1Kqwea+NdY^LDS0~S8&L!DF-5+& z5_AV7sN_DUfs*U03 z;#!8;}rqg5kR{jXQUT0^IP%;fhnf7l4k05=~9?oQi=`R6sK;$v@cZl6aU*TQj4OO zu;*urs-Y$Qd82ArCA)M5KDl&7KVJ&jLp5GnmmlqlCl`(3cU|dBxRq+K54eAiwYLjv zMQOi$h_SCj=Rf1AWo?ZC%I8S8aM5`Y(-9#l9?Xv*ppGxP+zIHjM;Qe#*>di;fNq*BKU7hYfu>sp*z(t%}$3s##N`eA1qE-``_ZGJ~xq zc-Tk$9imH~z_PhO%DMLVoE@_EmK*_!k7w=z@RGvB%!e;FZnFADZEugA8P zd1qsa?Fxw#;YxoKY~&p~sEbcnbV(Yo|EwA2&o|0KdOPDVn9|$vbxP%YE?GS3KxE$Y zw5#)oSabH}OXB2&RJz1i1!k{miVj?v=iZYmH@k4$n)_Qa5P>sH7}Kf1a%7s!HZ2m|grIIn4eVtwf(Zmc`G(3`?$mf*Iezq||IkzJKm z=HoU>D+VXjk|=~YWObGKsn03dWJ0@B{mw~#x}1S})Inh(dlnDOjmju3v8@-%JrOQ$ z3$P3n@YoEO5qI$B%b5>OqcZ@n$^5P3?teV$u*R`N^FNdq-q~M@wxM6fnf?Z#Joxn zQPjrs0&(axeyTT+hBS?Bw)h*AC!nQK)ek%%uu&FdFLTrw;FdfcLwoN~_2-@}GedqP zEuo|x#RO}T2~m8RoLau1lmkG8sj?lCet-fp64f-Wd5zB|7B5_7KozPcvQMp{`0M>=!Zm6BINjRo;Lbuo!goS}G8h?{{tZ z7ZDd9&&An2ZxSQXx@}{dY4%{}^!L-Eeq-qO?@{ zFQ|S~a}wq+n&*=OaLqpr8jtgl{V2oJ+Ck|O{YH)NVl@%Tp_ObyJPq?%= zRj^n76jAGe{Z?(7R9ly0U+npP%PxGW(vs@}PQQUYCI>Hd<5!KzG#dO$@L5FqP7bYc zgeyM^J*?GbW2;lX56}EU03HiIC+LZ~A-Y?Ko2#;Suv2Xu|m!^xgi6v_@p3;znju z%nOm`JcEwm?0E~dk#KY~#=gS&0&oK=(fbJTVI=xDgIcNp#)BH}|Aj;UP=4 zIou$>AWnjg;u^d6AGB{hB3GaOV**{8;ndK+Ca)L#+c)ZeoIpi@3BUpH1zi81zWh;& z|FX%?xHy;@sB_V&wh#)V=LR^remmrbD^r6Dm4}w^S#4C}^L`c2W<#K&{FhBG2+Q0K z<3}Mj3UF~T*-ZZ`x4&C@B>I+CqQ#^@-`m4#j#%K%Fp�^fO8b4J=sdX!dj8^AAzT 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 z%0D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

(D0Dz9#M@pI01x{ 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 diff --git a/resources/embl_mapping.xml b/resources/embl_mapping.xml deleted file mode 100644 index 3b80821..0000000 --- a/resources/embl_mapping.xml +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/schemas/castor-mapping.xsd b/schemas/castor-mapping.xsd deleted file mode 100644 index c33b8a4..0000000 --- a/schemas/castor-mapping.xsd +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The 'bind-xml' element is used for specifying XML specific databinding - properties and behavior for a specific field. 'bind-xml' may only appear - as a child of a 'field' element. - - - - - - - - - - - - - - An optional attribute used for specifying the XML name for the - field associated with the 'bind-xml' element. - - - - - - - - - - - Allows specifying how Castor should automatically determines - the XML name of this field when no name has been specified. - In most cases the XML name is determined by using the field name, - but in some cases the user may want to use the Class name of - the field type. This attribute allows choosing between the - two approaches. If this attribute is not specified, the field - name is used as the XML name. - - - - - - - - - - - - - - - Allows specifying a nested location path for this field, - the value should just be a simplified XPath like value - where names are separated by "/". - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/castor.properties b/src/castor.properties deleted file mode 100644 index 5b17458..0000000 --- a/src/castor.properties +++ /dev/null @@ -1,254 +0,0 @@ -############################################################################### -# Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) -# Copyright (C) $$Year-Rel$$ The Jalview Authors -# -# This file is part of Jalview. -# -# Jalview is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. -# -# Jalview is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with Jalview. If not, see . -# The Jalview Authors are detailed in the 'AUTHORS' file. -############################################################################### -# THE CASTOR PROPERTIES FILE -# This file specifies values for Castor run-time which may be configured -# by the user. -# $Id$ - -# This section defines Backwards compatibility switches. -# -# Hashtable/Map default mapping. -# For backward compatibility with 0.9.5.2 and earlier. -# -#org.exolab.castor.xml.saveMapKeys=false - -# Defines the default XML parser to be used by Castor. -# The parser must implement org.xml.sax.Parser. -# -org.exolab.castor.parser=org.apache.xerces.parsers.SAXParser - -# Defines the (default) XML serializer factory to use by Castor, which must -# implement org.exolab.castor.xml.SerializerFactory; default is -# org.exolab.castor.xml.XercesXMLSerializerFactory -# -# When using Castor XML with JDK 5.0, you may switch to the XercesJDK5XMLSerializerFactory -# which will use the Xerces instance as shipped with the JDK itself; this avoids -# having to download another Xerces instance and installing it. -org.exolab.castor.xml.serializer.factory=org.exolab.castor.xml.XercesXMLSerializerFactory -#org.exolab.castor.xml.serializer.factory=org.exolab.castor.xml.XercesJDK5XMLSerializerFactory - -# Defines the NodeType for use with Java primitive types (int, long, boolean, -# etc). This value is only used by the Introspector. Valid values are either -# "attribute" or "element". By default, all primitives are marshaled as -# attributes. Uncomment the following line to change the NodeType to element. -# -#org.exolab.castor.xml.introspector.primitive.nodetype=element - -# Defines the Naming "style" or conventions to use when creating XML names -# from Java class or field names. -# Valid values are as follows: -# ----------------------------------------------------------------- -# lower (default) | All names are lowercase with hyphens -# | separating words. -# | -# | Example: personInfo = person-info -# ----------------------------------------------------------------- -# mixed | All names are mixed case, with Uppercase -# | character as the first letter of a new word. -# | -# | Example: personInfo = personInfo -# | Example: FooBar = fooBar -# ----------------------------------------------------------------- -# {Any ClassName} | Any Class which implements -# | org.exolab.castor.xml.XMLNaming -# ----------------------------------------------------------------- -# -# By default, all names are treated as the "lower" option. To preserve the -# Java mixed-case conventions, uncomment the following line. -# -#org.exolab.castor.xml.naming=mixed - -############################### -# REGULAR EXPRESSION EVALUATORS -# -# Defines the Regular Expression Evaluator to be used by Castor. -# The evaluator must implement org.exolab.castor.util.RegExpEvaluator. -# -# Uncomment the following to basically suppress Regular expressions evaluation: -#org.exolab.castor.regexp=org.exolab.castor.xml.util.AlwaysTrueRegExpEvaluator -# -# An implementation which uses the Jakarta RegExp library: -#org.exolab.castor.regexp=org.exolab.castor.util.JakartaRegExpEvaluator -# -# An implementation which uses the Jakarta ORO library: -org.exolab.castor.regexp=org.exolab.castor.util.JakartaOroEvaluator - -# True if all documents should be indented on output by default. -# Defaults to false. -# -#org.exolab.castor.indent=true - -# True if xml documents should be validated by the SAX Parser -# Defaults to false. -# -org.exolab.castor.parser.validation=false - -# True for parser to support Namespaces. -# Defaults to false. -# -org.exolab.castor.parser.namespaces=false - -# True if all documents should be validated by the marshaling framework -# Defaults to true. -# -org.exolab.castor.marshalling.validation=true - -# Comma separated list of SAX 2 features that should be enabled for the -# default parser. -# -#org.exolab.castor.sax.features= - -# Comma separated list of SAX 2 features that should be disabled for the -# default parser. -# -#org.exolab.castor.sax.features-to-disable - -# True if debugging output should be generated. -# Defaults to false. -# -org.exolab.castor.debug=false - -# List of collection handlers for Java 1.1 and Java 1.2 run-times: -# -org.exolab.castor.mapping.collections=\ - org.exolab.castor.mapping.loader.J1CollectionHandlers,\ - org.exolab.castor.mapping.loader.J2CollectionHandlers - -# List of persistence factories for the supported database servers: -# -org.exolab.castor.jdo.engines=\ - org.exolab.castor.jdo.drivers.OracleFactory,\ - org.exolab.castor.jdo.drivers.PostgreSQLFactory,\ - org.exolab.castor.jdo.drivers.SybaseFactory,\ - org.exolab.castor.jdo.drivers.SQLServerFactory,\ - org.exolab.castor.jdo.drivers.DB2Factory,\ - org.exolab.castor.jdo.drivers.InformixFactory,\ - org.exolab.castor.jdo.drivers.HsqlFactory,\ - org.exolab.castor.jdo.drivers.InstantDBFactory,\ - org.exolab.castor.jdo.drivers.InterbaseFactory,\ - org.exolab.castor.jdo.drivers.MySQLFactory,\ - org.exolab.castor.jdo.drivers.SapDbFactory,\ - org.exolab.castor.jdo.drivers.GenericFactory,\ - org.exolab.castor.jdo.drivers.DerbyFactory,\ - org.castor.jdo.drivers.PointbaseFactory,\ - org.castor.jdo.drivers.ProgressFactory - -# List of key generator factories: -# -org.exolab.castor.jdo.keyGeneratorFactories=\ - org.exolab.castor.jdo.keygen.MaxKeyGeneratorFactory,\ - org.exolab.castor.jdo.keygen.HighLowKeyGeneratorFactory,\ - org.exolab.castor.jdo.keygen.IdentityKeyGeneratorFactory,\ - org.exolab.castor.jdo.keygen.SequenceKeyGeneratorFactory,\ - org.exolab.castor.jdo.keygen.UUIDKeyGeneratorFactory - -# Collection handlers for the source code generator: -# -org.exolab.castor.builder.type.j2=\ - org.exolab.castor.builder.FieldInfoFactoryJ2 -org.exolab.castor.builder.type.j1=\ - org.exolab.castor.builder.FieldInfoFactory -org.exolab.castor.builder.type.odmg=\ - org.exolab.castor.builder.FieldInfoFactoryODMG30 - -# Configures the default time zone to apply to dates/times fetched from -# database fields (if not already part of the data). Specify same format as -# in java.util.TimeZone.getTimeZone, or the empty string to use the computer's -# local time zone. Please see http://de.wikipedia.org/wiki/Zeitzone for -# detailed information about time zones. -# -org.exolab.castor.jdo.defaultTimeZone= -#org.exolab.castor.jdo.defaultTimeZone=GMT-8:00 - -# List of TxSynchronizeable implementations: -# -#org.exolab.castor.persist.TxSynchronizable= - -# Sets the buffer size in bytes for fetching LOBs (this is dependent upon -# the JDBC driver implementation). The value below == 5k. -# -org.exolab.castor.jdo.lobBufferSize=5120 - -# True if database configuration should be initalization -# when loading it (default: true). -# -#org.exolab.castor.jdo.DatabaseInitializeAtLoad=true - -# True if proxy classes should be used for JDBC connections and -# prepared statements. -# Defaults to true. -# -org.exolab.castor.persist.useProxies=false - -# MappingLoader implementations: -# -org.castor.mapping.loaderFactories=\ - org.castor.mapping.JDOMappingLoaderFactory,\ - org.castor.mapping.XMLMappingLoaderFactory - -# Cache implementations: -# -org.castor.cache.Factories=\ - org.castor.cache.simple.NoCacheFactory,\ - org.castor.cache.simple.TimeLimitedFactory,\ - org.castor.cache.simple.CountLimitedFactory,\ - org.castor.cache.simple.UnlimitedFactory,\ - org.castor.cache.distributed.FKCacheFactory,\ - org.castor.cache.distributed.JcsCacheFactory,\ - org.castor.cache.distributed.JCacheFactory,\ - org.castor.cache.distributed.CoherenceCacheFactory,\ - org.castor.cache.distributed.OsCacheFactory,\ - org.castor.cache.hashbelt.FIFOHashbeltFactory,\ - org.castor.cache.hashbelt.LRUHashbeltFactory,\ - org.castor.cache.distributed.EHCacheFactory,\ - org.castor.cache.distributed.GigaspacesCacheFactory - -# TransactionManagerFactory implementations: -# -org.castor.transactionmanager.Factories=\ - org.castor.transactionmanager.WebSphereTransactionManagerFactory,\ - org.castor.transactionmanager.WebSphere5TransactionManagerFactory,\ - org.castor.transactionmanager.WebSphere51TransactionManagerFactory,\ - org.castor.transactionmanager.LocalTransactionManagerFactory,\ - org.castor.transactionmanager.JNDIENCTransactionManagerFactory,\ - org.castor.transactionmanager.JOTMTransactionManagerFactory - -# Selects whether the TransactionManager should be initialized at registration, -# or lazily when requested for the first time. -# Defaults to false. -# -org.castor.transactionmanager.InitializeAtRegistration=false - -# Instructs Castor JDO to use the JDBC 3.0-specific features to obtain -# the generated value of an identity column. -# Defaults to false. -# -org.castor.jdo.use.jdbc30=false - -# Specifies whether to use ANSI-compliant SQL for MS SQL Server. -# Defaults to false. -# -org.exolab.castor.jdo.sqlserver.ansi-compliant=false - -# Specifyies whether the ClassDescriptorResolver should (automatically) search -# for and consult with package mapping files (.castor.xml) to retrieve class -# descriptor information; on by default. -# Defaults to true. -# -#org.exolab.castor.xml.loadPackageMappings=false diff --git a/src/jalview/binding/Alignment.java b/src/jalview/binding/Alignment.java deleted file mode 100644 index 0116b44..0000000 --- a/src/jalview/binding/Alignment.java +++ /dev/null @@ -1,180 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Alignment. - * - * @version $Revision$ $Date$ - */ -public class Alignment implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _annotation. - */ - private jalview.binding.Annotation _annotation; - - /** - * Field _sequenceSet. - */ - private jalview.binding.SequenceSet _sequenceSet; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Alignment() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'annotation'. - * - * @return the value of field 'Annotation'. - */ - public jalview.binding.Annotation getAnnotation() - { - return this._annotation; - } - - /** - * Returns the value of field 'sequenceSet'. - * - * @return the value of field 'SequenceSet'. - */ - public jalview.binding.SequenceSet getSequenceSet() - { - return this._sequenceSet; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'annotation'. - * - * @param annotation - * the value of field 'annotation'. - */ - public void setAnnotation(final jalview.binding.Annotation annotation) - { - this._annotation = annotation; - } - - /** - * Sets the value of field 'sequenceSet'. - * - * @param sequenceSet - * the value of field 'sequenceSet'. - */ - public void setSequenceSet(final jalview.binding.SequenceSet sequenceSet) - { - this._sequenceSet = sequenceSet; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.Alignment - */ - public static jalview.binding.Alignment unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.Alignment) Unmarshaller - .unmarshal(jalview.binding.Alignment.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/Annotation.java b/src/jalview/binding/Annotation.java deleted file mode 100644 index 2c9414b..0000000 --- a/src/jalview/binding/Annotation.java +++ /dev/null @@ -1,459 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Annotation. - * - * @version $Revision$ $Date$ - */ -public class Annotation implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _graph. - */ - private boolean _graph; - - /** - * keeps track of state for field: _graph - */ - private boolean _has_graph; - - /** - * Field _graphType. - */ - private int _graphType; - - /** - * keeps track of state for field: _graphType - */ - private boolean _has_graphType; - - /** - * Field _annotationElementList. - */ - private java.util.Vector _annotationElementList; - - /** - * Field _label. - */ - private java.lang.String _label; - - /** - * Field _description. - */ - private java.lang.String _description; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Annotation() - { - super(); - this._annotationElementList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vAnnotationElement - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAnnotationElement( - final jalview.binding.AnnotationElement vAnnotationElement) - throws java.lang.IndexOutOfBoundsException - { - this._annotationElementList.addElement(vAnnotationElement); - } - - /** - * - * - * @param index - * @param vAnnotationElement - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAnnotationElement(final int index, - final jalview.binding.AnnotationElement vAnnotationElement) - throws java.lang.IndexOutOfBoundsException - { - this._annotationElementList.add(index, vAnnotationElement); - } - - /** - */ - public void deleteGraph() - { - this._has_graph = false; - } - - /** - */ - public void deleteGraphType() - { - this._has_graphType = false; - } - - /** - * Method enumerateAnnotationElement. - * - * @return an Enumeration over all jalview.binding.AnnotationElement elements - */ - public java.util.Enumeration enumerateAnnotationElement() - { - return this._annotationElementList.elements(); - } - - /** - * Method getAnnotationElement. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.binding.AnnotationElement at the given - * index - */ - public jalview.binding.AnnotationElement getAnnotationElement( - final int index) throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._annotationElementList.size()) - { - throw new IndexOutOfBoundsException( - "getAnnotationElement: Index value '" + index - + "' not in range [0.." - + (this._annotationElementList.size() - 1) + "]"); - } - - return (jalview.binding.AnnotationElement) _annotationElementList - .get(index); - } - - /** - * Method getAnnotationElement.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 jalview.binding.AnnotationElement[] getAnnotationElement() - { - jalview.binding.AnnotationElement[] array = new jalview.binding.AnnotationElement[0]; - return (jalview.binding.AnnotationElement[]) this._annotationElementList - .toArray(array); - } - - /** - * Method getAnnotationElementCount. - * - * @return the size of this collection - */ - public int getAnnotationElementCount() - { - return this._annotationElementList.size(); - } - - /** - * Returns the value of field 'description'. - * - * @return the value of field 'Description'. - */ - public java.lang.String getDescription() - { - return this._description; - } - - /** - * Returns the value of field 'graph'. - * - * @return the value of field 'Graph'. - */ - public boolean getGraph() - { - return this._graph; - } - - /** - * Returns the value of field 'graphType'. - * - * @return the value of field 'GraphType'. - */ - public int getGraphType() - { - return this._graphType; - } - - /** - * Returns the value of field 'label'. - * - * @return the value of field 'Label'. - */ - public java.lang.String getLabel() - { - return this._label; - } - - /** - * Method hasGraph. - * - * @return true if at least one Graph has been added - */ - public boolean hasGraph() - { - return this._has_graph; - } - - /** - * Method hasGraphType. - * - * @return true if at least one GraphType has been added - */ - public boolean hasGraphType() - { - return this._has_graphType; - } - - /** - * Returns the value of field 'graph'. - * - * @return the value of field 'Graph'. - */ - public boolean isGraph() - { - return this._graph; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllAnnotationElement() - { - this._annotationElementList.clear(); - } - - /** - * Method removeAnnotationElement. - * - * @param vAnnotationElement - * @return true if the object was removed from the collection. - */ - public boolean removeAnnotationElement( - final jalview.binding.AnnotationElement vAnnotationElement) - { - boolean removed = _annotationElementList.remove(vAnnotationElement); - return removed; - } - - /** - * Method removeAnnotationElementAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.binding.AnnotationElement removeAnnotationElementAt( - final int index) - { - java.lang.Object obj = this._annotationElementList.remove(index); - return (jalview.binding.AnnotationElement) obj; - } - - /** - * - * - * @param index - * @param vAnnotationElement - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setAnnotationElement(final int index, - final jalview.binding.AnnotationElement vAnnotationElement) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._annotationElementList.size()) - { - throw new IndexOutOfBoundsException( - "setAnnotationElement: Index value '" + index - + "' not in range [0.." - + (this._annotationElementList.size() - 1) + "]"); - } - - this._annotationElementList.set(index, vAnnotationElement); - } - - /** - * - * - * @param vAnnotationElementArray - */ - public void setAnnotationElement( - final jalview.binding.AnnotationElement[] vAnnotationElementArray) - { - // -- copy array - _annotationElementList.clear(); - - for (int i = 0; i < vAnnotationElementArray.length; i++) - { - this._annotationElementList.add(vAnnotationElementArray[i]); - } - } - - /** - * Sets the value of field 'description'. - * - * @param description - * the value of field 'description'. - */ - public void setDescription(final java.lang.String description) - { - this._description = description; - } - - /** - * Sets the value of field 'graph'. - * - * @param graph - * the value of field 'graph'. - */ - public void setGraph(final boolean graph) - { - this._graph = graph; - this._has_graph = true; - } - - /** - * Sets the value of field 'graphType'. - * - * @param graphType - * the value of field 'graphType'. - */ - public void setGraphType(final int graphType) - { - this._graphType = graphType; - this._has_graphType = true; - } - - /** - * Sets the value of field 'label'. - * - * @param label - * the value of field 'label'. - */ - public void setLabel(final java.lang.String label) - { - this._label = label; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.Annotation - */ - public static jalview.binding.Annotation unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.Annotation) Unmarshaller - .unmarshal(jalview.binding.Annotation.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/AnnotationElement.java b/src/jalview/binding/AnnotationElement.java deleted file mode 100644 index 505d91e..0000000 --- a/src/jalview/binding/AnnotationElement.java +++ /dev/null @@ -1,305 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class AnnotationElement. - * - * @version $Revision$ $Date$ - */ -public class AnnotationElement implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _position. - */ - private int _position; - - /** - * keeps track of state for field: _position - */ - private boolean _has_position; - - /** - * Field _displayCharacter. - */ - private java.lang.String _displayCharacter; - - /** - * Field _description. - */ - private java.lang.String _description; - - /** - * Field _secondaryStructure. - */ - private java.lang.String _secondaryStructure; - - /** - * Field _value. - */ - private float _value; - - /** - * keeps track of state for field: _value - */ - private boolean _has_value; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public AnnotationElement() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - */ - public void deletePosition() - { - this._has_position = false; - } - - /** - */ - public void deleteValue() - { - this._has_value = false; - } - - /** - * Returns the value of field 'description'. - * - * @return the value of field 'Description'. - */ - public java.lang.String getDescription() - { - return this._description; - } - - /** - * Returns the value of field 'displayCharacter'. - * - * @return the value of field 'DisplayCharacter'. - */ - public java.lang.String getDisplayCharacter() - { - return this._displayCharacter; - } - - /** - * Returns the value of field 'position'. - * - * @return the value of field 'Position'. - */ - public int getPosition() - { - return this._position; - } - - /** - * Returns the value of field 'secondaryStructure'. - * - * @return the value of field 'SecondaryStructure'. - */ - public java.lang.String getSecondaryStructure() - { - return this._secondaryStructure; - } - - /** - * Returns the value of field 'value'. - * - * @return the value of field 'Value'. - */ - public float getValue() - { - return this._value; - } - - /** - * Method hasPosition. - * - * @return true if at least one Position has been added - */ - public boolean hasPosition() - { - return this._has_position; - } - - /** - * Method hasValue. - * - * @return true if at least one Value has been added - */ - public boolean hasValue() - { - return this._has_value; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'description'. - * - * @param description - * the value of field 'description'. - */ - public void setDescription(final java.lang.String description) - { - this._description = description; - } - - /** - * Sets the value of field 'displayCharacter'. - * - * @param displayCharacter - * the value of field 'displayCharacter' - */ - public void setDisplayCharacter(final java.lang.String displayCharacter) - { - this._displayCharacter = displayCharacter; - } - - /** - * Sets the value of field 'position'. - * - * @param position - * the value of field 'position'. - */ - public void setPosition(final int position) - { - this._position = position; - this._has_position = true; - } - - /** - * Sets the value of field 'secondaryStructure'. - * - * @param secondaryStructure - * the value of field 'secondaryStructure'. - */ - public void setSecondaryStructure( - final java.lang.String secondaryStructure) - { - this._secondaryStructure = secondaryStructure; - } - - /** - * Sets the value of field 'value'. - * - * @param value - * the value of field 'value'. - */ - public void setValue(final float value) - { - this._value = value; - this._has_value = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.AnnotationElement - */ - public static jalview.binding.AnnotationElement unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.AnnotationElement) Unmarshaller - .unmarshal(jalview.binding.AnnotationElement.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/Colour.java b/src/jalview/binding/Colour.java deleted file mode 100644 index f51e9af..0000000 --- a/src/jalview/binding/Colour.java +++ /dev/null @@ -1,707 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Colour. - * - * @version $Revision$ $Date$ - */ -public class Colour implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Single letter residue code for an alignment colour scheme, or feature type - * for a feature colour scheme - */ - private java.lang.String _name; - - /** - * Field _RGB. - */ - private java.lang.String _RGB; - - /** - * Field _minRGB. - */ - private java.lang.String _minRGB; - - /** - * Field _noValueColour. - */ - private jalview.binding.types.NoValueColour _noValueColour = jalview.binding.types.NoValueColour - .valueOf("Min"); - - /** - * Field _threshType. - */ - private jalview.binding.types.ColourThreshTypeType _threshType; - - /** - * Field _threshold. - */ - private float _threshold; - - /** - * keeps track of state for field: _threshold - */ - private boolean _has_threshold; - - /** - * Field _max. - */ - private float _max; - - /** - * keeps track of state for field: _max - */ - private boolean _has_max; - - /** - * Field _min. - */ - private float _min; - - /** - * keeps track of state for field: _min - */ - private boolean _has_min; - - /** - * Field _colourByLabel. - */ - private boolean _colourByLabel; - - /** - * keeps track of state for field: _colourByLabel - */ - private boolean _has_colourByLabel; - - /** - * Field _autoScale. - */ - private boolean _autoScale; - - /** - * keeps track of state for field: _autoScale - */ - private boolean _has_autoScale; - - /** - * name of feature attribute to colour by, or attribute and sub-attribute - */ - private java.util.Vector _attributeNameList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Colour() - { - super(); - setNoValueColour(jalview.binding.types.NoValueColour.valueOf("Min")); - this._attributeNameList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vAttributeName - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAttributeName(final java.lang.String vAttributeName) - throws java.lang.IndexOutOfBoundsException - { - // check for the maximum size - if (this._attributeNameList.size() >= 2) - { - throw new IndexOutOfBoundsException( - "addAttributeName has a maximum of 2"); - } - - this._attributeNameList.addElement(vAttributeName); - } - - /** - * - * - * @param index - * @param vAttributeName - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAttributeName(final int index, - final java.lang.String vAttributeName) - throws java.lang.IndexOutOfBoundsException - { - // check for the maximum size - if (this._attributeNameList.size() >= 2) - { - throw new IndexOutOfBoundsException( - "addAttributeName has a maximum of 2"); - } - - this._attributeNameList.add(index, vAttributeName); - } - - /** - */ - public void deleteAutoScale() - { - this._has_autoScale = false; - } - - /** - */ - public void deleteColourByLabel() - { - this._has_colourByLabel = false; - } - - /** - */ - public void deleteMax() - { - this._has_max = false; - } - - /** - */ - public void deleteMin() - { - this._has_min = false; - } - - /** - */ - public void deleteThreshold() - { - this._has_threshold = false; - } - - /** - * Method enumerateAttributeName. - * - * @return an Enumeration over all java.lang.String elements - */ - public java.util.Enumeration enumerateAttributeName() - { - return this._attributeNameList.elements(); - } - - /** - * Method getAttributeName. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the java.lang.String at the given index - */ - public java.lang.String getAttributeName(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._attributeNameList.size()) - { - throw new IndexOutOfBoundsException("getAttributeName: Index value '" - + index + "' not in range [0.." - + (this._attributeNameList.size() - 1) + "]"); - } - - return (java.lang.String) _attributeNameList.get(index); - } - - /** - * Method getAttributeName.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.String[] getAttributeName() - { - java.lang.String[] array = new java.lang.String[0]; - return (java.lang.String[]) this._attributeNameList.toArray(array); - } - - /** - * Method getAttributeNameCount. - * - * @return the size of this collection - */ - public int getAttributeNameCount() - { - return this._attributeNameList.size(); - } - - /** - * Returns the value of field 'autoScale'. - * - * @return the value of field 'AutoScale'. - */ - public boolean getAutoScale() - { - return this._autoScale; - } - - /** - * Returns the value of field 'colourByLabel'. - * - * @return the value of field 'ColourByLabel'. - */ - public boolean getColourByLabel() - { - return this._colourByLabel; - } - - /** - * Returns the value of field 'max'. - * - * @return the value of field 'Max'. - */ - public float getMax() - { - return this._max; - } - - /** - * Returns the value of field 'min'. - * - * @return the value of field 'Min'. - */ - public float getMin() - { - return this._min; - } - - /** - * Returns the value of field 'minRGB'. - * - * @return the value of field 'MinRGB'. - */ - public java.lang.String getMinRGB() - { - return this._minRGB; - } - - /** - * Returns the value of field 'name'. The field 'name' has the following - * description: Single letter residue code for an alignment colour scheme, or - * feature type for a feature colour scheme - * - * @return the value of field 'Name'. - */ - public java.lang.String getName() - { - return this._name; - } - - /** - * Returns the value of field 'noValueColour'. - * - * @return the value of field 'NoValueColour'. - */ - public jalview.binding.types.NoValueColour getNoValueColour() - { - return this._noValueColour; - } - - /** - * Returns the value of field 'RGB'. - * - * @return the value of field 'RGB'. - */ - public java.lang.String getRGB() - { - return this._RGB; - } - - /** - * Returns the value of field 'threshType'. - * - * @return the value of field 'ThreshType'. - */ - public jalview.binding.types.ColourThreshTypeType getThreshType() - { - return this._threshType; - } - - /** - * Returns the value of field 'threshold'. - * - * @return the value of field 'Threshold'. - */ - public float getThreshold() - { - return this._threshold; - } - - /** - * Method hasAutoScale. - * - * @return true if at least one AutoScale has been added - */ - public boolean hasAutoScale() - { - return this._has_autoScale; - } - - /** - * Method hasColourByLabel. - * - * @return true if at least one ColourByLabel has been added - */ - public boolean hasColourByLabel() - { - return this._has_colourByLabel; - } - - /** - * Method hasMax. - * - * @return true if at least one Max has been added - */ - public boolean hasMax() - { - return this._has_max; - } - - /** - * Method hasMin. - * - * @return true if at least one Min has been added - */ - public boolean hasMin() - { - return this._has_min; - } - - /** - * Method hasThreshold. - * - * @return true if at least one Threshold has been added - */ - public boolean hasThreshold() - { - return this._has_threshold; - } - - /** - * Returns the value of field 'autoScale'. - * - * @return the value of field 'AutoScale'. - */ - public boolean isAutoScale() - { - return this._autoScale; - } - - /** - * Returns the value of field 'colourByLabel'. - * - * @return the value of field 'ColourByLabel'. - */ - public boolean isColourByLabel() - { - return this._colourByLabel; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllAttributeName() - { - this._attributeNameList.clear(); - } - - /** - * Method removeAttributeName. - * - * @param vAttributeName - * @return true if the object was removed from the collection. - */ - public boolean removeAttributeName(final java.lang.String vAttributeName) - { - boolean removed = _attributeNameList.remove(vAttributeName); - return removed; - } - - /** - * Method removeAttributeNameAt. - * - * @param index - * @return the element removed from the collection - */ - public java.lang.String removeAttributeNameAt(final int index) - { - java.lang.Object obj = this._attributeNameList.remove(index); - return (java.lang.String) obj; - } - - /** - * - * - * @param index - * @param vAttributeName - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setAttributeName(final int index, - final java.lang.String vAttributeName) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._attributeNameList.size()) - { - throw new IndexOutOfBoundsException("setAttributeName: Index value '" - + index + "' not in range [0.." - + (this._attributeNameList.size() - 1) + "]"); - } - - this._attributeNameList.set(index, vAttributeName); - } - - /** - * - * - * @param vAttributeNameArray - */ - public void setAttributeName(final java.lang.String[] vAttributeNameArray) - { - // -- copy array - _attributeNameList.clear(); - - for (int i = 0; i < vAttributeNameArray.length; i++) - { - this._attributeNameList.add(vAttributeNameArray[i]); - } - } - - /** - * Sets the value of field 'autoScale'. - * - * @param autoScale - * the value of field 'autoScale'. - */ - public void setAutoScale(final boolean autoScale) - { - this._autoScale = autoScale; - this._has_autoScale = true; - } - - /** - * Sets the value of field 'colourByLabel'. - * - * @param colourByLabel - * the value of field 'colourByLabel'. - */ - public void setColourByLabel(final boolean colourByLabel) - { - this._colourByLabel = colourByLabel; - this._has_colourByLabel = true; - } - - /** - * Sets the value of field 'max'. - * - * @param max - * the value of field 'max'. - */ - public void setMax(final float max) - { - this._max = max; - this._has_max = true; - } - - /** - * Sets the value of field 'min'. - * - * @param min - * the value of field 'min'. - */ - public void setMin(final float min) - { - this._min = min; - this._has_min = true; - } - - /** - * Sets the value of field 'minRGB'. - * - * @param minRGB - * the value of field 'minRGB'. - */ - public void setMinRGB(final java.lang.String minRGB) - { - this._minRGB = minRGB; - } - - /** - * Sets the value of field 'name'. The field 'name' has the following - * description: Single letter residue code for an alignment colour scheme, or - * feature type for a feature colour scheme - * - * @param name - * the value of field 'name'. - */ - public void setName(final java.lang.String name) - { - this._name = name; - } - - /** - * Sets the value of field 'noValueColour'. - * - * @param noValueColour - * the value of field 'noValueColour'. - */ - public void setNoValueColour( - final jalview.binding.types.NoValueColour noValueColour) - { - this._noValueColour = noValueColour; - } - - /** - * Sets the value of field 'RGB'. - * - * @param RGB - * the value of field 'RGB'. - */ - public void setRGB(final java.lang.String RGB) - { - this._RGB = RGB; - } - - /** - * Sets the value of field 'threshType'. - * - * @param threshType - * the value of field 'threshType'. - */ - public void setThreshType( - final jalview.binding.types.ColourThreshTypeType threshType) - { - this._threshType = threshType; - } - - /** - * Sets the value of field 'threshold'. - * - * @param threshold - * the value of field 'threshold'. - */ - public void setThreshold(final float threshold) - { - this._threshold = threshold; - this._has_threshold = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.Colour - */ - public static jalview.binding.Colour unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.Colour) Unmarshaller - .unmarshal(jalview.binding.Colour.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/CompoundMatcher.java b/src/jalview/binding/CompoundMatcher.java deleted file mode 100644 index a2d1048..0000000 --- a/src/jalview/binding/CompoundMatcher.java +++ /dev/null @@ -1,368 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class CompoundMatcher. - * - * @version $Revision$ $Date$ - */ -public class CompoundMatcher implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * If true, matchers are AND-ed, if false they are OR-ed - */ - private boolean _and; - - /** - * keeps track of state for field: _and - */ - private boolean _has_and; - - /** - * Field _matcherSetList. - */ - private java.util.Vector _matcherSetList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public CompoundMatcher() - { - super(); - this._matcherSetList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vMatcherSet - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addMatcherSet(final jalview.binding.MatcherSet vMatcherSet) - throws java.lang.IndexOutOfBoundsException - { - // check for the maximum size - if (this._matcherSetList.size() >= 2) - { - throw new IndexOutOfBoundsException( - "addMatcherSet has a maximum of 2"); - } - - this._matcherSetList.addElement(vMatcherSet); - } - - /** - * - * - * @param index - * @param vMatcherSet - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addMatcherSet(final int index, - final jalview.binding.MatcherSet vMatcherSet) - throws java.lang.IndexOutOfBoundsException - { - // check for the maximum size - if (this._matcherSetList.size() >= 2) - { - throw new IndexOutOfBoundsException( - "addMatcherSet has a maximum of 2"); - } - - this._matcherSetList.add(index, vMatcherSet); - } - - /** - */ - public void deleteAnd() - { - this._has_and = false; - } - - /** - * Method enumerateMatcherSet. - * - * @return an Enumeration over all jalview.binding.MatcherSet elements - */ - public java.util.Enumeration enumerateMatcherSet() - { - return this._matcherSetList.elements(); - } - - /** - * Returns the value of field 'and'. The field 'and' has the following - * description: If true, matchers are AND-ed, if false they are OR-ed - * - * @return the value of field 'And'. - */ - public boolean getAnd() - { - return this._and; - } - - /** - * Method getMatcherSet. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.binding.MatcherSet at the given index - */ - public jalview.binding.MatcherSet getMatcherSet(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._matcherSetList.size()) - { - throw new IndexOutOfBoundsException( - "getMatcherSet: Index value '" + index + "' not in range [0.." - + (this._matcherSetList.size() - 1) + "]"); - } - - return (jalview.binding.MatcherSet) _matcherSetList.get(index); - } - - /** - * Method getMatcherSet.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 jalview.binding.MatcherSet[] getMatcherSet() - { - jalview.binding.MatcherSet[] array = new jalview.binding.MatcherSet[0]; - return (jalview.binding.MatcherSet[]) this._matcherSetList - .toArray(array); - } - - /** - * Method getMatcherSetCount. - * - * @return the size of this collection - */ - public int getMatcherSetCount() - { - return this._matcherSetList.size(); - } - - /** - * Method hasAnd. - * - * @return true if at least one And has been added - */ - public boolean hasAnd() - { - return this._has_and; - } - - /** - * Returns the value of field 'and'. The field 'and' has the following - * description: If true, matchers are AND-ed, if false they are OR-ed - * - * @return the value of field 'And'. - */ - public boolean isAnd() - { - return this._and; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllMatcherSet() - { - this._matcherSetList.clear(); - } - - /** - * Method removeMatcherSet. - * - * @param vMatcherSet - * @return true if the object was removed from the collection. - */ - public boolean removeMatcherSet( - final jalview.binding.MatcherSet vMatcherSet) - { - boolean removed = _matcherSetList.remove(vMatcherSet); - return removed; - } - - /** - * Method removeMatcherSetAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.binding.MatcherSet removeMatcherSetAt(final int index) - { - java.lang.Object obj = this._matcherSetList.remove(index); - return (jalview.binding.MatcherSet) obj; - } - - /** - * Sets the value of field 'and'. The field 'and' has the following - * description: If true, matchers are AND-ed, if false they are OR-ed - * - * @param and - * the value of field 'and'. - */ - public void setAnd(final boolean and) - { - this._and = and; - this._has_and = true; - } - - /** - * - * - * @param index - * @param vMatcherSet - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setMatcherSet(final int index, - final jalview.binding.MatcherSet vMatcherSet) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._matcherSetList.size()) - { - throw new IndexOutOfBoundsException( - "setMatcherSet: Index value '" + index + "' not in range [0.." - + (this._matcherSetList.size() - 1) + "]"); - } - - this._matcherSetList.set(index, vMatcherSet); - } - - /** - * - * - * @param vMatcherSetArray - */ - public void setMatcherSet( - final jalview.binding.MatcherSet[] vMatcherSetArray) - { - // -- copy array - _matcherSetList.clear(); - - for (int i = 0; i < vMatcherSetArray.length; i++) - { - this._matcherSetList.add(vMatcherSetArray[i]); - } - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.CompoundMatcher - */ - public static jalview.binding.CompoundMatcher unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.CompoundMatcher) Unmarshaller - .unmarshal(jalview.binding.CompoundMatcher.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/Feature.java b/src/jalview/binding/Feature.java deleted file mode 100644 index d72b29c..0000000 --- a/src/jalview/binding/Feature.java +++ /dev/null @@ -1,304 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Feature. - * - * @version $Revision$ $Date$ - */ -public class Feature implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _begin. - */ - private int _begin; - - /** - * keeps track of state for field: _begin - */ - private boolean _has_begin; - - /** - * Field _end. - */ - private int _end; - - /** - * keeps track of state for field: _end - */ - private boolean _has_end; - - /** - * Field _type. - */ - private java.lang.String _type; - - /** - * Field _description. - */ - private java.lang.String _description; - - /** - * Field _status. - */ - private java.lang.String _status; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Feature() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - */ - public void deleteBegin() - { - this._has_begin = false; - } - - /** - */ - public void deleteEnd() - { - this._has_end = false; - } - - /** - * Returns the value of field 'begin'. - * - * @return the value of field 'Begin'. - */ - public int getBegin() - { - return this._begin; - } - - /** - * Returns the value of field 'description'. - * - * @return the value of field 'Description'. - */ - public java.lang.String getDescription() - { - return this._description; - } - - /** - * Returns the value of field 'end'. - * - * @return the value of field 'End'. - */ - public int getEnd() - { - return this._end; - } - - /** - * Returns the value of field 'status'. - * - * @return the value of field 'Status'. - */ - public java.lang.String getStatus() - { - return this._status; - } - - /** - * Returns the value of field 'type'. - * - * @return the value of field 'Type'. - */ - public java.lang.String getType() - { - return this._type; - } - - /** - * Method hasBegin. - * - * @return true if at least one Begin has been added - */ - public boolean hasBegin() - { - return this._has_begin; - } - - /** - * Method hasEnd. - * - * @return true if at least one End has been added - */ - public boolean hasEnd() - { - return this._has_end; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'begin'. - * - * @param begin - * the value of field 'begin'. - */ - public void setBegin(final int begin) - { - this._begin = begin; - this._has_begin = true; - } - - /** - * Sets the value of field 'description'. - * - * @param description - * the value of field 'description'. - */ - public void setDescription(final java.lang.String description) - { - this._description = description; - } - - /** - * Sets the value of field 'end'. - * - * @param end - * the value of field 'end'. - */ - public void setEnd(final int end) - { - this._end = end; - this._has_end = true; - } - - /** - * Sets the value of field 'status'. - * - * @param status - * the value of field 'status'. - */ - public void setStatus(final java.lang.String status) - { - this._status = status; - } - - /** - * Sets the value of field 'type'. - * - * @param type - * the value of field 'type'. - */ - public void setType(final java.lang.String type) - { - this._type = type; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.Feature - */ - public static jalview.binding.Feature unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.Feature) Unmarshaller - .unmarshal(jalview.binding.Feature.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/FeatureMatcher.java b/src/jalview/binding/FeatureMatcher.java deleted file mode 100644 index e4e52fb..0000000 --- a/src/jalview/binding/FeatureMatcher.java +++ /dev/null @@ -1,381 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class FeatureMatcher. - * - * @version $Revision$ $Date$ - */ -public class FeatureMatcher implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _by. - */ - private jalview.binding.types.FeatureMatcherByType _by; - - /** - * name of feature attribute to filter on, or attribute and sub-attribute - */ - private java.util.Vector _attributeNameList; - - /** - * Field _condition. - */ - private java.lang.String _condition; - - /** - * Field _value. - */ - private java.lang.String _value; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public FeatureMatcher() - { - super(); - this._attributeNameList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vAttributeName - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAttributeName(final java.lang.String vAttributeName) - throws java.lang.IndexOutOfBoundsException - { - // check for the maximum size - if (this._attributeNameList.size() >= 2) - { - throw new IndexOutOfBoundsException( - "addAttributeName has a maximum of 2"); - } - - this._attributeNameList.addElement(vAttributeName); - } - - /** - * - * - * @param index - * @param vAttributeName - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAttributeName(final int index, - final java.lang.String vAttributeName) - throws java.lang.IndexOutOfBoundsException - { - // check for the maximum size - if (this._attributeNameList.size() >= 2) - { - throw new IndexOutOfBoundsException( - "addAttributeName has a maximum of 2"); - } - - this._attributeNameList.add(index, vAttributeName); - } - - /** - * Method enumerateAttributeName. - * - * @return an Enumeration over all java.lang.String elements - */ - public java.util.Enumeration enumerateAttributeName() - { - return this._attributeNameList.elements(); - } - - /** - * Method getAttributeName. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the java.lang.String at the given index - */ - public java.lang.String getAttributeName(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._attributeNameList.size()) - { - throw new IndexOutOfBoundsException("getAttributeName: Index value '" - + index + "' not in range [0.." - + (this._attributeNameList.size() - 1) + "]"); - } - - return (java.lang.String) _attributeNameList.get(index); - } - - /** - * Method getAttributeName.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.String[] getAttributeName() - { - java.lang.String[] array = new java.lang.String[0]; - return (java.lang.String[]) this._attributeNameList.toArray(array); - } - - /** - * Method getAttributeNameCount. - * - * @return the size of this collection - */ - public int getAttributeNameCount() - { - return this._attributeNameList.size(); - } - - /** - * Returns the value of field 'by'. - * - * @return the value of field 'By'. - */ - public jalview.binding.types.FeatureMatcherByType getBy() - { - return this._by; - } - - /** - * Returns the value of field 'condition'. - * - * @return the value of field 'Condition'. - */ - public java.lang.String getCondition() - { - return this._condition; - } - - /** - * Returns the value of field 'value'. - * - * @return the value of field 'Value'. - */ - public java.lang.String getValue() - { - return this._value; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllAttributeName() - { - this._attributeNameList.clear(); - } - - /** - * Method removeAttributeName. - * - * @param vAttributeName - * @return true if the object was removed from the collection. - */ - public boolean removeAttributeName(final java.lang.String vAttributeName) - { - boolean removed = _attributeNameList.remove(vAttributeName); - return removed; - } - - /** - * Method removeAttributeNameAt. - * - * @param index - * @return the element removed from the collection - */ - public java.lang.String removeAttributeNameAt(final int index) - { - java.lang.Object obj = this._attributeNameList.remove(index); - return (java.lang.String) obj; - } - - /** - * - * - * @param index - * @param vAttributeName - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setAttributeName(final int index, - final java.lang.String vAttributeName) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._attributeNameList.size()) - { - throw new IndexOutOfBoundsException("setAttributeName: Index value '" - + index + "' not in range [0.." - + (this._attributeNameList.size() - 1) + "]"); - } - - this._attributeNameList.set(index, vAttributeName); - } - - /** - * - * - * @param vAttributeNameArray - */ - public void setAttributeName(final java.lang.String[] vAttributeNameArray) - { - // -- copy array - _attributeNameList.clear(); - - for (int i = 0; i < vAttributeNameArray.length; i++) - { - this._attributeNameList.add(vAttributeNameArray[i]); - } - } - - /** - * Sets the value of field 'by'. - * - * @param by - * the value of field 'by'. - */ - public void setBy(final jalview.binding.types.FeatureMatcherByType by) - { - this._by = by; - } - - /** - * Sets the value of field 'condition'. - * - * @param condition - * the value of field 'condition'. - */ - public void setCondition(final java.lang.String condition) - { - this._condition = condition; - } - - /** - * Sets the value of field 'value'. - * - * @param value - * the value of field 'value'. - */ - public void setValue(final java.lang.String value) - { - this._value = value; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.FeatureMatcher - */ - public static jalview.binding.FeatureMatcher unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.FeatureMatcher) Unmarshaller - .unmarshal(jalview.binding.FeatureMatcher.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/FeatureMatcherSet.java b/src/jalview/binding/FeatureMatcherSet.java deleted file mode 100644 index 7ba5f0e..0000000 --- a/src/jalview/binding/FeatureMatcherSet.java +++ /dev/null @@ -1,200 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * A feature match condition, which may be simple or compound - * - * @version $Revision$ $Date$ - */ -public class FeatureMatcherSet implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Internal choice value storage - */ - private java.lang.Object _choiceValue; - - /** - * Field _matchCondition. - */ - private jalview.binding.MatchCondition _matchCondition; - - /** - * Field _compoundMatcher. - */ - private jalview.binding.CompoundMatcher _compoundMatcher; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public FeatureMatcherSet() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'choiceValue'. The field 'choiceValue' has the - * following description: Internal choice value storage - * - * @return the value of field 'ChoiceValue'. - */ - public java.lang.Object getChoiceValue() - { - return this._choiceValue; - } - - /** - * Returns the value of field 'compoundMatcher'. - * - * @return the value of field 'CompoundMatcher'. - */ - public jalview.binding.CompoundMatcher getCompoundMatcher() - { - return this._compoundMatcher; - } - - /** - * Returns the value of field 'matchCondition'. - * - * @return the value of field 'MatchCondition'. - */ - public jalview.binding.MatchCondition getMatchCondition() - { - return this._matchCondition; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'compoundMatcher'. - * - * @param compoundMatcher - * the value of field 'compoundMatcher'. - */ - public void setCompoundMatcher( - final jalview.binding.CompoundMatcher compoundMatcher) - { - this._compoundMatcher = compoundMatcher; - this._choiceValue = compoundMatcher; - } - - /** - * Sets the value of field 'matchCondition'. - * - * @param matchCondition - * the value of field 'matchCondition'. - */ - public void setMatchCondition( - final jalview.binding.MatchCondition matchCondition) - { - this._matchCondition = matchCondition; - this._choiceValue = matchCondition; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.FeatureMatcherSet - */ - public static jalview.binding.FeatureMatcherSet unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.FeatureMatcherSet) Unmarshaller - .unmarshal(jalview.binding.FeatureMatcherSet.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/FeatureSettings.java b/src/jalview/binding/FeatureSettings.java deleted file mode 100644 index 321536d..0000000 --- a/src/jalview/binding/FeatureSettings.java +++ /dev/null @@ -1,289 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class FeatureSettings. - * - * @version $Revision$ $Date$ - */ -public class FeatureSettings implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _settingList. - */ - private java.util.Vector _settingList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public FeatureSettings() - { - super(); - this._settingList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vSetting - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSetting(final jalview.binding.Setting vSetting) - throws java.lang.IndexOutOfBoundsException - { - this._settingList.addElement(vSetting); - } - - /** - * - * - * @param index - * @param vSetting - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSetting(final int index, - final jalview.binding.Setting vSetting) - throws java.lang.IndexOutOfBoundsException - { - this._settingList.add(index, vSetting); - } - - /** - * Method enumerateSetting. - * - * @return an Enumeration over all jalview.binding.Setting elements - */ - public java.util.Enumeration enumerateSetting() - { - return this._settingList.elements(); - } - - /** - * Method getSetting. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.binding.Setting at the given index - */ - public jalview.binding.Setting getSetting(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._settingList.size()) - { - throw new IndexOutOfBoundsException( - "getSetting: Index value '" + index + "' not in range [0.." - + (this._settingList.size() - 1) + "]"); - } - - return (jalview.binding.Setting) _settingList.get(index); - } - - /** - * Method getSetting.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 jalview.binding.Setting[] getSetting() - { - jalview.binding.Setting[] array = new jalview.binding.Setting[0]; - return (jalview.binding.Setting[]) this._settingList.toArray(array); - } - - /** - * Method getSettingCount. - * - * @return the size of this collection - */ - public int getSettingCount() - { - return this._settingList.size(); - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllSetting() - { - this._settingList.clear(); - } - - /** - * Method removeSetting. - * - * @param vSetting - * @return true if the object was removed from the collection. - */ - public boolean removeSetting(final jalview.binding.Setting vSetting) - { - boolean removed = _settingList.remove(vSetting); - return removed; - } - - /** - * Method removeSettingAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.binding.Setting removeSettingAt(final int index) - { - java.lang.Object obj = this._settingList.remove(index); - return (jalview.binding.Setting) obj; - } - - /** - * - * - * @param index - * @param vSetting - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setSetting(final int index, - final jalview.binding.Setting vSetting) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._settingList.size()) - { - throw new IndexOutOfBoundsException( - "setSetting: Index value '" + index + "' not in range [0.." - + (this._settingList.size() - 1) + "]"); - } - - this._settingList.set(index, vSetting); - } - - /** - * - * - * @param vSettingArray - */ - public void setSetting(final jalview.binding.Setting[] vSettingArray) - { - // -- copy array - _settingList.clear(); - - for (int i = 0; i < vSettingArray.length; i++) - { - this._settingList.add(vSettingArray[i]); - } - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.FeatureSettings - */ - public static jalview.binding.FeatureSettings unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.FeatureSettings) Unmarshaller - .unmarshal(jalview.binding.FeatureSettings.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/Features.java b/src/jalview/binding/Features.java deleted file mode 100644 index bf283df..0000000 --- a/src/jalview/binding/Features.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Features. - * - * @version $Revision$ $Date$ - */ -public class Features extends Feature implements java.io.Serializable -{ - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Features() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.Feature - */ - public static jalview.binding.Feature unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.Feature) Unmarshaller - .unmarshal(jalview.binding.Features.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/Filter.java b/src/jalview/binding/Filter.java deleted file mode 100644 index 687ae91..0000000 --- a/src/jalview/binding/Filter.java +++ /dev/null @@ -1,180 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Filter. - * - * @version $Revision$ $Date$ - */ -public class Filter implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _featureType. - */ - private java.lang.String _featureType; - - /** - * Field _matcherSet. - */ - private jalview.binding.MatcherSet _matcherSet; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Filter() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'featureType'. - * - * @return the value of field 'FeatureType'. - */ - public java.lang.String getFeatureType() - { - return this._featureType; - } - - /** - * Returns the value of field 'matcherSet'. - * - * @return the value of field 'MatcherSet'. - */ - public jalview.binding.MatcherSet getMatcherSet() - { - return this._matcherSet; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'featureType'. - * - * @param featureType - * the value of field 'featureType'. - */ - public void setFeatureType(final java.lang.String featureType) - { - this._featureType = featureType; - } - - /** - * Sets the value of field 'matcherSet'. - * - * @param matcherSet - * the value of field 'matcherSet'. - */ - public void setMatcherSet(final jalview.binding.MatcherSet matcherSet) - { - this._matcherSet = matcherSet; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.Filter - */ - public static jalview.binding.Filter unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.Filter) Unmarshaller - .unmarshal(jalview.binding.Filter.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/JGroup.java b/src/jalview/binding/JGroup.java deleted file mode 100644 index 555c2fd..0000000 --- a/src/jalview/binding/JGroup.java +++ /dev/null @@ -1,761 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class JGroup. - * - * @version $Revision$ $Date$ - */ -public class JGroup implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _start. - */ - private int _start; - - /** - * keeps track of state for field: _start - */ - private boolean _has_start; - - /** - * Field _end. - */ - private int _end; - - /** - * keeps track of state for field: _end - */ - private boolean _has_end; - - /** - * Field _name. - */ - private java.lang.String _name; - - /** - * Field _colour. - */ - private java.lang.String _colour; - - /** - * Field _consThreshold. - */ - private int _consThreshold; - - /** - * keeps track of state for field: _consThreshold - */ - private boolean _has_consThreshold; - - /** - * Field _pidThreshold. - */ - private int _pidThreshold; - - /** - * keeps track of state for field: _pidThreshold - */ - private boolean _has_pidThreshold; - - /** - * Field _outlineColour. - */ - private int _outlineColour; - - /** - * keeps track of state for field: _outlineColour - */ - private boolean _has_outlineColour; - - /** - * Field _displayBoxes. - */ - private boolean _displayBoxes; - - /** - * keeps track of state for field: _displayBoxes - */ - private boolean _has_displayBoxes; - - /** - * Field _displayText. - */ - private boolean _displayText; - - /** - * keeps track of state for field: _displayText - */ - private boolean _has_displayText; - - /** - * Field _colourText. - */ - private boolean _colourText; - - /** - * keeps track of state for field: _colourText - */ - private boolean _has_colourText; - - /** - * Field _seqList. - */ - private java.util.Vector _seqList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public JGroup() - { - super(); - this._seqList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vSeq - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSeq(final int vSeq) - throws java.lang.IndexOutOfBoundsException - { - this._seqList.addElement(new java.lang.Integer(vSeq)); - } - - /** - * - * - * @param index - * @param vSeq - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSeq(final int index, final int vSeq) - throws java.lang.IndexOutOfBoundsException - { - this._seqList.add(index, new java.lang.Integer(vSeq)); - } - - /** - */ - public void deleteColourText() - { - this._has_colourText = false; - } - - /** - */ - public void deleteConsThreshold() - { - this._has_consThreshold = false; - } - - /** - */ - public void deleteDisplayBoxes() - { - this._has_displayBoxes = false; - } - - /** - */ - public void deleteDisplayText() - { - this._has_displayText = false; - } - - /** - */ - public void deleteEnd() - { - this._has_end = false; - } - - /** - */ - public void deleteOutlineColour() - { - this._has_outlineColour = false; - } - - /** - */ - public void deletePidThreshold() - { - this._has_pidThreshold = false; - } - - /** - */ - public void deleteStart() - { - this._has_start = false; - } - - /** - * Method enumerateSeq. - * - * @return an Enumeration over all int elements - */ - public java.util.Enumeration enumerateSeq() - { - return this._seqList.elements(); - } - - /** - * Returns the value of field 'colour'. - * - * @return the value of field 'Colour'. - */ - public java.lang.String getColour() - { - return this._colour; - } - - /** - * Returns the value of field 'colourText'. - * - * @return the value of field 'ColourText'. - */ - public boolean getColourText() - { - return this._colourText; - } - - /** - * Returns the value of field 'consThreshold'. - * - * @return the value of field 'ConsThreshold'. - */ - public int getConsThreshold() - { - return this._consThreshold; - } - - /** - * Returns the value of field 'displayBoxes'. - * - * @return the value of field 'DisplayBoxes'. - */ - public boolean getDisplayBoxes() - { - return this._displayBoxes; - } - - /** - * Returns the value of field 'displayText'. - * - * @return the value of field 'DisplayText'. - */ - public boolean getDisplayText() - { - return this._displayText; - } - - /** - * Returns the value of field 'end'. - * - * @return the value of field 'End'. - */ - public int getEnd() - { - return this._end; - } - - /** - * Returns the value of field 'name'. - * - * @return the value of field 'Name'. - */ - public java.lang.String getName() - { - return this._name; - } - - /** - * Returns the value of field 'outlineColour'. - * - * @return the value of field 'OutlineColour'. - */ - public int getOutlineColour() - { - return this._outlineColour; - } - - /** - * Returns the value of field 'pidThreshold'. - * - * @return the value of field 'PidThreshold'. - */ - public int getPidThreshold() - { - return this._pidThreshold; - } - - /** - * Method getSeq. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the int at the given index - */ - public int getSeq(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._seqList.size()) - { - throw new IndexOutOfBoundsException("getSeq: Index value '" + index - + "' not in range [0.." + (this._seqList.size() - 1) + "]"); - } - - return ((java.lang.Integer) _seqList.get(index)).intValue(); - } - - /** - * Method getSeq.Returns the contents of the collection in an Array. - * - * @return this collection as an Array - */ - public int[] getSeq() - { - int size = this._seqList.size(); - int[] array = new int[size]; - java.util.Iterator iter = _seqList.iterator(); - for (int index = 0; index < size; index++) - { - array[index] = ((java.lang.Integer) iter.next()).intValue(); - } - return array; - } - - /** - * Method getSeqCount. - * - * @return the size of this collection - */ - public int getSeqCount() - { - return this._seqList.size(); - } - - /** - * Returns the value of field 'start'. - * - * @return the value of field 'Start'. - */ - public int getStart() - { - return this._start; - } - - /** - * Method hasColourText. - * - * @return true if at least one ColourText has been added - */ - public boolean hasColourText() - { - return this._has_colourText; - } - - /** - * Method hasConsThreshold. - * - * @return true if at least one ConsThreshold has been added - */ - public boolean hasConsThreshold() - { - return this._has_consThreshold; - } - - /** - * Method hasDisplayBoxes. - * - * @return true if at least one DisplayBoxes has been added - */ - public boolean hasDisplayBoxes() - { - return this._has_displayBoxes; - } - - /** - * Method hasDisplayText. - * - * @return true if at least one DisplayText has been added - */ - public boolean hasDisplayText() - { - return this._has_displayText; - } - - /** - * Method hasEnd. - * - * @return true if at least one End has been added - */ - public boolean hasEnd() - { - return this._has_end; - } - - /** - * Method hasOutlineColour. - * - * @return true if at least one OutlineColour has been added - */ - public boolean hasOutlineColour() - { - return this._has_outlineColour; - } - - /** - * Method hasPidThreshold. - * - * @return true if at least one PidThreshold has been added - */ - public boolean hasPidThreshold() - { - return this._has_pidThreshold; - } - - /** - * Method hasStart. - * - * @return true if at least one Start has been added - */ - public boolean hasStart() - { - return this._has_start; - } - - /** - * Returns the value of field 'colourText'. - * - * @return the value of field 'ColourText'. - */ - public boolean isColourText() - { - return this._colourText; - } - - /** - * Returns the value of field 'displayBoxes'. - * - * @return the value of field 'DisplayBoxes'. - */ - public boolean isDisplayBoxes() - { - return this._displayBoxes; - } - - /** - * Returns the value of field 'displayText'. - * - * @return the value of field 'DisplayText'. - */ - public boolean isDisplayText() - { - return this._displayText; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllSeq() - { - this._seqList.clear(); - } - - /** - * Method removeSeq. - * - * @param vSeq - * @return true if the object was removed from the collection. - */ - public boolean removeSeq(final int vSeq) - { - boolean removed = _seqList.remove(new java.lang.Integer(vSeq)); - return removed; - } - - /** - * Method removeSeqAt. - * - * @param index - * @return the element removed from the collection - */ - public int removeSeqAt(final int index) - { - java.lang.Object obj = this._seqList.remove(index); - return ((java.lang.Integer) obj).intValue(); - } - - /** - * Sets the value of field 'colour'. - * - * @param colour - * the value of field 'colour'. - */ - public void setColour(final java.lang.String colour) - { - this._colour = colour; - } - - /** - * Sets the value of field 'colourText'. - * - * @param colourText - * the value of field 'colourText'. - */ - public void setColourText(final boolean colourText) - { - this._colourText = colourText; - this._has_colourText = true; - } - - /** - * Sets the value of field 'consThreshold'. - * - * @param consThreshold - * the value of field 'consThreshold'. - */ - public void setConsThreshold(final int consThreshold) - { - this._consThreshold = consThreshold; - this._has_consThreshold = true; - } - - /** - * Sets the value of field 'displayBoxes'. - * - * @param displayBoxes - * the value of field 'displayBoxes'. - */ - public void setDisplayBoxes(final boolean displayBoxes) - { - this._displayBoxes = displayBoxes; - this._has_displayBoxes = true; - } - - /** - * Sets the value of field 'displayText'. - * - * @param displayText - * the value of field 'displayText'. - */ - public void setDisplayText(final boolean displayText) - { - this._displayText = displayText; - this._has_displayText = true; - } - - /** - * Sets the value of field 'end'. - * - * @param end - * the value of field 'end'. - */ - public void setEnd(final int end) - { - this._end = end; - this._has_end = true; - } - - /** - * Sets the value of field 'name'. - * - * @param name - * the value of field 'name'. - */ - public void setName(final java.lang.String name) - { - this._name = name; - } - - /** - * Sets the value of field 'outlineColour'. - * - * @param outlineColour - * the value of field 'outlineColour'. - */ - public void setOutlineColour(final int outlineColour) - { - this._outlineColour = outlineColour; - this._has_outlineColour = true; - } - - /** - * Sets the value of field 'pidThreshold'. - * - * @param pidThreshold - * the value of field 'pidThreshold'. - */ - public void setPidThreshold(final int pidThreshold) - { - this._pidThreshold = pidThreshold; - this._has_pidThreshold = true; - } - - /** - * - * - * @param index - * @param vSeq - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setSeq(final int index, final int vSeq) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._seqList.size()) - { - throw new IndexOutOfBoundsException("setSeq: Index value '" + index - + "' not in range [0.." + (this._seqList.size() - 1) + "]"); - } - - this._seqList.set(index, new java.lang.Integer(vSeq)); - } - - /** - * - * - * @param vSeqArray - */ - public void setSeq(final int[] vSeqArray) - { - // -- copy array - _seqList.clear(); - - for (int i = 0; i < vSeqArray.length; i++) - { - this._seqList.add(new java.lang.Integer(vSeqArray[i])); - } - } - - /** - * Sets the value of field 'start'. - * - * @param start - * the value of field 'start'. - */ - public void setStart(final int start) - { - this._start = start; - this._has_start = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.JGroup - */ - public static jalview.binding.JGroup unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.JGroup) Unmarshaller - .unmarshal(jalview.binding.JGroup.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/JSeq.java b/src/jalview/binding/JSeq.java deleted file mode 100644 index 49334e1..0000000 --- a/src/jalview/binding/JSeq.java +++ /dev/null @@ -1,645 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class JSeq. - * - * @version $Revision$ $Date$ - */ -public class JSeq implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _colour. - */ - private int _colour; - - /** - * keeps track of state for field: _colour - */ - private boolean _has_colour; - - /** - * Field _start. - */ - private int _start; - - /** - * keeps track of state for field: _start - */ - private boolean _has_start; - - /** - * Field _end. - */ - private int _end; - - /** - * keeps track of state for field: _end - */ - private boolean _has_end; - - /** - * Field _id. - */ - private int _id; - - /** - * keeps track of state for field: _id - */ - private boolean _has_id; - - /** - * Field _featuresList. - */ - private java.util.Vector _featuresList; - - /** - * Field _pdbidsList. - */ - private java.util.Vector _pdbidsList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public JSeq() - { - super(); - this._featuresList = new java.util.Vector(); - this._pdbidsList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vFeatures - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addFeatures(final jalview.binding.Features vFeatures) - throws java.lang.IndexOutOfBoundsException - { - this._featuresList.addElement(vFeatures); - } - - /** - * - * - * @param index - * @param vFeatures - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addFeatures(final int index, - final jalview.binding.Features vFeatures) - throws java.lang.IndexOutOfBoundsException - { - this._featuresList.add(index, vFeatures); - } - - /** - * - * - * @param vPdbids - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addPdbids(final jalview.binding.Pdbids vPdbids) - throws java.lang.IndexOutOfBoundsException - { - this._pdbidsList.addElement(vPdbids); - } - - /** - * - * - * @param index - * @param vPdbids - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addPdbids(final int index, - final jalview.binding.Pdbids vPdbids) - throws java.lang.IndexOutOfBoundsException - { - this._pdbidsList.add(index, vPdbids); - } - - /** - */ - public void deleteColour() - { - this._has_colour = false; - } - - /** - */ - public void deleteEnd() - { - this._has_end = false; - } - - /** - */ - public void deleteId() - { - this._has_id = false; - } - - /** - */ - public void deleteStart() - { - this._has_start = false; - } - - /** - * Method enumerateFeatures. - * - * @return an Enumeration over all jalview.binding.Features elements - */ - public java.util.Enumeration enumerateFeatures() - { - return this._featuresList.elements(); - } - - /** - * Method enumeratePdbids. - * - * @return an Enumeration over all jalview.binding.Pdbids elements - */ - public java.util.Enumeration enumeratePdbids() - { - return this._pdbidsList.elements(); - } - - /** - * Returns the value of field 'colour'. - * - * @return the value of field 'Colour'. - */ - public int getColour() - { - return this._colour; - } - - /** - * Returns the value of field 'end'. - * - * @return the value of field 'End'. - */ - public int getEnd() - { - return this._end; - } - - /** - * Method getFeatures. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.binding.Features at the given index - */ - public jalview.binding.Features getFeatures(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._featuresList.size()) - { - throw new IndexOutOfBoundsException( - "getFeatures: Index value '" + index + "' not in range [0.." - + (this._featuresList.size() - 1) + "]"); - } - - return (jalview.binding.Features) _featuresList.get(index); - } - - /** - * Method getFeatures.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 jalview.binding.Features[] getFeatures() - { - jalview.binding.Features[] array = new jalview.binding.Features[0]; - return (jalview.binding.Features[]) this._featuresList.toArray(array); - } - - /** - * Method getFeaturesCount. - * - * @return the size of this collection - */ - public int getFeaturesCount() - { - return this._featuresList.size(); - } - - /** - * Returns the value of field 'id'. - * - * @return the value of field 'Id'. - */ - public int getId() - { - return this._id; - } - - /** - * Method getPdbids. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.binding.Pdbids at the given index - */ - public jalview.binding.Pdbids getPdbids(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._pdbidsList.size()) - { - throw new IndexOutOfBoundsException( - "getPdbids: Index value '" + index + "' not in range [0.." - + (this._pdbidsList.size() - 1) + "]"); - } - - return (jalview.binding.Pdbids) _pdbidsList.get(index); - } - - /** - * Method getPdbids.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 jalview.binding.Pdbids[] getPdbids() - { - jalview.binding.Pdbids[] array = new jalview.binding.Pdbids[0]; - return (jalview.binding.Pdbids[]) this._pdbidsList.toArray(array); - } - - /** - * Method getPdbidsCount. - * - * @return the size of this collection - */ - public int getPdbidsCount() - { - return this._pdbidsList.size(); - } - - /** - * Returns the value of field 'start'. - * - * @return the value of field 'Start'. - */ - public int getStart() - { - return this._start; - } - - /** - * Method hasColour. - * - * @return true if at least one Colour has been added - */ - public boolean hasColour() - { - return this._has_colour; - } - - /** - * Method hasEnd. - * - * @return true if at least one End has been added - */ - public boolean hasEnd() - { - return this._has_end; - } - - /** - * Method hasId. - * - * @return true if at least one Id has been added - */ - public boolean hasId() - { - return this._has_id; - } - - /** - * Method hasStart. - * - * @return true if at least one Start has been added - */ - public boolean hasStart() - { - return this._has_start; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllFeatures() - { - this._featuresList.clear(); - } - - /** - */ - public void removeAllPdbids() - { - this._pdbidsList.clear(); - } - - /** - * Method removeFeatures. - * - * @param vFeatures - * @return true if the object was removed from the collection. - */ - public boolean removeFeatures(final jalview.binding.Features vFeatures) - { - boolean removed = _featuresList.remove(vFeatures); - return removed; - } - - /** - * Method removeFeaturesAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.binding.Features removeFeaturesAt(final int index) - { - java.lang.Object obj = this._featuresList.remove(index); - return (jalview.binding.Features) obj; - } - - /** - * Method removePdbids. - * - * @param vPdbids - * @return true if the object was removed from the collection. - */ - public boolean removePdbids(final jalview.binding.Pdbids vPdbids) - { - boolean removed = _pdbidsList.remove(vPdbids); - return removed; - } - - /** - * Method removePdbidsAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.binding.Pdbids removePdbidsAt(final int index) - { - java.lang.Object obj = this._pdbidsList.remove(index); - return (jalview.binding.Pdbids) obj; - } - - /** - * Sets the value of field 'colour'. - * - * @param colour - * the value of field 'colour'. - */ - public void setColour(final int colour) - { - this._colour = colour; - this._has_colour = true; - } - - /** - * Sets the value of field 'end'. - * - * @param end - * the value of field 'end'. - */ - public void setEnd(final int end) - { - this._end = end; - this._has_end = true; - } - - /** - * - * - * @param index - * @param vFeatures - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setFeatures(final int index, - final jalview.binding.Features vFeatures) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._featuresList.size()) - { - throw new IndexOutOfBoundsException( - "setFeatures: Index value '" + index + "' not in range [0.." - + (this._featuresList.size() - 1) + "]"); - } - - this._featuresList.set(index, vFeatures); - } - - /** - * - * - * @param vFeaturesArray - */ - public void setFeatures(final jalview.binding.Features[] vFeaturesArray) - { - // -- copy array - _featuresList.clear(); - - for (int i = 0; i < vFeaturesArray.length; i++) - { - this._featuresList.add(vFeaturesArray[i]); - } - } - - /** - * Sets the value of field 'id'. - * - * @param id - * the value of field 'id'. - */ - public void setId(final int id) - { - this._id = id; - this._has_id = true; - } - - /** - * - * - * @param index - * @param vPdbids - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setPdbids(final int index, - final jalview.binding.Pdbids vPdbids) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._pdbidsList.size()) - { - throw new IndexOutOfBoundsException( - "setPdbids: Index value '" + index + "' not in range [0.." - + (this._pdbidsList.size() - 1) + "]"); - } - - this._pdbidsList.set(index, vPdbids); - } - - /** - * - * - * @param vPdbidsArray - */ - public void setPdbids(final jalview.binding.Pdbids[] vPdbidsArray) - { - // -- copy array - _pdbidsList.clear(); - - for (int i = 0; i < vPdbidsArray.length; i++) - { - this._pdbidsList.add(vPdbidsArray[i]); - } - } - - /** - * Sets the value of field 'start'. - * - * @param start - * the value of field 'start'. - */ - public void setStart(final int start) - { - this._start = start; - this._has_start = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.JSeq - */ - public static jalview.binding.JSeq unmarshal(final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.JSeq) Unmarshaller - .unmarshal(jalview.binding.JSeq.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/JalviewModel.java b/src/jalview/binding/JalviewModel.java deleted file mode 100644 index 28645e0..0000000 --- a/src/jalview/binding/JalviewModel.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class JalviewModel. - * - * @version $Revision$ $Date$ - */ -public class JalviewModel implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _creationDate. - */ - private java.util.Date _creationDate; - - /** - * Field _version. - */ - private java.lang.String _version; - - /** - * Field _vamsasModel. - */ - private jalview.binding.VamsasModel _vamsasModel; - - /** - * Field _jalviewModelSequence. - */ - private jalview.binding.JalviewModelSequence _jalviewModelSequence; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public JalviewModel() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'creationDate'. - * - * @return the value of field 'CreationDate'. - */ - public java.util.Date getCreationDate() - { - return this._creationDate; - } - - /** - * Returns the value of field 'jalviewModelSequence'. - * - * @return the value of field 'JalviewModelSequence'. - */ - public jalview.binding.JalviewModelSequence getJalviewModelSequence() - { - return this._jalviewModelSequence; - } - - /** - * Returns the value of field 'vamsasModel'. - * - * @return the value of field 'VamsasModel'. - */ - public jalview.binding.VamsasModel getVamsasModel() - { - return this._vamsasModel; - } - - /** - * Returns the value of field 'version'. - * - * @return the value of field 'Version'. - */ - public java.lang.String getVersion() - { - return this._version; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'creationDate'. - * - * @param creationDate - * the value of field 'creationDate'. - */ - public void setCreationDate(final java.util.Date creationDate) - { - this._creationDate = creationDate; - } - - /** - * Sets the value of field 'jalviewModelSequence'. - * - * @param jalviewModelSequence - * the value of field 'jalviewModelSequence'. - */ - public void setJalviewModelSequence( - final jalview.binding.JalviewModelSequence jalviewModelSequence) - { - this._jalviewModelSequence = jalviewModelSequence; - } - - /** - * Sets the value of field 'vamsasModel'. - * - * @param vamsasModel - * the value of field 'vamsasModel'. - */ - public void setVamsasModel(final jalview.binding.VamsasModel vamsasModel) - { - this._vamsasModel = vamsasModel; - } - - /** - * Sets the value of field 'version'. - * - * @param version - * the value of field 'version'. - */ - public void setVersion(final java.lang.String version) - { - this._version = version; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.JalviewModel - */ - public static jalview.binding.JalviewModel unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.JalviewModel) Unmarshaller - .unmarshal(jalview.binding.JalviewModel.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/JalviewModelSequence.java b/src/jalview/binding/JalviewModelSequence.java deleted file mode 100644 index 9020ce2..0000000 --- a/src/jalview/binding/JalviewModelSequence.java +++ /dev/null @@ -1,955 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class JalviewModelSequence. - * - * @version $Revision$ $Date$ - */ -public class JalviewModelSequence implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _JSeqList. - */ - private java.util.Vector _JSeqList; - - /** - * Field _JGroupList. - */ - private java.util.Vector _JGroupList; - - /** - * Field _viewportList. - */ - private java.util.Vector _viewportList; - - /** - * Field _userColoursList. - */ - private java.util.Vector _userColoursList; - - /** - * Field _treeList. - */ - private java.util.Vector _treeList; - - /** - * Field _featureSettings. - */ - private jalview.binding.FeatureSettings _featureSettings; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public JalviewModelSequence() - { - super(); - this._JSeqList = new java.util.Vector(); - this._JGroupList = new java.util.Vector(); - this._viewportList = new java.util.Vector(); - this._userColoursList = new java.util.Vector(); - this._treeList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vJGroup - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addJGroup(final jalview.binding.JGroup vJGroup) - throws java.lang.IndexOutOfBoundsException - { - this._JGroupList.addElement(vJGroup); - } - - /** - * - * - * @param index - * @param vJGroup - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addJGroup(final int index, - final jalview.binding.JGroup vJGroup) - throws java.lang.IndexOutOfBoundsException - { - this._JGroupList.add(index, vJGroup); - } - - /** - * - * - * @param vJSeq - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addJSeq(final jalview.binding.JSeq vJSeq) - throws java.lang.IndexOutOfBoundsException - { - this._JSeqList.addElement(vJSeq); - } - - /** - * - * - * @param index - * @param vJSeq - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addJSeq(final int index, final jalview.binding.JSeq vJSeq) - throws java.lang.IndexOutOfBoundsException - { - this._JSeqList.add(index, vJSeq); - } - - /** - * - * - * @param vTree - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addTree(final jalview.binding.Tree vTree) - throws java.lang.IndexOutOfBoundsException - { - this._treeList.addElement(vTree); - } - - /** - * - * - * @param index - * @param vTree - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addTree(final int index, final jalview.binding.Tree vTree) - throws java.lang.IndexOutOfBoundsException - { - this._treeList.add(index, vTree); - } - - /** - * - * - * @param vUserColours - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addUserColours(final jalview.binding.UserColours vUserColours) - throws java.lang.IndexOutOfBoundsException - { - this._userColoursList.addElement(vUserColours); - } - - /** - * - * - * @param index - * @param vUserColours - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addUserColours(final int index, - final jalview.binding.UserColours vUserColours) - throws java.lang.IndexOutOfBoundsException - { - this._userColoursList.add(index, vUserColours); - } - - /** - * - * - * @param vViewport - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addViewport(final jalview.binding.Viewport vViewport) - throws java.lang.IndexOutOfBoundsException - { - this._viewportList.addElement(vViewport); - } - - /** - * - * - * @param index - * @param vViewport - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addViewport(final int index, - final jalview.binding.Viewport vViewport) - throws java.lang.IndexOutOfBoundsException - { - this._viewportList.add(index, vViewport); - } - - /** - * Method enumerateJGroup. - * - * @return an Enumeration over all jalview.binding.JGroup elements - */ - public java.util.Enumeration enumerateJGroup() - { - return this._JGroupList.elements(); - } - - /** - * Method enumerateJSeq. - * - * @return an Enumeration over all jalview.binding.JSeq elements - */ - public java.util.Enumeration enumerateJSeq() - { - return this._JSeqList.elements(); - } - - /** - * Method enumerateTree. - * - * @return an Enumeration over all jalview.binding.Tree elements - */ - public java.util.Enumeration enumerateTree() - { - return this._treeList.elements(); - } - - /** - * Method enumerateUserColours. - * - * @return an Enumeration over all jalview.binding.UserColours elements - */ - public java.util.Enumeration enumerateUserColours() - { - return this._userColoursList.elements(); - } - - /** - * Method enumerateViewport. - * - * @return an Enumeration over all jalview.binding.Viewport elements - */ - public java.util.Enumeration enumerateViewport() - { - return this._viewportList.elements(); - } - - /** - * Returns the value of field 'featureSettings'. - * - * @return the value of field 'FeatureSettings'. - */ - public jalview.binding.FeatureSettings getFeatureSettings() - { - return this._featureSettings; - } - - /** - * Method getJGroup. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.binding.JGroup at the given index - */ - public jalview.binding.JGroup getJGroup(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._JGroupList.size()) - { - throw new IndexOutOfBoundsException( - "getJGroup: Index value '" + index + "' not in range [0.." - + (this._JGroupList.size() - 1) + "]"); - } - - return (jalview.binding.JGroup) _JGroupList.get(index); - } - - /** - * Method getJGroup.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 jalview.binding.JGroup[] getJGroup() - { - jalview.binding.JGroup[] array = new jalview.binding.JGroup[0]; - return (jalview.binding.JGroup[]) this._JGroupList.toArray(array); - } - - /** - * Method getJGroupCount. - * - * @return the size of this collection - */ - public int getJGroupCount() - { - return this._JGroupList.size(); - } - - /** - * Method getJSeq. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.binding.JSeq at the given index - */ - public jalview.binding.JSeq getJSeq(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._JSeqList.size()) - { - throw new IndexOutOfBoundsException("getJSeq: Index value '" + index - + "' not in range [0.." + (this._JSeqList.size() - 1) + "]"); - } - - return (jalview.binding.JSeq) _JSeqList.get(index); - } - - /** - * Method getJSeq.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 jalview.binding.JSeq[] getJSeq() - { - jalview.binding.JSeq[] array = new jalview.binding.JSeq[0]; - return (jalview.binding.JSeq[]) this._JSeqList.toArray(array); - } - - /** - * Method getJSeqCount. - * - * @return the size of this collection - */ - public int getJSeqCount() - { - return this._JSeqList.size(); - } - - /** - * Method getTree. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.binding.Tree at the given index - */ - public jalview.binding.Tree getTree(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._treeList.size()) - { - throw new IndexOutOfBoundsException("getTree: Index value '" + index - + "' not in range [0.." + (this._treeList.size() - 1) + "]"); - } - - return (jalview.binding.Tree) _treeList.get(index); - } - - /** - * Method getTree.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 jalview.binding.Tree[] getTree() - { - jalview.binding.Tree[] array = new jalview.binding.Tree[0]; - return (jalview.binding.Tree[]) this._treeList.toArray(array); - } - - /** - * Method getTreeCount. - * - * @return the size of this collection - */ - public int getTreeCount() - { - return this._treeList.size(); - } - - /** - * Method getUserColours. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.binding.UserColours at the given index - */ - public jalview.binding.UserColours getUserColours(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._userColoursList.size()) - { - throw new IndexOutOfBoundsException("getUserColours: Index value '" - + index + "' not in range [0.." - + (this._userColoursList.size() - 1) + "]"); - } - - return (jalview.binding.UserColours) _userColoursList.get(index); - } - - /** - * Method getUserColours.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 jalview.binding.UserColours[] getUserColours() - { - jalview.binding.UserColours[] array = new jalview.binding.UserColours[0]; - return (jalview.binding.UserColours[]) this._userColoursList - .toArray(array); - } - - /** - * Method getUserColoursCount. - * - * @return the size of this collection - */ - public int getUserColoursCount() - { - return this._userColoursList.size(); - } - - /** - * Method getViewport. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.binding.Viewport at the given index - */ - public jalview.binding.Viewport getViewport(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._viewportList.size()) - { - throw new IndexOutOfBoundsException( - "getViewport: Index value '" + index + "' not in range [0.." - + (this._viewportList.size() - 1) + "]"); - } - - return (jalview.binding.Viewport) _viewportList.get(index); - } - - /** - * Method getViewport.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 jalview.binding.Viewport[] getViewport() - { - jalview.binding.Viewport[] array = new jalview.binding.Viewport[0]; - return (jalview.binding.Viewport[]) this._viewportList.toArray(array); - } - - /** - * Method getViewportCount. - * - * @return the size of this collection - */ - public int getViewportCount() - { - return this._viewportList.size(); - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllJGroup() - { - this._JGroupList.clear(); - } - - /** - */ - public void removeAllJSeq() - { - this._JSeqList.clear(); - } - - /** - */ - public void removeAllTree() - { - this._treeList.clear(); - } - - /** - */ - public void removeAllUserColours() - { - this._userColoursList.clear(); - } - - /** - */ - public void removeAllViewport() - { - this._viewportList.clear(); - } - - /** - * Method removeJGroup. - * - * @param vJGroup - * @return true if the object was removed from the collection. - */ - public boolean removeJGroup(final jalview.binding.JGroup vJGroup) - { - boolean removed = _JGroupList.remove(vJGroup); - return removed; - } - - /** - * Method removeJGroupAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.binding.JGroup removeJGroupAt(final int index) - { - java.lang.Object obj = this._JGroupList.remove(index); - return (jalview.binding.JGroup) obj; - } - - /** - * Method removeJSeq. - * - * @param vJSeq - * @return true if the object was removed from the collection. - */ - public boolean removeJSeq(final jalview.binding.JSeq vJSeq) - { - boolean removed = _JSeqList.remove(vJSeq); - return removed; - } - - /** - * Method removeJSeqAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.binding.JSeq removeJSeqAt(final int index) - { - java.lang.Object obj = this._JSeqList.remove(index); - return (jalview.binding.JSeq) obj; - } - - /** - * Method removeTree. - * - * @param vTree - * @return true if the object was removed from the collection. - */ - public boolean removeTree(final jalview.binding.Tree vTree) - { - boolean removed = _treeList.remove(vTree); - return removed; - } - - /** - * Method removeTreeAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.binding.Tree removeTreeAt(final int index) - { - java.lang.Object obj = this._treeList.remove(index); - return (jalview.binding.Tree) obj; - } - - /** - * Method removeUserColours. - * - * @param vUserColours - * @return true if the object was removed from the collection. - */ - public boolean removeUserColours( - final jalview.binding.UserColours vUserColours) - { - boolean removed = _userColoursList.remove(vUserColours); - return removed; - } - - /** - * Method removeUserColoursAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.binding.UserColours removeUserColoursAt(final int index) - { - java.lang.Object obj = this._userColoursList.remove(index); - return (jalview.binding.UserColours) obj; - } - - /** - * Method removeViewport. - * - * @param vViewport - * @return true if the object was removed from the collection. - */ - public boolean removeViewport(final jalview.binding.Viewport vViewport) - { - boolean removed = _viewportList.remove(vViewport); - return removed; - } - - /** - * Method removeViewportAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.binding.Viewport removeViewportAt(final int index) - { - java.lang.Object obj = this._viewportList.remove(index); - return (jalview.binding.Viewport) obj; - } - - /** - * Sets the value of field 'featureSettings'. - * - * @param featureSettings - * the value of field 'featureSettings'. - */ - public void setFeatureSettings( - final jalview.binding.FeatureSettings featureSettings) - { - this._featureSettings = featureSettings; - } - - /** - * - * - * @param index - * @param vJGroup - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setJGroup(final int index, - final jalview.binding.JGroup vJGroup) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._JGroupList.size()) - { - throw new IndexOutOfBoundsException( - "setJGroup: Index value '" + index + "' not in range [0.." - + (this._JGroupList.size() - 1) + "]"); - } - - this._JGroupList.set(index, vJGroup); - } - - /** - * - * - * @param vJGroupArray - */ - public void setJGroup(final jalview.binding.JGroup[] vJGroupArray) - { - // -- copy array - _JGroupList.clear(); - - for (int i = 0; i < vJGroupArray.length; i++) - { - this._JGroupList.add(vJGroupArray[i]); - } - } - - /** - * - * - * @param index - * @param vJSeq - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setJSeq(final int index, final jalview.binding.JSeq vJSeq) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._JSeqList.size()) - { - throw new IndexOutOfBoundsException("setJSeq: Index value '" + index - + "' not in range [0.." + (this._JSeqList.size() - 1) + "]"); - } - - this._JSeqList.set(index, vJSeq); - } - - /** - * - * - * @param vJSeqArray - */ - public void setJSeq(final jalview.binding.JSeq[] vJSeqArray) - { - // -- copy array - _JSeqList.clear(); - - for (int i = 0; i < vJSeqArray.length; i++) - { - this._JSeqList.add(vJSeqArray[i]); - } - } - - /** - * - * - * @param index - * @param vTree - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setTree(final int index, final jalview.binding.Tree vTree) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._treeList.size()) - { - throw new IndexOutOfBoundsException("setTree: Index value '" + index - + "' not in range [0.." + (this._treeList.size() - 1) + "]"); - } - - this._treeList.set(index, vTree); - } - - /** - * - * - * @param vTreeArray - */ - public void setTree(final jalview.binding.Tree[] vTreeArray) - { - // -- copy array - _treeList.clear(); - - for (int i = 0; i < vTreeArray.length; i++) - { - this._treeList.add(vTreeArray[i]); - } - } - - /** - * - * - * @param index - * @param vUserColours - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setUserColours(final int index, - final jalview.binding.UserColours vUserColours) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._userColoursList.size()) - { - throw new IndexOutOfBoundsException("setUserColours: Index value '" - + index + "' not in range [0.." - + (this._userColoursList.size() - 1) + "]"); - } - - this._userColoursList.set(index, vUserColours); - } - - /** - * - * - * @param vUserColoursArray - */ - public void setUserColours( - final jalview.binding.UserColours[] vUserColoursArray) - { - // -- copy array - _userColoursList.clear(); - - for (int i = 0; i < vUserColoursArray.length; i++) - { - this._userColoursList.add(vUserColoursArray[i]); - } - } - - /** - * - * - * @param index - * @param vViewport - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setViewport(final int index, - final jalview.binding.Viewport vViewport) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._viewportList.size()) - { - throw new IndexOutOfBoundsException( - "setViewport: Index value '" + index + "' not in range [0.." - + (this._viewportList.size() - 1) + "]"); - } - - this._viewportList.set(index, vViewport); - } - - /** - * - * - * @param vViewportArray - */ - public void setViewport(final jalview.binding.Viewport[] vViewportArray) - { - // -- copy array - _viewportList.clear(); - - for (int i = 0; i < vViewportArray.length; i++) - { - this._viewportList.add(vViewportArray[i]); - } - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.JalviewModelSequence - */ - public static jalview.binding.JalviewModelSequence unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.JalviewModelSequence) Unmarshaller - .unmarshal(jalview.binding.JalviewModelSequence.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/JalviewUserColours.java b/src/jalview/binding/JalviewUserColours.java deleted file mode 100644 index 67ee5a2..0000000 --- a/src/jalview/binding/JalviewUserColours.java +++ /dev/null @@ -1,503 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class JalviewUserColours. - * - * @version $Revision$ $Date$ - */ -public class JalviewUserColours implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _schemeName. - */ - private java.lang.String _schemeName; - - /** - * Jalview colour scheme document version. - * - */ - private java.lang.String _version; - - /** - * Field _colourList. - */ - private java.util.Vector _colourList; - - /** - * Field _filterList. - */ - private java.util.Vector _filterList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public JalviewUserColours() - { - super(); - this._colourList = new java.util.Vector(); - this._filterList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vColour - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addColour(final Colour vColour) - throws java.lang.IndexOutOfBoundsException - { - this._colourList.addElement(vColour); - } - - /** - * - * - * @param index - * @param vColour - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addColour(final int index, final Colour vColour) - throws java.lang.IndexOutOfBoundsException - { - this._colourList.add(index, vColour); - } - - /** - * - * - * @param vFilter - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addFilter(final Filter vFilter) - throws java.lang.IndexOutOfBoundsException - { - this._filterList.addElement(vFilter); - } - - /** - * - * - * @param index - * @param vFilter - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addFilter(final int index, final Filter vFilter) - throws java.lang.IndexOutOfBoundsException - { - this._filterList.add(index, vFilter); - } - - /** - * Method enumerateColour. - * - * @return an Enumeration over all Colour elements - */ - public java.util.Enumeration enumerateColour() - { - return this._colourList.elements(); - } - - /** - * Method enumerateFilter. - * - * @return an Enumeration over all Filter elements - */ - public java.util.Enumeration enumerateFilter() - { - return this._filterList.elements(); - } - - /** - * Method getColour. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the Colour at the given index - */ - public Colour getColour(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._colourList.size()) - { - throw new IndexOutOfBoundsException( - "getColour: Index value '" + index + "' not in range [0.." - + (this._colourList.size() - 1) + "]"); - } - - return (Colour) _colourList.get(index); - } - - /** - * Method getColour.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 Colour[] getColour() - { - Colour[] array = new Colour[0]; - return (Colour[]) this._colourList.toArray(array); - } - - /** - * Method getColourCount. - * - * @return the size of this collection - */ - public int getColourCount() - { - return this._colourList.size(); - } - - /** - * Method getFilter. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the Filter at the given index - */ - public Filter getFilter(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._filterList.size()) - { - throw new IndexOutOfBoundsException( - "getFilter: Index value '" + index + "' not in range [0.." - + (this._filterList.size() - 1) + "]"); - } - - return (Filter) _filterList.get(index); - } - - /** - * Method getFilter.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 Filter[] getFilter() - { - Filter[] array = new Filter[0]; - return (Filter[]) this._filterList.toArray(array); - } - - /** - * Method getFilterCount. - * - * @return the size of this collection - */ - public int getFilterCount() - { - return this._filterList.size(); - } - - /** - * Returns the value of field 'schemeName'. - * - * @return the value of field 'SchemeName'. - */ - public java.lang.String getSchemeName() - { - return this._schemeName; - } - - /** - * Returns the value of field 'version'. The field 'version' has the following - * description: Jalview colour scheme document version. - * - * - * @return the value of field 'Version'. - */ - public java.lang.String getVersion() - { - return this._version; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllColour() - { - this._colourList.clear(); - } - - /** - */ - public void removeAllFilter() - { - this._filterList.clear(); - } - - /** - * Method removeColour. - * - * @param vColour - * @return true if the object was removed from the collection. - */ - public boolean removeColour(final Colour vColour) - { - boolean removed = _colourList.remove(vColour); - return removed; - } - - /** - * Method removeColourAt. - * - * @param index - * @return the element removed from the collection - */ - public Colour removeColourAt(final int index) - { - java.lang.Object obj = this._colourList.remove(index); - return (Colour) obj; - } - - /** - * Method removeFilter. - * - * @param vFilter - * @return true if the object was removed from the collection. - */ - public boolean removeFilter(final Filter vFilter) - { - boolean removed = _filterList.remove(vFilter); - return removed; - } - - /** - * Method removeFilterAt. - * - * @param index - * @return the element removed from the collection - */ - public Filter removeFilterAt(final int index) - { - java.lang.Object obj = this._filterList.remove(index); - return (Filter) obj; - } - - /** - * - * - * @param index - * @param vColour - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setColour(final int index, final Colour vColour) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._colourList.size()) - { - throw new IndexOutOfBoundsException( - "setColour: Index value '" + index + "' not in range [0.." - + (this._colourList.size() - 1) + "]"); - } - - this._colourList.set(index, vColour); - } - - /** - * - * - * @param vColourArray - */ - public void setColour(final Colour[] vColourArray) - { - // -- copy array - _colourList.clear(); - - for (int i = 0; i < vColourArray.length; i++) - { - this._colourList.add(vColourArray[i]); - } - } - - /** - * - * - * @param index - * @param vFilter - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setFilter(final int index, final Filter vFilter) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._filterList.size()) - { - throw new IndexOutOfBoundsException( - "setFilter: Index value '" + index + "' not in range [0.." - + (this._filterList.size() - 1) + "]"); - } - - this._filterList.set(index, vFilter); - } - - /** - * - * - * @param vFilterArray - */ - public void setFilter(final Filter[] vFilterArray) - { - // -- copy array - _filterList.clear(); - - for (int i = 0; i < vFilterArray.length; i++) - { - this._filterList.add(vFilterArray[i]); - } - } - - /** - * Sets the value of field 'schemeName'. - * - * @param schemeName - * the value of field 'schemeName'. - */ - public void setSchemeName(final java.lang.String schemeName) - { - this._schemeName = schemeName; - } - - /** - * Sets the value of field 'version'. The field 'version' has the following - * description: Jalview colour scheme document version. - * - * - * @param version - * the value of field 'version'. - */ - public void setVersion(final java.lang.String version) - { - this._version = version; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.JalviewUserColours - */ - public static jalview.binding.JalviewUserColours unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.JalviewUserColours) Unmarshaller - .unmarshal(jalview.binding.JalviewUserColours.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/MatchCondition.java b/src/jalview/binding/MatchCondition.java deleted file mode 100644 index 44a3d3e..0000000 --- a/src/jalview/binding/MatchCondition.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class MatchCondition. - * - * @version $Revision$ $Date$ - */ -public class MatchCondition extends FeatureMatcher - implements java.io.Serializable -{ - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public MatchCondition() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.FeatureMatcher - */ - public static jalview.binding.FeatureMatcher unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.FeatureMatcher) Unmarshaller - .unmarshal(jalview.binding.MatchCondition.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/MatcherSet.java b/src/jalview/binding/MatcherSet.java deleted file mode 100644 index 756d93a..0000000 --- a/src/jalview/binding/MatcherSet.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class MatcherSet. - * - * @version $Revision$ $Date$ - */ -public class MatcherSet extends FeatureMatcherSet - implements java.io.Serializable -{ - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public MatcherSet() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.FeatureMatcherSet - */ - public static jalview.binding.FeatureMatcherSet unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.FeatureMatcherSet) Unmarshaller - .unmarshal(jalview.binding.MatcherSet.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/Pdbentry.java b/src/jalview/binding/Pdbentry.java deleted file mode 100644 index 77bb446..0000000 --- a/src/jalview/binding/Pdbentry.java +++ /dev/null @@ -1,344 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Pdbentry. - * - * @version $Revision$ $Date$ - */ -public class Pdbentry implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _id. - */ - private java.lang.String _id; - - /** - * Field _type. - */ - private java.lang.String _type; - - /** - * Field _items. - */ - private java.util.Vector _items; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Pdbentry() - { - super(); - this._items = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vPdbentryItem - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addPdbentryItem( - final jalview.binding.PdbentryItem vPdbentryItem) - throws java.lang.IndexOutOfBoundsException - { - this._items.addElement(vPdbentryItem); - } - - /** - * - * - * @param index - * @param vPdbentryItem - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addPdbentryItem(final int index, - final jalview.binding.PdbentryItem vPdbentryItem) - throws java.lang.IndexOutOfBoundsException - { - this._items.add(index, vPdbentryItem); - } - - /** - * Method enumeratePdbentryItem. - * - * @return an Enumeration over all jalview.binding.PdbentryItem elements - */ - public java.util.Enumeration enumeratePdbentryItem() - { - return this._items.elements(); - } - - /** - * Returns the value of field 'id'. - * - * @return the value of field 'Id'. - */ - public java.lang.String getId() - { - return this._id; - } - - /** - * Method getPdbentryItem. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.binding.PdbentryItem at the given index - */ - public jalview.binding.PdbentryItem getPdbentryItem(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._items.size()) - { - throw new IndexOutOfBoundsException("getPdbentryItem: Index value '" - + index + "' not in range [0.." + (this._items.size() - 1) - + "]"); - } - - return (jalview.binding.PdbentryItem) _items.get(index); - } - - /** - * Method getPdbentryItem.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 jalview.binding.PdbentryItem[] getPdbentryItem() - { - jalview.binding.PdbentryItem[] array = new jalview.binding.PdbentryItem[0]; - return (jalview.binding.PdbentryItem[]) this._items.toArray(array); - } - - /** - * Method getPdbentryItemCount. - * - * @return the size of this collection - */ - public int getPdbentryItemCount() - { - return this._items.size(); - } - - /** - * Returns the value of field 'type'. - * - * @return the value of field 'Type'. - */ - public java.lang.String getType() - { - return this._type; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllPdbentryItem() - { - this._items.clear(); - } - - /** - * Method removePdbentryItem. - * - * @param vPdbentryItem - * @return true if the object was removed from the collection. - */ - public boolean removePdbentryItem( - final jalview.binding.PdbentryItem vPdbentryItem) - { - boolean removed = _items.remove(vPdbentryItem); - return removed; - } - - /** - * Method removePdbentryItemAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.binding.PdbentryItem removePdbentryItemAt(final int index) - { - java.lang.Object obj = this._items.remove(index); - return (jalview.binding.PdbentryItem) obj; - } - - /** - * Sets the value of field 'id'. - * - * @param id - * the value of field 'id'. - */ - public void setId(final java.lang.String id) - { - this._id = id; - } - - /** - * - * - * @param index - * @param vPdbentryItem - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setPdbentryItem(final int index, - final jalview.binding.PdbentryItem vPdbentryItem) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._items.size()) - { - throw new IndexOutOfBoundsException("setPdbentryItem: Index value '" - + index + "' not in range [0.." + (this._items.size() - 1) - + "]"); - } - - this._items.set(index, vPdbentryItem); - } - - /** - * - * - * @param vPdbentryItemArray - */ - public void setPdbentryItem( - final jalview.binding.PdbentryItem[] vPdbentryItemArray) - { - // -- copy array - _items.clear(); - - for (int i = 0; i < vPdbentryItemArray.length; i++) - { - this._items.add(vPdbentryItemArray[i]); - } - } - - /** - * Sets the value of field 'type'. - * - * @param type - * the value of field 'type'. - */ - public void setType(final java.lang.String type) - { - this._type = type; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.Pdbentry - */ - public static jalview.binding.Pdbentry unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.Pdbentry) Unmarshaller - .unmarshal(jalview.binding.Pdbentry.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/PdbentryItem.java b/src/jalview/binding/PdbentryItem.java deleted file mode 100644 index 30a0512..0000000 --- a/src/jalview/binding/PdbentryItem.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -/** - * Class PdbentryItem. - * - * @version $Revision$ $Date$ - */ -public class PdbentryItem implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _propertyList. - */ - private java.util.Vector _propertyList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public PdbentryItem() - { - super(); - this._propertyList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vProperty - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addProperty(final jalview.binding.Property vProperty) - throws java.lang.IndexOutOfBoundsException - { - this._propertyList.addElement(vProperty); - } - - /** - * - * - * @param index - * @param vProperty - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addProperty(final int index, - final jalview.binding.Property vProperty) - throws java.lang.IndexOutOfBoundsException - { - this._propertyList.add(index, vProperty); - } - - /** - * Method enumerateProperty. - * - * @return an Enumeration over all jalview.binding.Property elements - */ - public java.util.Enumeration enumerateProperty() - { - return this._propertyList.elements(); - } - - /** - * Method getProperty. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.binding.Property at the given index - */ - public jalview.binding.Property getProperty(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._propertyList.size()) - { - throw new IndexOutOfBoundsException( - "getProperty: Index value '" + index + "' not in range [0.." - + (this._propertyList.size() - 1) + "]"); - } - - return (jalview.binding.Property) _propertyList.get(index); - } - - /** - * Method getProperty.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 jalview.binding.Property[] getProperty() - { - jalview.binding.Property[] array = new jalview.binding.Property[0]; - return (jalview.binding.Property[]) this._propertyList.toArray(array); - } - - /** - * Method getPropertyCount. - * - * @return the size of this collection - */ - public int getPropertyCount() - { - return this._propertyList.size(); - } - - /** - */ - public void removeAllProperty() - { - this._propertyList.clear(); - } - - /** - * Method removeProperty. - * - * @param vProperty - * @return true if the object was removed from the collection. - */ - public boolean removeProperty(final jalview.binding.Property vProperty) - { - boolean removed = _propertyList.remove(vProperty); - return removed; - } - - /** - * Method removePropertyAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.binding.Property removePropertyAt(final int index) - { - java.lang.Object obj = this._propertyList.remove(index); - return (jalview.binding.Property) obj; - } - - /** - * - * - * @param index - * @param vProperty - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setProperty(final int index, - final jalview.binding.Property vProperty) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._propertyList.size()) - { - throw new IndexOutOfBoundsException( - "setProperty: Index value '" + index + "' not in range [0.." - + (this._propertyList.size() - 1) + "]"); - } - - this._propertyList.set(index, vProperty); - } - - /** - * - * - * @param vPropertyArray - */ - public void setProperty(final jalview.binding.Property[] vPropertyArray) - { - // -- copy array - _propertyList.clear(); - - for (int i = 0; i < vPropertyArray.length; i++) - { - this._propertyList.add(vPropertyArray[i]); - } - } - -} diff --git a/src/jalview/binding/Pdbids.java b/src/jalview/binding/Pdbids.java deleted file mode 100644 index 79cae6c..0000000 --- a/src/jalview/binding/Pdbids.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Pdbids. - * - * @version $Revision$ $Date$ - */ -public class Pdbids extends Pdbentry implements java.io.Serializable -{ - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Pdbids() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.Pdbentry - */ - public static jalview.binding.Pdbentry unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.Pdbentry) Unmarshaller - .unmarshal(jalview.binding.Pdbids.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/Property.java b/src/jalview/binding/Property.java deleted file mode 100644 index 5823fed..0000000 --- a/src/jalview/binding/Property.java +++ /dev/null @@ -1,180 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Property. - * - * @version $Revision$ $Date$ - */ -public class Property implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _name. - */ - private java.lang.String _name; - - /** - * Field _value. - */ - private java.lang.String _value; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Property() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'name'. - * - * @return the value of field 'Name'. - */ - public java.lang.String getName() - { - return this._name; - } - - /** - * Returns the value of field 'value'. - * - * @return the value of field 'Value'. - */ - public java.lang.String getValue() - { - return this._value; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'name'. - * - * @param name - * the value of field 'name'. - */ - public void setName(final java.lang.String name) - { - this._name = name; - } - - /** - * Sets the value of field 'value'. - * - * @param value - * the value of field 'value'. - */ - public void setValue(final java.lang.String value) - { - this._value = value; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.Property - */ - public static jalview.binding.Property unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.Property) Unmarshaller - .unmarshal(jalview.binding.Property.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/Sequence.java b/src/jalview/binding/Sequence.java deleted file mode 100644 index 845f224..0000000 --- a/src/jalview/binding/Sequence.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Sequence. - * - * @version $Revision$ $Date$ - */ -public class Sequence extends SequenceType implements java.io.Serializable -{ - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Sequence() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.SequenceType - */ - public static jalview.binding.SequenceType unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.SequenceType) Unmarshaller - .unmarshal(jalview.binding.Sequence.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/SequenceSet.java b/src/jalview/binding/SequenceSet.java deleted file mode 100644 index 3d81bae..0000000 --- a/src/jalview/binding/SequenceSet.java +++ /dev/null @@ -1,538 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class SequenceSet. - * - * @version $Revision$ $Date$ - */ -public class SequenceSet implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _gapChar. - */ - private java.lang.String _gapChar; - - /** - * Field _aligned. - */ - private boolean _aligned; - - /** - * keeps track of state for field: _aligned - */ - private boolean _has_aligned; - - /** - * Field _sequenceList. - */ - private java.util.Vector _sequenceList; - - /** - * Field _annotationList. - */ - private java.util.Vector _annotationList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public SequenceSet() - { - super(); - this._sequenceList = new java.util.Vector(); - this._annotationList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vAnnotation - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAnnotation(final jalview.binding.Annotation vAnnotation) - throws java.lang.IndexOutOfBoundsException - { - this._annotationList.addElement(vAnnotation); - } - - /** - * - * - * @param index - * @param vAnnotation - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAnnotation(final int index, - final jalview.binding.Annotation vAnnotation) - throws java.lang.IndexOutOfBoundsException - { - this._annotationList.add(index, vAnnotation); - } - - /** - * - * - * @param vSequence - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSequence(final jalview.binding.Sequence vSequence) - throws java.lang.IndexOutOfBoundsException - { - this._sequenceList.addElement(vSequence); - } - - /** - * - * - * @param index - * @param vSequence - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSequence(final int index, - final jalview.binding.Sequence vSequence) - throws java.lang.IndexOutOfBoundsException - { - this._sequenceList.add(index, vSequence); - } - - /** - */ - public void deleteAligned() - { - this._has_aligned = false; - } - - /** - * Method enumerateAnnotation. - * - * @return an Enumeration over all jalview.binding.Annotation elements - */ - public java.util.Enumeration enumerateAnnotation() - { - return this._annotationList.elements(); - } - - /** - * Method enumerateSequence. - * - * @return an Enumeration over all jalview.binding.Sequence elements - */ - public java.util.Enumeration enumerateSequence() - { - return this._sequenceList.elements(); - } - - /** - * Returns the value of field 'aligned'. - * - * @return the value of field 'Aligned'. - */ - public boolean getAligned() - { - return this._aligned; - } - - /** - * Method getAnnotation. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.binding.Annotation at the given index - */ - public jalview.binding.Annotation getAnnotation(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._annotationList.size()) - { - throw new IndexOutOfBoundsException( - "getAnnotation: Index value '" + index + "' not in range [0.." - + (this._annotationList.size() - 1) + "]"); - } - - return (jalview.binding.Annotation) _annotationList.get(index); - } - - /** - * Method getAnnotation.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 jalview.binding.Annotation[] getAnnotation() - { - jalview.binding.Annotation[] array = new jalview.binding.Annotation[0]; - return (jalview.binding.Annotation[]) this._annotationList - .toArray(array); - } - - /** - * Method getAnnotationCount. - * - * @return the size of this collection - */ - public int getAnnotationCount() - { - return this._annotationList.size(); - } - - /** - * Returns the value of field 'gapChar'. - * - * @return the value of field 'GapChar'. - */ - public java.lang.String getGapChar() - { - return this._gapChar; - } - - /** - * Method getSequence. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.binding.Sequence at the given index - */ - public jalview.binding.Sequence getSequence(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._sequenceList.size()) - { - throw new IndexOutOfBoundsException( - "getSequence: Index value '" + index + "' not in range [0.." - + (this._sequenceList.size() - 1) + "]"); - } - - return (jalview.binding.Sequence) _sequenceList.get(index); - } - - /** - * Method getSequence.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 jalview.binding.Sequence[] getSequence() - { - jalview.binding.Sequence[] array = new jalview.binding.Sequence[0]; - return (jalview.binding.Sequence[]) this._sequenceList.toArray(array); - } - - /** - * Method getSequenceCount. - * - * @return the size of this collection - */ - public int getSequenceCount() - { - return this._sequenceList.size(); - } - - /** - * Method hasAligned. - * - * @return true if at least one Aligned has been added - */ - public boolean hasAligned() - { - return this._has_aligned; - } - - /** - * Returns the value of field 'aligned'. - * - * @return the value of field 'Aligned'. - */ - public boolean isAligned() - { - return this._aligned; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllAnnotation() - { - this._annotationList.clear(); - } - - /** - */ - public void removeAllSequence() - { - this._sequenceList.clear(); - } - - /** - * Method removeAnnotation. - * - * @param vAnnotation - * @return true if the object was removed from the collection. - */ - public boolean removeAnnotation( - final jalview.binding.Annotation vAnnotation) - { - boolean removed = _annotationList.remove(vAnnotation); - return removed; - } - - /** - * Method removeAnnotationAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.binding.Annotation removeAnnotationAt(final int index) - { - java.lang.Object obj = this._annotationList.remove(index); - return (jalview.binding.Annotation) obj; - } - - /** - * Method removeSequence. - * - * @param vSequence - * @return true if the object was removed from the collection. - */ - public boolean removeSequence(final jalview.binding.Sequence vSequence) - { - boolean removed = _sequenceList.remove(vSequence); - return removed; - } - - /** - * Method removeSequenceAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.binding.Sequence removeSequenceAt(final int index) - { - java.lang.Object obj = this._sequenceList.remove(index); - return (jalview.binding.Sequence) obj; - } - - /** - * Sets the value of field 'aligned'. - * - * @param aligned - * the value of field 'aligned'. - */ - public void setAligned(final boolean aligned) - { - this._aligned = aligned; - this._has_aligned = true; - } - - /** - * - * - * @param index - * @param vAnnotation - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setAnnotation(final int index, - final jalview.binding.Annotation vAnnotation) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._annotationList.size()) - { - throw new IndexOutOfBoundsException( - "setAnnotation: Index value '" + index + "' not in range [0.." - + (this._annotationList.size() - 1) + "]"); - } - - this._annotationList.set(index, vAnnotation); - } - - /** - * - * - * @param vAnnotationArray - */ - public void setAnnotation( - final jalview.binding.Annotation[] vAnnotationArray) - { - // -- copy array - _annotationList.clear(); - - for (int i = 0; i < vAnnotationArray.length; i++) - { - this._annotationList.add(vAnnotationArray[i]); - } - } - - /** - * Sets the value of field 'gapChar'. - * - * @param gapChar - * the value of field 'gapChar'. - */ - public void setGapChar(final java.lang.String gapChar) - { - this._gapChar = gapChar; - } - - /** - * - * - * @param index - * @param vSequence - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setSequence(final int index, - final jalview.binding.Sequence vSequence) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._sequenceList.size()) - { - throw new IndexOutOfBoundsException( - "setSequence: Index value '" + index + "' not in range [0.." - + (this._sequenceList.size() - 1) + "]"); - } - - this._sequenceList.set(index, vSequence); - } - - /** - * - * - * @param vSequenceArray - */ - public void setSequence(final jalview.binding.Sequence[] vSequenceArray) - { - // -- copy array - _sequenceList.clear(); - - for (int i = 0; i < vSequenceArray.length; i++) - { - this._sequenceList.add(vSequenceArray[i]); - } - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.SequenceSet - */ - public static jalview.binding.SequenceSet unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.SequenceSet) Unmarshaller - .unmarshal(jalview.binding.SequenceSet.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/SequenceType.java b/src/jalview/binding/SequenceType.java deleted file mode 100644 index 7f10bca..0000000 --- a/src/jalview/binding/SequenceType.java +++ /dev/null @@ -1,206 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class SequenceType. - * - * @version $Revision$ $Date$ - */ -public class SequenceType implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _id. - */ - private java.lang.String _id; - - /** - * Field _sequence. - */ - private java.lang.String _sequence; - - /** - * Field _name. - */ - private java.lang.String _name; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public SequenceType() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'id'. - * - * @return the value of field 'Id'. - */ - public java.lang.String getId() - { - return this._id; - } - - /** - * Returns the value of field 'name'. - * - * @return the value of field 'Name'. - */ - public java.lang.String getName() - { - return this._name; - } - - /** - * Returns the value of field 'sequence'. - * - * @return the value of field 'Sequence'. - */ - public java.lang.String getSequence() - { - return this._sequence; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'id'. - * - * @param id - * the value of field 'id'. - */ - public void setId(final java.lang.String id) - { - this._id = id; - } - - /** - * Sets the value of field 'name'. - * - * @param name - * the value of field 'name'. - */ - public void setName(final java.lang.String name) - { - this._name = name; - } - - /** - * Sets the value of field 'sequence'. - * - * @param sequence - * the value of field 'sequence'. - */ - public void setSequence(final java.lang.String sequence) - { - this._sequence = sequence; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.SequenceType - */ - public static jalview.binding.SequenceType unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.SequenceType) Unmarshaller - .unmarshal(jalview.binding.SequenceType.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/Setting.java b/src/jalview/binding/Setting.java deleted file mode 100644 index d098303..0000000 --- a/src/jalview/binding/Setting.java +++ /dev/null @@ -1,262 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Setting. - * - * @version $Revision$ $Date$ - */ -public class Setting implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _type. - */ - private java.lang.String _type; - - /** - * Field _colour. - */ - private int _colour; - - /** - * keeps track of state for field: _colour - */ - private boolean _has_colour; - - /** - * Field _display. - */ - private boolean _display; - - /** - * keeps track of state for field: _display - */ - private boolean _has_display; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Setting() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - */ - public void deleteColour() - { - this._has_colour = false; - } - - /** - */ - public void deleteDisplay() - { - this._has_display = false; - } - - /** - * Returns the value of field 'colour'. - * - * @return the value of field 'Colour'. - */ - public int getColour() - { - return this._colour; - } - - /** - * Returns the value of field 'display'. - * - * @return the value of field 'Display'. - */ - public boolean getDisplay() - { - return this._display; - } - - /** - * Returns the value of field 'type'. - * - * @return the value of field 'Type'. - */ - public java.lang.String getType() - { - return this._type; - } - - /** - * Method hasColour. - * - * @return true if at least one Colour has been added - */ - public boolean hasColour() - { - return this._has_colour; - } - - /** - * Method hasDisplay. - * - * @return true if at least one Display has been added - */ - public boolean hasDisplay() - { - return this._has_display; - } - - /** - * Returns the value of field 'display'. - * - * @return the value of field 'Display'. - */ - public boolean isDisplay() - { - return this._display; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'colour'. - * - * @param colour - * the value of field 'colour'. - */ - public void setColour(final int colour) - { - this._colour = colour; - this._has_colour = true; - } - - /** - * Sets the value of field 'display'. - * - * @param display - * the value of field 'display'. - */ - public void setDisplay(final boolean display) - { - this._display = display; - this._has_display = true; - } - - /** - * Sets the value of field 'type'. - * - * @param type - * the value of field 'type'. - */ - public void setType(final java.lang.String type) - { - this._type = type; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.Setting - */ - public static jalview.binding.Setting unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.Setting) Unmarshaller - .unmarshal(jalview.binding.Setting.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/Tree.java b/src/jalview/binding/Tree.java deleted file mode 100644 index 7005c93..0000000 --- a/src/jalview/binding/Tree.java +++ /dev/null @@ -1,843 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Tree. - * - * @version $Revision$ $Date$ - */ -public class Tree implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _width. - */ - private int _width; - - /** - * keeps track of state for field: _width - */ - private boolean _has_width; - - /** - * Field _height. - */ - private int _height; - - /** - * keeps track of state for field: _height - */ - private boolean _has_height; - - /** - * Field _xpos. - */ - private int _xpos; - - /** - * keeps track of state for field: _xpos - */ - private boolean _has_xpos; - - /** - * Field _ypos. - */ - private int _ypos; - - /** - * keeps track of state for field: _ypos - */ - private boolean _has_ypos; - - /** - * Field _fontName. - */ - private java.lang.String _fontName; - - /** - * Field _fontSize. - */ - private int _fontSize; - - /** - * keeps track of state for field: _fontSize - */ - private boolean _has_fontSize; - - /** - * Field _fontStyle. - */ - private int _fontStyle; - - /** - * keeps track of state for field: _fontStyle - */ - private boolean _has_fontStyle; - - /** - * Field _threshold. - */ - private float _threshold; - - /** - * keeps track of state for field: _threshold - */ - private boolean _has_threshold; - - /** - * Field _showBootstrap. - */ - private boolean _showBootstrap; - - /** - * keeps track of state for field: _showBootstrap - */ - private boolean _has_showBootstrap; - - /** - * Field _showDistances. - */ - private boolean _showDistances; - - /** - * keeps track of state for field: _showDistances - */ - private boolean _has_showDistances; - - /** - * Field _markUnlinked. - */ - private boolean _markUnlinked; - - /** - * keeps track of state for field: _markUnlinked - */ - private boolean _has_markUnlinked; - - /** - * Field _fitToWindow. - */ - private boolean _fitToWindow; - - /** - * keeps track of state for field: _fitToWindow - */ - private boolean _has_fitToWindow; - - /** - * Field _currentTree. - */ - private boolean _currentTree; - - /** - * keeps track of state for field: _currentTree - */ - private boolean _has_currentTree; - - /** - * Field _title. - */ - private java.lang.String _title; - - /** - * Field _newick. - */ - private java.lang.String _newick; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Tree() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - */ - public void deleteCurrentTree() - { - this._has_currentTree = false; - } - - /** - */ - public void deleteFitToWindow() - { - this._has_fitToWindow = false; - } - - /** - */ - public void deleteFontSize() - { - this._has_fontSize = false; - } - - /** - */ - public void deleteFontStyle() - { - this._has_fontStyle = false; - } - - /** - */ - public void deleteHeight() - { - this._has_height = false; - } - - /** - */ - public void deleteMarkUnlinked() - { - this._has_markUnlinked = false; - } - - /** - */ - public void deleteShowBootstrap() - { - this._has_showBootstrap = false; - } - - /** - */ - public void deleteShowDistances() - { - this._has_showDistances = false; - } - - /** - */ - public void deleteThreshold() - { - this._has_threshold = false; - } - - /** - */ - public void deleteWidth() - { - this._has_width = false; - } - - /** - */ - public void deleteXpos() - { - this._has_xpos = false; - } - - /** - */ - public void deleteYpos() - { - this._has_ypos = false; - } - - /** - * Returns the value of field 'currentTree'. - * - * @return the value of field 'CurrentTree'. - */ - public boolean getCurrentTree() - { - return this._currentTree; - } - - /** - * Returns the value of field 'fitToWindow'. - * - * @return the value of field 'FitToWindow'. - */ - public boolean getFitToWindow() - { - return this._fitToWindow; - } - - /** - * Returns the value of field 'fontName'. - * - * @return the value of field 'FontName'. - */ - public java.lang.String getFontName() - { - return this._fontName; - } - - /** - * Returns the value of field 'fontSize'. - * - * @return the value of field 'FontSize'. - */ - public int getFontSize() - { - return this._fontSize; - } - - /** - * Returns the value of field 'fontStyle'. - * - * @return the value of field 'FontStyle'. - */ - public int getFontStyle() - { - return this._fontStyle; - } - - /** - * Returns the value of field 'height'. - * - * @return the value of field 'Height'. - */ - public int getHeight() - { - return this._height; - } - - /** - * Returns the value of field 'markUnlinked'. - * - * @return the value of field 'MarkUnlinked'. - */ - public boolean getMarkUnlinked() - { - return this._markUnlinked; - } - - /** - * Returns the value of field 'newick'. - * - * @return the value of field 'Newick'. - */ - public java.lang.String getNewick() - { - return this._newick; - } - - /** - * Returns the value of field 'showBootstrap'. - * - * @return the value of field 'ShowBootstrap'. - */ - public boolean getShowBootstrap() - { - return this._showBootstrap; - } - - /** - * Returns the value of field 'showDistances'. - * - * @return the value of field 'ShowDistances'. - */ - public boolean getShowDistances() - { - return this._showDistances; - } - - /** - * Returns the value of field 'threshold'. - * - * @return the value of field 'Threshold'. - */ - public float getThreshold() - { - return this._threshold; - } - - /** - * Returns the value of field 'title'. - * - * @return the value of field 'Title'. - */ - public java.lang.String getTitle() - { - return this._title; - } - - /** - * Returns the value of field 'width'. - * - * @return the value of field 'Width'. - */ - public int getWidth() - { - return this._width; - } - - /** - * Returns the value of field 'xpos'. - * - * @return the value of field 'Xpos'. - */ - public int getXpos() - { - return this._xpos; - } - - /** - * Returns the value of field 'ypos'. - * - * @return the value of field 'Ypos'. - */ - public int getYpos() - { - return this._ypos; - } - - /** - * Method hasCurrentTree. - * - * @return true if at least one CurrentTree has been added - */ - public boolean hasCurrentTree() - { - return this._has_currentTree; - } - - /** - * Method hasFitToWindow. - * - * @return true if at least one FitToWindow has been added - */ - public boolean hasFitToWindow() - { - return this._has_fitToWindow; - } - - /** - * Method hasFontSize. - * - * @return true if at least one FontSize has been added - */ - public boolean hasFontSize() - { - return this._has_fontSize; - } - - /** - * Method hasFontStyle. - * - * @return true if at least one FontStyle has been added - */ - public boolean hasFontStyle() - { - return this._has_fontStyle; - } - - /** - * Method hasHeight. - * - * @return true if at least one Height has been added - */ - public boolean hasHeight() - { - return this._has_height; - } - - /** - * Method hasMarkUnlinked. - * - * @return true if at least one MarkUnlinked has been added - */ - public boolean hasMarkUnlinked() - { - return this._has_markUnlinked; - } - - /** - * Method hasShowBootstrap. - * - * @return true if at least one ShowBootstrap has been added - */ - public boolean hasShowBootstrap() - { - return this._has_showBootstrap; - } - - /** - * Method hasShowDistances. - * - * @return true if at least one ShowDistances has been added - */ - public boolean hasShowDistances() - { - return this._has_showDistances; - } - - /** - * Method hasThreshold. - * - * @return true if at least one Threshold has been added - */ - public boolean hasThreshold() - { - return this._has_threshold; - } - - /** - * Method hasWidth. - * - * @return true if at least one Width has been added - */ - public boolean hasWidth() - { - return this._has_width; - } - - /** - * Method hasXpos. - * - * @return true if at least one Xpos has been added - */ - public boolean hasXpos() - { - return this._has_xpos; - } - - /** - * Method hasYpos. - * - * @return true if at least one Ypos has been added - */ - public boolean hasYpos() - { - return this._has_ypos; - } - - /** - * Returns the value of field 'currentTree'. - * - * @return the value of field 'CurrentTree'. - */ - public boolean isCurrentTree() - { - return this._currentTree; - } - - /** - * Returns the value of field 'fitToWindow'. - * - * @return the value of field 'FitToWindow'. - */ - public boolean isFitToWindow() - { - return this._fitToWindow; - } - - /** - * Returns the value of field 'markUnlinked'. - * - * @return the value of field 'MarkUnlinked'. - */ - public boolean isMarkUnlinked() - { - return this._markUnlinked; - } - - /** - * Returns the value of field 'showBootstrap'. - * - * @return the value of field 'ShowBootstrap'. - */ - public boolean isShowBootstrap() - { - return this._showBootstrap; - } - - /** - * Returns the value of field 'showDistances'. - * - * @return the value of field 'ShowDistances'. - */ - public boolean isShowDistances() - { - return this._showDistances; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'currentTree'. - * - * @param currentTree - * the value of field 'currentTree'. - */ - public void setCurrentTree(final boolean currentTree) - { - this._currentTree = currentTree; - this._has_currentTree = true; - } - - /** - * Sets the value of field 'fitToWindow'. - * - * @param fitToWindow - * the value of field 'fitToWindow'. - */ - public void setFitToWindow(final boolean fitToWindow) - { - this._fitToWindow = fitToWindow; - this._has_fitToWindow = true; - } - - /** - * Sets the value of field 'fontName'. - * - * @param fontName - * the value of field 'fontName'. - */ - public void setFontName(final java.lang.String fontName) - { - this._fontName = fontName; - } - - /** - * Sets the value of field 'fontSize'. - * - * @param fontSize - * the value of field 'fontSize'. - */ - public void setFontSize(final int fontSize) - { - this._fontSize = fontSize; - this._has_fontSize = true; - } - - /** - * Sets the value of field 'fontStyle'. - * - * @param fontStyle - * the value of field 'fontStyle'. - */ - public void setFontStyle(final int fontStyle) - { - this._fontStyle = fontStyle; - this._has_fontStyle = true; - } - - /** - * Sets the value of field 'height'. - * - * @param height - * the value of field 'height'. - */ - public void setHeight(final int height) - { - this._height = height; - this._has_height = true; - } - - /** - * Sets the value of field 'markUnlinked'. - * - * @param markUnlinked - * the value of field 'markUnlinked'. - */ - public void setMarkUnlinked(final boolean markUnlinked) - { - this._markUnlinked = markUnlinked; - this._has_markUnlinked = true; - } - - /** - * Sets the value of field 'newick'. - * - * @param newick - * the value of field 'newick'. - */ - public void setNewick(final java.lang.String newick) - { - this._newick = newick; - } - - /** - * Sets the value of field 'showBootstrap'. - * - * @param showBootstrap - * the value of field 'showBootstrap'. - */ - public void setShowBootstrap(final boolean showBootstrap) - { - this._showBootstrap = showBootstrap; - this._has_showBootstrap = true; - } - - /** - * Sets the value of field 'showDistances'. - * - * @param showDistances - * the value of field 'showDistances'. - */ - public void setShowDistances(final boolean showDistances) - { - this._showDistances = showDistances; - this._has_showDistances = true; - } - - /** - * Sets the value of field 'threshold'. - * - * @param threshold - * the value of field 'threshold'. - */ - public void setThreshold(final float threshold) - { - this._threshold = threshold; - this._has_threshold = true; - } - - /** - * Sets the value of field 'title'. - * - * @param title - * the value of field 'title'. - */ - public void setTitle(final java.lang.String title) - { - this._title = title; - } - - /** - * Sets the value of field 'width'. - * - * @param width - * the value of field 'width'. - */ - public void setWidth(final int width) - { - this._width = width; - this._has_width = true; - } - - /** - * Sets the value of field 'xpos'. - * - * @param xpos - * the value of field 'xpos'. - */ - public void setXpos(final int xpos) - { - this._xpos = xpos; - this._has_xpos = true; - } - - /** - * Sets the value of field 'ypos'. - * - * @param ypos - * the value of field 'ypos'. - */ - public void setYpos(final int ypos) - { - this._ypos = ypos; - this._has_ypos = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.Tree - */ - public static jalview.binding.Tree unmarshal(final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.Tree) Unmarshaller - .unmarshal(jalview.binding.Tree.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/UserColourScheme.java b/src/jalview/binding/UserColourScheme.java deleted file mode 100644 index e1a1a2f..0000000 --- a/src/jalview/binding/UserColourScheme.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class UserColourScheme. - * - * @version $Revision$ $Date$ - */ -public class UserColourScheme extends JalviewUserColours - implements java.io.Serializable -{ - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public UserColourScheme() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.JalviewUserColours - */ - public static jalview.binding.JalviewUserColours unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.JalviewUserColours) Unmarshaller - .unmarshal(jalview.binding.UserColourScheme.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/UserColours.java b/src/jalview/binding/UserColours.java deleted file mode 100644 index 9dbcc9e..0000000 --- a/src/jalview/binding/UserColours.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class UserColours. - * - * @version $Revision$ $Date$ - */ -public class UserColours implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _id. - */ - private java.lang.String _id; - - /** - * Field _userColourScheme. - */ - private jalview.binding.UserColourScheme _userColourScheme; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public UserColours() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'id'. - * - * @return the value of field 'Id'. - */ - public java.lang.String getId() - { - return this._id; - } - - /** - * Returns the value of field 'userColourScheme'. - * - * @return the value of field 'UserColourScheme'. - */ - public jalview.binding.UserColourScheme getUserColourScheme() - { - return this._userColourScheme; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'id'. - * - * @param id - * the value of field 'id'. - */ - public void setId(final java.lang.String id) - { - this._id = id; - } - - /** - * Sets the value of field 'userColourScheme'. - * - * @param userColourScheme - * the value of field 'userColourScheme' - */ - public void setUserColourScheme( - final jalview.binding.UserColourScheme userColourScheme) - { - this._userColourScheme = userColourScheme; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.UserColours - */ - public static jalview.binding.UserColours unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.UserColours) Unmarshaller - .unmarshal(jalview.binding.UserColours.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/VAMSAS.java b/src/jalview/binding/VAMSAS.java deleted file mode 100644 index b5a32da..0000000 --- a/src/jalview/binding/VAMSAS.java +++ /dev/null @@ -1,605 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class VAMSAS. - * - * @version $Revision$ $Date$ - */ -public class VAMSAS implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _alignmentList. - */ - private java.util.Vector _alignmentList; - - /** - * Field _treeList. - */ - private java.util.Vector _treeList; - - /** - * Field _sequenceSetList. - */ - private java.util.Vector _sequenceSetList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public VAMSAS() - { - super(); - this._alignmentList = new java.util.Vector(); - this._treeList = new java.util.Vector(); - this._sequenceSetList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vAlignment - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAlignment(final Alignment vAlignment) - throws java.lang.IndexOutOfBoundsException - { - this._alignmentList.addElement(vAlignment); - } - - /** - * - * - * @param index - * @param vAlignment - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAlignment(final int index, final Alignment vAlignment) - throws java.lang.IndexOutOfBoundsException - { - this._alignmentList.add(index, vAlignment); - } - - /** - * - * - * @param vSequenceSet - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSequenceSet(final SequenceSet vSequenceSet) - throws java.lang.IndexOutOfBoundsException - { - this._sequenceSetList.addElement(vSequenceSet); - } - - /** - * - * - * @param index - * @param vSequenceSet - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSequenceSet(final int index, - final SequenceSet vSequenceSet) - throws java.lang.IndexOutOfBoundsException - { - this._sequenceSetList.add(index, vSequenceSet); - } - - /** - * - * - * @param vTree - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addTree(final java.lang.String vTree) - throws java.lang.IndexOutOfBoundsException - { - this._treeList.addElement(vTree); - } - - /** - * - * - * @param index - * @param vTree - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addTree(final int index, final java.lang.String vTree) - throws java.lang.IndexOutOfBoundsException - { - this._treeList.add(index, vTree); - } - - /** - * Method enumerateAlignment. - * - * @return an Enumeration over all Alignment elements - */ - public java.util.Enumeration enumerateAlignment() - { - return this._alignmentList.elements(); - } - - /** - * Method enumerateSequenceSet. - * - * @return an Enumeration over all SequenceSet elements - */ - public java.util.Enumeration enumerateSequenceSet() - { - return this._sequenceSetList.elements(); - } - - /** - * Method enumerateTree. - * - * @return an Enumeration over all java.lang.String elements - */ - public java.util.Enumeration enumerateTree() - { - return this._treeList.elements(); - } - - /** - * Method getAlignment. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the Alignment at the given index - */ - public Alignment getAlignment(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._alignmentList.size()) - { - throw new IndexOutOfBoundsException( - "getAlignment: Index value '" + index + "' not in range [0.." - + (this._alignmentList.size() - 1) + "]"); - } - - return (Alignment) _alignmentList.get(index); - } - - /** - * Method getAlignment.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 Alignment[] getAlignment() - { - Alignment[] array = new Alignment[0]; - return (Alignment[]) this._alignmentList.toArray(array); - } - - /** - * Method getAlignmentCount. - * - * @return the size of this collection - */ - public int getAlignmentCount() - { - return this._alignmentList.size(); - } - - /** - * Method getSequenceSet. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the SequenceSet at the given index - */ - public SequenceSet getSequenceSet(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._sequenceSetList.size()) - { - throw new IndexOutOfBoundsException("getSequenceSet: Index value '" - + index + "' not in range [0.." - + (this._sequenceSetList.size() - 1) + "]"); - } - - return (SequenceSet) _sequenceSetList.get(index); - } - - /** - * Method getSequenceSet.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 SequenceSet[] getSequenceSet() - { - SequenceSet[] array = new SequenceSet[0]; - return (SequenceSet[]) this._sequenceSetList.toArray(array); - } - - /** - * Method getSequenceSetCount. - * - * @return the size of this collection - */ - public int getSequenceSetCount() - { - return this._sequenceSetList.size(); - } - - /** - * Method getTree. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the java.lang.String at the given index - */ - public java.lang.String getTree(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._treeList.size()) - { - throw new IndexOutOfBoundsException("getTree: Index value '" + index - + "' not in range [0.." + (this._treeList.size() - 1) + "]"); - } - - return (java.lang.String) _treeList.get(index); - } - - /** - * Method getTree.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.String[] getTree() - { - java.lang.String[] array = new java.lang.String[0]; - return (java.lang.String[]) this._treeList.toArray(array); - } - - /** - * Method getTreeCount. - * - * @return the size of this collection - */ - public int getTreeCount() - { - return this._treeList.size(); - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Method removeAlignment. - * - * @param vAlignment - * @return true if the object was removed from the collection. - */ - public boolean removeAlignment(final Alignment vAlignment) - { - boolean removed = _alignmentList.remove(vAlignment); - return removed; - } - - /** - * Method removeAlignmentAt. - * - * @param index - * @return the element removed from the collection - */ - public Alignment removeAlignmentAt(final int index) - { - java.lang.Object obj = this._alignmentList.remove(index); - return (Alignment) obj; - } - - /** - */ - public void removeAllAlignment() - { - this._alignmentList.clear(); - } - - /** - */ - public void removeAllSequenceSet() - { - this._sequenceSetList.clear(); - } - - /** - */ - public void removeAllTree() - { - this._treeList.clear(); - } - - /** - * Method removeSequenceSet. - * - * @param vSequenceSet - * @return true if the object was removed from the collection. - */ - public boolean removeSequenceSet(final SequenceSet vSequenceSet) - { - boolean removed = _sequenceSetList.remove(vSequenceSet); - return removed; - } - - /** - * Method removeSequenceSetAt. - * - * @param index - * @return the element removed from the collection - */ - public SequenceSet removeSequenceSetAt(final int index) - { - java.lang.Object obj = this._sequenceSetList.remove(index); - return (SequenceSet) obj; - } - - /** - * Method removeTree. - * - * @param vTree - * @return true if the object was removed from the collection. - */ - public boolean removeTree(final java.lang.String vTree) - { - boolean removed = _treeList.remove(vTree); - return removed; - } - - /** - * Method removeTreeAt. - * - * @param index - * @return the element removed from the collection - */ - public java.lang.String removeTreeAt(final int index) - { - java.lang.Object obj = this._treeList.remove(index); - return (java.lang.String) obj; - } - - /** - * - * - * @param index - * @param vAlignment - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setAlignment(final int index, final Alignment vAlignment) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._alignmentList.size()) - { - throw new IndexOutOfBoundsException( - "setAlignment: Index value '" + index + "' not in range [0.." - + (this._alignmentList.size() - 1) + "]"); - } - - this._alignmentList.set(index, vAlignment); - } - - /** - * - * - * @param vAlignmentArray - */ - public void setAlignment(final Alignment[] vAlignmentArray) - { - // -- copy array - _alignmentList.clear(); - - for (int i = 0; i < vAlignmentArray.length; i++) - { - this._alignmentList.add(vAlignmentArray[i]); - } - } - - /** - * - * - * @param index - * @param vSequenceSet - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setSequenceSet(final int index, - final SequenceSet vSequenceSet) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._sequenceSetList.size()) - { - throw new IndexOutOfBoundsException("setSequenceSet: Index value '" - + index + "' not in range [0.." - + (this._sequenceSetList.size() - 1) + "]"); - } - - this._sequenceSetList.set(index, vSequenceSet); - } - - /** - * - * - * @param vSequenceSetArray - */ - public void setSequenceSet(final SequenceSet[] vSequenceSetArray) - { - // -- copy array - _sequenceSetList.clear(); - - for (int i = 0; i < vSequenceSetArray.length; i++) - { - this._sequenceSetList.add(vSequenceSetArray[i]); - } - } - - /** - * - * - * @param index - * @param vTree - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setTree(final int index, final java.lang.String vTree) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._treeList.size()) - { - throw new IndexOutOfBoundsException("setTree: Index value '" + index - + "' not in range [0.." + (this._treeList.size() - 1) + "]"); - } - - this._treeList.set(index, vTree); - } - - /** - * - * - * @param vTreeArray - */ - public void setTree(final java.lang.String[] vTreeArray) - { - // -- copy array - _treeList.clear(); - - for (int i = 0; i < vTreeArray.length; i++) - { - this._treeList.add(vTreeArray[i]); - } - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.VAMSAS - */ - public static jalview.binding.VAMSAS unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.VAMSAS) Unmarshaller - .unmarshal(jalview.binding.VAMSAS.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/VamsasModel.java b/src/jalview/binding/VamsasModel.java deleted file mode 100644 index d3c90cf..0000000 --- a/src/jalview/binding/VamsasModel.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class VamsasModel. - * - * @version $Revision$ $Date$ - */ -public class VamsasModel extends VAMSAS implements java.io.Serializable -{ - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public VamsasModel() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.VAMSAS - */ - public static jalview.binding.VAMSAS unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.VAMSAS) Unmarshaller - .unmarshal(jalview.binding.VamsasModel.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/Viewport.java b/src/jalview/binding/Viewport.java deleted file mode 100644 index 183e048..0000000 --- a/src/jalview/binding/Viewport.java +++ /dev/null @@ -1,1463 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Viewport. - * - * @version $Revision$ $Date$ - */ -public class Viewport implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _conservationSelected. - */ - private boolean _conservationSelected; - - /** - * keeps track of state for field: _conservationSelected - */ - private boolean _has_conservationSelected; - - /** - * Field _pidSelected. - */ - private boolean _pidSelected; - - /** - * keeps track of state for field: _pidSelected - */ - private boolean _has_pidSelected; - - /** - * Field _bgColour. - */ - private java.lang.String _bgColour; - - /** - * Field _consThreshold. - */ - private int _consThreshold; - - /** - * keeps track of state for field: _consThreshold - */ - private boolean _has_consThreshold; - - /** - * Field _pidThreshold. - */ - private int _pidThreshold; - - /** - * keeps track of state for field: _pidThreshold - */ - private boolean _has_pidThreshold; - - /** - * Field _title. - */ - private java.lang.String _title; - - /** - * Field _showFullId. - */ - private boolean _showFullId; - - /** - * keeps track of state for field: _showFullId - */ - private boolean _has_showFullId; - - /** - * Field _showText. - */ - private boolean _showText; - - /** - * keeps track of state for field: _showText - */ - private boolean _has_showText; - - /** - * Field _showColourText. - */ - private boolean _showColourText; - - /** - * keeps track of state for field: _showColourText - */ - private boolean _has_showColourText; - - /** - * Field _showBoxes. - */ - private boolean _showBoxes; - - /** - * keeps track of state for field: _showBoxes - */ - private boolean _has_showBoxes; - - /** - * Field _wrapAlignment. - */ - private boolean _wrapAlignment; - - /** - * keeps track of state for field: _wrapAlignment - */ - private boolean _has_wrapAlignment; - - /** - * Field _renderGaps. - */ - private boolean _renderGaps; - - /** - * keeps track of state for field: _renderGaps - */ - private boolean _has_renderGaps; - - /** - * Field _showSequenceFeatures. - */ - private boolean _showSequenceFeatures; - - /** - * keeps track of state for field: _showSequenceFeatures - */ - private boolean _has_showSequenceFeatures; - - /** - * Field _showAnnotation. - */ - private boolean _showAnnotation; - - /** - * keeps track of state for field: _showAnnotation - */ - private boolean _has_showAnnotation; - - /** - * Field _showConservation. - */ - private boolean _showConservation; - - /** - * keeps track of state for field: _showConservation - */ - private boolean _has_showConservation; - - /** - * Field _showQuality. - */ - private boolean _showQuality; - - /** - * keeps track of state for field: _showQuality - */ - private boolean _has_showQuality; - - /** - * Field _showIdentity. - */ - private boolean _showIdentity; - - /** - * keeps track of state for field: _showIdentity - */ - private boolean _has_showIdentity; - - /** - * Field _xpos. - */ - private int _xpos; - - /** - * keeps track of state for field: _xpos - */ - private boolean _has_xpos; - - /** - * Field _ypos. - */ - private int _ypos; - - /** - * keeps track of state for field: _ypos - */ - private boolean _has_ypos; - - /** - * Field _width. - */ - private int _width; - - /** - * keeps track of state for field: _width - */ - private boolean _has_width; - - /** - * Field _height. - */ - private int _height; - - /** - * keeps track of state for field: _height - */ - private boolean _has_height; - - /** - * Field _startRes. - */ - private int _startRes; - - /** - * keeps track of state for field: _startRes - */ - private boolean _has_startRes; - - /** - * Field _startSeq. - */ - private int _startSeq; - - /** - * keeps track of state for field: _startSeq - */ - private boolean _has_startSeq; - - /** - * Field _fontName. - */ - private java.lang.String _fontName; - - /** - * Field _fontSize. - */ - private int _fontSize; - - /** - * keeps track of state for field: _fontSize - */ - private boolean _has_fontSize; - - /** - * Field _fontStyle. - */ - private int _fontStyle; - - /** - * keeps track of state for field: _fontStyle - */ - private boolean _has_fontStyle; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Viewport() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - */ - public void deleteConsThreshold() - { - this._has_consThreshold = false; - } - - /** - */ - public void deleteConservationSelected() - { - this._has_conservationSelected = false; - } - - /** - */ - public void deleteFontSize() - { - this._has_fontSize = false; - } - - /** - */ - public void deleteFontStyle() - { - this._has_fontStyle = false; - } - - /** - */ - public void deleteHeight() - { - this._has_height = false; - } - - /** - */ - public void deletePidSelected() - { - this._has_pidSelected = false; - } - - /** - */ - public void deletePidThreshold() - { - this._has_pidThreshold = false; - } - - /** - */ - public void deleteRenderGaps() - { - this._has_renderGaps = false; - } - - /** - */ - public void deleteShowAnnotation() - { - this._has_showAnnotation = false; - } - - /** - */ - public void deleteShowBoxes() - { - this._has_showBoxes = false; - } - - /** - */ - public void deleteShowColourText() - { - this._has_showColourText = false; - } - - /** - */ - public void deleteShowConservation() - { - this._has_showConservation = false; - } - - /** - */ - public void deleteShowFullId() - { - this._has_showFullId = false; - } - - /** - */ - public void deleteShowIdentity() - { - this._has_showIdentity = false; - } - - /** - */ - public void deleteShowQuality() - { - this._has_showQuality = false; - } - - /** - */ - public void deleteShowSequenceFeatures() - { - this._has_showSequenceFeatures = false; - } - - /** - */ - public void deleteShowText() - { - this._has_showText = false; - } - - /** - */ - public void deleteStartRes() - { - this._has_startRes = false; - } - - /** - */ - public void deleteStartSeq() - { - this._has_startSeq = false; - } - - /** - */ - public void deleteWidth() - { - this._has_width = false; - } - - /** - */ - public void deleteWrapAlignment() - { - this._has_wrapAlignment = false; - } - - /** - */ - public void deleteXpos() - { - this._has_xpos = false; - } - - /** - */ - public void deleteYpos() - { - this._has_ypos = false; - } - - /** - * Returns the value of field 'bgColour'. - * - * @return the value of field 'BgColour'. - */ - public java.lang.String getBgColour() - { - return this._bgColour; - } - - /** - * Returns the value of field 'consThreshold'. - * - * @return the value of field 'ConsThreshold'. - */ - public int getConsThreshold() - { - return this._consThreshold; - } - - /** - * Returns the value of field 'conservationSelected'. - * - * @return the value of field 'ConservationSelected'. - */ - public boolean getConservationSelected() - { - return this._conservationSelected; - } - - /** - * Returns the value of field 'fontName'. - * - * @return the value of field 'FontName'. - */ - public java.lang.String getFontName() - { - return this._fontName; - } - - /** - * Returns the value of field 'fontSize'. - * - * @return the value of field 'FontSize'. - */ - public int getFontSize() - { - return this._fontSize; - } - - /** - * Returns the value of field 'fontStyle'. - * - * @return the value of field 'FontStyle'. - */ - public int getFontStyle() - { - return this._fontStyle; - } - - /** - * Returns the value of field 'height'. - * - * @return the value of field 'Height'. - */ - public int getHeight() - { - return this._height; - } - - /** - * Returns the value of field 'pidSelected'. - * - * @return the value of field 'PidSelected'. - */ - public boolean getPidSelected() - { - return this._pidSelected; - } - - /** - * Returns the value of field 'pidThreshold'. - * - * @return the value of field 'PidThreshold'. - */ - public int getPidThreshold() - { - return this._pidThreshold; - } - - /** - * Returns the value of field 'renderGaps'. - * - * @return the value of field 'RenderGaps'. - */ - public boolean getRenderGaps() - { - return this._renderGaps; - } - - /** - * Returns the value of field 'showAnnotation'. - * - * @return the value of field 'ShowAnnotation'. - */ - public boolean getShowAnnotation() - { - return this._showAnnotation; - } - - /** - * Returns the value of field 'showBoxes'. - * - * @return the value of field 'ShowBoxes'. - */ - public boolean getShowBoxes() - { - return this._showBoxes; - } - - /** - * Returns the value of field 'showColourText'. - * - * @return the value of field 'ShowColourText'. - */ - public boolean getShowColourText() - { - return this._showColourText; - } - - /** - * Returns the value of field 'showConservation'. - * - * @return the value of field 'ShowConservation'. - */ - public boolean getShowConservation() - { - return this._showConservation; - } - - /** - * Returns the value of field 'showFullId'. - * - * @return the value of field 'ShowFullId'. - */ - public boolean getShowFullId() - { - return this._showFullId; - } - - /** - * Returns the value of field 'showIdentity'. - * - * @return the value of field 'ShowIdentity'. - */ - public boolean getShowIdentity() - { - return this._showIdentity; - } - - /** - * Returns the value of field 'showQuality'. - * - * @return the value of field 'ShowQuality'. - */ - public boolean getShowQuality() - { - return this._showQuality; - } - - /** - * Returns the value of field 'showSequenceFeatures'. - * - * @return the value of field 'ShowSequenceFeatures'. - */ - public boolean getShowSequenceFeatures() - { - return this._showSequenceFeatures; - } - - /** - * Returns the value of field 'showText'. - * - * @return the value of field 'ShowText'. - */ - public boolean getShowText() - { - return this._showText; - } - - /** - * Returns the value of field 'startRes'. - * - * @return the value of field 'StartRes'. - */ - public int getStartRes() - { - return this._startRes; - } - - /** - * Returns the value of field 'startSeq'. - * - * @return the value of field 'StartSeq'. - */ - public int getStartSeq() - { - return this._startSeq; - } - - /** - * Returns the value of field 'title'. - * - * @return the value of field 'Title'. - */ - public java.lang.String getTitle() - { - return this._title; - } - - /** - * Returns the value of field 'width'. - * - * @return the value of field 'Width'. - */ - public int getWidth() - { - return this._width; - } - - /** - * Returns the value of field 'wrapAlignment'. - * - * @return the value of field 'WrapAlignment'. - */ - public boolean getWrapAlignment() - { - return this._wrapAlignment; - } - - /** - * Returns the value of field 'xpos'. - * - * @return the value of field 'Xpos'. - */ - public int getXpos() - { - return this._xpos; - } - - /** - * Returns the value of field 'ypos'. - * - * @return the value of field 'Ypos'. - */ - public int getYpos() - { - return this._ypos; - } - - /** - * Method hasConsThreshold. - * - * @return true if at least one ConsThreshold has been added - */ - public boolean hasConsThreshold() - { - return this._has_consThreshold; - } - - /** - * Method hasConservationSelected. - * - * @return true if at least one ConservationSelected has been added - */ - public boolean hasConservationSelected() - { - return this._has_conservationSelected; - } - - /** - * Method hasFontSize. - * - * @return true if at least one FontSize has been added - */ - public boolean hasFontSize() - { - return this._has_fontSize; - } - - /** - * Method hasFontStyle. - * - * @return true if at least one FontStyle has been added - */ - public boolean hasFontStyle() - { - return this._has_fontStyle; - } - - /** - * Method hasHeight. - * - * @return true if at least one Height has been added - */ - public boolean hasHeight() - { - return this._has_height; - } - - /** - * Method hasPidSelected. - * - * @return true if at least one PidSelected has been added - */ - public boolean hasPidSelected() - { - return this._has_pidSelected; - } - - /** - * Method hasPidThreshold. - * - * @return true if at least one PidThreshold has been added - */ - public boolean hasPidThreshold() - { - return this._has_pidThreshold; - } - - /** - * Method hasRenderGaps. - * - * @return true if at least one RenderGaps has been added - */ - public boolean hasRenderGaps() - { - return this._has_renderGaps; - } - - /** - * Method hasShowAnnotation. - * - * @return true if at least one ShowAnnotation has been added - */ - public boolean hasShowAnnotation() - { - return this._has_showAnnotation; - } - - /** - * Method hasShowBoxes. - * - * @return true if at least one ShowBoxes has been added - */ - public boolean hasShowBoxes() - { - return this._has_showBoxes; - } - - /** - * Method hasShowColourText. - * - * @return true if at least one ShowColourText has been added - */ - public boolean hasShowColourText() - { - return this._has_showColourText; - } - - /** - * Method hasShowConservation. - * - * @return true if at least one ShowConservation has been added - */ - public boolean hasShowConservation() - { - return this._has_showConservation; - } - - /** - * Method hasShowFullId. - * - * @return true if at least one ShowFullId has been added - */ - public boolean hasShowFullId() - { - return this._has_showFullId; - } - - /** - * Method hasShowIdentity. - * - * @return true if at least one ShowIdentity has been added - */ - public boolean hasShowIdentity() - { - return this._has_showIdentity; - } - - /** - * Method hasShowQuality. - * - * @return true if at least one ShowQuality has been added - */ - public boolean hasShowQuality() - { - return this._has_showQuality; - } - - /** - * Method hasShowSequenceFeatures. - * - * @return true if at least one ShowSequenceFeatures has been added - */ - public boolean hasShowSequenceFeatures() - { - return this._has_showSequenceFeatures; - } - - /** - * Method hasShowText. - * - * @return true if at least one ShowText has been added - */ - public boolean hasShowText() - { - return this._has_showText; - } - - /** - * Method hasStartRes. - * - * @return true if at least one StartRes has been added - */ - public boolean hasStartRes() - { - return this._has_startRes; - } - - /** - * Method hasStartSeq. - * - * @return true if at least one StartSeq has been added - */ - public boolean hasStartSeq() - { - return this._has_startSeq; - } - - /** - * Method hasWidth. - * - * @return true if at least one Width has been added - */ - public boolean hasWidth() - { - return this._has_width; - } - - /** - * Method hasWrapAlignment. - * - * @return true if at least one WrapAlignment has been added - */ - public boolean hasWrapAlignment() - { - return this._has_wrapAlignment; - } - - /** - * Method hasXpos. - * - * @return true if at least one Xpos has been added - */ - public boolean hasXpos() - { - return this._has_xpos; - } - - /** - * Method hasYpos. - * - * @return true if at least one Ypos has been added - */ - public boolean hasYpos() - { - return this._has_ypos; - } - - /** - * Returns the value of field 'conservationSelected'. - * - * @return the value of field 'ConservationSelected'. - */ - public boolean isConservationSelected() - { - return this._conservationSelected; - } - - /** - * Returns the value of field 'pidSelected'. - * - * @return the value of field 'PidSelected'. - */ - public boolean isPidSelected() - { - return this._pidSelected; - } - - /** - * Returns the value of field 'renderGaps'. - * - * @return the value of field 'RenderGaps'. - */ - public boolean isRenderGaps() - { - return this._renderGaps; - } - - /** - * Returns the value of field 'showAnnotation'. - * - * @return the value of field 'ShowAnnotation'. - */ - public boolean isShowAnnotation() - { - return this._showAnnotation; - } - - /** - * Returns the value of field 'showBoxes'. - * - * @return the value of field 'ShowBoxes'. - */ - public boolean isShowBoxes() - { - return this._showBoxes; - } - - /** - * Returns the value of field 'showColourText'. - * - * @return the value of field 'ShowColourText'. - */ - public boolean isShowColourText() - { - return this._showColourText; - } - - /** - * Returns the value of field 'showConservation'. - * - * @return the value of field 'ShowConservation'. - */ - public boolean isShowConservation() - { - return this._showConservation; - } - - /** - * Returns the value of field 'showFullId'. - * - * @return the value of field 'ShowFullId'. - */ - public boolean isShowFullId() - { - return this._showFullId; - } - - /** - * Returns the value of field 'showIdentity'. - * - * @return the value of field 'ShowIdentity'. - */ - public boolean isShowIdentity() - { - return this._showIdentity; - } - - /** - * Returns the value of field 'showQuality'. - * - * @return the value of field 'ShowQuality'. - */ - public boolean isShowQuality() - { - return this._showQuality; - } - - /** - * Returns the value of field 'showSequenceFeatures'. - * - * @return the value of field 'ShowSequenceFeatures'. - */ - public boolean isShowSequenceFeatures() - { - return this._showSequenceFeatures; - } - - /** - * Returns the value of field 'showText'. - * - * @return the value of field 'ShowText'. - */ - public boolean isShowText() - { - return this._showText; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * Returns the value of field 'wrapAlignment'. - * - * @return the value of field 'WrapAlignment'. - */ - public boolean isWrapAlignment() - { - return this._wrapAlignment; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'bgColour'. - * - * @param bgColour - * the value of field 'bgColour'. - */ - public void setBgColour(final java.lang.String bgColour) - { - this._bgColour = bgColour; - } - - /** - * Sets the value of field 'consThreshold'. - * - * @param consThreshold - * the value of field 'consThreshold'. - */ - public void setConsThreshold(final int consThreshold) - { - this._consThreshold = consThreshold; - this._has_consThreshold = true; - } - - /** - * Sets the value of field 'conservationSelected'. - * - * @param conservationSelected - * the value of field 'conservationSelected'. - */ - public void setConservationSelected(final boolean conservationSelected) - { - this._conservationSelected = conservationSelected; - this._has_conservationSelected = true; - } - - /** - * Sets the value of field 'fontName'. - * - * @param fontName - * the value of field 'fontName'. - */ - public void setFontName(final java.lang.String fontName) - { - this._fontName = fontName; - } - - /** - * Sets the value of field 'fontSize'. - * - * @param fontSize - * the value of field 'fontSize'. - */ - public void setFontSize(final int fontSize) - { - this._fontSize = fontSize; - this._has_fontSize = true; - } - - /** - * Sets the value of field 'fontStyle'. - * - * @param fontStyle - * the value of field 'fontStyle'. - */ - public void setFontStyle(final int fontStyle) - { - this._fontStyle = fontStyle; - this._has_fontStyle = true; - } - - /** - * Sets the value of field 'height'. - * - * @param height - * the value of field 'height'. - */ - public void setHeight(final int height) - { - this._height = height; - this._has_height = true; - } - - /** - * Sets the value of field 'pidSelected'. - * - * @param pidSelected - * the value of field 'pidSelected'. - */ - public void setPidSelected(final boolean pidSelected) - { - this._pidSelected = pidSelected; - this._has_pidSelected = true; - } - - /** - * Sets the value of field 'pidThreshold'. - * - * @param pidThreshold - * the value of field 'pidThreshold'. - */ - public void setPidThreshold(final int pidThreshold) - { - this._pidThreshold = pidThreshold; - this._has_pidThreshold = true; - } - - /** - * Sets the value of field 'renderGaps'. - * - * @param renderGaps - * the value of field 'renderGaps'. - */ - public void setRenderGaps(final boolean renderGaps) - { - this._renderGaps = renderGaps; - this._has_renderGaps = true; - } - - /** - * Sets the value of field 'showAnnotation'. - * - * @param showAnnotation - * the value of field 'showAnnotation'. - */ - public void setShowAnnotation(final boolean showAnnotation) - { - this._showAnnotation = showAnnotation; - this._has_showAnnotation = true; - } - - /** - * Sets the value of field 'showBoxes'. - * - * @param showBoxes - * the value of field 'showBoxes'. - */ - public void setShowBoxes(final boolean showBoxes) - { - this._showBoxes = showBoxes; - this._has_showBoxes = true; - } - - /** - * Sets the value of field 'showColourText'. - * - * @param showColourText - * the value of field 'showColourText'. - */ - public void setShowColourText(final boolean showColourText) - { - this._showColourText = showColourText; - this._has_showColourText = true; - } - - /** - * Sets the value of field 'showConservation'. - * - * @param showConservation - * the value of field 'showConservation' - */ - public void setShowConservation(final boolean showConservation) - { - this._showConservation = showConservation; - this._has_showConservation = true; - } - - /** - * Sets the value of field 'showFullId'. - * - * @param showFullId - * the value of field 'showFullId'. - */ - public void setShowFullId(final boolean showFullId) - { - this._showFullId = showFullId; - this._has_showFullId = true; - } - - /** - * Sets the value of field 'showIdentity'. - * - * @param showIdentity - * the value of field 'showIdentity'. - */ - public void setShowIdentity(final boolean showIdentity) - { - this._showIdentity = showIdentity; - this._has_showIdentity = true; - } - - /** - * Sets the value of field 'showQuality'. - * - * @param showQuality - * the value of field 'showQuality'. - */ - public void setShowQuality(final boolean showQuality) - { - this._showQuality = showQuality; - this._has_showQuality = true; - } - - /** - * Sets the value of field 'showSequenceFeatures'. - * - * @param showSequenceFeatures - * the value of field 'showSequenceFeatures'. - */ - public void setShowSequenceFeatures(final boolean showSequenceFeatures) - { - this._showSequenceFeatures = showSequenceFeatures; - this._has_showSequenceFeatures = true; - } - - /** - * Sets the value of field 'showText'. - * - * @param showText - * the value of field 'showText'. - */ - public void setShowText(final boolean showText) - { - this._showText = showText; - this._has_showText = true; - } - - /** - * Sets the value of field 'startRes'. - * - * @param startRes - * the value of field 'startRes'. - */ - public void setStartRes(final int startRes) - { - this._startRes = startRes; - this._has_startRes = true; - } - - /** - * Sets the value of field 'startSeq'. - * - * @param startSeq - * the value of field 'startSeq'. - */ - public void setStartSeq(final int startSeq) - { - this._startSeq = startSeq; - this._has_startSeq = true; - } - - /** - * Sets the value of field 'title'. - * - * @param title - * the value of field 'title'. - */ - public void setTitle(final java.lang.String title) - { - this._title = title; - } - - /** - * Sets the value of field 'width'. - * - * @param width - * the value of field 'width'. - */ - public void setWidth(final int width) - { - this._width = width; - this._has_width = true; - } - - /** - * Sets the value of field 'wrapAlignment'. - * - * @param wrapAlignment - * the value of field 'wrapAlignment'. - */ - public void setWrapAlignment(final boolean wrapAlignment) - { - this._wrapAlignment = wrapAlignment; - this._has_wrapAlignment = true; - } - - /** - * Sets the value of field 'xpos'. - * - * @param xpos - * the value of field 'xpos'. - */ - public void setXpos(final int xpos) - { - this._xpos = xpos; - this._has_xpos = true; - } - - /** - * Sets the value of field 'ypos'. - * - * @param ypos - * the value of field 'ypos'. - */ - public void setYpos(final int ypos) - { - this._ypos = ypos; - this._has_ypos = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.binding.Viewport - */ - public static jalview.binding.Viewport unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.binding.Viewport) Unmarshaller - .unmarshal(jalview.binding.Viewport.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/binding/types/ColourThreshTypeType.java b/src/jalview/binding/types/ColourThreshTypeType.java deleted file mode 100644 index 024f2c0..0000000 --- a/src/jalview/binding/types/ColourThreshTypeType.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding.types; - - //---------------------------------/ - //- Imported classes and packages -/ -//---------------------------------/ - -import java.util.Hashtable; - -/** - * Class ColourThreshTypeType. - * - * @version $Revision$ $Date$ - */ -public class ColourThreshTypeType implements java.io.Serializable { - - - //--------------------------/ - //- Class/Member Variables -/ - //--------------------------/ - - /** - * The NONE type - */ - public static final int NONE_TYPE = 0; - - /** - * The instance of the NONE type - */ - public static final ColourThreshTypeType NONE = new ColourThreshTypeType(NONE_TYPE, "NONE"); - - /** - * The ABOVE type - */ - public static final int ABOVE_TYPE = 1; - - /** - * The instance of the ABOVE type - */ - public static final ColourThreshTypeType ABOVE = new ColourThreshTypeType(ABOVE_TYPE, "ABOVE"); - - /** - * The BELOW type - */ - public static final int BELOW_TYPE = 2; - - /** - * The instance of the BELOW type - */ - public static final ColourThreshTypeType BELOW = new ColourThreshTypeType(BELOW_TYPE, "BELOW"); - - /** - * Field _memberTable. - */ - private static java.util.Hashtable _memberTable = init(); - - /** - * Field type. - */ - private int type = -1; - - /** - * Field stringValue. - */ - private java.lang.String stringValue = null; - - - //----------------/ - //- Constructors -/ - //----------------/ - - private ColourThreshTypeType(final int type, final java.lang.String value) { - super(); - this.type = type; - this.stringValue = value; - } - - - //-----------/ - //- Methods -/ - //-----------/ - - /** - * Method enumerate.Returns an enumeration of all possible - * instances of ColourThreshTypeType - * - * @return an Enumeration over all possible instances of - * ColourThreshTypeType - */ - public static java.util.Enumeration enumerate( - ) { - return _memberTable.elements(); - } - - /** - * Method getType.Returns the type of this ColourThreshTypeType - * - * @return the type of this ColourThreshTypeType - */ - public int getType( - ) { - return this.type; - } - - /** - * Method init. - * - * @return the initialized Hashtable for the member table - */ - private static java.util.Hashtable init( - ) { - Hashtable members = new Hashtable(); - members.put("NONE", NONE); - members.put("ABOVE", ABOVE); - members.put("BELOW", BELOW); - return members; - } - - /** - * Method readResolve. will be called during deserialization to - * replace the deserialized object with the correct constant - * instance. - * - * @return this deserialized object - */ - private java.lang.Object readResolve( - ) { - return valueOf(this.stringValue); - } - - /** - * Method toString.Returns the String representation of this - * ColourThreshTypeType - * - * @return the String representation of this ColourThreshTypeTyp - */ - public java.lang.String toString( - ) { - return this.stringValue; - } - - /** - * Method valueOf.Returns a new ColourThreshTypeType based on - * the given String value. - * - * @param string - * @return the ColourThreshTypeType value of parameter 'string' - */ - public static jalview.binding.types.ColourThreshTypeType valueOf( - final java.lang.String string) { - java.lang.Object obj = null; - if (string != null) { - obj = _memberTable.get(string); - } - if (obj == null) { - String err = "" + string + " is not a valid ColourThreshTypeType"; - throw new IllegalArgumentException(err); - } - return (ColourThreshTypeType) obj; - } - -} diff --git a/src/jalview/binding/types/FeatureMatcherByType.java b/src/jalview/binding/types/FeatureMatcherByType.java deleted file mode 100644 index 2185bba..0000000 --- a/src/jalview/binding/types/FeatureMatcherByType.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding.types; - - //---------------------------------/ - //- Imported classes and packages -/ -//---------------------------------/ - -import java.util.Hashtable; - -/** - * Class FeatureMatcherByType. - * - * @version $Revision$ $Date$ - */ -public class FeatureMatcherByType implements java.io.Serializable { - - - //--------------------------/ - //- Class/Member Variables -/ - //--------------------------/ - - /** - * The byLabel type - */ - public static final int BYLABEL_TYPE = 0; - - /** - * The instance of the byLabel type - */ - public static final FeatureMatcherByType BYLABEL = new FeatureMatcherByType(BYLABEL_TYPE, "byLabel"); - - /** - * The byScore type - */ - public static final int BYSCORE_TYPE = 1; - - /** - * The instance of the byScore type - */ - public static final FeatureMatcherByType BYSCORE = new FeatureMatcherByType(BYSCORE_TYPE, "byScore"); - - /** - * The byAttribute type - */ - public static final int BYATTRIBUTE_TYPE = 2; - - /** - * The instance of the byAttribute type - */ - public static final FeatureMatcherByType BYATTRIBUTE = new FeatureMatcherByType(BYATTRIBUTE_TYPE, "byAttribute"); - - /** - * Field _memberTable. - */ - private static java.util.Hashtable _memberTable = init(); - - /** - * Field type. - */ - private int type = -1; - - /** - * Field stringValue. - */ - private java.lang.String stringValue = null; - - - //----------------/ - //- Constructors -/ - //----------------/ - - private FeatureMatcherByType(final int type, final java.lang.String value) { - super(); - this.type = type; - this.stringValue = value; - } - - - //-----------/ - //- Methods -/ - //-----------/ - - /** - * Method enumerate.Returns an enumeration of all possible - * instances of FeatureMatcherByType - * - * @return an Enumeration over all possible instances of - * FeatureMatcherByType - */ - public static java.util.Enumeration enumerate( - ) { - return _memberTable.elements(); - } - - /** - * Method getType.Returns the type of this FeatureMatcherByType - * - * @return the type of this FeatureMatcherByType - */ - public int getType( - ) { - return this.type; - } - - /** - * Method init. - * - * @return the initialized Hashtable for the member table - */ - private static java.util.Hashtable init( - ) { - Hashtable members = new Hashtable(); - members.put("byLabel", BYLABEL); - members.put("byScore", BYSCORE); - members.put("byAttribute", BYATTRIBUTE); - return members; - } - - /** - * Method readResolve. will be called during deserialization to - * replace the deserialized object with the correct constant - * instance. - * - * @return this deserialized object - */ - private java.lang.Object readResolve( - ) { - return valueOf(this.stringValue); - } - - /** - * Method toString.Returns the String representation of this - * FeatureMatcherByType - * - * @return the String representation of this FeatureMatcherByTyp - */ - public java.lang.String toString( - ) { - return this.stringValue; - } - - /** - * Method valueOf.Returns a new FeatureMatcherByType based on - * the given String value. - * - * @param string - * @return the FeatureMatcherByType value of parameter 'string' - */ - public static jalview.binding.types.FeatureMatcherByType valueOf( - final java.lang.String string) { - java.lang.Object obj = null; - if (string != null) { - obj = _memberTable.get(string); - } - if (obj == null) { - String err = "" + string + " is not a valid FeatureMatcherByType"; - throw new IllegalArgumentException(err); - } - return (FeatureMatcherByType) obj; - } - -} diff --git a/src/jalview/binding/types/NoValueColour.java b/src/jalview/binding/types/NoValueColour.java deleted file mode 100644 index c1540f6..0000000 --- a/src/jalview/binding/types/NoValueColour.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.binding.types; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import java.util.Hashtable; - -/** - * Graduated feature colour if no score (or attribute) value - * - * @version $Revision$ $Date$ - */ -public class NoValueColour implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * The None type - */ - public static final int NONE_TYPE = 0; - - /** - * The instance of the None type - */ - public static final NoValueColour NONE = new NoValueColour(NONE_TYPE, - "None"); - - /** - * The Min type - */ - public static final int MIN_TYPE = 1; - - /** - * The instance of the Min type - */ - public static final NoValueColour MIN = new NoValueColour(MIN_TYPE, - "Min"); - - /** - * The Max type - */ - public static final int MAX_TYPE = 2; - - /** - * The instance of the Max type - */ - public static final NoValueColour MAX = new NoValueColour(MAX_TYPE, - "Max"); - - /** - * Field _memberTable. - */ - private static java.util.Hashtable _memberTable = init(); - - /** - * Field type. - */ - private int type = -1; - - /** - * Field stringValue. - */ - private java.lang.String stringValue = null; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - private NoValueColour(final int type, final java.lang.String value) - { - super(); - this.type = type; - this.stringValue = value; - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method enumerate.Returns an enumeration of all possible instances of - * NoValueColour - * - * @return an Enumeration over all possible instances of NoValueColour - */ - public static java.util.Enumeration enumerate() - { - return _memberTable.elements(); - } - - /** - * Method getType.Returns the type of this NoValueColour - * - * @return the type of this NoValueColour - */ - public int getType() - { - return this.type; - } - - /** - * Method init. - * - * @return the initialized Hashtable for the member table - */ - private static java.util.Hashtable init() - { - Hashtable members = new Hashtable(); - members.put("None", NONE); - members.put("Min", MIN); - members.put("Max", MAX); - return members; - } - - /** - * Method readResolve. will be called during deserialization to replace the - * deserialized object with the correct constant instance. - * - * @return this deserialized object - */ - private java.lang.Object readResolve() - { - return valueOf(this.stringValue); - } - - /** - * Method toString.Returns the String representation of this NoValueColour - * - * @return the String representation of this NoValueColour - */ - public java.lang.String toString() - { - return this.stringValue; - } - - /** - * Method valueOf.Returns a new NoValueColour based on the given String value. - * - * @param string - * @return the NoValueColour value of parameter 'string' - */ - public static jalview.binding.types.NoValueColour valueOf( - final java.lang.String string) - { - java.lang.Object obj = null; - if (string != null) - { - obj = _memberTable.get(string); - } - if (obj == null) - { - String err = "" + string + " is not a valid NoValueColour"; - throw new IllegalArgumentException(err); - } - return (NoValueColour) obj; - } - -} diff --git a/src/jalview/gui/Desktop.java b/src/jalview/gui/Desktop.java index bbdddbb..b4a38a9 100644 --- a/src/jalview/gui/Desktop.java +++ b/src/jalview/gui/Desktop.java @@ -38,6 +38,7 @@ import jalview.io.JalviewFileChooser; import jalview.io.JalviewFileView; import jalview.jbgui.GSplitFrame; import jalview.jbgui.GStructureViewer; +import jalview.project.Jalview2XML; import jalview.structure.StructureSelectionManager; import jalview.urls.IdOrgSettings; import jalview.util.ImageMaker; @@ -1599,16 +1600,13 @@ public class Desktop extends jalview.jbgui.GDesktop } /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! + * Shows a file chooser dialog and writes out the current session as a Jalview + * project file */ @Override - public void saveState_actionPerformed(boolean asCastor) + public void saveState_actionPerformed() { - JalviewFileChooser chooser = new JalviewFileChooser( - asCastor ? "jvp" : "jvx", + JalviewFileChooser chooser = new JalviewFileChooser("jvp", "Jalview Project"); chooser.setFileView(new JalviewFileView()); @@ -1637,14 +1635,7 @@ public class Desktop extends jalview.jbgui.GDesktop // TODO prevent user from messing with the Desktop whilst we're saving try { - if (asCastor) - { - new Jalview2XML().saveState(choice); - } - else - { - new jalview.project.Jalview2XML().saveState(choice); - } + new Jalview2XML().saveState(choice); } catch (OutOfMemoryError oom) { new OOMWarning( @@ -1680,22 +1671,15 @@ public class Desktop extends jalview.jbgui.GDesktop } /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! + * Shows a file chooser dialog and tries to read in the selected file as a + * Jalview project */ @Override - public void loadState_actionPerformed(boolean asCastor) - { - final String[] suffix = asCastor ? new String[] { "jvp", "jar" } - : new String[] - { "jvx" }; - final String[] desc = asCastor - ? new String[] - { "Jalview Project", "Jalview Project (old)" } - : new String[] - { "Jalview Project" }; + public void loadState_actionPerformed() + { + final String[] suffix = new String[] { "jvp", "jar" }; + final String[] desc = new String[] { "Jalview Project", + "Jalview Project (old)" }; JalviewFileChooser chooser = new JalviewFileChooser( Cache.getProperty("LAST_DIRECTORY"), suffix, desc, @@ -1721,14 +1705,7 @@ public class Desktop extends jalview.jbgui.GDesktop { choice }), choice.hashCode()); try { - if (asCastor) - { - new Jalview2XML().loadJalviewAlign(choice); - } - else - { - new jalview.project.Jalview2XML().loadJalviewAlign(choice); - } + new Jalview2XML().loadJalviewAlign(choice); } catch (OutOfMemoryError oom) { new OOMWarning("Whilst loading project from " + choice, oom); diff --git a/src/jalview/gui/Jalview2XML.java b/src/jalview/gui/Jalview2XML.java deleted file mode 100644 index 87b8d87..0000000 --- a/src/jalview/gui/Jalview2XML.java +++ /dev/null @@ -1,5999 +0,0 @@ -/* - * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) - * Copyright (C) $$Year-Rel$$ The Jalview Authors - * - * This file is part of Jalview. - * - * Jalview is free software: you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 - * of the License, or (at your option) any later version. - * - * Jalview is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Jalview. If not, see . - * The Jalview Authors are detailed in the 'AUTHORS' file. - */ -package jalview.gui; - -import jalview.analysis.Conservation; -import jalview.api.FeatureColourI; -import jalview.api.ViewStyleI; -import jalview.api.structures.JalviewStructureDisplayI; -import jalview.bin.Cache; -import jalview.datamodel.AlignedCodonFrame; -import jalview.datamodel.Alignment; -import jalview.datamodel.AlignmentAnnotation; -import jalview.datamodel.AlignmentI; -import jalview.datamodel.GraphLine; -import jalview.datamodel.PDBEntry; -import jalview.datamodel.RnaViewerModel; -import jalview.datamodel.SequenceFeature; -import jalview.datamodel.SequenceGroup; -import jalview.datamodel.SequenceI; -import jalview.datamodel.StructureViewerModel; -import jalview.datamodel.StructureViewerModel.StructureData; -import jalview.datamodel.features.FeatureMatcher; -import jalview.datamodel.features.FeatureMatcherI; -import jalview.datamodel.features.FeatureMatcherSet; -import jalview.datamodel.features.FeatureMatcherSetI; -import jalview.ext.varna.RnaModel; -import jalview.gui.StructureViewer.ViewerType; -import jalview.io.DataSourceType; -import jalview.io.FileFormat; -import jalview.renderer.ResidueShaderI; -import jalview.schemabinding.version2.AlcodMap; -import jalview.schemabinding.version2.AlcodonFrame; -import jalview.schemabinding.version2.Annotation; -import jalview.schemabinding.version2.AnnotationColours; -import jalview.schemabinding.version2.AnnotationElement; -import jalview.schemabinding.version2.CalcIdParam; -import jalview.schemabinding.version2.Colour; -import jalview.schemabinding.version2.CompoundMatcher; -import jalview.schemabinding.version2.DBRef; -import jalview.schemabinding.version2.Features; -import jalview.schemabinding.version2.Group; -import jalview.schemabinding.version2.HiddenColumns; -import jalview.schemabinding.version2.JGroup; -import jalview.schemabinding.version2.JSeq; -import jalview.schemabinding.version2.JalviewModel; -import jalview.schemabinding.version2.JalviewModelSequence; -import jalview.schemabinding.version2.MapListFrom; -import jalview.schemabinding.version2.MapListTo; -import jalview.schemabinding.version2.Mapping; -import jalview.schemabinding.version2.MappingChoice; -import jalview.schemabinding.version2.MatchCondition; -import jalview.schemabinding.version2.MatcherSet; -import jalview.schemabinding.version2.OtherData; -import jalview.schemabinding.version2.PdbentryItem; -import jalview.schemabinding.version2.Pdbids; -import jalview.schemabinding.version2.Property; -import jalview.schemabinding.version2.RnaViewer; -import jalview.schemabinding.version2.SecondaryStructure; -import jalview.schemabinding.version2.Sequence; -import jalview.schemabinding.version2.SequenceSet; -import jalview.schemabinding.version2.SequenceSetProperties; -import jalview.schemabinding.version2.Setting; -import jalview.schemabinding.version2.StructureState; -import jalview.schemabinding.version2.ThresholdLine; -import jalview.schemabinding.version2.Tree; -import jalview.schemabinding.version2.UserColours; -import jalview.schemabinding.version2.Viewport; -import jalview.schemabinding.version2.types.ColourThreshTypeType; -import jalview.schemabinding.version2.types.FeatureMatcherByType; -import jalview.schemabinding.version2.types.NoValueColour; -import jalview.schemes.AnnotationColourGradient; -import jalview.schemes.ColourSchemeI; -import jalview.schemes.ColourSchemeProperty; -import jalview.schemes.FeatureColour; -import jalview.schemes.ResidueProperties; -import jalview.schemes.UserColourScheme; -import jalview.structure.StructureSelectionManager; -import jalview.structures.models.AAStructureBindingModel; -import jalview.util.Format; -import jalview.util.MessageManager; -import jalview.util.Platform; -import jalview.util.StringUtils; -import jalview.util.jarInputStreamProvider; -import jalview.util.matcher.Condition; -import jalview.viewmodel.AlignmentViewport; -import jalview.viewmodel.ViewportRanges; -import jalview.viewmodel.seqfeatures.FeatureRendererSettings; -import jalview.viewmodel.seqfeatures.FeaturesDisplayed; -import jalview.ws.jws2.Jws2Discoverer; -import jalview.ws.jws2.dm.AAConSettings; -import jalview.ws.jws2.jabaws2.Jws2Instance; -import jalview.ws.params.ArgumentI; -import jalview.ws.params.AutoCalcSetting; -import jalview.ws.params.WsParamSetI; - -import java.awt.Color; -import java.awt.Rectangle; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; -import java.lang.reflect.InvocationTargetException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Hashtable; -import java.util.IdentityHashMap; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.Vector; -import java.util.jar.JarEntry; -import java.util.jar.JarInputStream; -import java.util.jar.JarOutputStream; - -import javax.swing.JInternalFrame; -import javax.swing.SwingUtilities; - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Write out the current jalview desktop state as a Jalview XML stream. - * - * Note: the vamsas objects referred to here are primitive versions of the - * VAMSAS project schema elements - they are not the same and most likely never - * will be :) - * - * @author $author$ - * @version $Revision: 1.134 $ - */ -public class Jalview2XML -{ - private static final String VIEWER_PREFIX = "viewer_"; - - private static final String RNA_PREFIX = "rna_"; - - private static final String UTF_8 = "UTF-8"; - - // use this with nextCounter() to make unique names for entities - private int counter = 0; - - /* - * SequenceI reference -> XML ID string in jalview XML. Populated as XML reps - * of sequence objects are created. - */ - IdentityHashMap seqsToIds = null; - - /** - * jalview XML Sequence ID to jalview sequence object reference (both dataset - * and alignment sequences. Populated as XML reps of sequence objects are - * created.) - */ - Map seqRefIds = null; - - Map incompleteSeqs = null; - - List frefedSequence = null; - - boolean raiseGUI = true; // whether errors are raised in dialog boxes or not - - /* - * Map of reconstructed AlignFrame objects that appear to have come from - * SplitFrame objects (have a dna/protein complement view). - */ - private Map splitFrameCandidates = new HashMap<>(); - - /* - * Map from displayed rna structure models to their saved session state jar - * entry names - */ - private Map rnaSessions = new HashMap<>(); - - /** - * create/return unique hash string for sq - * - * @param sq - * @return new or existing unique string for sq - */ - String seqHash(SequenceI sq) - { - if (seqsToIds == null) - { - initSeqRefs(); - } - if (seqsToIds.containsKey(sq)) - { - return seqsToIds.get(sq); - } - else - { - // create sequential key - String key = "sq" + (seqsToIds.size() + 1); - key = makeHashCode(sq, key); // check we don't have an external reference - // for it already. - seqsToIds.put(sq, key); - return key; - } - } - - void initSeqRefs() - { - if (seqsToIds == null) - { - seqsToIds = new IdentityHashMap<>(); - } - if (seqRefIds == null) - { - seqRefIds = new HashMap<>(); - } - if (incompleteSeqs == null) - { - incompleteSeqs = new HashMap<>(); - } - if (frefedSequence == null) - { - frefedSequence = new ArrayList<>(); - } - } - - public Jalview2XML() - { - } - - public Jalview2XML(boolean raiseGUI) - { - this.raiseGUI = raiseGUI; - } - - /** - * base class for resolving forward references to sequences by their ID - * - * @author jprocter - * - */ - abstract class SeqFref - { - String sref; - - String type; - - public SeqFref(String _sref, String type) - { - sref = _sref; - this.type = type; - } - - public String getSref() - { - return sref; - } - - public SequenceI getSrefSeq() - { - return seqRefIds.get(sref); - } - - public boolean isResolvable() - { - return seqRefIds.get(sref) != null; - } - - public SequenceI getSrefDatasetSeq() - { - SequenceI sq = seqRefIds.get(sref); - if (sq != null) - { - while (sq.getDatasetSequence() != null) - { - sq = sq.getDatasetSequence(); - } - } - return sq; - } - - /** - * @return true if the forward reference was fully resolved - */ - abstract boolean resolve(); - - @Override - public String toString() - { - return type + " reference to " + sref; - } - } - - /** - * create forward reference for a mapping - * - * @param sref - * @param _jmap - * @return - */ - public SeqFref newMappingRef(final String sref, - final jalview.datamodel.Mapping _jmap) - { - SeqFref fref = new SeqFref(sref, "Mapping") - { - public jalview.datamodel.Mapping jmap = _jmap; - - @Override - boolean resolve() - { - SequenceI seq = getSrefDatasetSeq(); - if (seq == null) - { - return false; - } - jmap.setTo(seq); - return true; - } - }; - return fref; - } - - public SeqFref newAlcodMapRef(final String sref, - final AlignedCodonFrame _cf, - final jalview.datamodel.Mapping _jmap) - { - - SeqFref fref = new SeqFref(sref, "Codon Frame") - { - AlignedCodonFrame cf = _cf; - - public jalview.datamodel.Mapping mp = _jmap; - - @Override - public boolean isResolvable() - { - return super.isResolvable() && mp.getTo() != null; - }; - - @Override - boolean resolve() - { - SequenceI seq = getSrefDatasetSeq(); - if (seq == null) - { - return false; - } - cf.addMap(seq, mp.getTo(), mp.getMap()); - return true; - } - }; - return fref; - } - - public void resolveFrefedSequences() - { - Iterator nextFref = frefedSequence.iterator(); - int toresolve = frefedSequence.size(); - int unresolved = 0, failedtoresolve = 0; - while (nextFref.hasNext()) - { - SeqFref ref = nextFref.next(); - if (ref.isResolvable()) - { - try - { - if (ref.resolve()) - { - nextFref.remove(); - } - else - { - failedtoresolve++; - } - } catch (Exception x) - { - System.err.println( - "IMPLEMENTATION ERROR: Failed to resolve forward reference for sequence " - + ref.getSref()); - x.printStackTrace(); - failedtoresolve++; - } - } - else - { - unresolved++; - } - } - if (unresolved > 0) - { - System.err.println("Jalview Project Import: There were " + unresolved - + " forward references left unresolved on the stack."); - } - if (failedtoresolve > 0) - { - System.err.println("SERIOUS! " + failedtoresolve - + " resolvable forward references failed to resolve."); - } - if (incompleteSeqs != null && incompleteSeqs.size() > 0) - { - System.err.println( - "Jalview Project Import: There are " + incompleteSeqs.size() - + " sequences which may have incomplete metadata."); - if (incompleteSeqs.size() < 10) - { - for (SequenceI s : incompleteSeqs.values()) - { - System.err.println(s.toString()); - } - } - else - { - System.err.println( - "Too many to report. Skipping output of incomplete sequences."); - } - } - } - - /** - * This maintains a map of viewports, the key being the seqSetId. Important to - * set historyItem and redoList for multiple views - */ - Map viewportsAdded = new HashMap<>(); - - Map annotationIds = new HashMap<>(); - - String uniqueSetSuffix = ""; - - /** - * List of pdbfiles added to Jar - */ - List pdbfiles = null; - - // SAVES SEVERAL ALIGNMENT WINDOWS TO SAME JARFILE - public void saveState(File statefile) - { - FileOutputStream fos = null; - try - { - fos = new FileOutputStream(statefile); - JarOutputStream jout = new JarOutputStream(fos); - saveState(jout); - - } catch (Exception e) - { - // TODO: inform user of the problem - they need to know if their data was - // not saved ! - if (errorMessage == null) - { - errorMessage = "Couldn't write Jalview Archive to output file '" - + statefile + "' - See console error log for details"; - } - else - { - errorMessage += "(output file was '" + statefile + "')"; - } - e.printStackTrace(); - } finally - { - if (fos != null) - { - try - { - fos.close(); - } catch (IOException e) - { - // ignore - } - } - } - reportErrors(); - } - - /** - * Writes a jalview project archive to the given Jar output stream. - * - * @param jout - */ - public void saveState(JarOutputStream jout) - { - AlignFrame[] frames = Desktop.getAlignFrames(); - - if (frames == null) - { - return; - } - saveAllFrames(Arrays.asList(frames), jout); - } - - /** - * core method for storing state for a set of AlignFrames. - * - * @param frames - * - frames involving all data to be exported (including containing - * splitframes) - * @param jout - * - project output stream - */ - private void saveAllFrames(List frames, JarOutputStream jout) - { - Hashtable dsses = new Hashtable<>(); - - /* - * ensure cached data is clear before starting - */ - // todo tidy up seqRefIds, seqsToIds initialisation / reset - rnaSessions.clear(); - splitFrameCandidates.clear(); - - try - { - - // NOTE UTF-8 MUST BE USED FOR WRITING UNICODE CHARS - // ////////////////////////////////////////////////// - - List shortNames = new ArrayList<>(); - List viewIds = new ArrayList<>(); - - // REVERSE ORDER - for (int i = frames.size() - 1; i > -1; i--) - { - AlignFrame af = frames.get(i); - // skip ? - if (skipList != null && skipList - .containsKey(af.getViewport().getSequenceSetId())) - { - continue; - } - - String shortName = makeFilename(af, shortNames); - - int ap, apSize = af.alignPanels.size(); - - for (ap = 0; ap < apSize; ap++) - { - AlignmentPanel apanel = af.alignPanels.get(ap); - String fileName = apSize == 1 ? shortName : ap + shortName; - if (!fileName.endsWith(".xml")) - { - fileName = fileName + ".xml"; - } - - saveState(apanel, fileName, jout, viewIds); - - String dssid = getDatasetIdRef( - af.getViewport().getAlignment().getDataset()); - if (!dsses.containsKey(dssid)) - { - dsses.put(dssid, af); - } - } - } - - writeDatasetFor(dsses, "" + jout.hashCode() + " " + uniqueSetSuffix, - jout); - - try - { - jout.flush(); - } catch (Exception foo) - { - } - ; - jout.close(); - } catch (Exception ex) - { - // TODO: inform user of the problem - they need to know if their data was - // not saved ! - if (errorMessage == null) - { - errorMessage = "Couldn't write Jalview Archive - see error output for details"; - } - ex.printStackTrace(); - } - } - - /** - * Generates a distinct file name, based on the title of the AlignFrame, by - * appending _n for increasing n until an unused name is generated. The new - * name (without its extension) is added to the list. - * - * @param af - * @param namesUsed - * @return the generated name, with .xml extension - */ - protected String makeFilename(AlignFrame af, List namesUsed) - { - String shortName = af.getTitle(); - - if (shortName.indexOf(File.separatorChar) > -1) - { - shortName = shortName - .substring(shortName.lastIndexOf(File.separatorChar) + 1); - } - - int count = 1; - - while (namesUsed.contains(shortName)) - { - if (shortName.endsWith("_" + (count - 1))) - { - shortName = shortName.substring(0, shortName.lastIndexOf("_")); - } - - shortName = shortName.concat("_" + count); - count++; - } - - namesUsed.add(shortName); - - if (!shortName.endsWith(".xml")) - { - shortName = shortName + ".xml"; - } - return shortName; - } - - // USE THIS METHOD TO SAVE A SINGLE ALIGNMENT WINDOW - public boolean saveAlignment(AlignFrame af, String jarFile, - String fileName) - { - try - { - FileOutputStream fos = new FileOutputStream(jarFile); - JarOutputStream jout = new JarOutputStream(fos); - List frames = new ArrayList<>(); - - // resolve splitframes - if (af.getViewport().getCodingComplement() != null) - { - frames = ((SplitFrame) af.getSplitViewContainer()).getAlignFrames(); - } - else - { - frames.add(af); - } - saveAllFrames(frames, jout); - try - { - jout.flush(); - } catch (Exception foo) - { - } - ; - jout.close(); - return true; - } catch (Exception ex) - { - errorMessage = "Couldn't Write alignment view to Jalview Archive - see error output for details"; - ex.printStackTrace(); - return false; - } - } - - private void writeDatasetFor(Hashtable dsses, - String fileName, JarOutputStream jout) - { - - for (String dssids : dsses.keySet()) - { - AlignFrame _af = dsses.get(dssids); - String jfileName = fileName + " Dataset for " + _af.getTitle(); - if (!jfileName.endsWith(".xml")) - { - jfileName = jfileName + ".xml"; - } - saveState(_af.alignPanel, jfileName, true, jout, null); - } - } - - /** - * create a JalviewModel from an alignment view and marshall it to a - * JarOutputStream - * - * @param ap - * panel to create jalview model for - * @param fileName - * name of alignment panel written to output stream - * @param jout - * jar output stream - * @param viewIds - * @param out - * jar entry name - */ - public JalviewModel saveState(AlignmentPanel ap, String fileName, - JarOutputStream jout, List viewIds) - { - return saveState(ap, fileName, false, jout, viewIds); - } - - /** - * create a JalviewModel from an alignment view and marshall it to a - * JarOutputStream - * - * @param ap - * panel to create jalview model for - * @param fileName - * name of alignment panel written to output stream - * @param storeDS - * when true, only write the dataset for the alignment, not the data - * associated with the view. - * @param jout - * jar output stream - * @param out - * jar entry name - */ - public JalviewModel saveState(AlignmentPanel ap, String fileName, - boolean storeDS, JarOutputStream jout, List viewIds) - { - if (viewIds == null) - { - viewIds = new ArrayList<>(); - } - - initSeqRefs(); - - List userColours = new ArrayList<>(); - - AlignViewport av = ap.av; - ViewportRanges vpRanges = av.getRanges(); - - JalviewModel object = new JalviewModel(); - object.setVamsasModel(new jalview.schemabinding.version2.VamsasModel()); - - object.setCreationDate(new java.util.Date(System.currentTimeMillis())); - object.setVersion( - jalview.bin.Cache.getDefault("VERSION", "Development Build")); - - /** - * rjal is full height alignment, jal is actual alignment with full metadata - * but excludes hidden sequences. - */ - jalview.datamodel.AlignmentI rjal = av.getAlignment(), jal = rjal; - - if (av.hasHiddenRows()) - { - rjal = jal.getHiddenSequences().getFullAlignment(); - } - - SequenceSet vamsasSet = new SequenceSet(); - Sequence vamsasSeq; - JalviewModelSequence jms = new JalviewModelSequence(); - - vamsasSet.setGapChar(jal.getGapCharacter() + ""); - - if (jal.getDataset() != null) - { - // dataset id is the dataset's hashcode - vamsasSet.setDatasetId(getDatasetIdRef(jal.getDataset())); - if (storeDS) - { - // switch jal and the dataset - jal = jal.getDataset(); - rjal = jal; - } - } - if (jal.getProperties() != null) - { - Enumeration en = jal.getProperties().keys(); - while (en.hasMoreElements()) - { - String key = en.nextElement().toString(); - SequenceSetProperties ssp = new SequenceSetProperties(); - ssp.setKey(key); - ssp.setValue(jal.getProperties().get(key).toString()); - vamsasSet.addSequenceSetProperties(ssp); - } - } - - JSeq jseq; - Set calcIdSet = new HashSet<>(); - // record the set of vamsas sequence XML POJO we create. - HashMap vamsasSetIds = new HashMap<>(); - // SAVE SEQUENCES - for (final SequenceI jds : rjal.getSequences()) - { - final SequenceI jdatasq = jds.getDatasetSequence() == null ? jds - : jds.getDatasetSequence(); - String id = seqHash(jds); - if (vamsasSetIds.get(id) == null) - { - if (seqRefIds.get(id) != null && !storeDS) - { - // This happens for two reasons: 1. multiple views are being - // serialised. - // 2. the hashCode has collided with another sequence's code. This - // DOES - // HAPPEN! (PF00072.15.stk does this) - // JBPNote: Uncomment to debug writing out of files that do not read - // back in due to ArrayOutOfBoundExceptions. - // System.err.println("vamsasSeq backref: "+id+""); - // System.err.println(jds.getName()+" - // "+jds.getStart()+"-"+jds.getEnd()+" "+jds.getSequenceAsString()); - // System.err.println("Hashcode: "+seqHash(jds)); - // SequenceI rsq = (SequenceI) seqRefIds.get(id + ""); - // System.err.println(rsq.getName()+" - // "+rsq.getStart()+"-"+rsq.getEnd()+" "+rsq.getSequenceAsString()); - // System.err.println("Hashcode: "+seqHash(rsq)); - } - else - { - vamsasSeq = createVamsasSequence(id, jds); - vamsasSet.addSequence(vamsasSeq); - vamsasSetIds.put(id, vamsasSeq); - seqRefIds.put(id, jds); - } - } - jseq = new JSeq(); - jseq.setStart(jds.getStart()); - jseq.setEnd(jds.getEnd()); - jseq.setColour(av.getSequenceColour(jds).getRGB()); - - jseq.setId(id); // jseq id should be a string not a number - if (!storeDS) - { - // Store any sequences this sequence represents - if (av.hasHiddenRows()) - { - // use rjal, contains the full height alignment - jseq.setHidden( - av.getAlignment().getHiddenSequences().isHidden(jds)); - - if (av.isHiddenRepSequence(jds)) - { - jalview.datamodel.SequenceI[] reps = av - .getRepresentedSequences(jds).getSequencesInOrder(rjal); - - for (int h = 0; h < reps.length; h++) - { - if (reps[h] != jds) - { - jseq.addHiddenSequences(rjal.findIndex(reps[h])); - } - } - } - } - // mark sequence as reference - if it is the reference for this view - if (jal.hasSeqrep()) - { - jseq.setViewreference(jds == jal.getSeqrep()); - } - } - - // TODO: omit sequence features from each alignment view's XML dump if we - // are storing dataset - List sfs = jds - .getSequenceFeatures(); - for (SequenceFeature sf : sfs) - { - Features features = new Features(); - - features.setBegin(sf.getBegin()); - features.setEnd(sf.getEnd()); - features.setDescription(sf.getDescription()); - features.setType(sf.getType()); - features.setFeatureGroup(sf.getFeatureGroup()); - features.setScore(sf.getScore()); - if (sf.links != null) - { - for (int l = 0; l < sf.links.size(); l++) - { - OtherData keyValue = new OtherData(); - keyValue.setKey("LINK_" + l); - keyValue.setValue(sf.links.elementAt(l).toString()); - features.addOtherData(keyValue); - } - } - if (sf.otherDetails != null) - { - /* - * save feature attributes, which may be simple strings or - * map valued (have sub-attributes) - */ - for (Entry entry : sf.otherDetails.entrySet()) - { - String key = entry.getKey(); - Object value = entry.getValue(); - if (value instanceof Map) - { - for (Entry subAttribute : ((Map) value) - .entrySet()) - { - OtherData otherData = new OtherData(); - otherData.setKey(key); - otherData.setKey2(subAttribute.getKey()); - otherData.setValue(subAttribute.getValue().toString()); - features.addOtherData(otherData); - } - } - else - { - OtherData otherData = new OtherData(); - otherData.setKey(key); - otherData.setValue(value.toString()); - features.addOtherData(otherData); - } - } - } - - jseq.addFeatures(features); - } - - if (jdatasq.getAllPDBEntries() != null) - { - Enumeration en = jdatasq.getAllPDBEntries().elements(); - while (en.hasMoreElements()) - { - Pdbids pdb = new Pdbids(); - jalview.datamodel.PDBEntry entry = (jalview.datamodel.PDBEntry) en - .nextElement(); - - String pdbId = entry.getId(); - pdb.setId(pdbId); - pdb.setType(entry.getType()); - - /* - * Store any structure views associated with this sequence. This - * section copes with duplicate entries in the project, so a dataset - * only view *should* be coped with sensibly. - */ - // This must have been loaded, is it still visible? - JInternalFrame[] frames = Desktop.desktop.getAllFrames(); - String matchedFile = null; - for (int f = frames.length - 1; f > -1; f--) - { - if (frames[f] instanceof StructureViewerBase) - { - StructureViewerBase viewFrame = (StructureViewerBase) frames[f]; - matchedFile = saveStructureState(ap, jds, pdb, entry, viewIds, - matchedFile, viewFrame); - /* - * Only store each structure viewer's state once in the project - * jar. First time through only (storeDS==false) - */ - String viewId = viewFrame.getViewId(); - if (!storeDS && !viewIds.contains(viewId)) - { - viewIds.add(viewId); - try - { - String viewerState = viewFrame.getStateInfo(); - writeJarEntry(jout, getViewerJarEntryName(viewId), - viewerState.getBytes()); - } catch (IOException e) - { - System.err.println( - "Error saving viewer state: " + e.getMessage()); - } - } - } - } - - if (matchedFile != null || entry.getFile() != null) - { - if (entry.getFile() != null) - { - // use entry's file - matchedFile = entry.getFile(); - } - pdb.setFile(matchedFile); // entry.getFile()); - if (pdbfiles == null) - { - pdbfiles = new ArrayList<>(); - } - - if (!pdbfiles.contains(pdbId)) - { - pdbfiles.add(pdbId); - copyFileToJar(jout, matchedFile, pdbId); - } - } - - Enumeration props = entry.getProperties(); - if (props.hasMoreElements()) - { - PdbentryItem item = new PdbentryItem(); - while (props.hasMoreElements()) - { - Property prop = new Property(); - String key = props.nextElement(); - prop.setName(key); - prop.setValue(entry.getProperty(key).toString()); - item.addProperty(prop); - } - pdb.addPdbentryItem(item); - } - - jseq.addPdbids(pdb); - } - } - - saveRnaViewers(jout, jseq, jds, viewIds, ap, storeDS); - - jms.addJSeq(jseq); - } - - if (!storeDS && av.hasHiddenRows()) - { - jal = av.getAlignment(); - } - // SAVE MAPPINGS - // FOR DATASET - if (storeDS && jal.getCodonFrames() != null) - { - List jac = jal.getCodonFrames(); - for (AlignedCodonFrame acf : jac) - { - AlcodonFrame alc = new AlcodonFrame(); - if (acf.getProtMappings() != null - && acf.getProtMappings().length > 0) - { - boolean hasMap = false; - SequenceI[] dnas = acf.getdnaSeqs(); - jalview.datamodel.Mapping[] pmaps = acf.getProtMappings(); - for (int m = 0; m < pmaps.length; m++) - { - AlcodMap alcmap = new AlcodMap(); - alcmap.setDnasq(seqHash(dnas[m])); - alcmap.setMapping( - createVamsasMapping(pmaps[m], dnas[m], null, false)); - alc.addAlcodMap(alcmap); - hasMap = true; - } - if (hasMap) - { - vamsasSet.addAlcodonFrame(alc); - } - } - // TODO: delete this ? dead code from 2.8.3->2.9 ? - // { - // AlcodonFrame alc = new AlcodonFrame(); - // vamsasSet.addAlcodonFrame(alc); - // for (int p = 0; p < acf.aaWidth; p++) - // { - // Alcodon cmap = new Alcodon(); - // if (acf.codons[p] != null) - // { - // // Null codons indicate a gapped column in the translated peptide - // // alignment. - // cmap.setPos1(acf.codons[p][0]); - // cmap.setPos2(acf.codons[p][1]); - // cmap.setPos3(acf.codons[p][2]); - // } - // alc.addAlcodon(cmap); - // } - // if (acf.getProtMappings() != null - // && acf.getProtMappings().length > 0) - // { - // SequenceI[] dnas = acf.getdnaSeqs(); - // jalview.datamodel.Mapping[] pmaps = acf.getProtMappings(); - // for (int m = 0; m < pmaps.length; m++) - // { - // AlcodMap alcmap = new AlcodMap(); - // alcmap.setDnasq(seqHash(dnas[m])); - // alcmap.setMapping(createVamsasMapping(pmaps[m], dnas[m], null, - // false)); - // alc.addAlcodMap(alcmap); - // } - // } - } - } - - // SAVE TREES - // ///////////////////////////////// - if (!storeDS && av.getCurrentTree() != null) - { - // FIND ANY ASSOCIATED TREES - // NOT IMPLEMENTED FOR HEADLESS STATE AT PRESENT - if (Desktop.desktop != null) - { - JInternalFrame[] frames = Desktop.desktop.getAllFrames(); - - for (int t = 0; t < frames.length; t++) - { - if (frames[t] instanceof TreePanel) - { - TreePanel tp = (TreePanel) frames[t]; - - if (tp.getTreeCanvas().getViewport().getAlignment() == jal) - { - Tree tree = new Tree(); - tree.setTitle(tp.getTitle()); - tree.setCurrentTree((av.getCurrentTree() == tp.getTree())); - tree.setNewick(tp.getTree().print()); - tree.setThreshold(tp.getTreeCanvas().getThreshold()); - - tree.setFitToWindow(tp.fitToWindow.getState()); - tree.setFontName(tp.getTreeFont().getName()); - tree.setFontSize(tp.getTreeFont().getSize()); - tree.setFontStyle(tp.getTreeFont().getStyle()); - tree.setMarkUnlinked(tp.placeholdersMenu.getState()); - - tree.setShowBootstrap(tp.bootstrapMenu.getState()); - tree.setShowDistances(tp.distanceMenu.getState()); - - tree.setHeight(tp.getHeight()); - tree.setWidth(tp.getWidth()); - tree.setXpos(tp.getX()); - tree.setYpos(tp.getY()); - tree.setId(makeHashCode(tp, null)); - jms.addTree(tree); - } - } - } - } - } - - // SAVE ANNOTATIONS - /** - * store forward refs from an annotationRow to any groups - */ - IdentityHashMap groupRefs = new IdentityHashMap<>(); - if (storeDS) - { - for (SequenceI sq : jal.getSequences()) - { - // Store annotation on dataset sequences only - AlignmentAnnotation[] aa = sq.getAnnotation(); - if (aa != null && aa.length > 0) - { - storeAlignmentAnnotation(aa, groupRefs, av, calcIdSet, storeDS, - vamsasSet); - } - } - } - else - { - if (jal.getAlignmentAnnotation() != null) - { - // Store the annotation shown on the alignment. - AlignmentAnnotation[] aa = jal.getAlignmentAnnotation(); - storeAlignmentAnnotation(aa, groupRefs, av, calcIdSet, storeDS, - vamsasSet); - } - } - // SAVE GROUPS - if (jal.getGroups() != null) - { - JGroup[] groups = new JGroup[jal.getGroups().size()]; - int i = -1; - for (jalview.datamodel.SequenceGroup sg : jal.getGroups()) - { - JGroup jGroup = new JGroup(); - groups[++i] = jGroup; - - jGroup.setStart(sg.getStartRes()); - jGroup.setEnd(sg.getEndRes()); - jGroup.setName(sg.getName()); - if (groupRefs.containsKey(sg)) - { - // group has references so set its ID field - jGroup.setId(groupRefs.get(sg)); - } - ColourSchemeI colourScheme = sg.getColourScheme(); - if (colourScheme != null) - { - ResidueShaderI groupColourScheme = sg.getGroupColourScheme(); - if (groupColourScheme.conservationApplied()) - { - jGroup.setConsThreshold(groupColourScheme.getConservationInc()); - - if (colourScheme instanceof jalview.schemes.UserColourScheme) - { - jGroup.setColour( - setUserColourScheme(colourScheme, userColours, jms)); - } - else - { - jGroup.setColour(colourScheme.getSchemeName()); - } - } - else if (colourScheme instanceof jalview.schemes.AnnotationColourGradient) - { - jGroup.setColour("AnnotationColourGradient"); - jGroup.setAnnotationColours(constructAnnotationColours( - (jalview.schemes.AnnotationColourGradient) colourScheme, - userColours, jms)); - } - else if (colourScheme instanceof jalview.schemes.UserColourScheme) - { - jGroup.setColour( - setUserColourScheme(colourScheme, userColours, jms)); - } - else - { - jGroup.setColour(colourScheme.getSchemeName()); - } - - jGroup.setPidThreshold(groupColourScheme.getThreshold()); - } - - jGroup.setOutlineColour(sg.getOutlineColour().getRGB()); - jGroup.setDisplayBoxes(sg.getDisplayBoxes()); - jGroup.setDisplayText(sg.getDisplayText()); - jGroup.setColourText(sg.getColourText()); - jGroup.setTextCol1(sg.textColour.getRGB()); - jGroup.setTextCol2(sg.textColour2.getRGB()); - jGroup.setTextColThreshold(sg.thresholdTextColour); - jGroup.setShowUnconserved(sg.getShowNonconserved()); - jGroup.setIgnoreGapsinConsensus(sg.getIgnoreGapsConsensus()); - jGroup.setShowConsensusHistogram(sg.isShowConsensusHistogram()); - jGroup.setShowSequenceLogo(sg.isShowSequenceLogo()); - jGroup.setNormaliseSequenceLogo(sg.isNormaliseSequenceLogo()); - for (SequenceI seq : sg.getSequences()) - { - jGroup.addSeq(seqHash(seq)); - } - } - - jms.setJGroup(groups); - } - if (!storeDS) - { - // /////////SAVE VIEWPORT - Viewport view = new Viewport(); - view.setTitle(ap.alignFrame.getTitle()); - view.setSequenceSetId( - makeHashCode(av.getSequenceSetId(), av.getSequenceSetId())); - view.setId(av.getViewId()); - if (av.getCodingComplement() != null) - { - view.setComplementId(av.getCodingComplement().getViewId()); - } - view.setViewName(av.getViewName()); - view.setGatheredViews(av.isGatherViewsHere()); - - Rectangle size = ap.av.getExplodedGeometry(); - Rectangle position = size; - if (size == null) - { - size = ap.alignFrame.getBounds(); - if (av.getCodingComplement() != null) - { - position = ((SplitFrame) ap.alignFrame.getSplitViewContainer()) - .getBounds(); - } - else - { - position = size; - } - } - view.setXpos(position.x); - view.setYpos(position.y); - - view.setWidth(size.width); - view.setHeight(size.height); - - view.setStartRes(vpRanges.getStartRes()); - view.setStartSeq(vpRanges.getStartSeq()); - - if (av.getGlobalColourScheme() instanceof jalview.schemes.UserColourScheme) - { - view.setBgColour(setUserColourScheme(av.getGlobalColourScheme(), - userColours, jms)); - } - else if (av - .getGlobalColourScheme() instanceof jalview.schemes.AnnotationColourGradient) - { - AnnotationColours ac = constructAnnotationColours( - (jalview.schemes.AnnotationColourGradient) av - .getGlobalColourScheme(), - userColours, jms); - - view.setAnnotationColours(ac); - view.setBgColour("AnnotationColourGradient"); - } - else - { - view.setBgColour(ColourSchemeProperty - .getColourName(av.getGlobalColourScheme())); - } - - ResidueShaderI vcs = av.getResidueShading(); - ColourSchemeI cs = av.getGlobalColourScheme(); - - if (cs != null) - { - if (vcs.conservationApplied()) - { - view.setConsThreshold(vcs.getConservationInc()); - if (cs instanceof jalview.schemes.UserColourScheme) - { - view.setBgColour(setUserColourScheme(cs, userColours, jms)); - } - } - view.setPidThreshold(vcs.getThreshold()); - } - - view.setConservationSelected(av.getConservationSelected()); - view.setPidSelected(av.getAbovePIDThreshold()); - view.setFontName(av.font.getName()); - view.setFontSize(av.font.getSize()); - view.setFontStyle(av.font.getStyle()); - view.setScaleProteinAsCdna(av.getViewStyle().isScaleProteinAsCdna()); - view.setRenderGaps(av.isRenderGaps()); - view.setShowAnnotation(av.isShowAnnotation()); - view.setShowBoxes(av.getShowBoxes()); - view.setShowColourText(av.getColourText()); - view.setShowFullId(av.getShowJVSuffix()); - view.setRightAlignIds(av.isRightAlignIds()); - view.setShowSequenceFeatures(av.isShowSequenceFeatures()); - view.setShowText(av.getShowText()); - view.setShowUnconserved(av.getShowUnconserved()); - view.setWrapAlignment(av.getWrapAlignment()); - view.setTextCol1(av.getTextColour().getRGB()); - view.setTextCol2(av.getTextColour2().getRGB()); - view.setTextColThreshold(av.getThresholdTextColour()); - view.setShowConsensusHistogram(av.isShowConsensusHistogram()); - view.setShowSequenceLogo(av.isShowSequenceLogo()); - view.setNormaliseSequenceLogo(av.isNormaliseSequenceLogo()); - view.setShowGroupConsensus(av.isShowGroupConsensus()); - view.setShowGroupConservation(av.isShowGroupConservation()); - view.setShowNPfeatureTooltip(av.isShowNPFeats()); - view.setShowDbRefTooltip(av.isShowDBRefs()); - view.setFollowHighlight(av.isFollowHighlight()); - view.setFollowSelection(av.followSelection); - view.setIgnoreGapsinConsensus(av.isIgnoreGapsConsensus()); - if (av.getFeaturesDisplayed() != null) - { - jalview.schemabinding.version2.FeatureSettings fs = new jalview.schemabinding.version2.FeatureSettings(); - - FeatureRenderer fr = ap.getSeqPanel().seqCanvas - .getFeatureRenderer(); - String[] renderOrder = fr.getRenderOrder().toArray(new String[0]); - - Vector settingsAdded = new Vector<>(); - if (renderOrder != null) - { - for (String featureType : renderOrder) - { - Setting setting = new Setting(); - setting.setType(featureType); - - /* - * save any filter for the feature type - */ - FeatureMatcherSetI filter = fr.getFeatureFilter(featureType); - if (filter != null) { - Iterator filters = filter.getMatchers().iterator(); - FeatureMatcherI firstFilter = filters.next(); - setting.setMatcherSet(Jalview2XML.marshalFilter( - firstFilter, filters, filter.isAnded())); - } - - /* - * save colour scheme for the feature type - */ - FeatureColourI fcol = fr.getFeatureStyle(featureType); - if (!fcol.isSimpleColour()) - { - setting.setColour(fcol.getMaxColour().getRGB()); - setting.setMincolour(fcol.getMinColour().getRGB()); - setting.setMin(fcol.getMin()); - setting.setMax(fcol.getMax()); - setting.setColourByLabel(fcol.isColourByLabel()); - if (fcol.isColourByAttribute()) - { - setting.setAttributeName(fcol.getAttributeName()); - } - setting.setAutoScale(fcol.isAutoScaled()); - setting.setThreshold(fcol.getThreshold()); - Color noColour = fcol.getNoColour(); - if (noColour == null) - { - setting.setNoValueColour(NoValueColour.NONE); - } - else if (noColour.equals(fcol.getMaxColour())) - { - setting.setNoValueColour(NoValueColour.MAX); - } - else - { - setting.setNoValueColour(NoValueColour.MIN); - } - // -1 = No threshold, 0 = Below, 1 = Above - setting.setThreshstate(fcol.isAboveThreshold() ? 1 - : (fcol.isBelowThreshold() ? 0 : -1)); - } - else - { - setting.setColour(fcol.getColour().getRGB()); - } - - setting.setDisplay( - av.getFeaturesDisplayed().isVisible(featureType)); - float rorder = fr - .getOrder(featureType); - if (rorder > -1) - { - setting.setOrder(rorder); - } - fs.addSetting(setting); - settingsAdded.addElement(featureType); - } - } - - // is groups actually supposed to be a map here ? - Iterator en = fr.getFeatureGroups().iterator(); - Vector groupsAdded = new Vector<>(); - while (en.hasNext()) - { - String grp = en.next(); - if (groupsAdded.contains(grp)) - { - continue; - } - Group g = new Group(); - g.setName(grp); - g.setDisplay(((Boolean) fr.checkGroupVisibility(grp, false)) - .booleanValue()); - fs.addGroup(g); - groupsAdded.addElement(grp); - } - jms.setFeatureSettings(fs); - } - - if (av.hasHiddenColumns()) - { - jalview.datamodel.HiddenColumns hidden = av.getAlignment() - .getHiddenColumns(); - if (hidden == null) - { - warn("REPORT BUG: avoided null columnselection bug (DMAM reported). Please contact Jim about this."); - } - else - { - Iterator hiddenRegions = hidden.iterator(); - while (hiddenRegions.hasNext()) - { - int[] region = hiddenRegions.next(); - HiddenColumns hc = new HiddenColumns(); - hc.setStart(region[0]); - hc.setEnd(region[1]); - view.addHiddenColumns(hc); - } - } - } - if (calcIdSet.size() > 0) - { - for (String calcId : calcIdSet) - { - if (calcId.trim().length() > 0) - { - CalcIdParam cidp = createCalcIdParam(calcId, av); - // Some calcIds have no parameters. - if (cidp != null) - { - view.addCalcIdParam(cidp); - } - } - } - } - - jms.addViewport(view); - } - object.setJalviewModelSequence(jms); - object.getVamsasModel().addSequenceSet(vamsasSet); - - if (jout != null && fileName != null) - { - // We may not want to write the object to disk, - // eg we can copy the alignViewport to a new view object - // using save and then load - try - { - System.out.println("Writing jar entry " + fileName); - JarEntry entry = new JarEntry(fileName); - jout.putNextEntry(entry); - PrintWriter pout = new PrintWriter( - new OutputStreamWriter(jout, UTF_8)); - Marshaller marshaller = new Marshaller(pout); - marshaller.marshal(object); - pout.flush(); - jout.closeEntry(); - } catch (Exception ex) - { - // TODO: raise error in GUI if marshalling failed. - ex.printStackTrace(); - } - } - return object; - } - - /** - * Save any Varna viewers linked to this sequence. Writes an rnaViewer element - * for each viewer, with - *

    - *
  • viewer geometry (position, size, split pane divider location)
  • - *
  • index of the selected structure in the viewer (currently shows gapped - * or ungapped)
  • - *
  • the id of the annotation holding RNA secondary structure
  • - *
  • (currently only one SS is shown per viewer, may be more in future)
  • - *
- * Varna viewer state is also written out (in native Varna XML) to separate - * project jar entries. A separate entry is written for each RNA structure - * displayed, with the naming convention - *
    - *
  • rna_viewId_sequenceId_annotationId_[gapped|trimmed]
  • - *
- * - * @param jout - * @param jseq - * @param jds - * @param viewIds - * @param ap - * @param storeDataset - */ - protected void saveRnaViewers(JarOutputStream jout, JSeq jseq, - final SequenceI jds, List viewIds, AlignmentPanel ap, - boolean storeDataset) - { - if (Desktop.desktop == null) - { - return; - } - JInternalFrame[] frames = Desktop.desktop.getAllFrames(); - for (int f = frames.length - 1; f > -1; f--) - { - if (frames[f] instanceof AppVarna) - { - AppVarna varna = (AppVarna) frames[f]; - /* - * link the sequence to every viewer that is showing it and is linked to - * its alignment panel - */ - if (varna.isListeningFor(jds) && ap == varna.getAlignmentPanel()) - { - String viewId = varna.getViewId(); - RnaViewer rna = new RnaViewer(); - rna.setViewId(viewId); - rna.setTitle(varna.getTitle()); - rna.setXpos(varna.getX()); - rna.setYpos(varna.getY()); - rna.setWidth(varna.getWidth()); - rna.setHeight(varna.getHeight()); - rna.setDividerLocation(varna.getDividerLocation()); - rna.setSelectedRna(varna.getSelectedIndex()); - jseq.addRnaViewer(rna); - - /* - * Store each Varna panel's state once in the project per sequence. - * First time through only (storeDataset==false) - */ - // boolean storeSessions = false; - // String sequenceViewId = viewId + seqsToIds.get(jds); - // if (!storeDataset && !viewIds.contains(sequenceViewId)) - // { - // viewIds.add(sequenceViewId); - // storeSessions = true; - // } - for (RnaModel model : varna.getModels()) - { - if (model.seq == jds) - { - /* - * VARNA saves each view (sequence or alignment secondary - * structure, gapped or trimmed) as a separate XML file - */ - String jarEntryName = rnaSessions.get(model); - if (jarEntryName == null) - { - - String varnaStateFile = varna.getStateInfo(model.rna); - jarEntryName = RNA_PREFIX + viewId + "_" + nextCounter(); - copyFileToJar(jout, varnaStateFile, jarEntryName); - rnaSessions.put(model, jarEntryName); - } - SecondaryStructure ss = new SecondaryStructure(); - String annotationId = varna.getAnnotation(jds).annotationId; - ss.setAnnotationId(annotationId); - ss.setViewerState(jarEntryName); - ss.setGapped(model.gapped); - ss.setTitle(model.title); - rna.addSecondaryStructure(ss); - } - } - } - } - } - } - - /** - * Copy the contents of a file to a new entry added to the output jar - * - * @param jout - * @param infilePath - * @param jarEntryName - */ - protected void copyFileToJar(JarOutputStream jout, String infilePath, - String jarEntryName) - { - DataInputStream dis = null; - try - { - File file = new File(infilePath); - if (file.exists() && jout != null) - { - dis = new DataInputStream(new FileInputStream(file)); - byte[] data = new byte[(int) file.length()]; - dis.readFully(data); - writeJarEntry(jout, jarEntryName, data); - } - } catch (Exception ex) - { - ex.printStackTrace(); - } finally - { - if (dis != null) - { - try - { - dis.close(); - } catch (IOException e) - { - // ignore - } - } - } - } - - /** - * Write the data to a new entry of given name in the output jar file - * - * @param jout - * @param jarEntryName - * @param data - * @throws IOException - */ - protected void writeJarEntry(JarOutputStream jout, String jarEntryName, - byte[] data) throws IOException - { - if (jout != null) - { - System.out.println("Writing jar entry " + jarEntryName); - jout.putNextEntry(new JarEntry(jarEntryName)); - DataOutputStream dout = new DataOutputStream(jout); - dout.write(data, 0, data.length); - dout.flush(); - jout.closeEntry(); - } - } - - /** - * Save the state of a structure viewer - * - * @param ap - * @param jds - * @param pdb - * the archive XML element under which to save the state - * @param entry - * @param viewIds - * @param matchedFile - * @param viewFrame - * @return - */ - protected String saveStructureState(AlignmentPanel ap, SequenceI jds, - Pdbids pdb, PDBEntry entry, List viewIds, - String matchedFile, StructureViewerBase viewFrame) - { - final AAStructureBindingModel bindingModel = viewFrame.getBinding(); - - /* - * Look for any bindings for this viewer to the PDB file of interest - * (including part matches excluding chain id) - */ - for (int peid = 0; peid < bindingModel.getPdbCount(); peid++) - { - final PDBEntry pdbentry = bindingModel.getPdbEntry(peid); - final String pdbId = pdbentry.getId(); - if (!pdbId.equals(entry.getId()) - && !(entry.getId().length() > 4 && entry.getId().toLowerCase() - .startsWith(pdbId.toLowerCase()))) - { - /* - * not interested in a binding to a different PDB entry here - */ - continue; - } - if (matchedFile == null) - { - matchedFile = pdbentry.getFile(); - } - else if (!matchedFile.equals(pdbentry.getFile())) - { - Cache.log.warn( - "Probably lost some PDB-Sequence mappings for this structure file (which apparently has same PDB Entry code): " - + pdbentry.getFile()); - } - // record the - // file so we - // can get at it if the ID - // match is ambiguous (e.g. - // 1QIP==1qipA) - - for (int smap = 0; smap < viewFrame.getBinding() - .getSequence()[peid].length; smap++) - { - // if (jal.findIndex(jmol.jmb.sequence[peid][smap]) > -1) - if (jds == viewFrame.getBinding().getSequence()[peid][smap]) - { - StructureState state = new StructureState(); - state.setVisible(true); - state.setXpos(viewFrame.getX()); - state.setYpos(viewFrame.getY()); - state.setWidth(viewFrame.getWidth()); - state.setHeight(viewFrame.getHeight()); - final String viewId = viewFrame.getViewId(); - state.setViewId(viewId); - state.setAlignwithAlignPanel(viewFrame.isUsedforaligment(ap)); - state.setColourwithAlignPanel(viewFrame.isUsedforcolourby(ap)); - state.setColourByJmol(viewFrame.isColouredByViewer()); - state.setType(viewFrame.getViewerType().toString()); - pdb.addStructureState(state); - } - } - } - return matchedFile; - } - - /** - * Populates the AnnotationColours xml for save. This captures the settings of - * the options in the 'Colour by Annotation' dialog. - * - * @param acg - * @param userColours - * @param jms - * @return - */ - private AnnotationColours constructAnnotationColours( - AnnotationColourGradient acg, List userColours, - JalviewModelSequence jms) - { - AnnotationColours ac = new AnnotationColours(); - ac.setAboveThreshold(acg.getAboveThreshold()); - ac.setThreshold(acg.getAnnotationThreshold()); - // 2.10.2 save annotationId (unique) not annotation label - ac.setAnnotation(acg.getAnnotation().annotationId); - if (acg.getBaseColour() instanceof UserColourScheme) - { - ac.setColourScheme( - setUserColourScheme(acg.getBaseColour(), userColours, jms)); - } - else - { - ac.setColourScheme( - ColourSchemeProperty.getColourName(acg.getBaseColour())); - } - - ac.setMaxColour(acg.getMaxColour().getRGB()); - ac.setMinColour(acg.getMinColour().getRGB()); - ac.setPerSequence(acg.isSeqAssociated()); - ac.setPredefinedColours(acg.isPredefinedColours()); - return ac; - } - - private void storeAlignmentAnnotation(AlignmentAnnotation[] aa, - IdentityHashMap groupRefs, - AlignmentViewport av, Set calcIdSet, boolean storeDS, - SequenceSet vamsasSet) - { - - for (int i = 0; i < aa.length; i++) - { - Annotation an = new Annotation(); - - AlignmentAnnotation annotation = aa[i]; - if (annotation.annotationId != null) - { - annotationIds.put(annotation.annotationId, annotation); - } - - an.setId(annotation.annotationId); - - an.setVisible(annotation.visible); - - an.setDescription(annotation.description); - - if (annotation.sequenceRef != null) - { - // 2.9 JAL-1781 xref on sequence id rather than name - an.setSequenceRef(seqsToIds.get(annotation.sequenceRef)); - } - if (annotation.groupRef != null) - { - String groupIdr = groupRefs.get(annotation.groupRef); - if (groupIdr == null) - { - // make a locally unique String - groupRefs.put(annotation.groupRef, - groupIdr = ("" + System.currentTimeMillis() - + annotation.groupRef.getName() - + groupRefs.size())); - } - an.setGroupRef(groupIdr.toString()); - } - - // store all visualization attributes for annotation - an.setGraphHeight(annotation.graphHeight); - an.setCentreColLabels(annotation.centreColLabels); - an.setScaleColLabels(annotation.scaleColLabel); - an.setShowAllColLabels(annotation.showAllColLabels); - an.setBelowAlignment(annotation.belowAlignment); - - if (annotation.graph > 0) - { - an.setGraph(true); - an.setGraphType(annotation.graph); - an.setGraphGroup(annotation.graphGroup); - if (annotation.getThreshold() != null) - { - ThresholdLine line = new ThresholdLine(); - line.setLabel(annotation.getThreshold().label); - line.setValue(annotation.getThreshold().value); - line.setColour(annotation.getThreshold().colour.getRGB()); - an.setThresholdLine(line); - } - } - else - { - an.setGraph(false); - } - - an.setLabel(annotation.label); - - if (annotation == av.getAlignmentQualityAnnot() - || annotation == av.getAlignmentConservationAnnotation() - || annotation == av.getAlignmentConsensusAnnotation() - || annotation.autoCalculated) - { - // new way of indicating autocalculated annotation - - an.setAutoCalculated(annotation.autoCalculated); - } - if (annotation.hasScore()) - { - an.setScore(annotation.getScore()); - } - - if (annotation.getCalcId() != null) - { - calcIdSet.add(annotation.getCalcId()); - an.setCalcId(annotation.getCalcId()); - } - if (annotation.hasProperties()) - { - for (String pr : annotation.getProperties()) - { - Property prop = new Property(); - prop.setName(pr); - prop.setValue(annotation.getProperty(pr)); - an.addProperty(prop); - } - } - - AnnotationElement ae; - if (annotation.annotations != null) - { - an.setScoreOnly(false); - for (int a = 0; a < annotation.annotations.length; a++) - { - if ((annotation == null) || (annotation.annotations[a] == null)) - { - continue; - } - - ae = new AnnotationElement(); - if (annotation.annotations[a].description != null) - { - ae.setDescription(annotation.annotations[a].description); - } - if (annotation.annotations[a].displayCharacter != null) - { - ae.setDisplayCharacter( - annotation.annotations[a].displayCharacter); - } - - if (!Float.isNaN(annotation.annotations[a].value)) - { - ae.setValue(annotation.annotations[a].value); - } - - ae.setPosition(a); - if (annotation.annotations[a].secondaryStructure > ' ') - { - ae.setSecondaryStructure( - annotation.annotations[a].secondaryStructure + ""); - } - - if (annotation.annotations[a].colour != null - && annotation.annotations[a].colour != java.awt.Color.black) - { - ae.setColour(annotation.annotations[a].colour.getRGB()); - } - - an.addAnnotationElement(ae); - if (annotation.autoCalculated) - { - // only write one non-null entry into the annotation row - - // sufficient to get the visualization attributes necessary to - // display data - continue; - } - } - } - else - { - an.setScoreOnly(true); - } - if (!storeDS || (storeDS && !annotation.autoCalculated)) - { - // skip autocalculated annotation - these are only provided for - // alignments - vamsasSet.addAnnotation(an); - } - } - - } - - private CalcIdParam createCalcIdParam(String calcId, AlignViewport av) - { - AutoCalcSetting settings = av.getCalcIdSettingsFor(calcId); - if (settings != null) - { - CalcIdParam vCalcIdParam = new CalcIdParam(); - vCalcIdParam.setCalcId(calcId); - vCalcIdParam.addServiceURL(settings.getServiceURI()); - // generic URI allowing a third party to resolve another instance of the - // service used for this calculation - for (String urls : settings.getServiceURLs()) - { - vCalcIdParam.addServiceURL(urls); - } - vCalcIdParam.setVersion("1.0"); - if (settings.getPreset() != null) - { - WsParamSetI setting = settings.getPreset(); - vCalcIdParam.setName(setting.getName()); - vCalcIdParam.setDescription(setting.getDescription()); - } - else - { - vCalcIdParam.setName(""); - vCalcIdParam.setDescription("Last used parameters"); - } - // need to be able to recover 1) settings 2) user-defined presets or - // recreate settings from preset 3) predefined settings provided by - // service - or settings that can be transferred (or discarded) - vCalcIdParam.setParameters( - settings.getWsParamFile().replace("\n", "|\\n|")); - vCalcIdParam.setAutoUpdate(settings.isAutoUpdate()); - // todo - decide if updateImmediately is needed for any projects. - - return vCalcIdParam; - } - return null; - } - - private boolean recoverCalcIdParam(CalcIdParam calcIdParam, - AlignViewport av) - { - if (calcIdParam.getVersion().equals("1.0")) - { - Jws2Instance service = Jws2Discoverer.getDiscoverer() - .getPreferredServiceFor(calcIdParam.getServiceURL()); - if (service != null) - { - WsParamSetI parmSet = null; - try - { - parmSet = service.getParamStore().parseServiceParameterFile( - calcIdParam.getName(), calcIdParam.getDescription(), - calcIdParam.getServiceURL(), - calcIdParam.getParameters().replace("|\\n|", "\n")); - } catch (IOException x) - { - warn("Couldn't parse parameter data for " - + calcIdParam.getCalcId(), x); - return false; - } - List argList = null; - if (calcIdParam.getName().length() > 0) - { - parmSet = service.getParamStore() - .getPreset(calcIdParam.getName()); - if (parmSet != null) - { - // TODO : check we have a good match with settings in AACon - - // otherwise we'll need to create a new preset - } - } - else - { - argList = parmSet.getArguments(); - parmSet = null; - } - AAConSettings settings = new AAConSettings( - calcIdParam.isAutoUpdate(), service, parmSet, argList); - av.setCalcIdSettingsFor(calcIdParam.getCalcId(), settings, - calcIdParam.isNeedsUpdate()); - return true; - } - else - { - warn("Cannot resolve a service for the parameters used in this project. Try configuring a JABAWS server."); - return false; - } - } - throw new Error(MessageManager.formatMessage( - "error.unsupported_version_calcIdparam", new Object[] - { calcIdParam.toString() })); - } - - /** - * External mapping between jalview objects and objects yielding a valid and - * unique object ID string. This is null for normal Jalview project IO, but - * non-null when a jalview project is being read or written as part of a - * vamsas session. - */ - IdentityHashMap jv2vobj = null; - - /** - * Construct a unique ID for jvobj using either existing bindings or if none - * exist, the result of the hashcode call for the object. - * - * @param jvobj - * jalview data object - * @return unique ID for referring to jvobj - */ - private String makeHashCode(Object jvobj, String altCode) - { - if (jv2vobj != null) - { - Object id = jv2vobj.get(jvobj); - if (id != null) - { - return id.toString(); - } - // check string ID mappings - if (jvids2vobj != null && jvobj instanceof String) - { - id = jvids2vobj.get(jvobj); - } - if (id != null) - { - return id.toString(); - } - // give up and warn that something has gone wrong - warn("Cannot find ID for object in external mapping : " + jvobj); - } - return altCode; - } - - /** - * return local jalview object mapped to ID, if it exists - * - * @param idcode - * (may be null) - * @return null or object bound to idcode - */ - private Object retrieveExistingObj(String idcode) - { - if (idcode != null && vobj2jv != null) - { - return vobj2jv.get(idcode); - } - return null; - } - - /** - * binding from ID strings from external mapping table to jalview data model - * objects. - */ - private Hashtable vobj2jv; - - private Sequence createVamsasSequence(String id, SequenceI jds) - { - return createVamsasSequence(true, id, jds, null); - } - - private Sequence createVamsasSequence(boolean recurse, String id, - SequenceI jds, SequenceI parentseq) - { - Sequence vamsasSeq = new Sequence(); - vamsasSeq.setId(id); - vamsasSeq.setName(jds.getName()); - vamsasSeq.setSequence(jds.getSequenceAsString()); - vamsasSeq.setDescription(jds.getDescription()); - jalview.datamodel.DBRefEntry[] dbrefs = null; - if (jds.getDatasetSequence() != null) - { - vamsasSeq.setDsseqid(seqHash(jds.getDatasetSequence())); - } - else - { - // seqId==dsseqid so we can tell which sequences really are - // dataset sequences only - vamsasSeq.setDsseqid(id); - dbrefs = jds.getDBRefs(); - if (parentseq == null) - { - parentseq = jds; - } - } - if (dbrefs != null) - { - for (int d = 0; d < dbrefs.length; d++) - { - DBRef dbref = new DBRef(); - dbref.setSource(dbrefs[d].getSource()); - dbref.setVersion(dbrefs[d].getVersion()); - dbref.setAccessionId(dbrefs[d].getAccessionId()); - if (dbrefs[d].hasMap()) - { - Mapping mp = createVamsasMapping(dbrefs[d].getMap(), parentseq, - jds, recurse); - dbref.setMapping(mp); - } - vamsasSeq.addDBRef(dbref); - } - } - return vamsasSeq; - } - - private Mapping createVamsasMapping(jalview.datamodel.Mapping jmp, - SequenceI parentseq, SequenceI jds, boolean recurse) - { - Mapping mp = null; - if (jmp.getMap() != null) - { - mp = new Mapping(); - - jalview.util.MapList mlst = jmp.getMap(); - List r = mlst.getFromRanges(); - for (int[] range : r) - { - MapListFrom mfrom = new MapListFrom(); - mfrom.setStart(range[0]); - mfrom.setEnd(range[1]); - mp.addMapListFrom(mfrom); - } - r = mlst.getToRanges(); - for (int[] range : r) - { - MapListTo mto = new MapListTo(); - mto.setStart(range[0]); - mto.setEnd(range[1]); - mp.addMapListTo(mto); - } - mp.setMapFromUnit(mlst.getFromRatio()); - mp.setMapToUnit(mlst.getToRatio()); - if (jmp.getTo() != null) - { - MappingChoice mpc = new MappingChoice(); - - // check/create ID for the sequence referenced by getTo() - - String jmpid = ""; - SequenceI ps = null; - if (parentseq != jmp.getTo() - && parentseq.getDatasetSequence() != jmp.getTo()) - { - // chaining dbref rather than a handshaking one - jmpid = seqHash(ps = jmp.getTo()); - } - else - { - jmpid = seqHash(ps = parentseq); - } - mpc.setDseqFor(jmpid); - if (!seqRefIds.containsKey(mpc.getDseqFor())) - { - jalview.bin.Cache.log.debug("creatign new DseqFor ID"); - seqRefIds.put(mpc.getDseqFor(), ps); - } - else - { - jalview.bin.Cache.log.debug("reusing DseqFor ID"); - } - - mp.setMappingChoice(mpc); - } - } - return mp; - } - - String setUserColourScheme(jalview.schemes.ColourSchemeI cs, - List userColours, JalviewModelSequence jms) - { - String id = null; - jalview.schemes.UserColourScheme ucs = (jalview.schemes.UserColourScheme) cs; - boolean newucs = false; - if (!userColours.contains(ucs)) - { - userColours.add(ucs); - newucs = true; - } - id = "ucs" + userColours.indexOf(ucs); - if (newucs) - { - // actually create the scheme's entry in the XML model - java.awt.Color[] colours = ucs.getColours(); - jalview.schemabinding.version2.UserColours uc = new jalview.schemabinding.version2.UserColours(); - jalview.schemabinding.version2.UserColourScheme jbucs = new jalview.schemabinding.version2.UserColourScheme(); - - for (int i = 0; i < colours.length; i++) - { - jalview.schemabinding.version2.Colour col = new jalview.schemabinding.version2.Colour(); - col.setName(ResidueProperties.aa[i]); - col.setRGB(jalview.util.Format.getHexString(colours[i])); - jbucs.addColour(col); - } - if (ucs.getLowerCaseColours() != null) - { - colours = ucs.getLowerCaseColours(); - for (int i = 0; i < colours.length; i++) - { - jalview.schemabinding.version2.Colour col = new jalview.schemabinding.version2.Colour(); - col.setName(ResidueProperties.aa[i].toLowerCase()); - col.setRGB(jalview.util.Format.getHexString(colours[i])); - jbucs.addColour(col); - } - } - - uc.setId(id); - uc.setUserColourScheme(jbucs); - jms.addUserColours(uc); - } - - return id; - } - - jalview.schemes.UserColourScheme getUserColourScheme( - JalviewModelSequence jms, String id) - { - UserColours[] uc = jms.getUserColours(); - UserColours colours = null; - - for (int i = 0; i < uc.length; i++) - { - if (uc[i].getId().equals(id)) - { - colours = uc[i]; - - break; - } - } - - java.awt.Color[] newColours = new java.awt.Color[24]; - - for (int i = 0; i < 24; i++) - { - newColours[i] = new java.awt.Color(Integer.parseInt( - colours.getUserColourScheme().getColour(i).getRGB(), 16)); - } - - jalview.schemes.UserColourScheme ucs = new jalview.schemes.UserColourScheme( - newColours); - - if (colours.getUserColourScheme().getColourCount() > 24) - { - newColours = new java.awt.Color[23]; - for (int i = 0; i < 23; i++) - { - newColours[i] = new java.awt.Color(Integer.parseInt( - colours.getUserColourScheme().getColour(i + 24).getRGB(), - 16)); - } - ucs.setLowerCaseColours(newColours); - } - - return ucs; - } - - /** - * contains last error message (if any) encountered by XML loader. - */ - String errorMessage = null; - - /** - * flag to control whether the Jalview2XML_V1 parser should be deferred to if - * exceptions are raised during project XML parsing - */ - public boolean attemptversion1parse = true; - - /** - * Load a jalview project archive from a jar file - * - * @param file - * - HTTP URL or filename - */ - public AlignFrame loadJalviewAlign(final String file) - { - - jalview.gui.AlignFrame af = null; - - try - { - // create list to store references for any new Jmol viewers created - newStructureViewers = new Vector<>(); - // UNMARSHALLER SEEMS TO CLOSE JARINPUTSTREAM, MOST ANNOYING - // Workaround is to make sure caller implements the JarInputStreamProvider - // interface - // so we can re-open the jar input stream for each entry. - - jarInputStreamProvider jprovider = createjarInputStreamProvider(file); - af = loadJalviewAlign(jprovider); - af.setMenusForViewport(); - - } catch (MalformedURLException e) - { - errorMessage = "Invalid URL format for '" + file + "'"; - reportErrors(); - } finally - { - try - { - SwingUtilities.invokeAndWait(new Runnable() - { - @Override - public void run() - { - setLoadingFinishedForNewStructureViewers(); - }; - }); - } catch (Exception x) - { - System.err.println("Error loading alignment: " + x.getMessage()); - } - } - return af; - } - - private jarInputStreamProvider createjarInputStreamProvider( - final String file) throws MalformedURLException - { - URL url = null; - errorMessage = null; - uniqueSetSuffix = null; - seqRefIds = null; - viewportsAdded.clear(); - frefedSequence = null; - - if (file.startsWith("http://")) - { - url = new URL(file); - } - final URL _url = url; - return new jarInputStreamProvider() - { - - @Override - public JarInputStream getJarInputStream() throws IOException - { - if (_url != null) - { - return new JarInputStream(_url.openStream()); - } - else - { - return new JarInputStream(new FileInputStream(file)); - } - } - - @Override - public String getFilename() - { - return file; - } - }; - } - - /** - * Recover jalview session from a jalview project archive. Caller may - * initialise uniqueSetSuffix, seqRefIds, viewportsAdded and frefedSequence - * themselves. Any null fields will be initialised with default values, - * non-null fields are left alone. - * - * @param jprovider - * @return - */ - public AlignFrame loadJalviewAlign(final jarInputStreamProvider jprovider) - { - errorMessage = null; - if (uniqueSetSuffix == null) - { - uniqueSetSuffix = System.currentTimeMillis() % 100000 + ""; - } - if (seqRefIds == null) - { - initSeqRefs(); - } - AlignFrame af = null, _af = null; - IdentityHashMap importedDatasets = new IdentityHashMap<>(); - Map gatherToThisFrame = new HashMap<>(); - final String file = jprovider.getFilename(); - try - { - JarInputStream jin = null; - JarEntry jarentry = null; - int entryCount = 1; - - do - { - jin = jprovider.getJarInputStream(); - for (int i = 0; i < entryCount; i++) - { - jarentry = jin.getNextJarEntry(); - } - - if (jarentry != null && jarentry.getName().endsWith(".xml")) - { - InputStreamReader in = new InputStreamReader(jin, UTF_8); - JalviewModel object = new JalviewModel(); - - Unmarshaller unmar = new Unmarshaller(object); - unmar.setValidation(false); - object = (JalviewModel) unmar.unmarshal(in); - if (true) // !skipViewport(object)) - { - _af = loadFromObject(object, file, true, jprovider); - if (_af != null && object.getJalviewModelSequence() - .getViewportCount() > 0) - { - if (af == null) - { - // store a reference to the first view - af = _af; - } - if (_af.viewport.isGatherViewsHere()) - { - // if this is a gathered view, keep its reference since - // after gathering views, only this frame will remain - af = _af; - gatherToThisFrame.put(_af.viewport.getSequenceSetId(), _af); - } - // Save dataset to register mappings once all resolved - importedDatasets.put(af.viewport.getAlignment().getDataset(), - af.viewport.getAlignment().getDataset()); - } - } - entryCount++; - } - else if (jarentry != null) - { - // Some other file here. - entryCount++; - } - } while (jarentry != null); - resolveFrefedSequences(); - } catch (IOException ex) - { - ex.printStackTrace(); - errorMessage = "Couldn't locate Jalview XML file : " + file; - System.err.println( - "Exception whilst loading jalview XML file : " + ex + "\n"); - } catch (Exception ex) - { - System.err.println("Parsing as Jalview Version 2 file failed."); - ex.printStackTrace(System.err); - if (attemptversion1parse) - { - // Is Version 1 Jar file? - try - { - af = new Jalview2XML_V1(raiseGUI).LoadJalviewAlign(jprovider); - } catch (Exception ex2) - { - System.err.println("Exception whilst loading as jalviewXMLV1:"); - ex2.printStackTrace(); - af = null; - } - } - if (Desktop.instance != null) - { - Desktop.instance.stopLoading(); - } - if (af != null) - { - System.out.println("Successfully loaded archive file"); - return af; - } - ex.printStackTrace(); - - System.err.println( - "Exception whilst loading jalview XML file : " + ex + "\n"); - } catch (OutOfMemoryError e) - { - // Don't use the OOM Window here - errorMessage = "Out of memory loading jalview XML file"; - System.err.println("Out of memory whilst loading jalview XML file"); - e.printStackTrace(); - } - - /* - * Regather multiple views (with the same sequence set id) to the frame (if - * any) that is flagged as the one to gather to, i.e. convert them to tabbed - * views instead of separate frames. Note this doesn't restore a state where - * some expanded views in turn have tabbed views - the last "first tab" read - * in will play the role of gatherer for all. - */ - for (AlignFrame fr : gatherToThisFrame.values()) - { - Desktop.instance.gatherViews(fr); - } - - restoreSplitFrames(); - for (AlignmentI ds : importedDatasets.keySet()) - { - if (ds.getCodonFrames() != null) - { - StructureSelectionManager - .getStructureSelectionManager(Desktop.instance) - .registerMappings(ds.getCodonFrames()); - } - } - if (errorMessage != null) - { - reportErrors(); - } - - if (Desktop.instance != null) - { - Desktop.instance.stopLoading(); - } - - return af; - } - - /** - * Try to reconstruct and display SplitFrame windows, where each contains - * complementary dna and protein alignments. Done by pairing up AlignFrame - * objects (created earlier) which have complementary viewport ids associated. - */ - protected void restoreSplitFrames() - { - List gatherTo = new ArrayList<>(); - List addedToSplitFrames = new ArrayList<>(); - Map dna = new HashMap<>(); - - /* - * Identify the DNA alignments - */ - for (Entry candidate : splitFrameCandidates - .entrySet()) - { - AlignFrame af = candidate.getValue(); - if (af.getViewport().getAlignment().isNucleotide()) - { - dna.put(candidate.getKey().getId(), af); - } - } - - /* - * Try to match up the protein complements - */ - for (Entry candidate : splitFrameCandidates - .entrySet()) - { - AlignFrame af = candidate.getValue(); - if (!af.getViewport().getAlignment().isNucleotide()) - { - String complementId = candidate.getKey().getComplementId(); - // only non-null complements should be in the Map - if (complementId != null && dna.containsKey(complementId)) - { - final AlignFrame dnaFrame = dna.get(complementId); - SplitFrame sf = createSplitFrame(dnaFrame, af); - addedToSplitFrames.add(dnaFrame); - addedToSplitFrames.add(af); - dnaFrame.setMenusForViewport(); - af.setMenusForViewport(); - if (af.viewport.isGatherViewsHere()) - { - gatherTo.add(sf); - } - } - } - } - - /* - * Open any that we failed to pair up (which shouldn't happen!) as - * standalone AlignFrame's. - */ - for (Entry candidate : splitFrameCandidates - .entrySet()) - { - AlignFrame af = candidate.getValue(); - if (!addedToSplitFrames.contains(af)) - { - Viewport view = candidate.getKey(); - Desktop.addInternalFrame(af, view.getTitle(), view.getWidth(), - view.getHeight()); - af.setMenusForViewport(); - System.err.println("Failed to restore view " + view.getTitle() - + " to split frame"); - } - } - - /* - * Gather back into tabbed views as flagged. - */ - for (SplitFrame sf : gatherTo) - { - Desktop.instance.gatherViews(sf); - } - - splitFrameCandidates.clear(); - } - - /** - * Construct and display one SplitFrame holding DNA and protein alignments. - * - * @param dnaFrame - * @param proteinFrame - * @return - */ - protected SplitFrame createSplitFrame(AlignFrame dnaFrame, - AlignFrame proteinFrame) - { - SplitFrame splitFrame = new SplitFrame(dnaFrame, proteinFrame); - String title = MessageManager.getString("label.linked_view_title"); - int width = (int) dnaFrame.getBounds().getWidth(); - int height = (int) (dnaFrame.getBounds().getHeight() - + proteinFrame.getBounds().getHeight() + 50); - - /* - * SplitFrame location is saved to both enclosed frames - */ - splitFrame.setLocation(dnaFrame.getX(), dnaFrame.getY()); - Desktop.addInternalFrame(splitFrame, title, width, height); - - /* - * And compute cDNA consensus (couldn't do earlier with consensus as - * mappings were not yet present) - */ - proteinFrame.viewport.alignmentChanged(proteinFrame.alignPanel); - - return splitFrame; - } - - /** - * check errorMessage for a valid error message and raise an error box in the - * GUI or write the current errorMessage to stderr and then clear the error - * state. - */ - protected void reportErrors() - { - reportErrors(false); - } - - protected void reportErrors(final boolean saving) - { - if (errorMessage != null) - { - final String finalErrorMessage = errorMessage; - if (raiseGUI) - { - javax.swing.SwingUtilities.invokeLater(new Runnable() - { - @Override - public void run() - { - JvOptionPane.showInternalMessageDialog(Desktop.desktop, - finalErrorMessage, - "Error " + (saving ? "saving" : "loading") - + " Jalview file", - JvOptionPane.WARNING_MESSAGE); - } - }); - } - else - { - System.err.println("Problem loading Jalview file: " + errorMessage); - } - } - errorMessage = null; - } - - Map alreadyLoadedPDB = new HashMap<>(); - - /** - * when set, local views will be updated from view stored in JalviewXML - * Currently (28th Sep 2008) things will go horribly wrong in vamsas document - * sync if this is set to true. - */ - private final boolean updateLocalViews = false; - - /** - * Returns the path to a temporary file holding the PDB file for the given PDB - * id. The first time of asking, searches for a file of that name in the - * Jalview project jar, and copies it to a new temporary file. Any repeat - * requests just return the path to the file previously created. - * - * @param jprovider - * @param pdbId - * @return - */ - String loadPDBFile(jarInputStreamProvider jprovider, String pdbId, - String origFile) - { - if (alreadyLoadedPDB.containsKey(pdbId)) - { - return alreadyLoadedPDB.get(pdbId).toString(); - } - - String tempFile = copyJarEntry(jprovider, pdbId, "jalview_pdb", - origFile); - if (tempFile != null) - { - alreadyLoadedPDB.put(pdbId, tempFile); - } - return tempFile; - } - - /** - * Copies the jar entry of given name to a new temporary file and returns the - * path to the file, or null if the entry is not found. - * - * @param jprovider - * @param jarEntryName - * @param prefix - * a prefix for the temporary file name, must be at least three - * characters long - * @param origFile - * null or original file - so new file can be given the same suffix - * as the old one - * @return - */ - protected String copyJarEntry(jarInputStreamProvider jprovider, - String jarEntryName, String prefix, String origFile) - { - BufferedReader in = null; - PrintWriter out = null; - String suffix = ".tmp"; - if (origFile == null) - { - origFile = jarEntryName; - } - int sfpos = origFile.lastIndexOf("."); - if (sfpos > -1 && sfpos < (origFile.length() - 3)) - { - suffix = "." + origFile.substring(sfpos + 1); - } - try - { - JarInputStream jin = jprovider.getJarInputStream(); - /* - * if (jprovider.startsWith("http://")) { jin = new JarInputStream(new - * URL(jprovider).openStream()); } else { jin = new JarInputStream(new - * FileInputStream(jprovider)); } - */ - - JarEntry entry = null; - do - { - entry = jin.getNextJarEntry(); - } while (entry != null && !entry.getName().equals(jarEntryName)); - if (entry != null) - { - in = new BufferedReader(new InputStreamReader(jin, UTF_8)); - File outFile = File.createTempFile(prefix, suffix); - outFile.deleteOnExit(); - out = new PrintWriter(new FileOutputStream(outFile)); - String data; - - while ((data = in.readLine()) != null) - { - out.println(data); - } - out.flush(); - String t = outFile.getAbsolutePath(); - return t; - } - else - { - warn("Couldn't find entry in Jalview Jar for " + jarEntryName); - } - } catch (Exception ex) - { - ex.printStackTrace(); - } finally - { - if (in != null) - { - try - { - in.close(); - } catch (IOException e) - { - // ignore - } - } - if (out != null) - { - out.close(); - } - } - - return null; - } - - private class JvAnnotRow - { - public JvAnnotRow(int i, AlignmentAnnotation jaa) - { - order = i; - template = jaa; - } - - /** - * persisted version of annotation row from which to take vis properties - */ - public jalview.datamodel.AlignmentAnnotation template; - - /** - * original position of the annotation row in the alignment - */ - public int order; - } - - /** - * Load alignment frame from jalview XML DOM object - * - * @param object - * DOM - * @param file - * filename source string - * @param loadTreesAndStructures - * when false only create Viewport - * @param jprovider - * data source provider - * @return alignment frame created from view stored in DOM - */ - AlignFrame loadFromObject(JalviewModel object, String file, - boolean loadTreesAndStructures, jarInputStreamProvider jprovider) - { - SequenceSet vamsasSet = object.getVamsasModel().getSequenceSet(0); - Sequence[] vamsasSeq = vamsasSet.getSequence(); - - JalviewModelSequence jms = object.getJalviewModelSequence(); - - Viewport view = (jms.getViewportCount() > 0) ? jms.getViewport(0) - : null; - - // //////////////////////////////// - // LOAD SEQUENCES - - List hiddenSeqs = null; - - List tmpseqs = new ArrayList<>(); - - boolean multipleView = false; - SequenceI referenceseqForView = null; - JSeq[] jseqs = object.getJalviewModelSequence().getJSeq(); - int vi = 0; // counter in vamsasSeq array - for (int i = 0; i < jseqs.length; i++) - { - String seqId = jseqs[i].getId(); - - SequenceI tmpSeq = seqRefIds.get(seqId); - if (tmpSeq != null) - { - if (!incompleteSeqs.containsKey(seqId)) - { - // may not need this check, but keep it for at least 2.9,1 release - if (tmpSeq.getStart() != jseqs[i].getStart() - || tmpSeq.getEnd() != jseqs[i].getEnd()) - { - System.err.println( - "Warning JAL-2154 regression: updating start/end for sequence " - + tmpSeq.toString() + " to " + jseqs[i]); - } - } - else - { - incompleteSeqs.remove(seqId); - } - if (vamsasSeq.length > vi && vamsasSeq[vi].getId().equals(seqId)) - { - // most likely we are reading a dataset XML document so - // update from vamsasSeq section of XML for this sequence - tmpSeq.setName(vamsasSeq[vi].getName()); - tmpSeq.setDescription(vamsasSeq[vi].getDescription()); - tmpSeq.setSequence(vamsasSeq[vi].getSequence()); - vi++; - } - else - { - // reading multiple views, so vamsasSeq set is a subset of JSeq - multipleView = true; - } - tmpSeq.setStart(jseqs[i].getStart()); - tmpSeq.setEnd(jseqs[i].getEnd()); - tmpseqs.add(tmpSeq); - } - else - { - tmpSeq = new jalview.datamodel.Sequence(vamsasSeq[vi].getName(), - vamsasSeq[vi].getSequence()); - tmpSeq.setDescription(vamsasSeq[vi].getDescription()); - tmpSeq.setStart(jseqs[i].getStart()); - tmpSeq.setEnd(jseqs[i].getEnd()); - tmpSeq.setVamsasId(uniqueSetSuffix + seqId); - seqRefIds.put(vamsasSeq[vi].getId(), tmpSeq); - tmpseqs.add(tmpSeq); - vi++; - } - - if (jseqs[i].hasViewreference() && jseqs[i].getViewreference()) - { - referenceseqForView = tmpseqs.get(tmpseqs.size() - 1); - } - - if (jseqs[i].getHidden()) - { - if (hiddenSeqs == null) - { - hiddenSeqs = new ArrayList<>(); - } - - hiddenSeqs.add(tmpSeq); - } - } - - // / - // Create the alignment object from the sequence set - // /////////////////////////////// - SequenceI[] orderedSeqs = tmpseqs - .toArray(new SequenceI[tmpseqs.size()]); - - AlignmentI al = null; - // so we must create or recover the dataset alignment before going further - // /////////////////////////////// - if (vamsasSet.getDatasetId() == null || vamsasSet.getDatasetId() == "") - { - // older jalview projects do not have a dataset - so creat alignment and - // dataset - al = new Alignment(orderedSeqs); - al.setDataset(null); - } - else - { - boolean isdsal = object.getJalviewModelSequence() - .getViewportCount() == 0; - if (isdsal) - { - // we are importing a dataset record, so - // recover reference to an alignment already materialsed as dataset - al = getDatasetFor(vamsasSet.getDatasetId()); - } - if (al == null) - { - // materialse the alignment - al = new Alignment(orderedSeqs); - } - if (isdsal) - { - addDatasetRef(vamsasSet.getDatasetId(), al); - } - - // finally, verify all data in vamsasSet is actually present in al - // passing on flag indicating if it is actually a stored dataset - recoverDatasetFor(vamsasSet, al, isdsal); - } - - if (referenceseqForView != null) - { - al.setSeqrep(referenceseqForView); - } - // / Add the alignment properties - for (int i = 0; i < vamsasSet.getSequenceSetPropertiesCount(); i++) - { - SequenceSetProperties ssp = vamsasSet.getSequenceSetProperties(i); - al.setProperty(ssp.getKey(), ssp.getValue()); - } - - // /////////////////////////////// - - Hashtable pdbloaded = new Hashtable(); // TODO nothing writes to this?? - if (!multipleView) - { - // load sequence features, database references and any associated PDB - // structures for the alignment - // - // prior to 2.10, this part would only be executed the first time a - // sequence was encountered, but not afterwards. - // now, for 2.10 projects, this is also done if the xml doc includes - // dataset sequences not actually present in any particular view. - // - for (int i = 0; i < vamsasSeq.length; i++) - { - if (jseqs[i].getFeaturesCount() > 0) - { - Features[] features = jseqs[i].getFeatures(); - for (int f = 0; f < features.length; f++) - { - SequenceFeature sf = new SequenceFeature(features[f].getType(), - features[f].getDescription(), features[f].getBegin(), - features[f].getEnd(), features[f].getScore(), - features[f].getFeatureGroup()); - sf.setStatus(features[f].getStatus()); - - /* - * load any feature attributes - include map-valued attributes - */ - Map> mapAttributes = new HashMap<>(); - for (int od = 0; od < features[f].getOtherDataCount(); od++) - { - OtherData keyValue = features[f].getOtherData(od); - String attributeName = keyValue.getKey(); - String attributeValue = keyValue.getValue(); - if (attributeName.startsWith("LINK")) - { - sf.addLink(attributeValue); - } - else - { - String subAttribute = keyValue.getKey2(); - if (subAttribute == null) - { - // simple string-valued attribute - sf.setValue(attributeName, attributeValue); - } - else - { - // attribute 'key' has sub-attribute 'key2' - if (!mapAttributes.containsKey(attributeName)) - { - mapAttributes.put(attributeName, new HashMap<>()); - } - mapAttributes.get(attributeName).put(subAttribute, - attributeValue); - } - } - } - for (Entry> mapAttribute : mapAttributes - .entrySet()) - { - sf.setValue(mapAttribute.getKey(), mapAttribute.getValue()); - } - - // adds feature to datasequence's feature set (since Jalview 2.10) - al.getSequenceAt(i).addSequenceFeature(sf); - } - } - if (vamsasSeq[i].getDBRefCount() > 0) - { - // adds dbrefs to datasequence's set (since Jalview 2.10) - addDBRefs( - al.getSequenceAt(i).getDatasetSequence() == null - ? al.getSequenceAt(i) - : al.getSequenceAt(i).getDatasetSequence(), - vamsasSeq[i]); - } - if (jseqs[i].getPdbidsCount() > 0) - { - Pdbids[] ids = jseqs[i].getPdbids(); - for (int p = 0; p < ids.length; p++) - { - jalview.datamodel.PDBEntry entry = new jalview.datamodel.PDBEntry(); - entry.setId(ids[p].getId()); - if (ids[p].getType() != null) - { - if (PDBEntry.Type.getType(ids[p].getType()) != null) - { - entry.setType(PDBEntry.Type.getType(ids[p].getType())); - } - else - { - entry.setType(PDBEntry.Type.FILE); - } - } - // jprovider is null when executing 'New View' - if (ids[p].getFile() != null && jprovider != null) - { - if (!pdbloaded.containsKey(ids[p].getFile())) - { - entry.setFile(loadPDBFile(jprovider, ids[p].getId(), - ids[p].getFile())); - } - else - { - entry.setFile(pdbloaded.get(ids[p].getId()).toString()); - } - } - if (ids[p].getPdbentryItem() != null) - { - for (PdbentryItem item : ids[p].getPdbentryItem()) - { - for (Property pr : item.getProperty()) - { - entry.setProperty(pr.getName(), pr.getValue()); - } - } - } - StructureSelectionManager - .getStructureSelectionManager(Desktop.instance) - .registerPDBEntry(entry); - // adds PDBEntry to datasequence's set (since Jalview 2.10) - if (al.getSequenceAt(i).getDatasetSequence() != null) - { - al.getSequenceAt(i).getDatasetSequence().addPDBId(entry); - } - else - { - al.getSequenceAt(i).addPDBId(entry); - } - } - } - } - } // end !multipleview - - // /////////////////////////////// - // LOAD SEQUENCE MAPPINGS - - if (vamsasSet.getAlcodonFrameCount() > 0) - { - // TODO Potentially this should only be done once for all views of an - // alignment - AlcodonFrame[] alc = vamsasSet.getAlcodonFrame(); - for (int i = 0; i < alc.length; i++) - { - AlignedCodonFrame cf = new AlignedCodonFrame(); - if (alc[i].getAlcodMapCount() > 0) - { - AlcodMap[] maps = alc[i].getAlcodMap(); - for (int m = 0; m < maps.length; m++) - { - SequenceI dnaseq = seqRefIds.get(maps[m].getDnasq()); - // Load Mapping - jalview.datamodel.Mapping mapping = null; - // attach to dna sequence reference. - if (maps[m].getMapping() != null) - { - mapping = addMapping(maps[m].getMapping()); - if (dnaseq != null && mapping.getTo() != null) - { - cf.addMap(dnaseq, mapping.getTo(), mapping.getMap()); - } - else - { - // defer to later - frefedSequence.add( - newAlcodMapRef(maps[m].getDnasq(), cf, mapping)); - } - } - } - al.addCodonFrame(cf); - } - } - } - - // //////////////////////////////// - // LOAD ANNOTATIONS - List autoAlan = new ArrayList<>(); - - /* - * store any annotations which forward reference a group's ID - */ - Map> groupAnnotRefs = new Hashtable<>(); - - if (vamsasSet.getAnnotationCount() > 0) - { - Annotation[] an = vamsasSet.getAnnotation(); - - for (int i = 0; i < an.length; i++) - { - Annotation annotation = an[i]; - - /** - * test if annotation is automatically calculated for this view only - */ - boolean autoForView = false; - if (annotation.getLabel().equals("Quality") - || annotation.getLabel().equals("Conservation") - || annotation.getLabel().equals("Consensus")) - { - // Kludge for pre 2.5 projects which lacked the autocalculated flag - autoForView = true; - if (!annotation.hasAutoCalculated()) - { - annotation.setAutoCalculated(true); - } - } - if (autoForView || (annotation.hasAutoCalculated() - && annotation.isAutoCalculated())) - { - // remove ID - we don't recover annotation from other views for - // view-specific annotation - annotation.setId(null); - } - - // set visiblity for other annotation in this view - String annotationId = annotation.getId(); - if (annotationId != null && annotationIds.containsKey(annotationId)) - { - AlignmentAnnotation jda = annotationIds.get(annotationId); - // in principle Visible should always be true for annotation displayed - // in multiple views - if (annotation.hasVisible()) - { - jda.visible = annotation.getVisible(); - } - - al.addAnnotation(jda); - - continue; - } - // Construct new annotation from model. - AnnotationElement[] ae = annotation.getAnnotationElement(); - jalview.datamodel.Annotation[] anot = null; - java.awt.Color firstColour = null; - int anpos; - if (!annotation.getScoreOnly()) - { - anot = new jalview.datamodel.Annotation[al.getWidth()]; - for (int aa = 0; aa < ae.length && aa < anot.length; aa++) - { - anpos = ae[aa].getPosition(); - - if (anpos >= anot.length) - { - continue; - } - - anot[anpos] = new jalview.datamodel.Annotation( - - ae[aa].getDisplayCharacter(), ae[aa].getDescription(), - (ae[aa].getSecondaryStructure() == null - || ae[aa].getSecondaryStructure().length() == 0) - ? ' ' - : ae[aa].getSecondaryStructure() - .charAt(0), - ae[aa].getValue() - - ); - // JBPNote: Consider verifying dataflow for IO of secondary - // structure annotation read from Stockholm files - // this was added to try to ensure that - // if (anot[ae[aa].getPosition()].secondaryStructure>' ') - // { - // anot[ae[aa].getPosition()].displayCharacter = ""; - // } - anot[anpos].colour = new java.awt.Color(ae[aa].getColour()); - if (firstColour == null) - { - firstColour = anot[anpos].colour; - } - } - } - jalview.datamodel.AlignmentAnnotation jaa = null; - - if (annotation.getGraph()) - { - float llim = 0, hlim = 0; - // if (autoForView || an[i].isAutoCalculated()) { - // hlim=11f; - // } - jaa = new jalview.datamodel.AlignmentAnnotation( - annotation.getLabel(), annotation.getDescription(), anot, - llim, hlim, annotation.getGraphType()); - - jaa.graphGroup = annotation.getGraphGroup(); - jaa._linecolour = firstColour; - if (annotation.getThresholdLine() != null) - { - jaa.setThreshold(new jalview.datamodel.GraphLine( - annotation.getThresholdLine().getValue(), - annotation.getThresholdLine().getLabel(), - new java.awt.Color( - annotation.getThresholdLine().getColour()))); - - } - if (autoForView || annotation.isAutoCalculated()) - { - // Hardwire the symbol display line to ensure that labels for - // histograms are displayed - jaa.hasText = true; - } - } - else - { - jaa = new jalview.datamodel.AlignmentAnnotation(an[i].getLabel(), - an[i].getDescription(), anot); - jaa._linecolour = firstColour; - } - // register new annotation - if (an[i].getId() != null) - { - annotationIds.put(an[i].getId(), jaa); - jaa.annotationId = an[i].getId(); - } - // recover sequence association - String sequenceRef = an[i].getSequenceRef(); - if (sequenceRef != null) - { - // from 2.9 sequenceRef is to sequence id (JAL-1781) - SequenceI sequence = seqRefIds.get(sequenceRef); - if (sequence == null) - { - // in pre-2.9 projects sequence ref is to sequence name - sequence = al.findName(sequenceRef); - } - if (sequence != null) - { - jaa.createSequenceMapping(sequence, 1, true); - sequence.addAlignmentAnnotation(jaa); - } - } - // and make a note of any group association - if (an[i].getGroupRef() != null && an[i].getGroupRef().length() > 0) - { - List aal = groupAnnotRefs - .get(an[i].getGroupRef()); - if (aal == null) - { - aal = new ArrayList<>(); - groupAnnotRefs.put(an[i].getGroupRef(), aal); - } - aal.add(jaa); - } - - if (an[i].hasScore()) - { - jaa.setScore(an[i].getScore()); - } - if (an[i].hasVisible()) - { - jaa.visible = an[i].getVisible(); - } - - if (an[i].hasCentreColLabels()) - { - jaa.centreColLabels = an[i].getCentreColLabels(); - } - - if (an[i].hasScaleColLabels()) - { - jaa.scaleColLabel = an[i].getScaleColLabels(); - } - if (an[i].hasAutoCalculated() && an[i].isAutoCalculated()) - { - // newer files have an 'autoCalculated' flag and store calculation - // state in viewport properties - jaa.autoCalculated = true; // means annotation will be marked for - // update at end of load. - } - if (an[i].hasGraphHeight()) - { - jaa.graphHeight = an[i].getGraphHeight(); - } - if (an[i].hasBelowAlignment()) - { - jaa.belowAlignment = an[i].isBelowAlignment(); - } - jaa.setCalcId(an[i].getCalcId()); - if (an[i].getPropertyCount() > 0) - { - for (jalview.schemabinding.version2.Property prop : an[i] - .getProperty()) - { - jaa.setProperty(prop.getName(), prop.getValue()); - } - } - if (jaa.autoCalculated) - { - autoAlan.add(new JvAnnotRow(i, jaa)); - } - else - // if (!autoForView) - { - // add autocalculated group annotation and any user created annotation - // for the view - al.addAnnotation(jaa); - } - } - } - // /////////////////////// - // LOAD GROUPS - // Create alignment markup and styles for this view - if (jms.getJGroupCount() > 0) - { - JGroup[] groups = jms.getJGroup(); - boolean addAnnotSchemeGroup = false; - for (int i = 0; i < groups.length; i++) - { - JGroup jGroup = groups[i]; - ColourSchemeI cs = null; - if (jGroup.getColour() != null) - { - if (jGroup.getColour().startsWith("ucs")) - { - cs = getUserColourScheme(jms, jGroup.getColour()); - } - else if (jGroup.getColour().equals("AnnotationColourGradient") - && jGroup.getAnnotationColours() != null) - { - addAnnotSchemeGroup = true; - } - else - { - cs = ColourSchemeProperty.getColourScheme(al, - jGroup.getColour()); - } - } - int pidThreshold = jGroup.getPidThreshold(); - - Vector seqs = new Vector<>(); - - for (int s = 0; s < jGroup.getSeqCount(); s++) - { - String seqId = jGroup.getSeq(s) + ""; - SequenceI ts = seqRefIds.get(seqId); - - if (ts != null) - { - seqs.addElement(ts); - } - } - - if (seqs.size() < 1) - { - continue; - } - - SequenceGroup sg = new SequenceGroup(seqs, jGroup.getName(), cs, - jGroup.getDisplayBoxes(), jGroup.getDisplayText(), - jGroup.getColourText(), jGroup.getStart(), jGroup.getEnd()); - sg.getGroupColourScheme().setThreshold(pidThreshold, true); - sg.getGroupColourScheme() - .setConservationInc(jGroup.getConsThreshold()); - sg.setOutlineColour(new java.awt.Color(jGroup.getOutlineColour())); - - sg.textColour = new java.awt.Color(jGroup.getTextCol1()); - sg.textColour2 = new java.awt.Color(jGroup.getTextCol2()); - sg.setShowNonconserved( - jGroup.hasShowUnconserved() ? jGroup.isShowUnconserved() - : false); - sg.thresholdTextColour = jGroup.getTextColThreshold(); - if (jGroup.hasShowConsensusHistogram()) - { - sg.setShowConsensusHistogram(jGroup.isShowConsensusHistogram()); - } - ; - if (jGroup.hasShowSequenceLogo()) - { - sg.setshowSequenceLogo(jGroup.isShowSequenceLogo()); - } - if (jGroup.hasNormaliseSequenceLogo()) - { - sg.setNormaliseSequenceLogo(jGroup.isNormaliseSequenceLogo()); - } - if (jGroup.hasIgnoreGapsinConsensus()) - { - sg.setIgnoreGapsConsensus(jGroup.getIgnoreGapsinConsensus()); - } - if (jGroup.getConsThreshold() != 0) - { - Conservation c = new Conservation("All", sg.getSequences(null), 0, - sg.getWidth() - 1); - c.calculate(); - c.verdict(false, 25); - sg.cs.setConservation(c); - } - - if (jGroup.getId() != null && groupAnnotRefs.size() > 0) - { - // re-instate unique group/annotation row reference - List jaal = groupAnnotRefs - .get(jGroup.getId()); - if (jaal != null) - { - for (AlignmentAnnotation jaa : jaal) - { - jaa.groupRef = sg; - if (jaa.autoCalculated) - { - // match up and try to set group autocalc alignment row for this - // annotation - if (jaa.label.startsWith("Consensus for ")) - { - sg.setConsensus(jaa); - } - // match up and try to set group autocalc alignment row for this - // annotation - if (jaa.label.startsWith("Conservation for ")) - { - sg.setConservationRow(jaa); - } - } - } - } - } - al.addGroup(sg); - if (addAnnotSchemeGroup) - { - // reconstruct the annotation colourscheme - sg.setColourScheme(constructAnnotationColour( - jGroup.getAnnotationColours(), null, al, jms, false)); - } - } - } - if (view == null) - { - // only dataset in this model, so just return. - return null; - } - // /////////////////////////////// - // LOAD VIEWPORT - - // If we just load in the same jar file again, the sequenceSetId - // will be the same, and we end up with multiple references - // to the same sequenceSet. We must modify this id on load - // so that each load of the file gives a unique id - String uniqueSeqSetId = view.getSequenceSetId() + uniqueSetSuffix; - String viewId = (view.getId() == null ? null - : view.getId() + uniqueSetSuffix); - AlignFrame af = null; - AlignViewport av = null; - // now check to see if we really need to create a new viewport. - if (multipleView && viewportsAdded.size() == 0) - { - // We recovered an alignment for which a viewport already exists. - // TODO: fix up any settings necessary for overlaying stored state onto - // state recovered from another document. (may not be necessary). - // we may need a binding from a viewport in memory to one recovered from - // XML. - // and then recover its containing af to allow the settings to be applied. - // TODO: fix for vamsas demo - System.err.println( - "About to recover a viewport for existing alignment: Sequence set ID is " - + uniqueSeqSetId); - Object seqsetobj = retrieveExistingObj(uniqueSeqSetId); - if (seqsetobj != null) - { - if (seqsetobj instanceof String) - { - uniqueSeqSetId = (String) seqsetobj; - System.err.println( - "Recovered extant sequence set ID mapping for ID : New Sequence set ID is " - + uniqueSeqSetId); - } - else - { - System.err.println( - "Warning : Collision between sequence set ID string and existing jalview object mapping."); - } - - } - } - /** - * indicate that annotation colours are applied across all groups (pre - * Jalview 2.8.1 behaviour) - */ - boolean doGroupAnnColour = Jalview2XML.isVersionStringLaterThan("2.8.1", - object.getVersion()); - - AlignmentPanel ap = null; - boolean isnewview = true; - if (viewId != null) - { - // Check to see if this alignment already has a view id == viewId - jalview.gui.AlignmentPanel views[] = Desktop - .getAlignmentPanels(uniqueSeqSetId); - if (views != null && views.length > 0) - { - for (int v = 0; v < views.length; v++) - { - if (views[v].av.getViewId().equalsIgnoreCase(viewId)) - { - // recover the existing alignpanel, alignframe, viewport - af = views[v].alignFrame; - av = views[v].av; - ap = views[v]; - // TODO: could even skip resetting view settings if we don't want to - // change the local settings from other jalview processes - isnewview = false; - } - } - } - } - - if (isnewview) - { - af = loadViewport(file, jseqs, hiddenSeqs, al, jms, view, - uniqueSeqSetId, viewId, autoAlan); - av = af.viewport; - ap = af.alignPanel; - } - - /* - * Load any trees, PDB structures and viewers - * - * Not done if flag is false (when this method is used for New View) - */ - if (loadTreesAndStructures) - { - loadTrees(jms, view, af, av, ap); - loadPDBStructures(jprovider, jseqs, af, ap); - loadRnaViewers(jprovider, jseqs, ap); - } - // and finally return. - return af; - } - - /** - * Instantiate and link any saved RNA (Varna) viewers. The state of the Varna - * panel is restored from separate jar entries, two (gapped and trimmed) per - * sequence and secondary structure. - * - * Currently each viewer shows just one sequence and structure (gapped and - * trimmed), however this method is designed to support multiple sequences or - * structures in viewers if wanted in future. - * - * @param jprovider - * @param jseqs - * @param ap - */ - private void loadRnaViewers(jarInputStreamProvider jprovider, - JSeq[] jseqs, AlignmentPanel ap) - { - /* - * scan the sequences for references to viewers; create each one the first - * time it is referenced, add Rna models to existing viewers - */ - for (JSeq jseq : jseqs) - { - for (int i = 0; i < jseq.getRnaViewerCount(); i++) - { - RnaViewer viewer = jseq.getRnaViewer(i); - AppVarna appVarna = findOrCreateVarnaViewer(viewer, uniqueSetSuffix, - ap); - - for (int j = 0; j < viewer.getSecondaryStructureCount(); j++) - { - SecondaryStructure ss = viewer.getSecondaryStructure(j); - SequenceI seq = seqRefIds.get(jseq.getId()); - AlignmentAnnotation ann = this.annotationIds - .get(ss.getAnnotationId()); - - /* - * add the structure to the Varna display (with session state copied - * from the jar to a temporary file) - */ - boolean gapped = ss.isGapped(); - String rnaTitle = ss.getTitle(); - String sessionState = ss.getViewerState(); - String tempStateFile = copyJarEntry(jprovider, sessionState, - "varna", null); - RnaModel rna = new RnaModel(rnaTitle, ann, seq, null, gapped); - appVarna.addModelSession(rna, rnaTitle, tempStateFile); - } - appVarna.setInitialSelection(viewer.getSelectedRna()); - } - } - } - - /** - * Locate and return an already instantiated matching AppVarna, or create one - * if not found - * - * @param viewer - * @param viewIdSuffix - * @param ap - * @return - */ - protected AppVarna findOrCreateVarnaViewer(RnaViewer viewer, - String viewIdSuffix, AlignmentPanel ap) - { - /* - * on each load a suffix is appended to the saved viewId, to avoid conflicts - * if load is repeated - */ - String postLoadId = viewer.getViewId() + viewIdSuffix; - for (JInternalFrame frame : getAllFrames()) - { - if (frame instanceof AppVarna) - { - AppVarna varna = (AppVarna) frame; - if (postLoadId.equals(varna.getViewId())) - { - // this viewer is already instantiated - // could in future here add ap as another 'parent' of the - // AppVarna window; currently just 1-to-many - return varna; - } - } - } - - /* - * viewer not found - make it - */ - RnaViewerModel model = new RnaViewerModel(postLoadId, viewer.getTitle(), - viewer.getXpos(), viewer.getYpos(), viewer.getWidth(), - viewer.getHeight(), viewer.getDividerLocation()); - AppVarna varna = new AppVarna(model, ap); - - return varna; - } - - /** - * Load any saved trees - * - * @param jms - * @param view - * @param af - * @param av - * @param ap - */ - protected void loadTrees(JalviewModelSequence jms, Viewport view, - AlignFrame af, AlignViewport av, AlignmentPanel ap) - { - // TODO result of automated refactoring - are all these parameters needed? - try - { - for (int t = 0; t < jms.getTreeCount(); t++) - { - - Tree tree = jms.getTree(t); - - TreePanel tp = (TreePanel) retrieveExistingObj(tree.getId()); - if (tp == null) - { - tp = af.showNewickTree( - new jalview.io.NewickFile(tree.getNewick()), - tree.getTitle(), tree.getWidth(), tree.getHeight(), - tree.getXpos(), tree.getYpos()); - if (tree.getId() != null) - { - // perhaps bind the tree id to something ? - } - } - else - { - // update local tree attributes ? - // TODO: should check if tp has been manipulated by user - if so its - // settings shouldn't be modified - tp.setTitle(tree.getTitle()); - tp.setBounds(new Rectangle(tree.getXpos(), tree.getYpos(), - tree.getWidth(), tree.getHeight())); - tp.setViewport(av); // af.viewport; // TODO: verify 'associate with all - // views' - // works still - tp.getTreeCanvas().setViewport(av); // af.viewport; - tp.getTreeCanvas().setAssociatedPanel(ap); // af.alignPanel; - - } - if (tp == null) - { - warn("There was a problem recovering stored Newick tree: \n" - + tree.getNewick()); - continue; - } - - tp.fitToWindow.setState(tree.getFitToWindow()); - tp.fitToWindow_actionPerformed(null); - - if (tree.getFontName() != null) - { - tp.setTreeFont(new java.awt.Font(tree.getFontName(), - tree.getFontStyle(), tree.getFontSize())); - } - else - { - tp.setTreeFont(new java.awt.Font(view.getFontName(), - view.getFontStyle(), tree.getFontSize())); - } - - tp.showPlaceholders(tree.getMarkUnlinked()); - tp.showBootstrap(tree.getShowBootstrap()); - tp.showDistances(tree.getShowDistances()); - - tp.getTreeCanvas().setThreshold(tree.getThreshold()); - - if (tree.getCurrentTree()) - { - af.viewport.setCurrentTree(tp.getTree()); - } - } - - } catch (Exception ex) - { - ex.printStackTrace(); - } - } - - /** - * Load and link any saved structure viewers. - * - * @param jprovider - * @param jseqs - * @param af - * @param ap - */ - protected void loadPDBStructures(jarInputStreamProvider jprovider, - JSeq[] jseqs, AlignFrame af, AlignmentPanel ap) - { - /* - * Run through all PDB ids on the alignment, and collect mappings between - * distinct view ids and all sequences referring to that view. - */ - Map structureViewers = new LinkedHashMap<>(); - - for (int i = 0; i < jseqs.length; i++) - { - if (jseqs[i].getPdbidsCount() > 0) - { - Pdbids[] ids = jseqs[i].getPdbids(); - for (int p = 0; p < ids.length; p++) - { - final int structureStateCount = ids[p].getStructureStateCount(); - for (int s = 0; s < structureStateCount; s++) - { - // check to see if we haven't already created this structure view - final StructureState structureState = ids[p] - .getStructureState(s); - String sviewid = (structureState.getViewId() == null) ? null - : structureState.getViewId() + uniqueSetSuffix; - jalview.datamodel.PDBEntry jpdb = new jalview.datamodel.PDBEntry(); - // Originally : ids[p].getFile() - // : TODO: verify external PDB file recovery still works in normal - // jalview project load - jpdb.setFile(loadPDBFile(jprovider, ids[p].getId(), - ids[p].getFile())); - jpdb.setId(ids[p].getId()); - - int x = structureState.getXpos(); - int y = structureState.getYpos(); - int width = structureState.getWidth(); - int height = structureState.getHeight(); - - // Probably don't need to do this anymore... - // Desktop.desktop.getComponentAt(x, y); - // TODO: NOW: check that this recovers the PDB file correctly. - String pdbFile = loadPDBFile(jprovider, ids[p].getId(), - ids[p].getFile()); - jalview.datamodel.SequenceI seq = seqRefIds - .get(jseqs[i].getId() + ""); - if (sviewid == null) - { - sviewid = "_jalview_pre2_4_" + x + "," + y + "," + width + "," - + height; - } - if (!structureViewers.containsKey(sviewid)) - { - structureViewers.put(sviewid, - new StructureViewerModel(x, y, width, height, false, - false, true, structureState.getViewId(), - structureState.getType())); - // Legacy pre-2.7 conversion JAL-823 : - // do not assume any view has to be linked for colour by - // sequence - } - - // assemble String[] { pdb files }, String[] { id for each - // file }, orig_fileloc, SequenceI[][] {{ seqs_file 1 }, { - // seqs_file 2}, boolean[] { - // linkAlignPanel,superposeWithAlignpanel}} from hash - StructureViewerModel jmoldat = structureViewers.get(sviewid); - jmoldat.setAlignWithPanel(jmoldat.isAlignWithPanel() - | (structureState.hasAlignwithAlignPanel() - ? structureState.getAlignwithAlignPanel() - : false)); - - /* - * Default colour by linked panel to false if not specified (e.g. - * for pre-2.7 projects) - */ - boolean colourWithAlignPanel = jmoldat.isColourWithAlignPanel(); - colourWithAlignPanel |= (structureState - .hasColourwithAlignPanel() - ? structureState.getColourwithAlignPanel() - : false); - jmoldat.setColourWithAlignPanel(colourWithAlignPanel); - - /* - * Default colour by viewer to true if not specified (e.g. for - * pre-2.7 projects) - */ - boolean colourByViewer = jmoldat.isColourByViewer(); - colourByViewer &= structureState.hasColourByJmol() - ? structureState.getColourByJmol() - : true; - jmoldat.setColourByViewer(colourByViewer); - - if (jmoldat.getStateData().length() < structureState - .getContent().length()) - { - { - jmoldat.setStateData(structureState.getContent()); - } - } - if (ids[p].getFile() != null) - { - File mapkey = new File(ids[p].getFile()); - StructureData seqstrmaps = jmoldat.getFileData().get(mapkey); - if (seqstrmaps == null) - { - jmoldat.getFileData().put(mapkey, - seqstrmaps = jmoldat.new StructureData(pdbFile, - ids[p].getId())); - } - if (!seqstrmaps.getSeqList().contains(seq)) - { - seqstrmaps.getSeqList().add(seq); - // TODO and chains? - } - } - else - { - errorMessage = ("The Jmol views in this project were imported\nfrom an older version of Jalview.\nPlease review the sequence colour associations\nin the Colour by section of the Jmol View menu.\n\nIn the case of problems, see note at\nhttp://issues.jalview.org/browse/JAL-747"); - warn(errorMessage); - } - } - } - } - } - // Instantiate the associated structure views - for (Entry entry : structureViewers - .entrySet()) - { - try - { - createOrLinkStructureViewer(entry, af, ap, jprovider); - } catch (Exception e) - { - System.err.println( - "Error loading structure viewer: " + e.getMessage()); - // failed - try the next one - } - } - } - - /** - * - * @param viewerData - * @param af - * @param ap - * @param jprovider - */ - protected void createOrLinkStructureViewer( - Entry viewerData, AlignFrame af, - AlignmentPanel ap, jarInputStreamProvider jprovider) - { - final StructureViewerModel stateData = viewerData.getValue(); - - /* - * Search for any viewer windows already open from other alignment views - * that exactly match the stored structure state - */ - StructureViewerBase comp = findMatchingViewer(viewerData); - - if (comp != null) - { - linkStructureViewer(ap, comp, stateData); - return; - } - - /* - * From 2.9: stateData.type contains JMOL or CHIMERA, data is in jar entry - * "viewer_"+stateData.viewId - */ - if (ViewerType.CHIMERA.toString().equals(stateData.getType())) - { - createChimeraViewer(viewerData, af, jprovider); - } - else - { - /* - * else Jmol (if pre-2.9, stateData contains JMOL state string) - */ - createJmolViewer(viewerData, af, jprovider); - } - } - - /** - * Create a new Chimera viewer. - * - * @param data - * @param af - * @param jprovider - */ - protected void createChimeraViewer( - Entry viewerData, AlignFrame af, - jarInputStreamProvider jprovider) - { - StructureViewerModel data = viewerData.getValue(); - String chimeraSessionFile = data.getStateData(); - - /* - * Copy Chimera session from jar entry "viewer_"+viewId to a temporary file - * - * NB this is the 'saved' viewId as in the project file XML, _not_ the - * 'uniquified' sviewid used to reconstruct the viewer here - */ - String viewerJarEntryName = getViewerJarEntryName(data.getViewId()); - chimeraSessionFile = copyJarEntry(jprovider, viewerJarEntryName, - "chimera", null); - - Set> fileData = data.getFileData() - .entrySet(); - List pdbs = new ArrayList<>(); - List allseqs = new ArrayList<>(); - for (Entry pdb : fileData) - { - String filePath = pdb.getValue().getFilePath(); - String pdbId = pdb.getValue().getPdbId(); - // pdbs.add(new PDBEntry(filePath, pdbId)); - pdbs.add(new PDBEntry(pdbId, null, PDBEntry.Type.PDB, filePath)); - final List seqList = pdb.getValue().getSeqList(); - SequenceI[] seqs = seqList.toArray(new SequenceI[seqList.size()]); - allseqs.add(seqs); - } - - boolean colourByChimera = data.isColourByViewer(); - boolean colourBySequence = data.isColourWithAlignPanel(); - - // TODO use StructureViewer as a factory here, see JAL-1761 - final PDBEntry[] pdbArray = pdbs.toArray(new PDBEntry[pdbs.size()]); - final SequenceI[][] seqsArray = allseqs - .toArray(new SequenceI[allseqs.size()][]); - String newViewId = viewerData.getKey(); - - ChimeraViewFrame cvf = new ChimeraViewFrame(chimeraSessionFile, - af.alignPanel, pdbArray, seqsArray, colourByChimera, - colourBySequence, newViewId); - cvf.setSize(data.getWidth(), data.getHeight()); - cvf.setLocation(data.getX(), data.getY()); - } - - /** - * Create a new Jmol window. First parse the Jmol state to translate filenames - * loaded into the view, and record the order in which files are shown in the - * Jmol view, so we can add the sequence mappings in same order. - * - * @param viewerData - * @param af - * @param jprovider - */ - protected void createJmolViewer( - final Entry viewerData, - AlignFrame af, jarInputStreamProvider jprovider) - { - final StructureViewerModel svattrib = viewerData.getValue(); - String state = svattrib.getStateData(); - - /* - * Pre-2.9: state element value is the Jmol state string - * - * 2.9+: @type is "JMOL", state data is in a Jar file member named "viewer_" - * + viewId - */ - if (ViewerType.JMOL.toString().equals(svattrib.getType())) - { - state = readJarEntry(jprovider, - getViewerJarEntryName(svattrib.getViewId())); - } - - List pdbfilenames = new ArrayList<>(); - List seqmaps = new ArrayList<>(); - List pdbids = new ArrayList<>(); - StringBuilder newFileLoc = new StringBuilder(64); - int cp = 0, ncp, ecp; - Map oldFiles = svattrib.getFileData(); - while ((ncp = state.indexOf("load ", cp)) > -1) - { - do - { - // look for next filename in load statement - newFileLoc.append(state.substring(cp, - ncp = (state.indexOf("\"", ncp + 1) + 1))); - String oldfilenam = state.substring(ncp, - ecp = state.indexOf("\"", ncp)); - // recover the new mapping data for this old filename - // have to normalize filename - since Jmol and jalview do - // filename - // translation differently. - StructureData filedat = oldFiles.get(new File(oldfilenam)); - if (filedat == null) - { - String reformatedOldFilename = oldfilenam.replaceAll("/", "\\\\"); - filedat = oldFiles.get(new File(reformatedOldFilename)); - } - newFileLoc.append(Platform.escapeString(filedat.getFilePath())); - pdbfilenames.add(filedat.getFilePath()); - pdbids.add(filedat.getPdbId()); - seqmaps.add(filedat.getSeqList().toArray(new SequenceI[0])); - newFileLoc.append("\""); - cp = ecp + 1; // advance beyond last \" and set cursor so we can - // look for next file statement. - } while ((ncp = state.indexOf("/*file*/", cp)) > -1); - } - if (cp > 0) - { - // just append rest of state - newFileLoc.append(state.substring(cp)); - } - else - { - System.err.print("Ignoring incomplete Jmol state for PDB ids: "); - newFileLoc = new StringBuilder(state); - newFileLoc.append("; load append "); - for (File id : oldFiles.keySet()) - { - // add this and any other pdb files that should be present in - // the viewer - StructureData filedat = oldFiles.get(id); - newFileLoc.append(filedat.getFilePath()); - pdbfilenames.add(filedat.getFilePath()); - pdbids.add(filedat.getPdbId()); - seqmaps.add(filedat.getSeqList().toArray(new SequenceI[0])); - newFileLoc.append(" \""); - newFileLoc.append(filedat.getFilePath()); - newFileLoc.append("\""); - - } - newFileLoc.append(";"); - } - - if (newFileLoc.length() == 0) - { - return; - } - int histbug = newFileLoc.indexOf("history = "); - if (histbug > -1) - { - /* - * change "history = [true|false];" to "history = [1|0];" - */ - histbug += 10; - int diff = histbug == -1 ? -1 : newFileLoc.indexOf(";", histbug); - String val = (diff == -1) ? null - : newFileLoc.substring(histbug, diff); - if (val != null && val.length() >= 4) - { - if (val.contains("e")) // eh? what can it be? - { - if (val.trim().equals("true")) - { - val = "1"; - } - else - { - val = "0"; - } - newFileLoc.replace(histbug, diff, val); - } - } - } - - final String[] pdbf = pdbfilenames - .toArray(new String[pdbfilenames.size()]); - final String[] id = pdbids.toArray(new String[pdbids.size()]); - final SequenceI[][] sq = seqmaps - .toArray(new SequenceI[seqmaps.size()][]); - final String fileloc = newFileLoc.toString(); - final String sviewid = viewerData.getKey(); - final AlignFrame alf = af; - final Rectangle rect = new Rectangle(svattrib.getX(), svattrib.getY(), - svattrib.getWidth(), svattrib.getHeight()); - try - { - javax.swing.SwingUtilities.invokeAndWait(new Runnable() - { - @Override - public void run() - { - JalviewStructureDisplayI sview = null; - try - { - sview = new StructureViewer( - alf.alignPanel.getStructureSelectionManager()) - .createView(StructureViewer.ViewerType.JMOL, - pdbf, id, sq, alf.alignPanel, svattrib, - fileloc, rect, sviewid); - addNewStructureViewer(sview); - } catch (OutOfMemoryError ex) - { - new OOMWarning("restoring structure view for PDB id " + id, - (OutOfMemoryError) ex.getCause()); - if (sview != null && sview.isVisible()) - { - sview.closeViewer(false); - sview.setVisible(false); - sview.dispose(); - } - } - } - }); - } catch (InvocationTargetException ex) - { - warn("Unexpected error when opening Jmol view.", ex); - - } catch (InterruptedException e) - { - // e.printStackTrace(); - } - - } - - /** - * Generates a name for the entry in the project jar file to hold state - * information for a structure viewer - * - * @param viewId - * @return - */ - protected String getViewerJarEntryName(String viewId) - { - return VIEWER_PREFIX + viewId; - } - - /** - * Returns any open frame that matches given structure viewer data. The match - * is based on the unique viewId, or (for older project versions) the frame's - * geometry. - * - * @param viewerData - * @return - */ - protected StructureViewerBase findMatchingViewer( - Entry viewerData) - { - final String sviewid = viewerData.getKey(); - final StructureViewerModel svattrib = viewerData.getValue(); - StructureViewerBase comp = null; - JInternalFrame[] frames = getAllFrames(); - for (JInternalFrame frame : frames) - { - if (frame instanceof StructureViewerBase) - { - /* - * Post jalview 2.4 schema includes structure view id - */ - if (sviewid != null && ((StructureViewerBase) frame).getViewId() - .equals(sviewid)) - { - comp = (StructureViewerBase) frame; - break; // break added in 2.9 - } - /* - * Otherwise test for matching position and size of viewer frame - */ - else if (frame.getX() == svattrib.getX() - && frame.getY() == svattrib.getY() - && frame.getHeight() == svattrib.getHeight() - && frame.getWidth() == svattrib.getWidth()) - { - comp = (StructureViewerBase) frame; - // no break in faint hope of an exact match on viewId - } - } - } - return comp; - } - - /** - * Link an AlignmentPanel to an existing structure viewer. - * - * @param ap - * @param viewer - * @param oldFiles - * @param useinViewerSuperpos - * @param usetoColourbyseq - * @param viewerColouring - */ - protected void linkStructureViewer(AlignmentPanel ap, - StructureViewerBase viewer, StructureViewerModel stateData) - { - // NOTE: if the jalview project is part of a shared session then - // view synchronization should/could be done here. - - final boolean useinViewerSuperpos = stateData.isAlignWithPanel(); - final boolean usetoColourbyseq = stateData.isColourWithAlignPanel(); - final boolean viewerColouring = stateData.isColourByViewer(); - Map oldFiles = stateData.getFileData(); - - /* - * Add mapping for sequences in this view to an already open viewer - */ - final AAStructureBindingModel binding = viewer.getBinding(); - for (File id : oldFiles.keySet()) - { - // add this and any other pdb files that should be present in the - // viewer - StructureData filedat = oldFiles.get(id); - String pdbFile = filedat.getFilePath(); - SequenceI[] seq = filedat.getSeqList().toArray(new SequenceI[0]); - binding.getSsm().setMapping(seq, null, pdbFile, DataSourceType.FILE, - null); - binding.addSequenceForStructFile(pdbFile, seq); - } - // and add the AlignmentPanel's reference to the view panel - viewer.addAlignmentPanel(ap); - if (useinViewerSuperpos) - { - viewer.useAlignmentPanelForSuperposition(ap); - } - else - { - viewer.excludeAlignmentPanelForSuperposition(ap); - } - if (usetoColourbyseq) - { - viewer.useAlignmentPanelForColourbyseq(ap, !viewerColouring); - } - else - { - viewer.excludeAlignmentPanelForColourbyseq(ap); - } - } - - /** - * Get all frames within the Desktop. - * - * @return - */ - protected JInternalFrame[] getAllFrames() - { - JInternalFrame[] frames = null; - // TODO is this necessary - is it safe - risk of hanging? - do - { - try - { - frames = Desktop.desktop.getAllFrames(); - } catch (ArrayIndexOutOfBoundsException e) - { - // occasional No such child exceptions are thrown here... - try - { - Thread.sleep(10); - } catch (InterruptedException f) - { - } - } - } while (frames == null); - return frames; - } - - /** - * Answers true if 'version' is equal to or later than 'supported', where each - * is formatted as major/minor versions like "2.8.3" or "2.3.4b1" for bugfix - * changes. Development and test values for 'version' are leniently treated - * i.e. answer true. - * - * @param supported - * - minimum version we are comparing against - * @param version - * - version of data being processsed - * @return - */ - public static boolean isVersionStringLaterThan(String supported, - String version) - { - if (supported == null || version == null - || version.equalsIgnoreCase("DEVELOPMENT BUILD") - || version.equalsIgnoreCase("Test") - || version.equalsIgnoreCase("AUTOMATED BUILD")) - { - System.err.println("Assuming project file with " - + (version == null ? "null" : version) - + " is compatible with Jalview version " + supported); - return true; - } - else - { - return StringUtils.compareVersions(version, supported, "b") >= 0; - } - } - - Vector newStructureViewers = null; - - protected void addNewStructureViewer(JalviewStructureDisplayI sview) - { - if (newStructureViewers != null) - { - sview.getBinding().setFinishedLoadingFromArchive(false); - newStructureViewers.add(sview); - } - } - - protected void setLoadingFinishedForNewStructureViewers() - { - if (newStructureViewers != null) - { - for (JalviewStructureDisplayI sview : newStructureViewers) - { - sview.getBinding().setFinishedLoadingFromArchive(true); - } - newStructureViewers.clear(); - newStructureViewers = null; - } - } - - AlignFrame loadViewport(String file, JSeq[] JSEQ, - List hiddenSeqs, AlignmentI al, - JalviewModelSequence jms, Viewport view, String uniqueSeqSetId, - String viewId, List autoAlan) - { - AlignFrame af = null; - af = new AlignFrame(al, view.getWidth(), view.getHeight(), - uniqueSeqSetId, viewId); - - af.setFileName(file, FileFormat.Jalview); - - for (int i = 0; i < JSEQ.length; i++) - { - af.viewport.setSequenceColour( - af.viewport.getAlignment().getSequenceAt(i), - new java.awt.Color(JSEQ[i].getColour())); - } - - if (al.hasSeqrep()) - { - af.getViewport().setColourByReferenceSeq(true); - af.getViewport().setDisplayReferenceSeq(true); - } - - af.viewport.setGatherViewsHere(view.getGatheredViews()); - - if (view.getSequenceSetId() != null) - { - AlignmentViewport av = viewportsAdded.get(uniqueSeqSetId); - - af.viewport.setSequenceSetId(uniqueSeqSetId); - if (av != null) - { - // propagate shared settings to this new view - af.viewport.setHistoryList(av.getHistoryList()); - af.viewport.setRedoList(av.getRedoList()); - } - else - { - viewportsAdded.put(uniqueSeqSetId, af.viewport); - } - // TODO: check if this method can be called repeatedly without - // side-effects if alignpanel already registered. - PaintRefresher.Register(af.alignPanel, uniqueSeqSetId); - } - // apply Hidden regions to view. - if (hiddenSeqs != null) - { - for (int s = 0; s < JSEQ.length; s++) - { - SequenceGroup hidden = new SequenceGroup(); - boolean isRepresentative = false; - for (int r = 0; r < JSEQ[s].getHiddenSequencesCount(); r++) - { - isRepresentative = true; - SequenceI sequenceToHide = al - .getSequenceAt(JSEQ[s].getHiddenSequences(r)); - hidden.addSequence(sequenceToHide, false); - // remove from hiddenSeqs list so we don't try to hide it twice - hiddenSeqs.remove(sequenceToHide); - } - if (isRepresentative) - { - SequenceI representativeSequence = al.getSequenceAt(s); - hidden.addSequence(representativeSequence, false); - af.viewport.hideRepSequences(representativeSequence, hidden); - } - } - - SequenceI[] hseqs = hiddenSeqs - .toArray(new SequenceI[hiddenSeqs.size()]); - af.viewport.hideSequence(hseqs); - - } - // recover view properties and display parameters - - af.viewport.setShowAnnotation(view.getShowAnnotation()); - af.viewport.setAbovePIDThreshold(view.getPidSelected()); - af.viewport.setThreshold(view.getPidThreshold()); - - af.viewport.setColourText(view.getShowColourText()); - - af.viewport.setConservationSelected(view.getConservationSelected()); - af.viewport.setIncrement(view.getConsThreshold()); - af.viewport.setShowJVSuffix(view.getShowFullId()); - af.viewport.setRightAlignIds(view.getRightAlignIds()); - af.viewport.setFont(new java.awt.Font(view.getFontName(), - view.getFontStyle(), view.getFontSize()), true); - ViewStyleI vs = af.viewport.getViewStyle(); - vs.setScaleProteinAsCdna(view.isScaleProteinAsCdna()); - af.viewport.setViewStyle(vs); - // TODO: allow custom charWidth/Heights to be restored by updating them - // after setting font - which means set above to false - af.viewport.setRenderGaps(view.getRenderGaps()); - af.viewport.setWrapAlignment(view.getWrapAlignment()); - af.viewport.setShowAnnotation(view.getShowAnnotation()); - - af.viewport.setShowBoxes(view.getShowBoxes()); - - af.viewport.setShowText(view.getShowText()); - - af.viewport.setTextColour(new java.awt.Color(view.getTextCol1())); - af.viewport.setTextColour2(new java.awt.Color(view.getTextCol2())); - af.viewport.setThresholdTextColour(view.getTextColThreshold()); - af.viewport.setShowUnconserved( - view.hasShowUnconserved() ? view.isShowUnconserved() : false); - af.viewport.getRanges().setStartRes(view.getStartRes()); - - if (view.getViewName() != null) - { - af.viewport.setViewName(view.getViewName()); - af.setInitialTabVisible(); - } - af.setBounds(view.getXpos(), view.getYpos(), view.getWidth(), - view.getHeight()); - // startSeq set in af.alignPanel.updateLayout below - af.alignPanel.updateLayout(); - ColourSchemeI cs = null; - // apply colourschemes - if (view.getBgColour() != null) - { - if (view.getBgColour().startsWith("ucs")) - { - cs = getUserColourScheme(jms, view.getBgColour()); - } - else if (view.getBgColour().startsWith("Annotation")) - { - AnnotationColours viewAnnColour = view.getAnnotationColours(); - cs = constructAnnotationColour(viewAnnColour, af, al, jms, true); - - // annpos - - } - else - { - cs = ColourSchemeProperty.getColourScheme(al, view.getBgColour()); - } - } - - af.viewport.setGlobalColourScheme(cs); - af.viewport.getResidueShading().setThreshold(view.getPidThreshold(), - view.getIgnoreGapsinConsensus()); - af.viewport.getResidueShading() - .setConsensus(af.viewport.getSequenceConsensusHash()); - af.viewport.setColourAppliesToAllGroups(false); - - if (view.getConservationSelected() && cs != null) - { - af.viewport.getResidueShading() - .setConservationInc(view.getConsThreshold()); - } - - af.changeColour(cs); - - af.viewport.setColourAppliesToAllGroups(true); - - af.viewport.setShowSequenceFeatures(view.getShowSequenceFeatures()); - - if (view.hasCentreColumnLabels()) - { - af.viewport.setCentreColumnLabels(view.getCentreColumnLabels()); - } - if (view.hasIgnoreGapsinConsensus()) - { - af.viewport.setIgnoreGapsConsensus(view.getIgnoreGapsinConsensus(), - null); - } - if (view.hasFollowHighlight()) - { - af.viewport.setFollowHighlight(view.getFollowHighlight()); - } - if (view.hasFollowSelection()) - { - af.viewport.followSelection = view.getFollowSelection(); - } - if (view.hasShowConsensusHistogram()) - { - af.viewport - .setShowConsensusHistogram(view.getShowConsensusHistogram()); - } - else - { - af.viewport.setShowConsensusHistogram(true); - } - if (view.hasShowSequenceLogo()) - { - af.viewport.setShowSequenceLogo(view.getShowSequenceLogo()); - } - else - { - af.viewport.setShowSequenceLogo(false); - } - if (view.hasNormaliseSequenceLogo()) - { - af.viewport.setNormaliseSequenceLogo(view.getNormaliseSequenceLogo()); - } - if (view.hasShowDbRefTooltip()) - { - af.viewport.setShowDBRefs(view.getShowDbRefTooltip()); - } - if (view.hasShowNPfeatureTooltip()) - { - af.viewport.setShowNPFeats(view.hasShowNPfeatureTooltip()); - } - if (view.hasShowGroupConsensus()) - { - af.viewport.setShowGroupConsensus(view.getShowGroupConsensus()); - } - else - { - af.viewport.setShowGroupConsensus(false); - } - if (view.hasShowGroupConservation()) - { - af.viewport.setShowGroupConservation(view.getShowGroupConservation()); - } - else - { - af.viewport.setShowGroupConservation(false); - } - - // recover feature settings - if (jms.getFeatureSettings() != null) - { - FeatureRenderer fr = af.alignPanel.getSeqPanel().seqCanvas - .getFeatureRenderer(); - FeaturesDisplayed fdi; - af.viewport.setFeaturesDisplayed(fdi = new FeaturesDisplayed()); - String[] renderOrder = new String[jms.getFeatureSettings() - .getSettingCount()]; - Map featureColours = new Hashtable<>(); - Map featureOrder = new Hashtable<>(); - - for (int fs = 0; fs < jms.getFeatureSettings() - .getSettingCount(); fs++) - { - Setting setting = jms.getFeatureSettings().getSetting(fs); - String featureType = setting.getType(); - - /* - * restore feature filters (if any) - */ - MatcherSet filters = setting.getMatcherSet(); - if (filters != null) - { - FeatureMatcherSetI filter = Jalview2XML - .unmarshalFilter(featureType, filters); - if (!filter.isEmpty()) - { - fr.setFeatureFilter(featureType, filter); - } - } - - /* - * restore feature colour scheme - */ - Color maxColour = new Color(setting.getColour()); - if (setting.hasMincolour()) - { - /* - * minColour is always set unless a simple colour - * (including for colour by label though it doesn't use it) - */ - Color minColour = new Color(setting.getMincolour()); - Color noValueColour = minColour; - NoValueColour noColour = setting.getNoValueColour(); - if (noColour == NoValueColour.NONE) - { - noValueColour = null; - } - else if (noColour == NoValueColour.MAX) - { - noValueColour = maxColour; - } - float min = setting.hasMin() ? setting.getMin() : 0f; - float max = setting.hasMin() ? setting.getMax() : 1f; - FeatureColourI gc = new FeatureColour(minColour, maxColour, - noValueColour, min, max); - if (setting.getAttributeNameCount() > 0) - { - gc.setAttributeName(setting.getAttributeName()); - } - if (setting.hasThreshold()) - { - gc.setThreshold(setting.getThreshold()); - int threshstate = setting.getThreshstate(); - // -1 = None, 0 = Below, 1 = Above threshold - if (threshstate == 0) - { - gc.setBelowThreshold(true); - } - else if (threshstate == 1) - { - gc.setAboveThreshold(true); - } - } - gc.setAutoScaled(true); // default - if (setting.hasAutoScale()) - { - gc.setAutoScaled(setting.getAutoScale()); - } - if (setting.hasColourByLabel()) - { - gc.setColourByLabel(setting.getColourByLabel()); - } - // and put in the feature colour table. - featureColours.put(featureType, gc); - } - else - { - featureColours.put(featureType, - new FeatureColour(maxColour)); - } - renderOrder[fs] = featureType; - if (setting.hasOrder()) - { - featureOrder.put(featureType, setting.getOrder()); - } - else - { - featureOrder.put(featureType, new Float( - fs / jms.getFeatureSettings().getSettingCount())); - } - if (setting.getDisplay()) - { - fdi.setVisible(featureType); - } - } - Map fgtable = new Hashtable<>(); - for (int gs = 0; gs < jms.getFeatureSettings().getGroupCount(); gs++) - { - Group grp = jms.getFeatureSettings().getGroup(gs); - fgtable.put(grp.getName(), new Boolean(grp.getDisplay())); - } - // FeatureRendererSettings frs = new FeatureRendererSettings(renderOrder, - // fgtable, featureColours, jms.getFeatureSettings().hasTransparency() ? - // jms.getFeatureSettings().getTransparency() : 0.0, featureOrder); - FeatureRendererSettings frs = new FeatureRendererSettings(renderOrder, - fgtable, featureColours, 1.0f, featureOrder); - fr.transferSettings(frs); - } - - if (view.getHiddenColumnsCount() > 0) - { - for (int c = 0; c < view.getHiddenColumnsCount(); c++) - { - af.viewport.hideColumns(view.getHiddenColumns(c).getStart(), - view.getHiddenColumns(c).getEnd() // +1 - ); - } - } - if (view.getCalcIdParam() != null) - { - for (CalcIdParam calcIdParam : view.getCalcIdParam()) - { - if (calcIdParam != null) - { - if (recoverCalcIdParam(calcIdParam, af.viewport)) - { - } - else - { - warn("Couldn't recover parameters for " - + calcIdParam.getCalcId()); - } - } - } - } - af.setMenusFromViewport(af.viewport); - af.setTitle(view.getTitle()); - // TODO: we don't need to do this if the viewport is aready visible. - /* - * Add the AlignFrame to the desktop (it may be 'gathered' later), unless it - * has a 'cdna/protein complement' view, in which case save it in order to - * populate a SplitFrame once all views have been read in. - */ - String complementaryViewId = view.getComplementId(); - if (complementaryViewId == null) - { - Desktop.addInternalFrame(af, view.getTitle(), view.getWidth(), - view.getHeight()); - // recompute any autoannotation - af.alignPanel.updateAnnotation(false, true); - reorderAutoannotation(af, al, autoAlan); - af.alignPanel.alignmentChanged(); - } - else - { - splitFrameCandidates.put(view, af); - } - return af; - } - - /** - * Reads saved data to restore Colour by Annotation settings - * - * @param viewAnnColour - * @param af - * @param al - * @param jms - * @param checkGroupAnnColour - * @return - */ - private ColourSchemeI constructAnnotationColour( - AnnotationColours viewAnnColour, AlignFrame af, AlignmentI al, - JalviewModelSequence jms, boolean checkGroupAnnColour) - { - boolean propagateAnnColour = false; - AlignmentI annAlignment = af != null ? af.viewport.getAlignment() : al; - if (checkGroupAnnColour && al.getGroups() != null - && al.getGroups().size() > 0) - { - // pre 2.8.1 behaviour - // check to see if we should transfer annotation colours - propagateAnnColour = true; - for (SequenceGroup sg : al.getGroups()) - { - if (sg.getColourScheme() instanceof AnnotationColourGradient) - { - propagateAnnColour = false; - } - } - } - - /* - * 2.10.2- : saved annotationId is AlignmentAnnotation.annotationId - */ - String annotationId = viewAnnColour.getAnnotation(); - AlignmentAnnotation matchedAnnotation = annotationIds.get(annotationId); - - /* - * pre 2.10.2: saved annotationId is AlignmentAnnotation.label - */ - if (matchedAnnotation == null - && annAlignment.getAlignmentAnnotation() != null) - { - for (int i = 0; i < annAlignment.getAlignmentAnnotation().length; i++) - { - if (annotationId - .equals(annAlignment.getAlignmentAnnotation()[i].label)) - { - matchedAnnotation = annAlignment.getAlignmentAnnotation()[i]; - break; - } - } - } - if (matchedAnnotation == null) - { - System.err.println("Failed to match annotation colour scheme for " - + annotationId); - return null; - } - if (matchedAnnotation.getThreshold() == null) - { - matchedAnnotation.setThreshold(new GraphLine( - viewAnnColour.getThreshold(), "Threshold", Color.black)); - } - - AnnotationColourGradient cs = null; - if (viewAnnColour.getColourScheme().equals("None")) - { - cs = new AnnotationColourGradient(matchedAnnotation, - new Color(viewAnnColour.getMinColour()), - new Color(viewAnnColour.getMaxColour()), - viewAnnColour.getAboveThreshold()); - } - else if (viewAnnColour.getColourScheme().startsWith("ucs")) - { - cs = new AnnotationColourGradient(matchedAnnotation, - getUserColourScheme(jms, viewAnnColour.getColourScheme()), - viewAnnColour.getAboveThreshold()); - } - else - { - cs = new AnnotationColourGradient(matchedAnnotation, - ColourSchemeProperty.getColourScheme(al, - viewAnnColour.getColourScheme()), - viewAnnColour.getAboveThreshold()); - } - - boolean perSequenceOnly = viewAnnColour.isPerSequence(); - boolean useOriginalColours = viewAnnColour.isPredefinedColours(); - cs.setSeqAssociated(perSequenceOnly); - cs.setPredefinedColours(useOriginalColours); - - if (propagateAnnColour && al.getGroups() != null) - { - // Also use these settings for all the groups - for (int g = 0; g < al.getGroups().size(); g++) - { - SequenceGroup sg = al.getGroups().get(g); - if (sg.getGroupColourScheme() == null) - { - continue; - } - - AnnotationColourGradient groupScheme = new AnnotationColourGradient( - matchedAnnotation, sg.getColourScheme(), - viewAnnColour.getAboveThreshold()); - sg.setColourScheme(groupScheme); - groupScheme.setSeqAssociated(perSequenceOnly); - groupScheme.setPredefinedColours(useOriginalColours); - } - } - return cs; - } - - private void reorderAutoannotation(AlignFrame af, AlignmentI al, - List autoAlan) - { - // copy over visualization settings for autocalculated annotation in the - // view - if (al.getAlignmentAnnotation() != null) - { - /** - * Kludge for magic autoannotation names (see JAL-811) - */ - String[] magicNames = new String[] { "Consensus", "Quality", - "Conservation" }; - JvAnnotRow nullAnnot = new JvAnnotRow(-1, null); - Hashtable visan = new Hashtable<>(); - for (String nm : magicNames) - { - visan.put(nm, nullAnnot); - } - for (JvAnnotRow auan : autoAlan) - { - visan.put(auan.template.label - + (auan.template.getCalcId() == null ? "" - : "\t" + auan.template.getCalcId()), - auan); - } - int hSize = al.getAlignmentAnnotation().length; - List reorder = new ArrayList<>(); - // work through any autoCalculated annotation already on the view - // removing it if it should be placed in a different location on the - // annotation panel. - List remains = new ArrayList<>(visan.keySet()); - for (int h = 0; h < hSize; h++) - { - jalview.datamodel.AlignmentAnnotation jalan = al - .getAlignmentAnnotation()[h]; - if (jalan.autoCalculated) - { - String k; - JvAnnotRow valan = visan.get(k = jalan.label); - if (jalan.getCalcId() != null) - { - valan = visan.get(k = jalan.label + "\t" + jalan.getCalcId()); - } - - if (valan != null) - { - // delete the auto calculated row from the alignment - al.deleteAnnotation(jalan, false); - remains.remove(k); - hSize--; - h--; - if (valan != nullAnnot) - { - if (jalan != valan.template) - { - // newly created autoannotation row instance - // so keep a reference to the visible annotation row - // and copy over all relevant attributes - if (valan.template.graphHeight >= 0) - - { - jalan.graphHeight = valan.template.graphHeight; - } - jalan.visible = valan.template.visible; - } - reorder.add(new JvAnnotRow(valan.order, jalan)); - } - } - } - } - // Add any (possibly stale) autocalculated rows that were not appended to - // the view during construction - for (String other : remains) - { - JvAnnotRow othera = visan.get(other); - if (othera != nullAnnot && othera.template.getCalcId() != null - && othera.template.getCalcId().length() > 0) - { - reorder.add(othera); - } - } - // now put the automatic annotation in its correct place - int s = 0, srt[] = new int[reorder.size()]; - JvAnnotRow[] rws = new JvAnnotRow[reorder.size()]; - for (JvAnnotRow jvar : reorder) - { - rws[s] = jvar; - srt[s++] = jvar.order; - } - reorder.clear(); - jalview.util.QuickSort.sort(srt, rws); - // and re-insert the annotation at its correct position - for (JvAnnotRow jvar : rws) - { - al.addAnnotation(jvar.template, jvar.order); - } - af.alignPanel.adjustAnnotationHeight(); - } - } - - Hashtable skipList = null; - - /** - * TODO remove this method - * - * @param view - * @return AlignFrame bound to sequenceSetId from view, if one exists. private - * AlignFrame getSkippedFrame(Viewport view) { if (skipList==null) { - * throw new Error("Implementation Error. No skipList defined for this - * Jalview2XML instance."); } return (AlignFrame) - * skipList.get(view.getSequenceSetId()); } - */ - - /** - * Check if the Jalview view contained in object should be skipped or not. - * - * @param object - * @return true if view's sequenceSetId is a key in skipList - */ - private boolean skipViewport(JalviewModel object) - { - if (skipList == null) - { - return false; - } - String id; - if (skipList.containsKey( - id = object.getJalviewModelSequence().getViewport()[0] - .getSequenceSetId())) - { - if (Cache.log != null && Cache.log.isDebugEnabled()) - { - Cache.log.debug("Skipping seuqence set id " + id); - } - return true; - } - return false; - } - - public void addToSkipList(AlignFrame af) - { - if (skipList == null) - { - skipList = new Hashtable(); - } - skipList.put(af.getViewport().getSequenceSetId(), af); - } - - public void clearSkipList() - { - if (skipList != null) - { - skipList.clear(); - skipList = null; - } - } - - private void recoverDatasetFor(SequenceSet vamsasSet, AlignmentI al, - boolean ignoreUnrefed) - { - jalview.datamodel.AlignmentI ds = getDatasetFor( - vamsasSet.getDatasetId()); - Vector dseqs = null; - if (ds == null) - { - // create a list of new dataset sequences - dseqs = new Vector(); - } - for (int i = 0, iSize = vamsasSet.getSequenceCount(); i < iSize; i++) - { - Sequence vamsasSeq = vamsasSet.getSequence(i); - ensureJalviewDatasetSequence(vamsasSeq, ds, dseqs, ignoreUnrefed, i); - } - // create a new dataset - if (ds == null) - { - SequenceI[] dsseqs = new SequenceI[dseqs.size()]; - dseqs.copyInto(dsseqs); - ds = new jalview.datamodel.Alignment(dsseqs); - debug("Created new dataset " + vamsasSet.getDatasetId() - + " for alignment " + System.identityHashCode(al)); - addDatasetRef(vamsasSet.getDatasetId(), ds); - } - // set the dataset for the newly imported alignment. - if (al.getDataset() == null && !ignoreUnrefed) - { - al.setDataset(ds); - } - } - - /** - * - * @param vamsasSeq - * sequence definition to create/merge dataset sequence for - * @param ds - * dataset alignment - * @param dseqs - * vector to add new dataset sequence to - * @param ignoreUnrefed - * - when true, don't create new sequences from vamsasSeq if it's id - * doesn't already have an asssociated Jalview sequence. - * @param vseqpos - * - used to reorder the sequence in the alignment according to the - * vamsasSeq array ordering, to preserve ordering of dataset - */ - private void ensureJalviewDatasetSequence(Sequence vamsasSeq, - AlignmentI ds, Vector dseqs, boolean ignoreUnrefed, int vseqpos) - { - // JBP TODO: Check this is called for AlCodonFrames to support recovery of - // xRef Codon Maps - SequenceI sq = seqRefIds.get(vamsasSeq.getId()); - boolean reorder = false; - SequenceI dsq = null; - if (sq != null && sq.getDatasetSequence() != null) - { - dsq = sq.getDatasetSequence(); - } - else - { - reorder = true; - } - if (sq == null && ignoreUnrefed) - { - return; - } - String sqid = vamsasSeq.getDsseqid(); - if (dsq == null) - { - // need to create or add a new dataset sequence reference to this sequence - if (sqid != null) - { - dsq = seqRefIds.get(sqid); - } - // check again - if (dsq == null) - { - // make a new dataset sequence - dsq = sq.createDatasetSequence(); - if (sqid == null) - { - // make up a new dataset reference for this sequence - sqid = seqHash(dsq); - } - dsq.setVamsasId(uniqueSetSuffix + sqid); - seqRefIds.put(sqid, dsq); - if (ds == null) - { - if (dseqs != null) - { - dseqs.addElement(dsq); - } - } - else - { - ds.addSequence(dsq); - } - } - else - { - if (sq != dsq) - { // make this dataset sequence sq's dataset sequence - sq.setDatasetSequence(dsq); - // and update the current dataset alignment - if (ds == null) - { - if (dseqs != null) - { - if (!dseqs.contains(dsq)) - { - dseqs.add(dsq); - } - } - else - { - if (ds.findIndex(dsq) < 0) - { - ds.addSequence(dsq); - } - } - } - } - } - } - // TODO: refactor this as a merge dataset sequence function - // now check that sq (the dataset sequence) sequence really is the union of - // all references to it - // boolean pre = sq.getStart() < dsq.getStart(); - // boolean post = sq.getEnd() > dsq.getEnd(); - // if (pre || post) - if (sq != dsq) - { - // StringBuffer sb = new StringBuffer(); - String newres = jalview.analysis.AlignSeq.extractGaps( - jalview.util.Comparison.GapChars, sq.getSequenceAsString()); - if (!newres.equalsIgnoreCase(dsq.getSequenceAsString()) - && newres.length() > dsq.getLength()) - { - // Update with the longer sequence. - synchronized (dsq) - { - /* - * if (pre) { sb.insert(0, newres .substring(0, dsq.getStart() - - * sq.getStart())); dsq.setStart(sq.getStart()); } if (post) { - * sb.append(newres.substring(newres.length() - sq.getEnd() - - * dsq.getEnd())); dsq.setEnd(sq.getEnd()); } - */ - dsq.setSequence(newres); - } - // TODO: merges will never happen if we 'know' we have the real dataset - // sequence - this should be detected when id==dssid - System.err.println( - "DEBUG Notice: Merged dataset sequence (if you see this often, post at http://issues.jalview.org/browse/JAL-1474)"); // (" - // + (pre ? "prepended" : "") + " " - // + (post ? "appended" : "")); - } - } - else - { - // sequence refs are identical. We may need to update the existing dataset - // alignment with this one, though. - if (ds != null && dseqs == null) - { - int opos = ds.findIndex(dsq); - SequenceI tseq = null; - if (opos != -1 && vseqpos != opos) - { - // remove from old position - ds.deleteSequence(dsq); - } - if (vseqpos < ds.getHeight()) - { - if (vseqpos != opos) - { - // save sequence at destination position - tseq = ds.getSequenceAt(vseqpos); - ds.replaceSequenceAt(vseqpos, dsq); - ds.addSequence(tseq); - } - } - else - { - ds.addSequence(dsq); - } - } - } - } - - /* - * TODO use AlignmentI here and in related methods - needs - * AlignmentI.getDataset() changed to return AlignmentI instead of Alignment - */ - Hashtable datasetIds = null; - - IdentityHashMap dataset2Ids = null; - - private AlignmentI getDatasetFor(String datasetId) - { - if (datasetIds == null) - { - datasetIds = new Hashtable<>(); - return null; - } - if (datasetIds.containsKey(datasetId)) - { - return datasetIds.get(datasetId); - } - return null; - } - - private void addDatasetRef(String datasetId, AlignmentI dataset) - { - if (datasetIds == null) - { - datasetIds = new Hashtable<>(); - } - datasetIds.put(datasetId, dataset); - } - - /** - * make a new dataset ID for this jalview dataset alignment - * - * @param dataset - * @return - */ - private String getDatasetIdRef(AlignmentI dataset) - { - if (dataset.getDataset() != null) - { - warn("Serious issue! Dataset Object passed to getDatasetIdRef is not a Jalview DATASET alignment..."); - } - String datasetId = makeHashCode(dataset, null); - if (datasetId == null) - { - // make a new datasetId and record it - if (dataset2Ids == null) - { - dataset2Ids = new IdentityHashMap<>(); - } - else - { - datasetId = dataset2Ids.get(dataset); - } - if (datasetId == null) - { - datasetId = "ds" + dataset2Ids.size() + 1; - dataset2Ids.put(dataset, datasetId); - } - } - return datasetId; - } - - private void addDBRefs(SequenceI datasetSequence, Sequence sequence) - { - for (int d = 0; d < sequence.getDBRefCount(); d++) - { - DBRef dr = sequence.getDBRef(d); - jalview.datamodel.DBRefEntry entry = new jalview.datamodel.DBRefEntry( - sequence.getDBRef(d).getSource(), - sequence.getDBRef(d).getVersion(), - sequence.getDBRef(d).getAccessionId()); - if (dr.getMapping() != null) - { - entry.setMap(addMapping(dr.getMapping())); - } - datasetSequence.addDBRef(entry); - } - } - - private jalview.datamodel.Mapping addMapping(Mapping m) - { - SequenceI dsto = null; - // Mapping m = dr.getMapping(); - int fr[] = new int[m.getMapListFromCount() * 2]; - Enumeration f = m.enumerateMapListFrom(); - for (int _i = 0; f.hasMoreElements(); _i += 2) - { - MapListFrom mf = (MapListFrom) f.nextElement(); - fr[_i] = mf.getStart(); - fr[_i + 1] = mf.getEnd(); - } - int fto[] = new int[m.getMapListToCount() * 2]; - f = m.enumerateMapListTo(); - for (int _i = 0; f.hasMoreElements(); _i += 2) - { - MapListTo mf = (MapListTo) f.nextElement(); - fto[_i] = mf.getStart(); - fto[_i + 1] = mf.getEnd(); - } - jalview.datamodel.Mapping jmap = new jalview.datamodel.Mapping(dsto, fr, - fto, (int) m.getMapFromUnit(), (int) m.getMapToUnit()); - if (m.getMappingChoice() != null) - { - MappingChoice mc = m.getMappingChoice(); - if (mc.getDseqFor() != null) - { - String dsfor = "" + mc.getDseqFor(); - if (seqRefIds.containsKey(dsfor)) - { - /** - * recover from hash - */ - jmap.setTo(seqRefIds.get(dsfor)); - } - else - { - frefedSequence.add(newMappingRef(dsfor, jmap)); - } - } - else - { - /** - * local sequence definition - */ - Sequence ms = mc.getSequence(); - SequenceI djs = null; - String sqid = ms.getDsseqid(); - if (sqid != null && sqid.length() > 0) - { - /* - * recover dataset sequence - */ - djs = seqRefIds.get(sqid); - } - else - { - System.err.println( - "Warning - making up dataset sequence id for DbRef sequence map reference"); - sqid = ((Object) ms).toString(); // make up a new hascode for - // undefined dataset sequence hash - // (unlikely to happen) - } - - if (djs == null) - { - /** - * make a new dataset sequence and add it to refIds hash - */ - djs = new jalview.datamodel.Sequence(ms.getName(), - ms.getSequence()); - djs.setStart(jmap.getMap().getToLowest()); - djs.setEnd(jmap.getMap().getToHighest()); - djs.setVamsasId(uniqueSetSuffix + sqid); - jmap.setTo(djs); - incompleteSeqs.put(sqid, djs); - seqRefIds.put(sqid, djs); - - } - jalview.bin.Cache.log.debug("about to recurse on addDBRefs."); - addDBRefs(djs, ms); - - } - } - return (jmap); - - } - - /** - * Provides a 'copy' of an alignment view (on action New View) by 'saving' the - * view as XML (but not to file), and then reloading it - * - * @param ap - * @return - */ - public AlignmentPanel copyAlignPanel(AlignmentPanel ap) - { - initSeqRefs(); - JalviewModel jm = saveState(ap, null, null, null); - - uniqueSetSuffix = ""; - jm.getJalviewModelSequence().getViewport(0).setId(null); - // we don't overwrite the view we just copied - - if (this.frefedSequence == null) - { - frefedSequence = new Vector<>(); - } - - viewportsAdded.clear(); - - AlignFrame af = loadFromObject(jm, null, false, null); - af.alignPanels.clear(); - af.closeMenuItem_actionPerformed(true); - - /* - * if(ap.av.getAlignment().getAlignmentAnnotation()!=null) { for(int i=0; - * i(); - } - if (seqsToIds == null) - { - seqsToIds = new IdentityHashMap<>(); - } - seqRefIds.put(jv2vobj.get(jvobj).toString(), (SequenceI) jvobj); - seqsToIds.put((SequenceI) jvobj, id); - } - else if (jvobj instanceof jalview.datamodel.AlignmentAnnotation) - { - String anid; - AlignmentAnnotation jvann = (AlignmentAnnotation) jvobj; - annotationIds.put(anid = jv2vobj.get(jvobj).toString(), jvann); - if (jvann.annotationId == null) - { - jvann.annotationId = anid; - } - if (!jvann.annotationId.equals(anid)) - { - // TODO verify that this is the correct behaviour - this.warn("Overriding Annotation ID for " + anid - + " from different id : " + jvann.annotationId); - jvann.annotationId = anid; - } - } - else if (jvobj instanceof String) - { - if (jvids2vobj == null) - { - jvids2vobj = new Hashtable(); - jvids2vobj.put(jvobj, jv2vobj.get(jvobj).toString()); - } - } - else - { - Cache.log.debug("Ignoring " + jvobj.getClass() + " (ID = " + id); - } - } - } - - /** - * set the uniqueSetSuffix used to prefix/suffix object IDs for jalview - * objects created from the project archive. If string is null (default for - * construction) then suffix will be set automatically. - * - * @param string - */ - public void setUniqueSetSuffix(String string) - { - uniqueSetSuffix = string; - - } - - /** - * uses skipList2 as the skipList for skipping views on sequence sets - * associated with keys in the skipList - * - * @param skipList2 - */ - public void setSkipList(Hashtable skipList2) - { - skipList = skipList2; - } - - /** - * Reads the jar entry of given name and returns its contents, or null if the - * entry is not found. - * - * @param jprovider - * @param jarEntryName - * @return - */ - protected String readJarEntry(jarInputStreamProvider jprovider, - String jarEntryName) - { - String result = null; - BufferedReader in = null; - - try - { - /* - * Reopen the jar input stream and traverse its entries to find a matching - * name - */ - JarInputStream jin = jprovider.getJarInputStream(); - JarEntry entry = null; - do - { - entry = jin.getNextJarEntry(); - } while (entry != null && !entry.getName().equals(jarEntryName)); - - if (entry != null) - { - StringBuilder out = new StringBuilder(256); - in = new BufferedReader(new InputStreamReader(jin, UTF_8)); - String data; - - while ((data = in.readLine()) != null) - { - out.append(data); - } - result = out.toString(); - } - else - { - warn("Couldn't find entry in Jalview Jar for " + jarEntryName); - } - } catch (Exception ex) - { - ex.printStackTrace(); - } finally - { - if (in != null) - { - try - { - in.close(); - } catch (IOException e) - { - // ignore - } - } - } - - return result; - } - - /** - * Returns an incrementing counter (0, 1, 2...) - * - * @return - */ - private synchronized int nextCounter() - { - return counter++; - } - - /** - * Populates an XML model of the feature colour scheme for one feature type - * - * @param featureType - * @param fcol - * @return - */ - protected static jalview.schemabinding.version2.Colour marshalColour( - String featureType, FeatureColourI fcol) - { - jalview.schemabinding.version2.Colour col = new jalview.schemabinding.version2.Colour(); - if (fcol.isSimpleColour()) - { - col.setRGB(Format.getHexString(fcol.getColour())); - } - else - { - col.setRGB(Format.getHexString(fcol.getMaxColour())); - col.setMin(fcol.getMin()); - col.setMax(fcol.getMax()); - col.setMinRGB(jalview.util.Format.getHexString(fcol.getMinColour())); - col.setAutoScale(fcol.isAutoScaled()); - col.setThreshold(fcol.getThreshold()); - col.setColourByLabel(fcol.isColourByLabel()); - col.setThreshType(fcol.isAboveThreshold() ? ColourThreshTypeType.ABOVE - : (fcol.isBelowThreshold() ? ColourThreshTypeType.BELOW - : ColourThreshTypeType.NONE)); - if (fcol.isColourByAttribute()) - { - col.setAttributeName(fcol.getAttributeName()); - } - Color noColour = fcol.getNoColour(); - if (noColour == null) - { - col.setNoValueColour(NoValueColour.NONE); - } - else if (noColour == fcol.getMaxColour()) - { - col.setNoValueColour(NoValueColour.MAX); - } - else - { - col.setNoValueColour(NoValueColour.MIN); - } - } - col.setName(featureType); - return col; - } - - /** - * Populates an XML model of the feature filter(s) for one feature type - * - * @param firstMatcher - * the first (or only) match condition) - * @param filter - * remaining match conditions (if any) - * @param and - * if true, conditions are and-ed, else or-ed - */ - protected static MatcherSet marshalFilter(FeatureMatcherI firstMatcher, - Iterator filters, boolean and) - { - MatcherSet result = new MatcherSet(); - - if (filters.hasNext()) - { - /* - * compound matcher - */ - CompoundMatcher compound = new CompoundMatcher(); - compound.setAnd(and); - MatcherSet matcher1 = marshalFilter(firstMatcher, - Collections.emptyIterator(), and); - compound.addMatcherSet(matcher1); - FeatureMatcherI nextMatcher = filters.next(); - MatcherSet matcher2 = marshalFilter(nextMatcher, filters, and); - compound.addMatcherSet(matcher2); - result.setCompoundMatcher(compound); - } - else - { - /* - * single condition matcher - */ - MatchCondition matcherModel = new MatchCondition(); - matcherModel.setCondition( - firstMatcher.getMatcher().getCondition().getStableName()); - matcherModel.setValue(firstMatcher.getMatcher().getPattern()); - if (firstMatcher.isByAttribute()) - { - matcherModel.setBy(FeatureMatcherByType.BYATTRIBUTE); - matcherModel.setAttributeName(firstMatcher.getAttribute()); - } - else if (firstMatcher.isByLabel()) - { - matcherModel.setBy(FeatureMatcherByType.BYLABEL); - } - else if (firstMatcher.isByScore()) - { - matcherModel.setBy(FeatureMatcherByType.BYSCORE); - } - result.setMatchCondition(matcherModel); - } - - return result; - } - - /** - * Loads one XML model of a feature filter to a Jalview object - * - * @param featureType - * @param matcherSetModel - * @return - */ - protected static FeatureMatcherSetI unmarshalFilter( - String featureType, MatcherSet matcherSetModel) - { - FeatureMatcherSetI result = new FeatureMatcherSet(); - try - { - unmarshalFilterConditions(result, matcherSetModel, true); - } catch (IllegalStateException e) - { - // mixing AND and OR conditions perhaps - System.err.println( - String.format("Error reading filter conditions for '%s': %s", - featureType, e.getMessage())); - // return as much as was parsed up to the error - } - - return result; - } - - /** - * Adds feature match conditions to matcherSet as unmarshalled from XML - * (possibly recursively for compound conditions) - * - * @param matcherSet - * @param matcherSetModel - * @param and - * if true, multiple conditions are AND-ed, else they are OR-ed - * @throws IllegalStateException - * if AND and OR conditions are mixed - */ - protected static void unmarshalFilterConditions( - FeatureMatcherSetI matcherSet, MatcherSet matcherSetModel, - boolean and) - { - MatchCondition mc = matcherSetModel.getMatchCondition(); - if (mc != null) - { - /* - * single condition - */ - FeatureMatcherByType filterBy = mc.getBy(); - Condition cond = Condition.fromString(mc.getCondition()); - String pattern = mc.getValue(); - FeatureMatcherI matchCondition = null; - if (filterBy == FeatureMatcherByType.BYLABEL) - { - matchCondition = FeatureMatcher.byLabel(cond, pattern); - } - else if (filterBy == FeatureMatcherByType.BYSCORE) - { - matchCondition = FeatureMatcher.byScore(cond, pattern); - - } - else if (filterBy == FeatureMatcherByType.BYATTRIBUTE) - { - String[] attNames = mc.getAttributeName(); - matchCondition = FeatureMatcher.byAttribute(cond, pattern, - attNames); - } - - /* - * note this throws IllegalStateException if AND-ing to a - * previously OR-ed compound condition, or vice versa - */ - if (and) - { - matcherSet.and(matchCondition); - } - else - { - matcherSet.or(matchCondition); - } - } - else - { - /* - * compound condition - */ - MatcherSet[] matchers = matcherSetModel.getCompoundMatcher() - .getMatcherSet(); - boolean anded = matcherSetModel.getCompoundMatcher().getAnd(); - if (matchers.length == 2) - { - unmarshalFilterConditions(matcherSet, matchers[0], anded); - unmarshalFilterConditions(matcherSet, matchers[1], anded); - } - else - { - System.err.println("Malformed compound filter condition"); - } - } - } - - /** - * Loads one XML model of a feature colour to a Jalview object - * - * @param colourModel - * @return - */ - protected static FeatureColourI unmarshalColour( - jalview.schemabinding.version2.Colour colourModel) - { - FeatureColourI colour = null; - - if (colourModel.hasMax()) - { - Color mincol = null; - Color maxcol = null; - Color noValueColour = null; - - try - { - mincol = new Color(Integer.parseInt(colourModel.getMinRGB(), 16)); - maxcol = new Color(Integer.parseInt(colourModel.getRGB(), 16)); - } catch (Exception e) - { - Cache.log.warn("Couldn't parse out graduated feature color.", e); - } - - NoValueColour noCol = colourModel.getNoValueColour(); - if (noCol == NoValueColour.MIN) - { - noValueColour = mincol; - } - else if (noCol == NoValueColour.MAX) - { - noValueColour = maxcol; - } - - colour = new FeatureColour(mincol, maxcol, noValueColour, - colourModel.getMin(), - colourModel.getMax()); - String[] attributes = colourModel.getAttributeName(); - if (attributes != null && attributes.length > 0) - { - colour.setAttributeName(attributes); - } - if (colourModel.hasAutoScale()) - { - colour.setAutoScaled(colourModel.getAutoScale()); - } - if (colourModel.hasColourByLabel()) - { - colour.setColourByLabel(colourModel.getColourByLabel()); - } - if (colourModel.hasThreshold()) - { - colour.setThreshold(colourModel.getThreshold()); - } - ColourThreshTypeType ttyp = colourModel.getThreshType(); - if (ttyp != null) - { - if (ttyp == ColourThreshTypeType.ABOVE) - { - colour.setAboveThreshold(true); - } - else if (ttyp == ColourThreshTypeType.BELOW) - { - colour.setBelowThreshold(true); - } - } - } - else - { - Color color = new Color(Integer.parseInt(colourModel.getRGB(), 16)); - colour = new FeatureColour(color); - } - - return colour; - } -} diff --git a/src/jalview/gui/Jalview2XML_V1.java b/src/jalview/gui/Jalview2XML_V1.java deleted file mode 100755 index 9548839..0000000 --- a/src/jalview/gui/Jalview2XML_V1.java +++ /dev/null @@ -1,513 +0,0 @@ -/* - * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) - * Copyright (C) $$Year-Rel$$ The Jalview Authors - * - * This file is part of Jalview. - * - * Jalview is free software: you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 - * of the License, or (at your option) any later version. - * - * Jalview is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Jalview. If not, see . - * The Jalview Authors are detailed in the 'AUTHORS' file. - */ -package jalview.gui; - -import jalview.analysis.Conservation; -import jalview.binding.Annotation; -import jalview.binding.AnnotationElement; -import jalview.binding.Features; -import jalview.binding.JGroup; -import jalview.binding.JSeq; -import jalview.binding.JalviewModel; -import jalview.binding.JalviewModelSequence; -import jalview.binding.Pdbids; -import jalview.binding.Sequence; -import jalview.binding.SequenceSet; -import jalview.binding.Setting; -import jalview.binding.Tree; -import jalview.binding.UserColours; -import jalview.binding.Viewport; -import jalview.datamodel.PDBEntry; -import jalview.datamodel.SequenceFeature; -import jalview.io.FileFormat; -import jalview.schemes.ColourSchemeI; -import jalview.schemes.ColourSchemeProperty; -import jalview.structure.StructureSelectionManager; -import jalview.util.MessageManager; -import jalview.util.jarInputStreamProvider; -import jalview.viewmodel.seqfeatures.FeatureRendererSettings; - -import java.io.InputStreamReader; -import java.io.Reader; -import java.net.UnknownHostException; -import java.util.Hashtable; -import java.util.Vector; -import java.util.jar.JarEntry; -import java.util.jar.JarInputStream; - -/** - * DOCUMENT ME! - * - * @author $author$ - * @version $Revision$ - */ -public class Jalview2XML_V1 -{ - boolean raiseGUI = true; - - public Jalview2XML_V1() - { - - }; - - public Jalview2XML_V1(boolean raiseGUI) - { - this.raiseGUI = raiseGUI; - }; - - jalview.schemes.UserColourScheme GetUserColourScheme( - JalviewModelSequence jms, String id) - { - UserColours[] uc = jms.getUserColours(); - UserColours colours = null; - - for (int i = 0; i < uc.length; i++) - { - if (uc[i].getId().equals(id)) - { - colours = uc[i]; - - break; - } - } - - int csize = colours.getUserColourScheme().getColourCount(); - java.awt.Color[] newColours = new java.awt.Color[csize]; - - for (int i = 0; i < csize; i++) - { - newColours[i] = new java.awt.Color(Integer.parseInt( - colours.getUserColourScheme().getColour(i).getRGB(), 16)); - } - - return new jalview.schemes.UserColourScheme(newColours); - } - - /** - * DOCUMENT ME! - * - * @param file - * DOCUMENT ME! - */ - public AlignFrame LoadJalviewAlign(final jarInputStreamProvider jprovider) - { - final String file = jprovider.getFilename(); - jalview.gui.AlignFrame af = null; - - try - { - JarInputStream jin = null; - JarEntry jarentry = null; - int entryCount = 1; - - do - { - jin = jprovider.getJarInputStream(); - - for (int i = 0; i < entryCount; i++) - { - jarentry = jin.getNextJarEntry(); - } - - if (jarentry != null) - { - entryCount++; - if (jarentry.getName().endsWith(".xml")) - { - Reader in = new InputStreamReader(jin, "UTF-8"); - JalviewModel object = new JalviewModel(); - - object = object.unmarshal(in); - - af = LoadFromObject(object, file); - } - } - jin.close(); - } while (jarentry != null); - } catch (final UnknownHostException ex) - { - ex.printStackTrace(); - if (raiseGUI) - { - javax.swing.SwingUtilities.invokeLater(new Runnable() - { - @Override - public void run() - { - - System.err.println( - "Couldn't locate Jalview XML file : " + ex + "\n"); - JvOptionPane.showInternalMessageDialog(Desktop.desktop, - MessageManager.formatMessage("label.couldnt_locate", - new String[] - { file }), - MessageManager.getString("label.url_not_found"), - JvOptionPane.WARNING_MESSAGE); - } - }); - } - ; - } catch (Exception ex) - { - System.err.println("Exception whilst loading jalview XML file : "); - ex.printStackTrace(); - if (raiseGUI) - { - javax.swing.SwingUtilities.invokeLater(new Runnable() - { - @Override - public void run() - { - - JvOptionPane.showInternalMessageDialog(Desktop.desktop, - MessageManager.formatMessage( - "label.error_loading_file_params", new String[] - { file }), - MessageManager - .getString("label.error_loading_jalview_file"), - JvOptionPane.WARNING_MESSAGE); - } - }); - } - } - - return af; - } - - AlignFrame LoadFromObject(JalviewModel object, String file) - { - Vector seqids = new Vector(); - SequenceSet vamsasSet = object.getVamsasModel().getSequenceSet(0); - Sequence[] vamsasSeq = vamsasSet.getSequence(); - - JalviewModelSequence jms = object.getJalviewModelSequence(); - - // //////////////////////////////// - // LOAD SEQUENCES - jalview.datamodel.Sequence[] jseqs = new jalview.datamodel.Sequence[vamsasSeq.length]; - JSeq[] JSEQ = object.getJalviewModelSequence().getJSeq(); - for (int i = 0; i < vamsasSeq.length; i++) - { - jseqs[i] = new jalview.datamodel.Sequence(vamsasSeq[i].getName(), - vamsasSeq[i].getSequence()); - jseqs[i].setStart(JSEQ[i].getStart()); - jseqs[i].setEnd(JSEQ[i].getEnd()); - seqids.add(jseqs[i]); - } - - // /SequenceFeatures are added to the DatasetSequence, - // so we must create the dataset before loading features - // /////////////////////////////// - jalview.datamodel.Alignment al = new jalview.datamodel.Alignment(jseqs); - al.setDataset(null); - // /////////////////////////////// - - for (int i = 0; i < vamsasSeq.length; i++) - { - if (JSEQ[i].getFeaturesCount() > 0) - { - Features[] features = JSEQ[i].getFeatures(); - for (int f = 0; f < features.length; f++) - { - SequenceFeature sf = new SequenceFeature(features[f].getType(), - features[f].getDescription(), features[f].getBegin(), - features[f].getEnd(), null); - sf.setStatus(features[f].getStatus()); - al.getSequenceAt(i).getDatasetSequence().addSequenceFeature(sf); - } - } - if (JSEQ[i].getPdbidsCount() > 0) - { - Pdbids[] ids = JSEQ[i].getPdbids(); - for (int p = 0; p < ids.length; p++) - { - jalview.datamodel.PDBEntry entry = new jalview.datamodel.PDBEntry(); - entry.setId(ids[p].getId()); - if (ids[p].getType() != null) - { - if (ids[p].getType().equalsIgnoreCase("PDB")) - { - entry.setType(PDBEntry.Type.PDB); - } - else - { - entry.setType(PDBEntry.Type.FILE); - } - } - al.getSequenceAt(i).getDatasetSequence().addPDBId(entry); - StructureSelectionManager - .getStructureSelectionManager(Desktop.instance) - .registerPDBEntry(entry); - } - - } - } - - // /////////////////////////////// - // //////////////////////////////// - // LOAD ANNOTATIONS - if (vamsasSet.getAnnotation() != null) - { - Annotation[] an = vamsasSet.getAnnotation(); - - for (int i = 0; i < an.length; i++) - { - AnnotationElement[] ae = an[i].getAnnotationElement(); - jalview.datamodel.Annotation[] anot = new jalview.datamodel.Annotation[al - .getWidth()]; - - for (int aa = 0; aa < ae.length; aa++) - { - anot[ae[aa].getPosition()] = new jalview.datamodel.Annotation( - ae[aa].getDisplayCharacter(), ae[aa].getDescription(), - ae[aa].getSecondaryStructure().charAt(0), - ae[aa].getValue()); - } - - jalview.datamodel.AlignmentAnnotation jaa = null; - - if (an[i].getGraph()) - { - jaa = new jalview.datamodel.AlignmentAnnotation(an[i].getLabel(), - an[i].getDescription(), anot, 0, 0, - jalview.datamodel.AlignmentAnnotation.BAR_GRAPH); - } - else - { - jaa = new jalview.datamodel.AlignmentAnnotation(an[i].getLabel(), - an[i].getDescription(), anot); - } - - al.addAnnotation(jaa); - } - } - - // /////////////////////////////// - // LOAD VIEWPORT - Viewport[] views = jms.getViewport(); - Viewport view = views[0]; // DEAL WITH MULTIPLE VIEWPORTS LATER - - AlignFrame af = new AlignFrame(al, view.getWidth(), view.getHeight()); - - af.setFileName(file, FileFormat.Jalview); - - for (int i = 0; i < JSEQ.length; i++) - { - af.viewport.setSequenceColour( - af.viewport.getAlignment().getSequenceAt(i), - new java.awt.Color(JSEQ[i].getColour())); - } - - // af.changeColour() ); - // /////////////////////// - // LOAD GROUPS - if (jms.getJGroupCount() > 0) - { - JGroup[] groups = jms.getJGroup(); - - for (int i = 0; i < groups.length; i++) - { - ColourSchemeI cs = null; - - if (groups[i].getColour() != null) - { - if (groups[i].getColour().startsWith("ucs")) - { - cs = GetUserColourScheme(jms, groups[i].getColour()); - } - else - { - cs = ColourSchemeProperty.getColourScheme(al, - groups[i].getColour()); - } - } - int pidThreshold = groups[i].getPidThreshold(); - - Vector seqs = new Vector(); - int[] ids = groups[i].getSeq(); - - for (int s = 0; s < ids.length; s++) - { - seqs.addElement(seqids.elementAt(ids[s])); - } - - jalview.datamodel.SequenceGroup sg = new jalview.datamodel.SequenceGroup( - seqs, groups[i].getName(), cs, groups[i].getDisplayBoxes(), - groups[i].getDisplayText(), groups[i].getColourText(), - groups[i].getStart(), groups[i].getEnd()); - sg.getGroupColourScheme().setThreshold(pidThreshold, true); - - sg.setOutlineColour( - new java.awt.Color(groups[i].getOutlineColour())); - - if (groups[i].getConsThreshold() != 0) - { - Conservation c = new Conservation("All", sg.getSequences(null), 0, - sg.getWidth() - 1); - c.calculate(); - c.verdict(false, 25); - sg.cs.setConservation(c); - } - - al.addGroup(sg); - } - } - - af.setBounds(view.getXpos(), view.getYpos(), view.getWidth(), - view.getHeight()); - af.viewport.getRanges().setStartRes(view.getStartRes()); - // startSeq set in af.alignPanel.updateLayout below - af.viewport.setShowAnnotation(view.getShowAnnotation()); - af.viewport.setAbovePIDThreshold(view.getPidSelected()); - af.viewport.setColourText(view.getShowColourText()); - af.viewport.setConservationSelected(view.getConservationSelected()); - af.viewport.setShowJVSuffix(view.getShowFullId()); - af.viewport.setFont(new java.awt.Font(view.getFontName(), - view.getFontStyle(), view.getFontSize()), true); - - af.viewport.setRenderGaps(view.getRenderGaps()); - af.viewport.setWrapAlignment(view.getWrapAlignment()); - - af.viewport.setShowAnnotation(view.isShowAnnotation()); - af.viewport.setShowBoxes(view.getShowBoxes()); - af.viewport.setShowText(view.getShowText()); - - ColourSchemeI cs = null; - - if (view.getBgColour() != null) - { - if (view.getBgColour().startsWith("ucs")) - { - cs = GetUserColourScheme(jms, view.getBgColour()); - } - else - { - cs = ColourSchemeProperty.getColourScheme(al, view.getBgColour()); - } - - // if (cs != null) - // { - // cs.setThreshold(view.getPidThreshold(), true); - // cs.setConsensus(af.viewport.getSequenceConsensusHash()); - // } - } - - af.viewport.getResidueShading().setThreshold(view.getPidThreshold(), - true); - af.viewport.getResidueShading() - .setConsensus(af.viewport.getSequenceConsensusHash()); - af.viewport.setColourAppliesToAllGroups(false); - af.alignPanel.updateLayout(); - af.changeColour(cs); - if (view.getConservationSelected() && cs != null) - { - af.viewport.getResidueShading() - .setConservationInc(view.getConsThreshold()); - } - - af.viewport.setColourAppliesToAllGroups(true); - af.viewport.setShowSequenceFeatures(view.getShowSequenceFeatures()); - - if (jms.getFeatureSettings() != null) - { - Hashtable featuresDisplayed = new Hashtable(); - Hashtable featureColours = new Hashtable(); - String[] renderOrder = new String[jms.getFeatureSettings() - .getSettingCount()]; - for (int fs = 0; fs < jms.getFeatureSettings() - .getSettingCount(); fs++) - { - Setting setting = jms.getFeatureSettings().getSetting(fs); - - featureColours.put(setting.getType(), - new java.awt.Color(setting.getColour())); - - renderOrder[fs] = setting.getType(); - - if (setting.getDisplay()) - { - featuresDisplayed.put(setting.getType(), - new Integer(setting.getColour())); - } - } - FeatureRendererSettings frs = new FeatureRendererSettings(renderOrder, - new Hashtable(), featureColours, 1.0f, null); - af.alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer() - .transferSettings(frs); - } - - af.setMenusFromViewport(af.viewport); - - Desktop.addInternalFrame(af, view.getTitle(), view.getWidth(), - view.getHeight()); - - // LOAD TREES - // ///////////////////////////////////// - if (jms.getTreeCount() > 0) - { - try - { - for (int t = 0; t < jms.getTreeCount(); t++) - { - - Tree tree = jms.getTree(t); - - TreePanel tp = af.showNewickTree( - new jalview.io.NewickFile(tree.getNewick()), - tree.getTitle(), tree.getWidth(), tree.getHeight(), - tree.getXpos(), tree.getYpos()); - - tp.fitToWindow.setState(tree.getFitToWindow()); - tp.fitToWindow_actionPerformed(null); - - if (tree.getFontName() != null) - { - tp.setTreeFont(new java.awt.Font(tree.getFontName(), - tree.getFontStyle(), tree.getFontSize())); - } - else - { - tp.setTreeFont(new java.awt.Font(view.getFontName(), - view.getFontStyle(), tree.getFontSize())); - } - - tp.showPlaceholders(tree.getMarkUnlinked()); - tp.showBootstrap(tree.getShowBootstrap()); - tp.showDistances(tree.getShowDistances()); - - tp.getTreeCanvas().setThreshold(tree.getThreshold()); - - if (tree.getCurrentTree()) - { - af.viewport.setCurrentTree(tp.getTree()); - } - } - - } catch (Exception ex) - { - ex.printStackTrace(); - } - - } - - return af; - } -} diff --git a/src/jalview/io/VamsasAppDatastore.java b/src/jalview/io/VamsasAppDatastore.java index d81a6b0..adf4447 100644 --- a/src/jalview/io/VamsasAppDatastore.java +++ b/src/jalview/io/VamsasAppDatastore.java @@ -33,6 +33,7 @@ import jalview.io.vamsas.Datasetsequence; import jalview.io.vamsas.DatastoreItem; import jalview.io.vamsas.DatastoreRegistry; import jalview.io.vamsas.Rangetype; +import jalview.project.Jalview2XML; import jalview.util.MessageManager; import jalview.viewmodel.AlignmentViewport; @@ -1311,7 +1312,8 @@ public class VamsasAppDatastore // client data is shared over all app clients try { - jalview.gui.Jalview2XML fromxml = new jalview.gui.Jalview2XML(); + // jalview.gui.Jalview2XML fromxml = new jalview.gui.Jalview2XML(); + Jalview2XML fromxml = new Jalview2XML(); fromxml.attemptversion1parse = false; fromxml.setUniqueSetSuffix(""); fromxml.setObjectMappingTables(vobj2jv, jv2vobj); // mapKeysToString @@ -1360,7 +1362,7 @@ public class VamsasAppDatastore // user data overrides data shared over all app clients ? try { - jalview.gui.Jalview2XML fromxml = new jalview.gui.Jalview2XML(); + Jalview2XML fromxml = new Jalview2XML(); fromxml.attemptversion1parse = false; fromxml.setUniqueSetSuffix(""); fromxml.setSkipList(skipList); @@ -1531,7 +1533,7 @@ public class VamsasAppDatastore { try { - jalview.gui.Jalview2XML jxml = new jalview.gui.Jalview2XML(); + Jalview2XML jxml = new Jalview2XML(); jxml.setObjectMappingTables(mapKeysToString(vobj2jv), mapValuesToString(jv2vobj)); jxml.setSkipList(skipList); diff --git a/src/jalview/jbgui/GDesktop.java b/src/jalview/jbgui/GDesktop.java index 290c4a4..028378f 100755 --- a/src/jalview/jbgui/GDesktop.java +++ b/src/jalview/jbgui/GDesktop.java @@ -245,16 +245,7 @@ public class GDesktop extends JFrame @Override public void actionPerformed(ActionEvent e) { - saveState_actionPerformed(true); - } - }); - JMenuItem saveAsJaxb = new JMenuItem("Save Project as JAXB"); - saveAsJaxb.addActionListener(new ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - saveState_actionPerformed(false); + saveState_actionPerformed(); } }); loadState.setText(MessageManager.getString("action.load_project")); @@ -263,16 +254,7 @@ public class GDesktop extends JFrame @Override public void actionPerformed(ActionEvent e) { - loadState_actionPerformed(true); - } - }); - JMenuItem loadAsJaxb = new JMenuItem("Load Project as JAXB"); - loadAsJaxb.addActionListener(new ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - loadState_actionPerformed(false); + loadState_actionPerformed(); } }); inputMenu.setText(MessageManager.getString("label.input_alignment")); @@ -442,9 +424,7 @@ public class GDesktop extends JFrame FileMenu.add(inputSequence); FileMenu.addSeparator(); FileMenu.add(saveState); - FileMenu.add(saveAsJaxb); FileMenu.add(loadState); - FileMenu.add(loadAsJaxb); FileMenu.addSeparator(); FileMenu.add(quit); HelpMenu.add(aboutMenuItem); @@ -586,16 +566,6 @@ public class GDesktop extends JFrame * @param e * DOCUMENT ME! */ - public void SaveState_actionPerformed(ActionEvent e) - { - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ protected void preferences_actionPerformed(ActionEvent e) { } @@ -606,17 +576,11 @@ public class GDesktop extends JFrame * @param e * DOCUMENT ME! */ - public void saveState_actionPerformed(boolean asCastor) + public void saveState_actionPerformed() { } - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - public void loadState_actionPerformed(boolean asCastor) + public void loadState_actionPerformed() { } diff --git a/src/jalview/project/Jalview2XML.java b/src/jalview/project/Jalview2XML.java index e546789..b153d9f 100644 --- a/src/jalview/project/Jalview2XML.java +++ b/src/jalview/project/Jalview2XML.java @@ -49,7 +49,6 @@ import jalview.gui.AppVarna; import jalview.gui.ChimeraViewFrame; import jalview.gui.Desktop; import jalview.gui.FeatureRenderer; -import jalview.gui.Jalview2XML_V1; import jalview.gui.JvOptionPane; import jalview.gui.OOMWarning; import jalview.gui.PaintRefresher; @@ -2643,16 +2642,7 @@ public class Jalview2XML ex.printStackTrace(System.err); if (attemptversion1parse) { - // Is Version 1 Jar file? - try - { - af = new Jalview2XML_V1(raiseGUI).LoadJalviewAlign(jprovider); - } catch (Exception ex2) - { - System.err.println("Exception whilst loading as jalviewXMLV1:"); - ex2.printStackTrace(); - af = null; - } + // used to attempt to parse as V1 castor-generated xml } if (Desktop.instance != null) { diff --git a/src/jalview/schemabinding/version2/.castor.cdr b/src/jalview/schemabinding/version2/.castor.cdr deleted file mode 100644 index e1100a8..0000000 --- a/src/jalview/schemabinding/version2/.castor.cdr +++ /dev/null @@ -1,53 +0,0 @@ -#Thu Dec 14 09:10:14 GMT 2017 -jalview.schemabinding.version2.ThresholdLine=jalview.schemabinding.version2.descriptors.ThresholdLineDescriptor -jalview.schemabinding.version2.SequenceSetProperties=jalview.schemabinding.version2.descriptors.SequenceSetPropertiesDescriptor -jalview.schemabinding.version2.StructureState=jalview.schemabinding.version2.descriptors.StructureStateDescriptor -jalview.schemabinding.version2.CalcIdParam=jalview.schemabinding.version2.descriptors.CalcIdParamDescriptor -jalview.schemabinding.version2.Tree=jalview.schemabinding.version2.descriptors.TreeDescriptor -jalview.schemabinding.version2.JalviewModel=jalview.schemabinding.version2.descriptors.JalviewModelDescriptor -jalview.schemabinding.version2.SequenceType=jalview.schemabinding.version2.descriptors.SequenceTypeDescriptor -jalview.schemabinding.version2.OtherData=jalview.schemabinding.version2.descriptors.OtherDataDescriptor -jalview.schemabinding.version2.Setting=jalview.schemabinding.version2.descriptors.SettingDescriptor -jalview.schemabinding.version2.AlcodonFrame=jalview.schemabinding.version2.descriptors.AlcodonFrameDescriptor -jalview.schemabinding.version2.AnnotationElement=jalview.schemabinding.version2.descriptors.AnnotationElementDescriptor -jalview.schemabinding.version2.FeatureMatcherSet=jalview.schemabinding.version2.descriptors.FeatureMatcherSetDescriptor -jalview.schemabinding.version2.SecondaryStructure=jalview.schemabinding.version2.descriptors.SecondaryStructureDescriptor -jalview.schemabinding.version2.MatchCondition=jalview.schemabinding.version2.descriptors.MatchConditionDescriptor -jalview.schemabinding.version2.SequenceSet=jalview.schemabinding.version2.descriptors.SequenceSetDescriptor -jalview.schemabinding.version2.Viewport=jalview.schemabinding.version2.descriptors.ViewportDescriptor -jalview.schemabinding.version2.RnaViewer=jalview.schemabinding.version2.descriptors.RnaViewerDescriptor -jalview.schemabinding.version2.MapListType=jalview.schemabinding.version2.descriptors.MapListTypeDescriptor -jalview.schemabinding.version2.Property=jalview.schemabinding.version2.descriptors.PropertyDescriptor -jalview.schemabinding.version2.UserColourScheme=jalview.schemabinding.version2.descriptors.UserColourSchemeDescriptor -jalview.schemabinding.version2.DBRef=jalview.schemabinding.version2.descriptors.DBRefDescriptor -jalview.schemabinding.version2.AlcodMap=jalview.schemabinding.version2.descriptors.AlcodMapDescriptor -jalview.schemabinding.version2.Annotation=jalview.schemabinding.version2.descriptors.AnnotationDescriptor -jalview.schemabinding.version2.JSeq=jalview.schemabinding.version2.descriptors.JSeqDescriptor -jalview.schemabinding.version2.MatcherSet=jalview.schemabinding.version2.descriptors.MatcherSetDescriptor -jalview.schemabinding.version2.Sequence=jalview.schemabinding.version2.descriptors.SequenceDescriptor -jalview.schemabinding.version2.WebServiceParameterSet=jalview.schemabinding.version2.descriptors.WebServiceParameterSetDescriptor -jalview.schemabinding.version2.Alcodon=jalview.schemabinding.version2.descriptors.AlcodonDescriptor -jalview.schemabinding.version2.Filter=jalview.schemabinding.version2.descriptors.FilterDescriptor -jalview.schemabinding.version2.AnnotationColours=jalview.schemabinding.version2.descriptors.AnnotationColoursDescriptor -jalview.schemabinding.version2.Pdbids=jalview.schemabinding.version2.descriptors.PdbidsDescriptor -jalview.schemabinding.version2.AnnotationColourScheme=jalview.schemabinding.version2.descriptors.AnnotationColourSchemeDescriptor -jalview.schemabinding.version2.Mapping=jalview.schemabinding.version2.descriptors.MappingDescriptor -jalview.schemabinding.version2.CompoundMatcher=jalview.schemabinding.version2.descriptors.CompoundMatcherDescriptor -jalview.schemabinding.version2.JalviewModelSequence=jalview.schemabinding.version2.descriptors.JalviewModelSequenceDescriptor -jalview.schemabinding.version2.Group=jalview.schemabinding.version2.descriptors.GroupDescriptor -jalview.schemabinding.version2.MappingChoice=jalview.schemabinding.version2.descriptors.MappingChoiceDescriptor -jalview.schemabinding.version2.Feature=jalview.schemabinding.version2.descriptors.FeatureDescriptor -jalview.schemabinding.version2.UserColours=jalview.schemabinding.version2.descriptors.UserColoursDescriptor -jalview.schemabinding.version2.Colour=jalview.schemabinding.version2.descriptors.ColourDescriptor -jalview.schemabinding.version2.PdbentryItem=jalview.schemabinding.version2.descriptors.PdbentryItemDescriptor -jalview.schemabinding.version2.MapListFrom=jalview.schemabinding.version2.descriptors.MapListFromDescriptor -jalview.schemabinding.version2.FeatureSettings=jalview.schemabinding.version2.descriptors.FeatureSettingsDescriptor -jalview.schemabinding.version2.JGroup=jalview.schemabinding.version2.descriptors.JGroupDescriptor -jalview.schemabinding.version2.MapListTo=jalview.schemabinding.version2.descriptors.MapListToDescriptor -jalview.schemabinding.version2.JalviewUserColours=jalview.schemabinding.version2.descriptors.JalviewUserColoursDescriptor -jalview.schemabinding.version2.VamsasModel=jalview.schemabinding.version2.descriptors.VamsasModelDescriptor -jalview.schemabinding.version2.Pdbentry=jalview.schemabinding.version2.descriptors.PdbentryDescriptor -jalview.schemabinding.version2.HiddenColumns=jalview.schemabinding.version2.descriptors.HiddenColumnsDescriptor -jalview.schemabinding.version2.Features=jalview.schemabinding.version2.descriptors.FeaturesDescriptor -jalview.schemabinding.version2.VAMSAS=jalview.schemabinding.version2.descriptors.VAMSASDescriptor -jalview.schemabinding.version2.FeatureMatcher=jalview.schemabinding.version2.descriptors.FeatureMatcherDescriptor diff --git a/src/jalview/schemabinding/version2/AlcodMap.java b/src/jalview/schemabinding/version2/AlcodMap.java deleted file mode 100644 index e2522a1..0000000 --- a/src/jalview/schemabinding/version2/AlcodMap.java +++ /dev/null @@ -1,192 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class AlcodMap. - * - * @version $Revision$ $Date$ - */ -public class AlcodMap implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * internal jalview id for the dnasq for this mapping. - * - */ - private java.lang.String _dnasq; - - /** - * a Mapping entry and an associated protein sequence - * - */ - private jalview.schemabinding.version2.Mapping _mapping; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public AlcodMap() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'dnasq'. The field 'dnasq' has the following - * description: internal jalview id for the dnasq for this mapping. - * - * - * @return the value of field 'Dnasq'. - */ - public java.lang.String getDnasq() - { - return this._dnasq; - } - - /** - * Returns the value of field 'mapping'. The field 'mapping' has the following - * description: a Mapping entry and an associated protein sequence - * - * - * @return the value of field 'Mapping'. - */ - public jalview.schemabinding.version2.Mapping getMapping() - { - return this._mapping; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'dnasq'. The field 'dnasq' has the following - * description: internal jalview id for the dnasq for this mapping. - * - * - * @param dnasq - * the value of field 'dnasq'. - */ - public void setDnasq(final java.lang.String dnasq) - { - this._dnasq = dnasq; - } - - /** - * Sets the value of field 'mapping'. The field 'mapping' has the following - * description: a Mapping entry and an associated protein sequence - * - * - * @param mapping - * the value of field 'mapping'. - */ - public void setMapping( - final jalview.schemabinding.version2.Mapping mapping) - { - this._mapping = mapping; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.AlcodMap - */ - public static jalview.schemabinding.version2.AlcodMap unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.AlcodMap) Unmarshaller - .unmarshal(jalview.schemabinding.version2.AlcodMap.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/Alcodon.java b/src/jalview/schemabinding/version2/Alcodon.java deleted file mode 100644 index 3bd1cbb..0000000 --- a/src/jalview/schemabinding/version2/Alcodon.java +++ /dev/null @@ -1,275 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Alcodon. - * - * @version $Revision$ $Date$ - */ -public class Alcodon implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _pos1. - */ - private long _pos1; - - /** - * keeps track of state for field: _pos1 - */ - private boolean _has_pos1; - - /** - * Field _pos2. - */ - private long _pos2; - - /** - * keeps track of state for field: _pos2 - */ - private boolean _has_pos2; - - /** - * Field _pos3. - */ - private long _pos3; - - /** - * keeps track of state for field: _pos3 - */ - private boolean _has_pos3; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Alcodon() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - */ - public void deletePos1() - { - this._has_pos1 = false; - } - - /** - */ - public void deletePos2() - { - this._has_pos2 = false; - } - - /** - */ - public void deletePos3() - { - this._has_pos3 = false; - } - - /** - * Returns the value of field 'pos1'. - * - * @return the value of field 'Pos1'. - */ - public long getPos1() - { - return this._pos1; - } - - /** - * Returns the value of field 'pos2'. - * - * @return the value of field 'Pos2'. - */ - public long getPos2() - { - return this._pos2; - } - - /** - * Returns the value of field 'pos3'. - * - * @return the value of field 'Pos3'. - */ - public long getPos3() - { - return this._pos3; - } - - /** - * Method hasPos1. - * - * @return true if at least one Pos1 has been added - */ - public boolean hasPos1() - { - return this._has_pos1; - } - - /** - * Method hasPos2. - * - * @return true if at least one Pos2 has been added - */ - public boolean hasPos2() - { - return this._has_pos2; - } - - /** - * Method hasPos3. - * - * @return true if at least one Pos3 has been added - */ - public boolean hasPos3() - { - return this._has_pos3; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'pos1'. - * - * @param pos1 - * the value of field 'pos1'. - */ - public void setPos1(final long pos1) - { - this._pos1 = pos1; - this._has_pos1 = true; - } - - /** - * Sets the value of field 'pos2'. - * - * @param pos2 - * the value of field 'pos2'. - */ - public void setPos2(final long pos2) - { - this._pos2 = pos2; - this._has_pos2 = true; - } - - /** - * Sets the value of field 'pos3'. - * - * @param pos3 - * the value of field 'pos3'. - */ - public void setPos3(final long pos3) - { - this._pos3 = pos3; - this._has_pos3 = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.Alcodo - */ - public static jalview.schemabinding.version2.Alcodon unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.Alcodon) Unmarshaller.unmarshal( - jalview.schemabinding.version2.Alcodon.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/AlcodonFrame.java b/src/jalview/schemabinding/version2/AlcodonFrame.java deleted file mode 100644 index 218e07e..0000000 --- a/src/jalview/schemabinding/version2/AlcodonFrame.java +++ /dev/null @@ -1,466 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class AlcodonFrame. - * - * @version $Revision$ $Date$ - */ -public class AlcodonFrame implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _alcodonList. - */ - private java.util.Vector _alcodonList; - - /** - * Field _alcodMapList. - */ - private java.util.Vector _alcodMapList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public AlcodonFrame() - { - super(); - this._alcodonList = new java.util.Vector(); - this._alcodMapList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vAlcodMap - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAlcodMap( - final jalview.schemabinding.version2.AlcodMap vAlcodMap) - throws java.lang.IndexOutOfBoundsException - { - this._alcodMapList.addElement(vAlcodMap); - } - - /** - * - * - * @param index - * @param vAlcodMap - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAlcodMap(final int index, - final jalview.schemabinding.version2.AlcodMap vAlcodMap) - throws java.lang.IndexOutOfBoundsException - { - this._alcodMapList.add(index, vAlcodMap); - } - - /** - * - * - * @param vAlcodon - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAlcodon( - final jalview.schemabinding.version2.Alcodon vAlcodon) - throws java.lang.IndexOutOfBoundsException - { - this._alcodonList.addElement(vAlcodon); - } - - /** - * - * - * @param index - * @param vAlcodon - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAlcodon(final int index, - final jalview.schemabinding.version2.Alcodon vAlcodon) - throws java.lang.IndexOutOfBoundsException - { - this._alcodonList.add(index, vAlcodon); - } - - /** - * Method enumerateAlcodMap. - * - * @return an Enumeration over all jalview.schemabinding.version2.AlcodMap - * elements - */ - public java.util.Enumeration enumerateAlcodMap() - { - return this._alcodMapList.elements(); - } - - /** - * Method enumerateAlcodon. - * - * @return an Enumeration over all jalview.schemabinding.version2.Alcodon - * elements - */ - public java.util.Enumeration enumerateAlcodon() - { - return this._alcodonList.elements(); - } - - /** - * Method getAlcodMap. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.AlcodMap at the - * given index - */ - public jalview.schemabinding.version2.AlcodMap getAlcodMap(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._alcodMapList.size()) - { - throw new IndexOutOfBoundsException("getAlcodMap: Index value '" - + index + "' not in range [0.." - + (this._alcodMapList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.AlcodMap) _alcodMapList - .get(index); - } - - /** - * Method getAlcodMap.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 jalview.schemabinding.version2.AlcodMap[] getAlcodMap() - { - jalview.schemabinding.version2.AlcodMap[] array = new jalview.schemabinding.version2.AlcodMap[0]; - return (jalview.schemabinding.version2.AlcodMap[]) this._alcodMapList - .toArray(array); - } - - /** - * Method getAlcodMapCount. - * - * @return the size of this collection - */ - public int getAlcodMapCount() - { - return this._alcodMapList.size(); - } - - /** - * Method getAlcodon. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.Alcodon at the - * given index - */ - public jalview.schemabinding.version2.Alcodon getAlcodon(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._alcodonList.size()) - { - throw new IndexOutOfBoundsException("getAlcodon: Index value '" - + index + "' not in range [0.." - + (this._alcodonList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.Alcodon) _alcodonList.get(index); - } - - /** - * Method getAlcodon.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 jalview.schemabinding.version2.Alcodon[] getAlcodon() - { - jalview.schemabinding.version2.Alcodon[] array = new jalview.schemabinding.version2.Alcodon[0]; - return (jalview.schemabinding.version2.Alcodon[]) this._alcodonList - .toArray(array); - } - - /** - * Method getAlcodonCount. - * - * @return the size of this collection - */ - public int getAlcodonCount() - { - return this._alcodonList.size(); - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Method removeAlcodMap. - * - * @param vAlcodMap - * @return true if the object was removed from the collection. - */ - public boolean removeAlcodMap( - final jalview.schemabinding.version2.AlcodMap vAlcodMap) - { - boolean removed = _alcodMapList.remove(vAlcodMap); - return removed; - } - - /** - * Method removeAlcodMapAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.AlcodMap removeAlcodMapAt( - final int index) - { - java.lang.Object obj = this._alcodMapList.remove(index); - return (jalview.schemabinding.version2.AlcodMap) obj; - } - - /** - * Method removeAlcodon. - * - * @param vAlcodon - * @return true if the object was removed from the collection. - */ - public boolean removeAlcodon( - final jalview.schemabinding.version2.Alcodon vAlcodon) - { - boolean removed = _alcodonList.remove(vAlcodon); - return removed; - } - - /** - * Method removeAlcodonAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.Alcodon removeAlcodonAt( - final int index) - { - java.lang.Object obj = this._alcodonList.remove(index); - return (jalview.schemabinding.version2.Alcodon) obj; - } - - /** - */ - public void removeAllAlcodMap() - { - this._alcodMapList.clear(); - } - - /** - */ - public void removeAllAlcodon() - { - this._alcodonList.clear(); - } - - /** - * - * - * @param index - * @param vAlcodMap - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setAlcodMap(final int index, - final jalview.schemabinding.version2.AlcodMap vAlcodMap) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._alcodMapList.size()) - { - throw new IndexOutOfBoundsException("setAlcodMap: Index value '" - + index + "' not in range [0.." - + (this._alcodMapList.size() - 1) + "]"); - } - - this._alcodMapList.set(index, vAlcodMap); - } - - /** - * - * - * @param vAlcodMapArray - */ - public void setAlcodMap( - final jalview.schemabinding.version2.AlcodMap[] vAlcodMapArray) - { - // -- copy array - _alcodMapList.clear(); - - for (int i = 0; i < vAlcodMapArray.length; i++) - { - this._alcodMapList.add(vAlcodMapArray[i]); - } - } - - /** - * - * - * @param index - * @param vAlcodon - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setAlcodon(final int index, - final jalview.schemabinding.version2.Alcodon vAlcodon) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._alcodonList.size()) - { - throw new IndexOutOfBoundsException("setAlcodon: Index value '" - + index + "' not in range [0.." - + (this._alcodonList.size() - 1) + "]"); - } - - this._alcodonList.set(index, vAlcodon); - } - - /** - * - * - * @param vAlcodonArray - */ - public void setAlcodon( - final jalview.schemabinding.version2.Alcodon[] vAlcodonArray) - { - // -- copy array - _alcodonList.clear(); - - for (int i = 0; i < vAlcodonArray.length; i++) - { - this._alcodonList.add(vAlcodonArray[i]); - } - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.AlcodonFrame - */ - public static jalview.schemabinding.version2.AlcodonFrame unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.AlcodonFrame) Unmarshaller - .unmarshal(jalview.schemabinding.version2.AlcodonFrame.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/Annotation.java b/src/jalview/schemabinding/version2/Annotation.java deleted file mode 100644 index 2fead37..0000000 --- a/src/jalview/schemabinding/version2/Annotation.java +++ /dev/null @@ -1,1396 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Annotation. - * - * @version $Revision$ $Date$ - */ -public class Annotation implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _graph. - */ - private boolean _graph; - - /** - * keeps track of state for field: _graph - */ - private boolean _has_graph; - - /** - * Field _graphType. - */ - private int _graphType; - - /** - * keeps track of state for field: _graphType - */ - private boolean _has_graphType; - - /** - * Field _sequenceRef. - */ - private java.lang.String _sequenceRef; - - /** - * Field _groupRef. - */ - private java.lang.String _groupRef; - - /** - * Field _graphColour. - */ - private int _graphColour; - - /** - * keeps track of state for field: _graphColour - */ - private boolean _has_graphColour; - - /** - * Field _graphGroup. - */ - private int _graphGroup; - - /** - * keeps track of state for field: _graphGroup - */ - private boolean _has_graphGroup; - - /** - * height in pixels for the graph if this is a graph-type annotation. - */ - private int _graphHeight; - - /** - * keeps track of state for field: _graphHeight - */ - private boolean _has_graphHeight; - - /** - * Field _id. - */ - private java.lang.String _id; - - /** - * Field _scoreOnly. - */ - private boolean _scoreOnly = false; - - /** - * keeps track of state for field: _scoreOnly - */ - private boolean _has_scoreOnly; - - /** - * Field _score. - */ - private double _score; - - /** - * keeps track of state for field: _score - */ - private boolean _has_score; - - /** - * Field _visible. - */ - private boolean _visible; - - /** - * keeps track of state for field: _visible - */ - private boolean _has_visible; - - /** - * Field _centreColLabels. - */ - private boolean _centreColLabels; - - /** - * keeps track of state for field: _centreColLabels - */ - private boolean _has_centreColLabels; - - /** - * Field _scaleColLabels. - */ - private boolean _scaleColLabels; - - /** - * keeps track of state for field: _scaleColLabels - */ - private boolean _has_scaleColLabels; - - /** - * Field _showAllColLabels. - */ - private boolean _showAllColLabels; - - /** - * keeps track of state for field: _showAllColLabels - */ - private boolean _has_showAllColLabels; - - /** - * is an autocalculated annotation row - */ - private boolean _autoCalculated = false; - - /** - * keeps track of state for field: _autoCalculated - */ - private boolean _has_autoCalculated; - - /** - * is to be shown below the alignment - introduced in Jalview 2.8 for - * visualizing T-COFFEE alignment scores - */ - private boolean _belowAlignment = true; - - /** - * keeps track of state for field: _belowAlignment - */ - private boolean _has_belowAlignment; - - /** - * Optional string identifier used to group sets of annotation produced by a - * particular calculation. Values are opaque strings but have semantic meaning - * to Jalview's renderer, data importer and calculation system. - */ - private java.lang.String _calcId; - - /** - * Field _annotationElementList. - */ - private java.util.Vector _annotationElementList; - - /** - * Field _label. - */ - private java.lang.String _label; - - /** - * Field _description. - */ - private java.lang.String _description; - - /** - * Field _thresholdLine. - */ - private jalview.schemabinding.version2.ThresholdLine _thresholdLine; - - /** - * Field _propertyList. - */ - private java.util.Vector _propertyList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Annotation() - { - super(); - this._annotationElementList = new java.util.Vector(); - this._propertyList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vAnnotationElement - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAnnotationElement( - final jalview.schemabinding.version2.AnnotationElement vAnnotationElement) - throws java.lang.IndexOutOfBoundsException - { - this._annotationElementList.addElement(vAnnotationElement); - } - - /** - * - * - * @param index - * @param vAnnotationElement - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAnnotationElement( - final int index, - final jalview.schemabinding.version2.AnnotationElement vAnnotationElement) - throws java.lang.IndexOutOfBoundsException - { - this._annotationElementList.add(index, vAnnotationElement); - } - - /** - * - * - * @param vProperty - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addProperty( - final jalview.schemabinding.version2.Property vProperty) - throws java.lang.IndexOutOfBoundsException - { - this._propertyList.addElement(vProperty); - } - - /** - * - * - * @param index - * @param vProperty - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addProperty(final int index, - final jalview.schemabinding.version2.Property vProperty) - throws java.lang.IndexOutOfBoundsException - { - this._propertyList.add(index, vProperty); - } - - /** - */ - public void deleteAutoCalculated() - { - this._has_autoCalculated = false; - } - - /** - */ - public void deleteBelowAlignment() - { - this._has_belowAlignment = false; - } - - /** - */ - public void deleteCentreColLabels() - { - this._has_centreColLabels = false; - } - - /** - */ - public void deleteGraph() - { - this._has_graph = false; - } - - /** - */ - public void deleteGraphColour() - { - this._has_graphColour = false; - } - - /** - */ - public void deleteGraphGroup() - { - this._has_graphGroup = false; - } - - /** - */ - public void deleteGraphHeight() - { - this._has_graphHeight = false; - } - - /** - */ - public void deleteGraphType() - { - this._has_graphType = false; - } - - /** - */ - public void deleteScaleColLabels() - { - this._has_scaleColLabels = false; - } - - /** - */ - public void deleteScore() - { - this._has_score = false; - } - - /** - */ - public void deleteScoreOnly() - { - this._has_scoreOnly = false; - } - - /** - */ - public void deleteShowAllColLabels() - { - this._has_showAllColLabels = false; - } - - /** - */ - public void deleteVisible() - { - this._has_visible = false; - } - - /** - * Method enumerateAnnotationElement. - * - * @return an Enumeration over all - * jalview.schemabinding.version2.AnnotationElement elements - */ - public java.util.Enumeration enumerateAnnotationElement() - { - return this._annotationElementList.elements(); - } - - /** - * Method enumerateProperty. - * - * @return an Enumeration over all jalview.schemabinding.version2.Property - * elements - */ - public java.util.Enumeration enumerateProperty() - { - return this._propertyList.elements(); - } - - /** - * Method getAnnotationElement. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.AnnotationElement - * at the given index - */ - public jalview.schemabinding.version2.AnnotationElement getAnnotationElement( - final int index) throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._annotationElementList.size()) - { - throw new IndexOutOfBoundsException( - "getAnnotationElement: Index value '" + index - + "' not in range [0.." - + (this._annotationElementList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.AnnotationElement) _annotationElementList - .get(index); - } - - /** - * Method getAnnotationElement.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 jalview.schemabinding.version2.AnnotationElement[] getAnnotationElement() - { - jalview.schemabinding.version2.AnnotationElement[] array = new jalview.schemabinding.version2.AnnotationElement[0]; - return (jalview.schemabinding.version2.AnnotationElement[]) this._annotationElementList - .toArray(array); - } - - /** - * Method getAnnotationElementCount. - * - * @return the size of this collection - */ - public int getAnnotationElementCount() - { - return this._annotationElementList.size(); - } - - /** - * Returns the value of field 'autoCalculated'. The field 'autoCalculated' has - * the following description: is an autocalculated annotation row - * - * @return the value of field 'AutoCalculated'. - */ - public boolean getAutoCalculated() - { - return this._autoCalculated; - } - - /** - * Returns the value of field 'belowAlignment'. The field 'belowAlignment' has - * the following description: is to be shown below the alignment - introduced - * in Jalview 2.8 for visualizing T-COFFEE alignment scores - * - * @return the value of field 'BelowAlignment'. - */ - public boolean getBelowAlignment() - { - return this._belowAlignment; - } - - /** - * Returns the value of field 'calcId'. The field 'calcId' has the following - * description: Optional string identifier used to group sets of annotation - * produced by a particular calculation. Values are opaque strings but have - * semantic meaning to Jalview's renderer, data importer and calculation - * system. - * - * @return the value of field 'CalcId'. - */ - public java.lang.String getCalcId() - { - return this._calcId; - } - - /** - * Returns the value of field 'centreColLabels'. - * - * @return the value of field 'CentreColLabels'. - */ - public boolean getCentreColLabels() - { - return this._centreColLabels; - } - - /** - * Returns the value of field 'description'. - * - * @return the value of field 'Description'. - */ - public java.lang.String getDescription() - { - return this._description; - } - - /** - * Returns the value of field 'graph'. - * - * @return the value of field 'Graph'. - */ - public boolean getGraph() - { - return this._graph; - } - - /** - * Returns the value of field 'graphColour'. - * - * @return the value of field 'GraphColour'. - */ - public int getGraphColour() - { - return this._graphColour; - } - - /** - * Returns the value of field 'graphGroup'. - * - * @return the value of field 'GraphGroup'. - */ - public int getGraphGroup() - { - return this._graphGroup; - } - - /** - * Returns the value of field 'graphHeight'. The field 'graphHeight' has the - * following description: height in pixels for the graph if this is a - * graph-type annotation. - * - * @return the value of field 'GraphHeight'. - */ - public int getGraphHeight() - { - return this._graphHeight; - } - - /** - * Returns the value of field 'graphType'. - * - * @return the value of field 'GraphType'. - */ - public int getGraphType() - { - return this._graphType; - } - - /** - * Returns the value of field 'groupRef'. - * - * @return the value of field 'GroupRef'. - */ - public java.lang.String getGroupRef() - { - return this._groupRef; - } - - /** - * Returns the value of field 'id'. - * - * @return the value of field 'Id'. - */ - public java.lang.String getId() - { - return this._id; - } - - /** - * Returns the value of field 'label'. - * - * @return the value of field 'Label'. - */ - public java.lang.String getLabel() - { - return this._label; - } - - /** - * Method getProperty. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.Property at the - * given index - */ - public jalview.schemabinding.version2.Property getProperty(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._propertyList.size()) - { - throw new IndexOutOfBoundsException("getProperty: Index value '" - + index + "' not in range [0.." - + (this._propertyList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.Property) _propertyList - .get(index); - } - - /** - * Method getProperty.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 jalview.schemabinding.version2.Property[] getProperty() - { - jalview.schemabinding.version2.Property[] array = new jalview.schemabinding.version2.Property[0]; - return (jalview.schemabinding.version2.Property[]) this._propertyList - .toArray(array); - } - - /** - * Method getPropertyCount. - * - * @return the size of this collection - */ - public int getPropertyCount() - { - return this._propertyList.size(); - } - - /** - * Returns the value of field 'scaleColLabels'. - * - * @return the value of field 'ScaleColLabels'. - */ - public boolean getScaleColLabels() - { - return this._scaleColLabels; - } - - /** - * Returns the value of field 'score'. - * - * @return the value of field 'Score'. - */ - public double getScore() - { - return this._score; - } - - /** - * Returns the value of field 'scoreOnly'. - * - * @return the value of field 'ScoreOnly'. - */ - public boolean getScoreOnly() - { - return this._scoreOnly; - } - - /** - * Returns the value of field 'sequenceRef'. - * - * @return the value of field 'SequenceRef'. - */ - public java.lang.String getSequenceRef() - { - return this._sequenceRef; - } - - /** - * Returns the value of field 'showAllColLabels'. - * - * @return the value of field 'ShowAllColLabels'. - */ - public boolean getShowAllColLabels() - { - return this._showAllColLabels; - } - - /** - * Returns the value of field 'thresholdLine'. - * - * @return the value of field 'ThresholdLine'. - */ - public jalview.schemabinding.version2.ThresholdLine getThresholdLine() - { - return this._thresholdLine; - } - - /** - * Returns the value of field 'visible'. - * - * @return the value of field 'Visible'. - */ - public boolean getVisible() - { - return this._visible; - } - - /** - * Method hasAutoCalculated. - * - * @return true if at least one AutoCalculated has been added - */ - public boolean hasAutoCalculated() - { - return this._has_autoCalculated; - } - - /** - * Method hasBelowAlignment. - * - * @return true if at least one BelowAlignment has been added - */ - public boolean hasBelowAlignment() - { - return this._has_belowAlignment; - } - - /** - * Method hasCentreColLabels. - * - * @return true if at least one CentreColLabels has been added - */ - public boolean hasCentreColLabels() - { - return this._has_centreColLabels; - } - - /** - * Method hasGraph. - * - * @return true if at least one Graph has been added - */ - public boolean hasGraph() - { - return this._has_graph; - } - - /** - * Method hasGraphColour. - * - * @return true if at least one GraphColour has been added - */ - public boolean hasGraphColour() - { - return this._has_graphColour; - } - - /** - * Method hasGraphGroup. - * - * @return true if at least one GraphGroup has been added - */ - public boolean hasGraphGroup() - { - return this._has_graphGroup; - } - - /** - * Method hasGraphHeight. - * - * @return true if at least one GraphHeight has been added - */ - public boolean hasGraphHeight() - { - return this._has_graphHeight; - } - - /** - * Method hasGraphType. - * - * @return true if at least one GraphType has been added - */ - public boolean hasGraphType() - { - return this._has_graphType; - } - - /** - * Method hasScaleColLabels. - * - * @return true if at least one ScaleColLabels has been added - */ - public boolean hasScaleColLabels() - { - return this._has_scaleColLabels; - } - - /** - * Method hasScore. - * - * @return true if at least one Score has been added - */ - public boolean hasScore() - { - return this._has_score; - } - - /** - * Method hasScoreOnly. - * - * @return true if at least one ScoreOnly has been added - */ - public boolean hasScoreOnly() - { - return this._has_scoreOnly; - } - - /** - * Method hasShowAllColLabels. - * - * @return true if at least one ShowAllColLabels has been added - */ - public boolean hasShowAllColLabels() - { - return this._has_showAllColLabels; - } - - /** - * Method hasVisible. - * - * @return true if at least one Visible has been added - */ - public boolean hasVisible() - { - return this._has_visible; - } - - /** - * Returns the value of field 'autoCalculated'. The field 'autoCalculated' has - * the following description: is an autocalculated annotation row - * - * @return the value of field 'AutoCalculated'. - */ - public boolean isAutoCalculated() - { - return this._autoCalculated; - } - - /** - * Returns the value of field 'belowAlignment'. The field 'belowAlignment' has - * the following description: is to be shown below the alignment - introduced - * in Jalview 2.8 for visualizing T-COFFEE alignment scores - * - * @return the value of field 'BelowAlignment'. - */ - public boolean isBelowAlignment() - { - return this._belowAlignment; - } - - /** - * Returns the value of field 'centreColLabels'. - * - * @return the value of field 'CentreColLabels'. - */ - public boolean isCentreColLabels() - { - return this._centreColLabels; - } - - /** - * Returns the value of field 'graph'. - * - * @return the value of field 'Graph'. - */ - public boolean isGraph() - { - return this._graph; - } - - /** - * Returns the value of field 'scaleColLabels'. - * - * @return the value of field 'ScaleColLabels'. - */ - public boolean isScaleColLabels() - { - return this._scaleColLabels; - } - - /** - * Returns the value of field 'scoreOnly'. - * - * @return the value of field 'ScoreOnly'. - */ - public boolean isScoreOnly() - { - return this._scoreOnly; - } - - /** - * Returns the value of field 'showAllColLabels'. - * - * @return the value of field 'ShowAllColLabels'. - */ - public boolean isShowAllColLabels() - { - return this._showAllColLabels; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * Returns the value of field 'visible'. - * - * @return the value of field 'Visible'. - */ - public boolean isVisible() - { - return this._visible; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllAnnotationElement() - { - this._annotationElementList.clear(); - } - - /** - */ - public void removeAllProperty() - { - this._propertyList.clear(); - } - - /** - * Method removeAnnotationElement. - * - * @param vAnnotationElement - * @return true if the object was removed from the collection. - */ - public boolean removeAnnotationElement( - final jalview.schemabinding.version2.AnnotationElement vAnnotationElement) - { - boolean removed = _annotationElementList.remove(vAnnotationElement); - return removed; - } - - /** - * Method removeAnnotationElementAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.AnnotationElement removeAnnotationElementAt( - final int index) - { - java.lang.Object obj = this._annotationElementList.remove(index); - return (jalview.schemabinding.version2.AnnotationElement) obj; - } - - /** - * Method removeProperty. - * - * @param vProperty - * @return true if the object was removed from the collection. - */ - public boolean removeProperty( - final jalview.schemabinding.version2.Property vProperty) - { - boolean removed = _propertyList.remove(vProperty); - return removed; - } - - /** - * Method removePropertyAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.Property removePropertyAt( - final int index) - { - java.lang.Object obj = this._propertyList.remove(index); - return (jalview.schemabinding.version2.Property) obj; - } - - /** - * - * - * @param index - * @param vAnnotationElement - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setAnnotationElement( - final int index, - final jalview.schemabinding.version2.AnnotationElement vAnnotationElement) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._annotationElementList.size()) - { - throw new IndexOutOfBoundsException( - "setAnnotationElement: Index value '" + index - + "' not in range [0.." - + (this._annotationElementList.size() - 1) + "]"); - } - - this._annotationElementList.set(index, vAnnotationElement); - } - - /** - * - * - * @param vAnnotationElementArray - */ - public void setAnnotationElement( - final jalview.schemabinding.version2.AnnotationElement[] vAnnotationElementArray) - { - // -- copy array - _annotationElementList.clear(); - - for (int i = 0; i < vAnnotationElementArray.length; i++) - { - this._annotationElementList.add(vAnnotationElementArray[i]); - } - } - - /** - * Sets the value of field 'autoCalculated'. The field 'autoCalculated' has - * the following description: is an autocalculated annotation row - * - * @param autoCalculated - * the value of field 'autoCalculated'. - */ - public void setAutoCalculated(final boolean autoCalculated) - { - this._autoCalculated = autoCalculated; - this._has_autoCalculated = true; - } - - /** - * Sets the value of field 'belowAlignment'. The field 'belowAlignment' has - * the following description: is to be shown below the alignment - introduced - * in Jalview 2.8 for visualizing T-COFFEE alignment scores - * - * @param belowAlignment - * the value of field 'belowAlignment'. - */ - public void setBelowAlignment(final boolean belowAlignment) - { - this._belowAlignment = belowAlignment; - this._has_belowAlignment = true; - } - - /** - * Sets the value of field 'calcId'. The field 'calcId' has the following - * description: Optional string identifier used to group sets of annotation - * produced by a particular calculation. Values are opaque strings but have - * semantic meaning to Jalview's renderer, data importer and calculation - * system. - * - * @param calcId - * the value of field 'calcId'. - */ - public void setCalcId(final java.lang.String calcId) - { - this._calcId = calcId; - } - - /** - * Sets the value of field 'centreColLabels'. - * - * @param centreColLabels - * the value of field 'centreColLabels'. - */ - public void setCentreColLabels(final boolean centreColLabels) - { - this._centreColLabels = centreColLabels; - this._has_centreColLabels = true; - } - - /** - * Sets the value of field 'description'. - * - * @param description - * the value of field 'description'. - */ - public void setDescription(final java.lang.String description) - { - this._description = description; - } - - /** - * Sets the value of field 'graph'. - * - * @param graph - * the value of field 'graph'. - */ - public void setGraph(final boolean graph) - { - this._graph = graph; - this._has_graph = true; - } - - /** - * Sets the value of field 'graphColour'. - * - * @param graphColour - * the value of field 'graphColour'. - */ - public void setGraphColour(final int graphColour) - { - this._graphColour = graphColour; - this._has_graphColour = true; - } - - /** - * Sets the value of field 'graphGroup'. - * - * @param graphGroup - * the value of field 'graphGroup'. - */ - public void setGraphGroup(final int graphGroup) - { - this._graphGroup = graphGroup; - this._has_graphGroup = true; - } - - /** - * Sets the value of field 'graphHeight'. The field 'graphHeight' has the - * following description: height in pixels for the graph if this is a - * graph-type annotation. - * - * @param graphHeight - * the value of field 'graphHeight'. - */ - public void setGraphHeight(final int graphHeight) - { - this._graphHeight = graphHeight; - this._has_graphHeight = true; - } - - /** - * Sets the value of field 'graphType'. - * - * @param graphType - * the value of field 'graphType'. - */ - public void setGraphType(final int graphType) - { - this._graphType = graphType; - this._has_graphType = true; - } - - /** - * Sets the value of field 'groupRef'. - * - * @param groupRef - * the value of field 'groupRef'. - */ - public void setGroupRef(final java.lang.String groupRef) - { - this._groupRef = groupRef; - } - - /** - * Sets the value of field 'id'. - * - * @param id - * the value of field 'id'. - */ - public void setId(final java.lang.String id) - { - this._id = id; - } - - /** - * Sets the value of field 'label'. - * - * @param label - * the value of field 'label'. - */ - public void setLabel(final java.lang.String label) - { - this._label = label; - } - - /** - * - * - * @param index - * @param vProperty - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setProperty(final int index, - final jalview.schemabinding.version2.Property vProperty) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._propertyList.size()) - { - throw new IndexOutOfBoundsException("setProperty: Index value '" - + index + "' not in range [0.." - + (this._propertyList.size() - 1) + "]"); - } - - this._propertyList.set(index, vProperty); - } - - /** - * - * - * @param vPropertyArray - */ - public void setProperty( - final jalview.schemabinding.version2.Property[] vPropertyArray) - { - // -- copy array - _propertyList.clear(); - - for (int i = 0; i < vPropertyArray.length; i++) - { - this._propertyList.add(vPropertyArray[i]); - } - } - - /** - * Sets the value of field 'scaleColLabels'. - * - * @param scaleColLabels - * the value of field 'scaleColLabels'. - */ - public void setScaleColLabels(final boolean scaleColLabels) - { - this._scaleColLabels = scaleColLabels; - this._has_scaleColLabels = true; - } - - /** - * Sets the value of field 'score'. - * - * @param score - * the value of field 'score'. - */ - public void setScore(final double score) - { - this._score = score; - this._has_score = true; - } - - /** - * Sets the value of field 'scoreOnly'. - * - * @param scoreOnly - * the value of field 'scoreOnly'. - */ - public void setScoreOnly(final boolean scoreOnly) - { - this._scoreOnly = scoreOnly; - this._has_scoreOnly = true; - } - - /** - * Sets the value of field 'sequenceRef'. - * - * @param sequenceRef - * the value of field 'sequenceRef'. - */ - public void setSequenceRef(final java.lang.String sequenceRef) - { - this._sequenceRef = sequenceRef; - } - - /** - * Sets the value of field 'showAllColLabels'. - * - * @param showAllColLabels - * the value of field 'showAllColLabels' - */ - public void setShowAllColLabels(final boolean showAllColLabels) - { - this._showAllColLabels = showAllColLabels; - this._has_showAllColLabels = true; - } - - /** - * Sets the value of field 'thresholdLine'. - * - * @param thresholdLine - * the value of field 'thresholdLine'. - */ - public void setThresholdLine( - final jalview.schemabinding.version2.ThresholdLine thresholdLine) - { - this._thresholdLine = thresholdLine; - } - - /** - * Sets the value of field 'visible'. - * - * @param visible - * the value of field 'visible'. - */ - public void setVisible(final boolean visible) - { - this._visible = visible; - this._has_visible = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.Annotation - */ - public static jalview.schemabinding.version2.Annotation unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.Annotation) Unmarshaller - .unmarshal(jalview.schemabinding.version2.Annotation.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/AnnotationColourScheme.java b/src/jalview/schemabinding/version2/AnnotationColourScheme.java deleted file mode 100644 index 2f76e76..0000000 --- a/src/jalview/schemabinding/version2/AnnotationColourScheme.java +++ /dev/null @@ -1,497 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class AnnotationColourScheme. - * - * @version $Revision$ $Date$ - */ -public class AnnotationColourScheme implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _aboveThreshold. - */ - private int _aboveThreshold; - - /** - * keeps track of state for field: _aboveThreshold - */ - private boolean _has_aboveThreshold; - - /** - * Field _annotation. - */ - private java.lang.String _annotation; - - /** - * Field _minColour. - */ - private int _minColour; - - /** - * keeps track of state for field: _minColour - */ - private boolean _has_minColour; - - /** - * Field _maxColour. - */ - private int _maxColour; - - /** - * keeps track of state for field: _maxColour - */ - private boolean _has_maxColour; - - /** - * Field _colourScheme. - */ - private java.lang.String _colourScheme; - - /** - * Field _threshold. - */ - private float _threshold; - - /** - * keeps track of state for field: _threshold - */ - private boolean _has_threshold; - - /** - * Field _perSequence. - */ - private boolean _perSequence; - - /** - * keeps track of state for field: _perSequence - */ - private boolean _has_perSequence; - - /** - * Field _predefinedColours. - */ - private boolean _predefinedColours; - - /** - * keeps track of state for field: _predefinedColours - */ - private boolean _has_predefinedColours; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public AnnotationColourScheme() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - */ - public void deleteAboveThreshold() - { - this._has_aboveThreshold = false; - } - - /** - */ - public void deleteMaxColour() - { - this._has_maxColour = false; - } - - /** - */ - public void deleteMinColour() - { - this._has_minColour = false; - } - - /** - */ - public void deletePerSequence() - { - this._has_perSequence = false; - } - - /** - */ - public void deletePredefinedColours() - { - this._has_predefinedColours = false; - } - - /** - */ - public void deleteThreshold() - { - this._has_threshold = false; - } - - /** - * Returns the value of field 'aboveThreshold'. - * - * @return the value of field 'AboveThreshold'. - */ - public int getAboveThreshold() - { - return this._aboveThreshold; - } - - /** - * Returns the value of field 'annotation'. - * - * @return the value of field 'Annotation'. - */ - public java.lang.String getAnnotation() - { - return this._annotation; - } - - /** - * Returns the value of field 'colourScheme'. - * - * @return the value of field 'ColourScheme'. - */ - public java.lang.String getColourScheme() - { - return this._colourScheme; - } - - /** - * Returns the value of field 'maxColour'. - * - * @return the value of field 'MaxColour'. - */ - public int getMaxColour() - { - return this._maxColour; - } - - /** - * Returns the value of field 'minColour'. - * - * @return the value of field 'MinColour'. - */ - public int getMinColour() - { - return this._minColour; - } - - /** - * Returns the value of field 'perSequence'. - * - * @return the value of field 'PerSequence'. - */ - public boolean getPerSequence() - { - return this._perSequence; - } - - /** - * Returns the value of field 'predefinedColours'. - * - * @return the value of field 'PredefinedColours'. - */ - public boolean getPredefinedColours() - { - return this._predefinedColours; - } - - /** - * Returns the value of field 'threshold'. - * - * @return the value of field 'Threshold'. - */ - public float getThreshold() - { - return this._threshold; - } - - /** - * Method hasAboveThreshold. - * - * @return true if at least one AboveThreshold has been added - */ - public boolean hasAboveThreshold() - { - return this._has_aboveThreshold; - } - - /** - * Method hasMaxColour. - * - * @return true if at least one MaxColour has been added - */ - public boolean hasMaxColour() - { - return this._has_maxColour; - } - - /** - * Method hasMinColour. - * - * @return true if at least one MinColour has been added - */ - public boolean hasMinColour() - { - return this._has_minColour; - } - - /** - * Method hasPerSequence. - * - * @return true if at least one PerSequence has been added - */ - public boolean hasPerSequence() - { - return this._has_perSequence; - } - - /** - * Method hasPredefinedColours. - * - * @return true if at least one PredefinedColours has been added - */ - public boolean hasPredefinedColours() - { - return this._has_predefinedColours; - } - - /** - * Method hasThreshold. - * - * @return true if at least one Threshold has been added - */ - public boolean hasThreshold() - { - return this._has_threshold; - } - - /** - * Returns the value of field 'perSequence'. - * - * @return the value of field 'PerSequence'. - */ - public boolean isPerSequence() - { - return this._perSequence; - } - - /** - * Returns the value of field 'predefinedColours'. - * - * @return the value of field 'PredefinedColours'. - */ - public boolean isPredefinedColours() - { - return this._predefinedColours; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'aboveThreshold'. - * - * @param aboveThreshold - * the value of field 'aboveThreshold'. - */ - public void setAboveThreshold(final int aboveThreshold) - { - this._aboveThreshold = aboveThreshold; - this._has_aboveThreshold = true; - } - - /** - * Sets the value of field 'annotation'. - * - * @param annotation - * the value of field 'annotation'. - */ - public void setAnnotation(final java.lang.String annotation) - { - this._annotation = annotation; - } - - /** - * Sets the value of field 'colourScheme'. - * - * @param colourScheme - * the value of field 'colourScheme'. - */ - public void setColourScheme(final java.lang.String colourScheme) - { - this._colourScheme = colourScheme; - } - - /** - * Sets the value of field 'maxColour'. - * - * @param maxColour - * the value of field 'maxColour'. - */ - public void setMaxColour(final int maxColour) - { - this._maxColour = maxColour; - this._has_maxColour = true; - } - - /** - * Sets the value of field 'minColour'. - * - * @param minColour - * the value of field 'minColour'. - */ - public void setMinColour(final int minColour) - { - this._minColour = minColour; - this._has_minColour = true; - } - - /** - * Sets the value of field 'perSequence'. - * - * @param perSequence - * the value of field 'perSequence'. - */ - public void setPerSequence(final boolean perSequence) - { - this._perSequence = perSequence; - this._has_perSequence = true; - } - - /** - * Sets the value of field 'predefinedColours'. - * - * @param predefinedColours - * the value of field 'predefinedColours'. - */ - public void setPredefinedColours(final boolean predefinedColours) - { - this._predefinedColours = predefinedColours; - this._has_predefinedColours = true; - } - - /** - * Sets the value of field 'threshold'. - * - * @param threshold - * the value of field 'threshold'. - */ - public void setThreshold(final float threshold) - { - this._threshold = threshold; - this._has_threshold = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled - * jalview.schemabinding.version2.AnnotationColourScheme - */ - public static jalview.schemabinding.version2.AnnotationColourScheme unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.AnnotationColourScheme) Unmarshaller - .unmarshal( - jalview.schemabinding.version2.AnnotationColourScheme.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/AnnotationColours.java b/src/jalview/schemabinding/version2/AnnotationColours.java deleted file mode 100644 index 350ebce..0000000 --- a/src/jalview/schemabinding/version2/AnnotationColours.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class AnnotationColours. - * - * @version $Revision$ $Date$ - */ -public class AnnotationColours extends AnnotationColourScheme implements - java.io.Serializable -{ - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public AnnotationColours() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled - * jalview.schemabinding.version2.AnnotationColourScheme - */ - public static jalview.schemabinding.version2.AnnotationColourScheme unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.AnnotationColourScheme) Unmarshaller - .unmarshal( - jalview.schemabinding.version2.AnnotationColours.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/AnnotationElement.java b/src/jalview/schemabinding/version2/AnnotationElement.java deleted file mode 100644 index 2a765ea..0000000 --- a/src/jalview/schemabinding/version2/AnnotationElement.java +++ /dev/null @@ -1,356 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class AnnotationElement. - * - * @version $Revision$ $Date$ - */ -public class AnnotationElement implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _position. - */ - private int _position; - - /** - * keeps track of state for field: _position - */ - private boolean _has_position; - - /** - * Field _colour. - */ - private int _colour; - - /** - * keeps track of state for field: _colour - */ - private boolean _has_colour; - - /** - * Field _displayCharacter. - */ - private java.lang.String _displayCharacter; - - /** - * Field _description. - */ - private java.lang.String _description; - - /** - * Field _secondaryStructure. - */ - private java.lang.String _secondaryStructure; - - /** - * Field _value. - */ - private float _value; - - /** - * keeps track of state for field: _value - */ - private boolean _has_value; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public AnnotationElement() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - */ - public void deleteColour() - { - this._has_colour = false; - } - - /** - */ - public void deletePosition() - { - this._has_position = false; - } - - /** - */ - public void deleteValue() - { - this._has_value = false; - } - - /** - * Returns the value of field 'colour'. - * - * @return the value of field 'Colour'. - */ - public int getColour() - { - return this._colour; - } - - /** - * Returns the value of field 'description'. - * - * @return the value of field 'Description'. - */ - public java.lang.String getDescription() - { - return this._description; - } - - /** - * Returns the value of field 'displayCharacter'. - * - * @return the value of field 'DisplayCharacter'. - */ - public java.lang.String getDisplayCharacter() - { - return this._displayCharacter; - } - - /** - * Returns the value of field 'position'. - * - * @return the value of field 'Position'. - */ - public int getPosition() - { - return this._position; - } - - /** - * Returns the value of field 'secondaryStructure'. - * - * @return the value of field 'SecondaryStructure'. - */ - public java.lang.String getSecondaryStructure() - { - return this._secondaryStructure; - } - - /** - * Returns the value of field 'value'. - * - * @return the value of field 'Value'. - */ - public float getValue() - { - return this._value; - } - - /** - * Method hasColour. - * - * @return true if at least one Colour has been added - */ - public boolean hasColour() - { - return this._has_colour; - } - - /** - * Method hasPosition. - * - * @return true if at least one Position has been added - */ - public boolean hasPosition() - { - return this._has_position; - } - - /** - * Method hasValue. - * - * @return true if at least one Value has been added - */ - public boolean hasValue() - { - return this._has_value; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'colour'. - * - * @param colour - * the value of field 'colour'. - */ - public void setColour(final int colour) - { - this._colour = colour; - this._has_colour = true; - } - - /** - * Sets the value of field 'description'. - * - * @param description - * the value of field 'description'. - */ - public void setDescription(final java.lang.String description) - { - this._description = description; - } - - /** - * Sets the value of field 'displayCharacter'. - * - * @param displayCharacter - * the value of field 'displayCharacter' - */ - public void setDisplayCharacter(final java.lang.String displayCharacter) - { - this._displayCharacter = displayCharacter; - } - - /** - * Sets the value of field 'position'. - * - * @param position - * the value of field 'position'. - */ - public void setPosition(final int position) - { - this._position = position; - this._has_position = true; - } - - /** - * Sets the value of field 'secondaryStructure'. - * - * @param secondaryStructure - * the value of field 'secondaryStructure'. - */ - public void setSecondaryStructure( - final java.lang.String secondaryStructure) - { - this._secondaryStructure = secondaryStructure; - } - - /** - * Sets the value of field 'value'. - * - * @param value - * the value of field 'value'. - */ - public void setValue(final float value) - { - this._value = value; - this._has_value = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.AnnotationElement - */ - public static jalview.schemabinding.version2.AnnotationElement unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.AnnotationElement) Unmarshaller - .unmarshal( - jalview.schemabinding.version2.AnnotationElement.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/CalcIdParam.java b/src/jalview/schemabinding/version2/CalcIdParam.java deleted file mode 100644 index 57d6986..0000000 --- a/src/jalview/schemabinding/version2/CalcIdParam.java +++ /dev/null @@ -1,300 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class CalcIdParam. - * - * @version $Revision$ $Date$ - */ -public class CalcIdParam extends WebServiceParameterSet implements - java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * handle for the calculation which uses this parameter set - * - */ - private java.lang.String _calcId; - - /** - * should the calculation be performed immediately after loading in order to - * refresh results - * - */ - private boolean _needsUpdate = false; - - /** - * keeps track of state for field: _needsUpdate - */ - private boolean _has_needsUpdate; - - /** - * should the calculation be automatically performed on edits - * - */ - private boolean _autoUpdate; - - /** - * keeps track of state for field: _autoUpdate - */ - private boolean _has_autoUpdate; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public CalcIdParam() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - */ - public void deleteAutoUpdate() - { - this._has_autoUpdate = false; - } - - /** - */ - public void deleteNeedsUpdate() - { - this._has_needsUpdate = false; - } - - /** - * Returns the value of field 'autoUpdate'. The field 'autoUpdate' has the - * following description: should the calculation be automatically performed on - * edits - * - * - * @return the value of field 'AutoUpdate'. - */ - public boolean getAutoUpdate() - { - return this._autoUpdate; - } - - /** - * Returns the value of field 'calcId'. The field 'calcId' has the following - * description: handle for the calculation which uses this parameter set - * - * - * @return the value of field 'CalcId'. - */ - public java.lang.String getCalcId() - { - return this._calcId; - } - - /** - * Returns the value of field 'needsUpdate'. The field 'needsUpdate' has the - * following description: should the calculation be performed immediately - * after loading in order to refresh results - * - * - * @return the value of field 'NeedsUpdate'. - */ - public boolean getNeedsUpdate() - { - return this._needsUpdate; - } - - /** - * Method hasAutoUpdate. - * - * @return true if at least one AutoUpdate has been added - */ - public boolean hasAutoUpdate() - { - return this._has_autoUpdate; - } - - /** - * Method hasNeedsUpdate. - * - * @return true if at least one NeedsUpdate has been added - */ - public boolean hasNeedsUpdate() - { - return this._has_needsUpdate; - } - - /** - * Returns the value of field 'autoUpdate'. The field 'autoUpdate' has the - * following description: should the calculation be automatically performed on - * edits - * - * - * @return the value of field 'AutoUpdate'. - */ - public boolean isAutoUpdate() - { - return this._autoUpdate; - } - - /** - * Returns the value of field 'needsUpdate'. The field 'needsUpdate' has the - * following description: should the calculation be performed immediately - * after loading in order to refresh results - * - * - * @return the value of field 'NeedsUpdate'. - */ - public boolean isNeedsUpdate() - { - return this._needsUpdate; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'autoUpdate'. The field 'autoUpdate' has the - * following description: should the calculation be automatically performed on - * edits - * - * - * @param autoUpdate - * the value of field 'autoUpdate'. - */ - public void setAutoUpdate(final boolean autoUpdate) - { - this._autoUpdate = autoUpdate; - this._has_autoUpdate = true; - } - - /** - * Sets the value of field 'calcId'. The field 'calcId' has the following - * description: handle for the calculation which uses this parameter set - * - * - * @param calcId - * the value of field 'calcId'. - */ - public void setCalcId(final java.lang.String calcId) - { - this._calcId = calcId; - } - - /** - * Sets the value of field 'needsUpdate'. The field 'needsUpdate' has the - * following description: should the calculation be performed immediately - * after loading in order to refresh results - * - * - * @param needsUpdate - * the value of field 'needsUpdate'. - */ - public void setNeedsUpdate(final boolean needsUpdate) - { - this._needsUpdate = needsUpdate; - this._has_needsUpdate = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.CalcIdParam - */ - public static jalview.schemabinding.version2.CalcIdParam unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.CalcIdParam) Unmarshaller - .unmarshal(jalview.schemabinding.version2.CalcIdParam.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/Colour.java b/src/jalview/schemabinding/version2/Colour.java deleted file mode 100644 index d1c7297..0000000 --- a/src/jalview/schemabinding/version2/Colour.java +++ /dev/null @@ -1,708 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Colour. - * - * @version $Revision$ $Date$ - */ -public class Colour implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Single letter residue code for an alignment colour scheme, or feature type - * for a feature colour scheme - */ - private java.lang.String _name; - - /** - * Field _RGB. - */ - private java.lang.String _RGB; - - /** - * Field _minRGB. - */ - private java.lang.String _minRGB; - - /** - * Field _noValueColour. - */ - private jalview.schemabinding.version2.types.NoValueColour _noValueColour = jalview.schemabinding.version2.types.NoValueColour - .valueOf("Min"); - - /** - * Field _threshType. - */ - private jalview.schemabinding.version2.types.ColourThreshTypeType _threshType; - - /** - * Field _threshold. - */ - private float _threshold; - - /** - * keeps track of state for field: _threshold - */ - private boolean _has_threshold; - - /** - * Field _max. - */ - private float _max; - - /** - * keeps track of state for field: _max - */ - private boolean _has_max; - - /** - * Field _min. - */ - private float _min; - - /** - * keeps track of state for field: _min - */ - private boolean _has_min; - - /** - * Field _colourByLabel. - */ - private boolean _colourByLabel; - - /** - * keeps track of state for field: _colourByLabel - */ - private boolean _has_colourByLabel; - - /** - * Field _autoScale. - */ - private boolean _autoScale; - - /** - * keeps track of state for field: _autoScale - */ - private boolean _has_autoScale; - - /** - * name of feature attribute to colour by, or attribute and sub-attribute - */ - private java.util.Vector _attributeNameList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Colour() - { - super(); - setNoValueColour(jalview.schemabinding.version2.types.NoValueColour - .valueOf("Min")); - this._attributeNameList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vAttributeName - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAttributeName(final java.lang.String vAttributeName) - throws java.lang.IndexOutOfBoundsException - { - // check for the maximum size - if (this._attributeNameList.size() >= 2) - { - throw new IndexOutOfBoundsException( - "addAttributeName has a maximum of 2"); - } - - this._attributeNameList.addElement(vAttributeName); - } - - /** - * - * - * @param index - * @param vAttributeName - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAttributeName(final int index, - final java.lang.String vAttributeName) - throws java.lang.IndexOutOfBoundsException - { - // check for the maximum size - if (this._attributeNameList.size() >= 2) - { - throw new IndexOutOfBoundsException( - "addAttributeName has a maximum of 2"); - } - - this._attributeNameList.add(index, vAttributeName); - } - - /** - */ - public void deleteAutoScale() - { - this._has_autoScale = false; - } - - /** - */ - public void deleteColourByLabel() - { - this._has_colourByLabel = false; - } - - /** - */ - public void deleteMax() - { - this._has_max = false; - } - - /** - */ - public void deleteMin() - { - this._has_min = false; - } - - /** - */ - public void deleteThreshold() - { - this._has_threshold = false; - } - - /** - * Method enumerateAttributeName. - * - * @return an Enumeration over all java.lang.String elements - */ - public java.util.Enumeration enumerateAttributeName() - { - return this._attributeNameList.elements(); - } - - /** - * Method getAttributeName. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the java.lang.String at the given index - */ - public java.lang.String getAttributeName(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._attributeNameList.size()) - { - throw new IndexOutOfBoundsException("getAttributeName: Index value '" - + index + "' not in range [0.." - + (this._attributeNameList.size() - 1) + "]"); - } - - return (java.lang.String) _attributeNameList.get(index); - } - - /** - * Method getAttributeName.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.String[] getAttributeName() - { - java.lang.String[] array = new java.lang.String[0]; - return (java.lang.String[]) this._attributeNameList.toArray(array); - } - - /** - * Method getAttributeNameCount. - * - * @return the size of this collection - */ - public int getAttributeNameCount() - { - return this._attributeNameList.size(); - } - - /** - * Returns the value of field 'autoScale'. - * - * @return the value of field 'AutoScale'. - */ - public boolean getAutoScale() - { - return this._autoScale; - } - - /** - * Returns the value of field 'colourByLabel'. - * - * @return the value of field 'ColourByLabel'. - */ - public boolean getColourByLabel() - { - return this._colourByLabel; - } - - /** - * Returns the value of field 'max'. - * - * @return the value of field 'Max'. - */ - public float getMax() - { - return this._max; - } - - /** - * Returns the value of field 'min'. - * - * @return the value of field 'Min'. - */ - public float getMin() - { - return this._min; - } - - /** - * Returns the value of field 'minRGB'. - * - * @return the value of field 'MinRGB'. - */ - public java.lang.String getMinRGB() - { - return this._minRGB; - } - - /** - * Returns the value of field 'name'. The field 'name' has the following - * description: Single letter residue code for an alignment colour scheme, or - * feature type for a feature colour scheme - * - * @return the value of field 'Name'. - */ - public java.lang.String getName() - { - return this._name; - } - - /** - * Returns the value of field 'noValueColour'. - * - * @return the value of field 'NoValueColour'. - */ - public jalview.schemabinding.version2.types.NoValueColour getNoValueColour() - { - return this._noValueColour; - } - - /** - * Returns the value of field 'RGB'. - * - * @return the value of field 'RGB'. - */ - public java.lang.String getRGB() - { - return this._RGB; - } - - /** - * Returns the value of field 'threshType'. - * - * @return the value of field 'ThreshType'. - */ - public jalview.schemabinding.version2.types.ColourThreshTypeType getThreshType() - { - return this._threshType; - } - - /** - * Returns the value of field 'threshold'. - * - * @return the value of field 'Threshold'. - */ - public float getThreshold() - { - return this._threshold; - } - - /** - * Method hasAutoScale. - * - * @return true if at least one AutoScale has been added - */ - public boolean hasAutoScale() - { - return this._has_autoScale; - } - - /** - * Method hasColourByLabel. - * - * @return true if at least one ColourByLabel has been added - */ - public boolean hasColourByLabel() - { - return this._has_colourByLabel; - } - - /** - * Method hasMax. - * - * @return true if at least one Max has been added - */ - public boolean hasMax() - { - return this._has_max; - } - - /** - * Method hasMin. - * - * @return true if at least one Min has been added - */ - public boolean hasMin() - { - return this._has_min; - } - - /** - * Method hasThreshold. - * - * @return true if at least one Threshold has been added - */ - public boolean hasThreshold() - { - return this._has_threshold; - } - - /** - * Returns the value of field 'autoScale'. - * - * @return the value of field 'AutoScale'. - */ - public boolean isAutoScale() - { - return this._autoScale; - } - - /** - * Returns the value of field 'colourByLabel'. - * - * @return the value of field 'ColourByLabel'. - */ - public boolean isColourByLabel() - { - return this._colourByLabel; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllAttributeName() - { - this._attributeNameList.clear(); - } - - /** - * Method removeAttributeName. - * - * @param vAttributeName - * @return true if the object was removed from the collection. - */ - public boolean removeAttributeName(final java.lang.String vAttributeName) - { - boolean removed = _attributeNameList.remove(vAttributeName); - return removed; - } - - /** - * Method removeAttributeNameAt. - * - * @param index - * @return the element removed from the collection - */ - public java.lang.String removeAttributeNameAt(final int index) - { - java.lang.Object obj = this._attributeNameList.remove(index); - return (java.lang.String) obj; - } - - /** - * - * - * @param index - * @param vAttributeName - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setAttributeName(final int index, - final java.lang.String vAttributeName) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._attributeNameList.size()) - { - throw new IndexOutOfBoundsException("setAttributeName: Index value '" - + index + "' not in range [0.." - + (this._attributeNameList.size() - 1) + "]"); - } - - this._attributeNameList.set(index, vAttributeName); - } - - /** - * - * - * @param vAttributeNameArray - */ - public void setAttributeName(final java.lang.String[] vAttributeNameArray) - { - // -- copy array - _attributeNameList.clear(); - - for (int i = 0; i < vAttributeNameArray.length; i++) - { - this._attributeNameList.add(vAttributeNameArray[i]); - } - } - - /** - * Sets the value of field 'autoScale'. - * - * @param autoScale - * the value of field 'autoScale'. - */ - public void setAutoScale(final boolean autoScale) - { - this._autoScale = autoScale; - this._has_autoScale = true; - } - - /** - * Sets the value of field 'colourByLabel'. - * - * @param colourByLabel - * the value of field 'colourByLabel'. - */ - public void setColourByLabel(final boolean colourByLabel) - { - this._colourByLabel = colourByLabel; - this._has_colourByLabel = true; - } - - /** - * Sets the value of field 'max'. - * - * @param max - * the value of field 'max'. - */ - public void setMax(final float max) - { - this._max = max; - this._has_max = true; - } - - /** - * Sets the value of field 'min'. - * - * @param min - * the value of field 'min'. - */ - public void setMin(final float min) - { - this._min = min; - this._has_min = true; - } - - /** - * Sets the value of field 'minRGB'. - * - * @param minRGB - * the value of field 'minRGB'. - */ - public void setMinRGB(final java.lang.String minRGB) - { - this._minRGB = minRGB; - } - - /** - * Sets the value of field 'name'. The field 'name' has the following - * description: Single letter residue code for an alignment colour scheme, or - * feature type for a feature colour scheme - * - * @param name - * the value of field 'name'. - */ - public void setName(final java.lang.String name) - { - this._name = name; - } - - /** - * Sets the value of field 'noValueColour'. - * - * @param noValueColour - * the value of field 'noValueColour'. - */ - public void setNoValueColour( - final jalview.schemabinding.version2.types.NoValueColour noValueColour) - { - this._noValueColour = noValueColour; - } - - /** - * Sets the value of field 'RGB'. - * - * @param RGB - * the value of field 'RGB'. - */ - public void setRGB(final java.lang.String RGB) - { - this._RGB = RGB; - } - - /** - * Sets the value of field 'threshType'. - * - * @param threshType - * the value of field 'threshType'. - */ - public void setThreshType( - final jalview.schemabinding.version2.types.ColourThreshTypeType threshType) - { - this._threshType = threshType; - } - - /** - * Sets the value of field 'threshold'. - * - * @param threshold - * the value of field 'threshold'. - */ - public void setThreshold(final float threshold) - { - this._threshold = threshold; - this._has_threshold = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.Colour - */ - public static jalview.schemabinding.version2.Colour unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.Colour) Unmarshaller - .unmarshal(jalview.schemabinding.version2.Colour.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/CompoundMatcher.java b/src/jalview/schemabinding/version2/CompoundMatcher.java deleted file mode 100644 index 27714e2..0000000 --- a/src/jalview/schemabinding/version2/CompoundMatcher.java +++ /dev/null @@ -1,374 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class CompoundMatcher. - * - * @version $Revision$ $Date$ - */ -public class CompoundMatcher implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * If true, matchers are AND-ed, if false they are OR-ed - */ - private boolean _and; - - /** - * keeps track of state for field: _and - */ - private boolean _has_and; - - /** - * Field _matcherSetList. - */ - private java.util.Vector _matcherSetList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public CompoundMatcher() - { - super(); - this._matcherSetList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vMatcherSet - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addMatcherSet( - final jalview.schemabinding.version2.MatcherSet vMatcherSet) - throws java.lang.IndexOutOfBoundsException - { - // check for the maximum size - if (this._matcherSetList.size() >= 2) - { - throw new IndexOutOfBoundsException( - "addMatcherSet has a maximum of 2"); - } - - this._matcherSetList.addElement(vMatcherSet); - } - - /** - * - * - * @param index - * @param vMatcherSet - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addMatcherSet(final int index, - final jalview.schemabinding.version2.MatcherSet vMatcherSet) - throws java.lang.IndexOutOfBoundsException - { - // check for the maximum size - if (this._matcherSetList.size() >= 2) - { - throw new IndexOutOfBoundsException( - "addMatcherSet has a maximum of 2"); - } - - this._matcherSetList.add(index, vMatcherSet); - } - - /** - */ - public void deleteAnd() - { - this._has_and = false; - } - - /** - * Method enumerateMatcherSet. - * - * @return an Enumeration over all jalview.schemabinding.version2.MatcherSet - * elements - */ - public java.util.Enumeration enumerateMatcherSet() - { - return this._matcherSetList.elements(); - } - - /** - * Returns the value of field 'and'. The field 'and' has the following - * description: If true, matchers are AND-ed, if false they are OR-ed - * - * @return the value of field 'And'. - */ - public boolean getAnd() - { - return this._and; - } - - /** - * Method getMatcherSet. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.MatcherSet at the - * given index - */ - public jalview.schemabinding.version2.MatcherSet getMatcherSet( - final int index) throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._matcherSetList.size()) - { - throw new IndexOutOfBoundsException( - "getMatcherSet: Index value '" + index + "' not in range [0.." - + (this._matcherSetList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.MatcherSet) _matcherSetList - .get(index); - } - - /** - * Method getMatcherSet.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 jalview.schemabinding.version2.MatcherSet[] getMatcherSet() - { - jalview.schemabinding.version2.MatcherSet[] array = new jalview.schemabinding.version2.MatcherSet[0]; - return (jalview.schemabinding.version2.MatcherSet[]) this._matcherSetList - .toArray(array); - } - - /** - * Method getMatcherSetCount. - * - * @return the size of this collection - */ - public int getMatcherSetCount() - { - return this._matcherSetList.size(); - } - - /** - * Method hasAnd. - * - * @return true if at least one And has been added - */ - public boolean hasAnd() - { - return this._has_and; - } - - /** - * Returns the value of field 'and'. The field 'and' has the following - * description: If true, matchers are AND-ed, if false they are OR-ed - * - * @return the value of field 'And'. - */ - public boolean isAnd() - { - return this._and; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllMatcherSet() - { - this._matcherSetList.clear(); - } - - /** - * Method removeMatcherSet. - * - * @param vMatcherSet - * @return true if the object was removed from the collection. - */ - public boolean removeMatcherSet( - final jalview.schemabinding.version2.MatcherSet vMatcherSet) - { - boolean removed = _matcherSetList.remove(vMatcherSet); - return removed; - } - - /** - * Method removeMatcherSetAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.MatcherSet removeMatcherSetAt( - final int index) - { - java.lang.Object obj = this._matcherSetList.remove(index); - return (jalview.schemabinding.version2.MatcherSet) obj; - } - - /** - * Sets the value of field 'and'. The field 'and' has the following - * description: If true, matchers are AND-ed, if false they are OR-ed - * - * @param and - * the value of field 'and'. - */ - public void setAnd(final boolean and) - { - this._and = and; - this._has_and = true; - } - - /** - * - * - * @param index - * @param vMatcherSet - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setMatcherSet(final int index, - final jalview.schemabinding.version2.MatcherSet vMatcherSet) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._matcherSetList.size()) - { - throw new IndexOutOfBoundsException( - "setMatcherSet: Index value '" + index + "' not in range [0.." - + (this._matcherSetList.size() - 1) + "]"); - } - - this._matcherSetList.set(index, vMatcherSet); - } - - /** - * - * - * @param vMatcherSetArray - */ - public void setMatcherSet( - final jalview.schemabinding.version2.MatcherSet[] vMatcherSetArray) - { - // -- copy array - _matcherSetList.clear(); - - for (int i = 0; i < vMatcherSetArray.length; i++) - { - this._matcherSetList.add(vMatcherSetArray[i]); - } - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.CompoundMatcher - */ - public static jalview.schemabinding.version2.CompoundMatcher unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.CompoundMatcher) Unmarshaller - .unmarshal(jalview.schemabinding.version2.CompoundMatcher.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/DBRef.java b/src/jalview/schemabinding/version2/DBRef.java deleted file mode 100644 index 85997ff..0000000 --- a/src/jalview/schemabinding/version2/DBRef.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class DBRef. - * - * @version $Revision$ $Date$ - */ -public class DBRef implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _source. - */ - private java.lang.String _source; - - /** - * Field _version. - */ - private java.lang.String _version; - - /** - * Field _accessionId. - */ - private java.lang.String _accessionId; - - /** - * Field _mapping. - */ - private jalview.schemabinding.version2.Mapping _mapping; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public DBRef() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'accessionId'. - * - * @return the value of field 'AccessionId'. - */ - public java.lang.String getAccessionId() - { - return this._accessionId; - } - - /** - * Returns the value of field 'mapping'. - * - * @return the value of field 'Mapping'. - */ - public jalview.schemabinding.version2.Mapping getMapping() - { - return this._mapping; - } - - /** - * Returns the value of field 'source'. - * - * @return the value of field 'Source'. - */ - public java.lang.String getSource() - { - return this._source; - } - - /** - * Returns the value of field 'version'. - * - * @return the value of field 'Version'. - */ - public java.lang.String getVersion() - { - return this._version; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'accessionId'. - * - * @param accessionId - * the value of field 'accessionId'. - */ - public void setAccessionId(final java.lang.String accessionId) - { - this._accessionId = accessionId; - } - - /** - * Sets the value of field 'mapping'. - * - * @param mapping - * the value of field 'mapping'. - */ - public void setMapping( - final jalview.schemabinding.version2.Mapping mapping) - { - this._mapping = mapping; - } - - /** - * Sets the value of field 'source'. - * - * @param source - * the value of field 'source'. - */ - public void setSource(final java.lang.String source) - { - this._source = source; - } - - /** - * Sets the value of field 'version'. - * - * @param version - * the value of field 'version'. - */ - public void setVersion(final java.lang.String version) - { - this._version = version; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.DBRef - */ - public static jalview.schemabinding.version2.DBRef unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.DBRef) Unmarshaller.unmarshal( - jalview.schemabinding.version2.DBRef.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/Feature.java b/src/jalview/schemabinding/version2/Feature.java deleted file mode 100644 index 9e484d5..0000000 --- a/src/jalview/schemabinding/version2/Feature.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Feature. - * - * @version $Revision$ $Date$ - */ -public class Feature implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _begin. - */ - private int _begin; - - /** - * keeps track of state for field: _begin - */ - private boolean _has_begin; - - /** - * Field _end. - */ - private int _end; - - /** - * keeps track of state for field: _end - */ - private boolean _has_end; - - /** - * Field _type. - */ - private java.lang.String _type; - - /** - * Field _description. - */ - private java.lang.String _description; - - /** - * Field _status. - */ - private java.lang.String _status; - - /** - * Field _featureGroup. - */ - private java.lang.String _featureGroup; - - /** - * Field _score. - */ - private float _score; - - /** - * keeps track of state for field: _score - */ - private boolean _has_score; - - /** - * Field _otherDataList. - */ - private java.util.Vector _otherDataList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Feature() - { - super(); - this._otherDataList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vOtherData - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addOtherData( - final jalview.schemabinding.version2.OtherData vOtherData) - throws java.lang.IndexOutOfBoundsException - { - this._otherDataList.addElement(vOtherData); - } - - /** - * - * - * @param index - * @param vOtherData - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addOtherData(final int index, - final jalview.schemabinding.version2.OtherData vOtherData) - throws java.lang.IndexOutOfBoundsException - { - this._otherDataList.add(index, vOtherData); - } - - /** - */ - public void deleteBegin() - { - this._has_begin = false; - } - - /** - */ - public void deleteEnd() - { - this._has_end = false; - } - - /** - */ - public void deleteScore() - { - this._has_score = false; - } - - /** - * Method enumerateOtherData. - * - * @return an Enumeration over all jalview.schemabinding.version2.OtherData - * elements - */ - public java.util.Enumeration enumerateOtherData() - { - return this._otherDataList.elements(); - } - - /** - * Returns the value of field 'begin'. - * - * @return the value of field 'Begin'. - */ - public int getBegin() - { - return this._begin; - } - - /** - * Returns the value of field 'description'. - * - * @return the value of field 'Description'. - */ - public java.lang.String getDescription() - { - return this._description; - } - - /** - * Returns the value of field 'end'. - * - * @return the value of field 'End'. - */ - public int getEnd() - { - return this._end; - } - - /** - * Returns the value of field 'featureGroup'. - * - * @return the value of field 'FeatureGroup'. - */ - public java.lang.String getFeatureGroup() - { - return this._featureGroup; - } - - /** - * Method getOtherData. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.OtherData at the - * given index - */ - public jalview.schemabinding.version2.OtherData getOtherData( - final int index) throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._otherDataList.size()) - { - throw new IndexOutOfBoundsException("getOtherData: Index value '" - + index + "' not in range [0.." - + (this._otherDataList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.OtherData) _otherDataList - .get(index); - } - - /** - * Method getOtherData.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 jalview.schemabinding.version2.OtherData[] getOtherData() - { - jalview.schemabinding.version2.OtherData[] array = new jalview.schemabinding.version2.OtherData[0]; - return (jalview.schemabinding.version2.OtherData[]) this._otherDataList - .toArray(array); - } - - /** - * Method getOtherDataCount. - * - * @return the size of this collection - */ - public int getOtherDataCount() - { - return this._otherDataList.size(); - } - - /** - * Returns the value of field 'score'. - * - * @return the value of field 'Score'. - */ - public float getScore() - { - return this._score; - } - - /** - * Returns the value of field 'status'. - * - * @return the value of field 'Status'. - */ - public java.lang.String getStatus() - { - return this._status; - } - - /** - * Returns the value of field 'type'. - * - * @return the value of field 'Type'. - */ - public java.lang.String getType() - { - return this._type; - } - - /** - * Method hasBegin. - * - * @return true if at least one Begin has been added - */ - public boolean hasBegin() - { - return this._has_begin; - } - - /** - * Method hasEnd. - * - * @return true if at least one End has been added - */ - public boolean hasEnd() - { - return this._has_end; - } - - /** - * Method hasScore. - * - * @return true if at least one Score has been added - */ - public boolean hasScore() - { - return this._has_score; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllOtherData() - { - this._otherDataList.clear(); - } - - /** - * Method removeOtherData. - * - * @param vOtherData - * @return true if the object was removed from the collection. - */ - public boolean removeOtherData( - final jalview.schemabinding.version2.OtherData vOtherData) - { - boolean removed = _otherDataList.remove(vOtherData); - return removed; - } - - /** - * Method removeOtherDataAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.OtherData removeOtherDataAt( - final int index) - { - java.lang.Object obj = this._otherDataList.remove(index); - return (jalview.schemabinding.version2.OtherData) obj; - } - - /** - * Sets the value of field 'begin'. - * - * @param begin - * the value of field 'begin'. - */ - public void setBegin(final int begin) - { - this._begin = begin; - this._has_begin = true; - } - - /** - * Sets the value of field 'description'. - * - * @param description - * the value of field 'description'. - */ - public void setDescription(final java.lang.String description) - { - this._description = description; - } - - /** - * Sets the value of field 'end'. - * - * @param end - * the value of field 'end'. - */ - public void setEnd(final int end) - { - this._end = end; - this._has_end = true; - } - - /** - * Sets the value of field 'featureGroup'. - * - * @param featureGroup - * the value of field 'featureGroup'. - */ - public void setFeatureGroup(final java.lang.String featureGroup) - { - this._featureGroup = featureGroup; - } - - /** - * - * - * @param index - * @param vOtherData - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setOtherData(final int index, - final jalview.schemabinding.version2.OtherData vOtherData) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._otherDataList.size()) - { - throw new IndexOutOfBoundsException("setOtherData: Index value '" - + index + "' not in range [0.." - + (this._otherDataList.size() - 1) + "]"); - } - - this._otherDataList.set(index, vOtherData); - } - - /** - * - * - * @param vOtherDataArray - */ - public void setOtherData( - final jalview.schemabinding.version2.OtherData[] vOtherDataArray) - { - // -- copy array - _otherDataList.clear(); - - for (int i = 0; i < vOtherDataArray.length; i++) - { - this._otherDataList.add(vOtherDataArray[i]); - } - } - - /** - * Sets the value of field 'score'. - * - * @param score - * the value of field 'score'. - */ - public void setScore(final float score) - { - this._score = score; - this._has_score = true; - } - - /** - * Sets the value of field 'status'. - * - * @param status - * the value of field 'status'. - */ - public void setStatus(final java.lang.String status) - { - this._status = status; - } - - /** - * Sets the value of field 'type'. - * - * @param type - * the value of field 'type'. - */ - public void setType(final java.lang.String type) - { - this._type = type; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.Featur - */ - public static jalview.schemabinding.version2.Feature unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.Feature) Unmarshaller.unmarshal( - jalview.schemabinding.version2.Feature.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/FeatureMatcher.java b/src/jalview/schemabinding/version2/FeatureMatcher.java deleted file mode 100644 index 4d29cab..0000000 --- a/src/jalview/schemabinding/version2/FeatureMatcher.java +++ /dev/null @@ -1,383 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class FeatureMatcher. - * - * @version $Revision$ $Date$ - */ -public class FeatureMatcher implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _by. - */ - private jalview.schemabinding.version2.types.FeatureMatcherByType _by; - - /** - * name of feature attribute to filter on, or attribute and sub-attribute - */ - private java.util.Vector _attributeNameList; - - /** - * Field _condition. - */ - private java.lang.String _condition; - - /** - * Field _value. - */ - private java.lang.String _value; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public FeatureMatcher() - { - super(); - this._attributeNameList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vAttributeName - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAttributeName(final java.lang.String vAttributeName) - throws java.lang.IndexOutOfBoundsException - { - // check for the maximum size - if (this._attributeNameList.size() >= 2) - { - throw new IndexOutOfBoundsException( - "addAttributeName has a maximum of 2"); - } - - this._attributeNameList.addElement(vAttributeName); - } - - /** - * - * - * @param index - * @param vAttributeName - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAttributeName(final int index, - final java.lang.String vAttributeName) - throws java.lang.IndexOutOfBoundsException - { - // check for the maximum size - if (this._attributeNameList.size() >= 2) - { - throw new IndexOutOfBoundsException( - "addAttributeName has a maximum of 2"); - } - - this._attributeNameList.add(index, vAttributeName); - } - - /** - * Method enumerateAttributeName. - * - * @return an Enumeration over all java.lang.String elements - */ - public java.util.Enumeration enumerateAttributeName() - { - return this._attributeNameList.elements(); - } - - /** - * Method getAttributeName. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the java.lang.String at the given index - */ - public java.lang.String getAttributeName(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._attributeNameList.size()) - { - throw new IndexOutOfBoundsException("getAttributeName: Index value '" - + index + "' not in range [0.." - + (this._attributeNameList.size() - 1) + "]"); - } - - return (java.lang.String) _attributeNameList.get(index); - } - - /** - * Method getAttributeName.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.String[] getAttributeName() - { - java.lang.String[] array = new java.lang.String[0]; - return (java.lang.String[]) this._attributeNameList.toArray(array); - } - - /** - * Method getAttributeNameCount. - * - * @return the size of this collection - */ - public int getAttributeNameCount() - { - return this._attributeNameList.size(); - } - - /** - * Returns the value of field 'by'. - * - * @return the value of field 'By'. - */ - public jalview.schemabinding.version2.types.FeatureMatcherByType getBy() - { - return this._by; - } - - /** - * Returns the value of field 'condition'. - * - * @return the value of field 'Condition'. - */ - public java.lang.String getCondition() - { - return this._condition; - } - - /** - * Returns the value of field 'value'. - * - * @return the value of field 'Value'. - */ - public java.lang.String getValue() - { - return this._value; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllAttributeName() - { - this._attributeNameList.clear(); - } - - /** - * Method removeAttributeName. - * - * @param vAttributeName - * @return true if the object was removed from the collection. - */ - public boolean removeAttributeName(final java.lang.String vAttributeName) - { - boolean removed = _attributeNameList.remove(vAttributeName); - return removed; - } - - /** - * Method removeAttributeNameAt. - * - * @param index - * @return the element removed from the collection - */ - public java.lang.String removeAttributeNameAt(final int index) - { - java.lang.Object obj = this._attributeNameList.remove(index); - return (java.lang.String) obj; - } - - /** - * - * - * @param index - * @param vAttributeName - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setAttributeName(final int index, - final java.lang.String vAttributeName) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._attributeNameList.size()) - { - throw new IndexOutOfBoundsException("setAttributeName: Index value '" - + index + "' not in range [0.." - + (this._attributeNameList.size() - 1) + "]"); - } - - this._attributeNameList.set(index, vAttributeName); - } - - /** - * - * - * @param vAttributeNameArray - */ - public void setAttributeName(final java.lang.String[] vAttributeNameArray) - { - // -- copy array - _attributeNameList.clear(); - - for (int i = 0; i < vAttributeNameArray.length; i++) - { - this._attributeNameList.add(vAttributeNameArray[i]); - } - } - - /** - * Sets the value of field 'by'. - * - * @param by - * the value of field 'by'. - */ - public void setBy( - final jalview.schemabinding.version2.types.FeatureMatcherByType by) - { - this._by = by; - } - - /** - * Sets the value of field 'condition'. - * - * @param condition - * the value of field 'condition'. - */ - public void setCondition(final java.lang.String condition) - { - this._condition = condition; - } - - /** - * Sets the value of field 'value'. - * - * @param value - * the value of field 'value'. - */ - public void setValue(final java.lang.String value) - { - this._value = value; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.FeatureMatcher - */ - public static jalview.schemabinding.version2.FeatureMatcher unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.FeatureMatcher) Unmarshaller - .unmarshal(jalview.schemabinding.version2.FeatureMatcher.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/FeatureMatcherSet.java b/src/jalview/schemabinding/version2/FeatureMatcherSet.java deleted file mode 100644 index 2d79a98..0000000 --- a/src/jalview/schemabinding/version2/FeatureMatcherSet.java +++ /dev/null @@ -1,200 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * A feature match condition, which may be simple or compound - * - * @version $Revision$ $Date$ - */ -public class FeatureMatcherSet implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Internal choice value storage - */ - private java.lang.Object _choiceValue; - - /** - * Field _matchCondition. - */ - private MatchCondition _matchCondition; - - /** - * Field _compoundMatcher. - */ - private CompoundMatcher _compoundMatcher; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public FeatureMatcherSet() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'choiceValue'. The field 'choiceValue' has the - * following description: Internal choice value storage - * - * @return the value of field 'ChoiceValue'. - */ - public java.lang.Object getChoiceValue() - { - return this._choiceValue; - } - - /** - * Returns the value of field 'compoundMatcher'. - * - * @return the value of field 'CompoundMatcher'. - */ - public CompoundMatcher getCompoundMatcher() - { - return this._compoundMatcher; - } - - /** - * Returns the value of field 'matchCondition'. - * - * @return the value of field 'MatchCondition'. - */ - public MatchCondition getMatchCondition() - { - return this._matchCondition; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'compoundMatcher'. - * - * @param compoundMatcher - * the value of field 'compoundMatcher'. - */ - public void setCompoundMatcher(final CompoundMatcher compoundMatcher) - { - this._compoundMatcher = compoundMatcher; - this._choiceValue = compoundMatcher; - } - - /** - * Sets the value of field 'matchCondition'. - * - * @param matchCondition - * the value of field 'matchCondition'. - */ - public void setMatchCondition(final MatchCondition matchCondition) - { - this._matchCondition = matchCondition; - this._choiceValue = matchCondition; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.FeatureMatcherSet - */ - public static jalview.schemabinding.version2.FeatureMatcherSet unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.FeatureMatcherSet) Unmarshaller - .unmarshal( - jalview.schemabinding.version2.FeatureMatcherSet.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/FeatureSettings.java b/src/jalview/schemabinding/version2/FeatureSettings.java deleted file mode 100644 index fa75e76..0000000 --- a/src/jalview/schemabinding/version2/FeatureSettings.java +++ /dev/null @@ -1,462 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class FeatureSettings. - * - * @version $Revision$ $Date$ - */ -public class FeatureSettings implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _settingList. - */ - private java.util.Vector _settingList; - - /** - * Field _groupList. - */ - private java.util.Vector _groupList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public FeatureSettings() - { - super(); - this._settingList = new java.util.Vector(); - this._groupList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vGroup - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addGroup(final jalview.schemabinding.version2.Group vGroup) - throws java.lang.IndexOutOfBoundsException - { - this._groupList.addElement(vGroup); - } - - /** - * - * - * @param index - * @param vGroup - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addGroup(final int index, - final jalview.schemabinding.version2.Group vGroup) - throws java.lang.IndexOutOfBoundsException - { - this._groupList.add(index, vGroup); - } - - /** - * - * - * @param vSetting - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSetting( - final jalview.schemabinding.version2.Setting vSetting) - throws java.lang.IndexOutOfBoundsException - { - this._settingList.addElement(vSetting); - } - - /** - * - * - * @param index - * @param vSetting - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSetting(final int index, - final jalview.schemabinding.version2.Setting vSetting) - throws java.lang.IndexOutOfBoundsException - { - this._settingList.add(index, vSetting); - } - - /** - * Method enumerateGroup. - * - * @return an Enumeration over all jalview.schemabinding.version2.Group - * elements - */ - public java.util.Enumeration enumerateGroup() - { - return this._groupList.elements(); - } - - /** - * Method enumerateSetting. - * - * @return an Enumeration over all jalview.schemabinding.version2.Setting - * elements - */ - public java.util.Enumeration enumerateSetting() - { - return this._settingList.elements(); - } - - /** - * Method getGroup. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.Group at the given - * index - */ - public jalview.schemabinding.version2.Group getGroup(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._groupList.size()) - { - throw new IndexOutOfBoundsException("getGroup: Index value '" + index - + "' not in range [0.." + (this._groupList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.Group) _groupList.get(index); - } - - /** - * Method getGroup.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 jalview.schemabinding.version2.Group[] getGroup() - { - jalview.schemabinding.version2.Group[] array = new jalview.schemabinding.version2.Group[0]; - return (jalview.schemabinding.version2.Group[]) this._groupList - .toArray(array); - } - - /** - * Method getGroupCount. - * - * @return the size of this collection - */ - public int getGroupCount() - { - return this._groupList.size(); - } - - /** - * Method getSetting. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.Setting at the - * given index - */ - public jalview.schemabinding.version2.Setting getSetting(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._settingList.size()) - { - throw new IndexOutOfBoundsException("getSetting: Index value '" - + index + "' not in range [0.." - + (this._settingList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.Setting) _settingList.get(index); - } - - /** - * Method getSetting.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 jalview.schemabinding.version2.Setting[] getSetting() - { - jalview.schemabinding.version2.Setting[] array = new jalview.schemabinding.version2.Setting[0]; - return (jalview.schemabinding.version2.Setting[]) this._settingList - .toArray(array); - } - - /** - * Method getSettingCount. - * - * @return the size of this collection - */ - public int getSettingCount() - { - return this._settingList.size(); - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllGroup() - { - this._groupList.clear(); - } - - /** - */ - public void removeAllSetting() - { - this._settingList.clear(); - } - - /** - * Method removeGroup. - * - * @param vGroup - * @return true if the object was removed from the collection. - */ - public boolean removeGroup( - final jalview.schemabinding.version2.Group vGroup) - { - boolean removed = _groupList.remove(vGroup); - return removed; - } - - /** - * Method removeGroupAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.Group removeGroupAt(final int index) - { - java.lang.Object obj = this._groupList.remove(index); - return (jalview.schemabinding.version2.Group) obj; - } - - /** - * Method removeSetting. - * - * @param vSetting - * @return true if the object was removed from the collection. - */ - public boolean removeSetting( - final jalview.schemabinding.version2.Setting vSetting) - { - boolean removed = _settingList.remove(vSetting); - return removed; - } - - /** - * Method removeSettingAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.Setting removeSettingAt( - final int index) - { - java.lang.Object obj = this._settingList.remove(index); - return (jalview.schemabinding.version2.Setting) obj; - } - - /** - * - * - * @param index - * @param vGroup - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setGroup(final int index, - final jalview.schemabinding.version2.Group vGroup) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._groupList.size()) - { - throw new IndexOutOfBoundsException("setGroup: Index value '" + index - + "' not in range [0.." + (this._groupList.size() - 1) + "]"); - } - - this._groupList.set(index, vGroup); - } - - /** - * - * - * @param vGroupArray - */ - public void setGroup( - final jalview.schemabinding.version2.Group[] vGroupArray) - { - // -- copy array - _groupList.clear(); - - for (int i = 0; i < vGroupArray.length; i++) - { - this._groupList.add(vGroupArray[i]); - } - } - - /** - * - * - * @param index - * @param vSetting - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setSetting(final int index, - final jalview.schemabinding.version2.Setting vSetting) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._settingList.size()) - { - throw new IndexOutOfBoundsException("setSetting: Index value '" - + index + "' not in range [0.." - + (this._settingList.size() - 1) + "]"); - } - - this._settingList.set(index, vSetting); - } - - /** - * - * - * @param vSettingArray - */ - public void setSetting( - final jalview.schemabinding.version2.Setting[] vSettingArray) - { - // -- copy array - _settingList.clear(); - - for (int i = 0; i < vSettingArray.length; i++) - { - this._settingList.add(vSettingArray[i]); - } - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.FeatureSettings - */ - public static jalview.schemabinding.version2.FeatureSettings unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.FeatureSettings) Unmarshaller - .unmarshal( - jalview.schemabinding.version2.FeatureSettings.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/Features.java b/src/jalview/schemabinding/version2/Features.java deleted file mode 100644 index 5d17512..0000000 --- a/src/jalview/schemabinding/version2/Features.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Features. - * - * @version $Revision$ $Date$ - */ -public class Features extends Feature implements java.io.Serializable -{ - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Features() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.Featur - */ - public static jalview.schemabinding.version2.Feature unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.Feature) Unmarshaller.unmarshal( - jalview.schemabinding.version2.Features.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/Filter.java b/src/jalview/schemabinding/version2/Filter.java deleted file mode 100644 index 45323a7..0000000 --- a/src/jalview/schemabinding/version2/Filter.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Filter. - * - * @version $Revision$ $Date$ - */ -public class Filter implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _featureType. - */ - private java.lang.String _featureType; - - /** - * Field _matcherSet. - */ - private jalview.schemabinding.version2.MatcherSet _matcherSet; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Filter() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'featureType'. - * - * @return the value of field 'FeatureType'. - */ - public java.lang.String getFeatureType() - { - return this._featureType; - } - - /** - * Returns the value of field 'matcherSet'. - * - * @return the value of field 'MatcherSet'. - */ - public jalview.schemabinding.version2.MatcherSet getMatcherSet() - { - return this._matcherSet; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'featureType'. - * - * @param featureType - * the value of field 'featureType'. - */ - public void setFeatureType(final java.lang.String featureType) - { - this._featureType = featureType; - } - - /** - * Sets the value of field 'matcherSet'. - * - * @param matcherSet - * the value of field 'matcherSet'. - */ - public void setMatcherSet( - final jalview.schemabinding.version2.MatcherSet matcherSet) - { - this._matcherSet = matcherSet; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.Filter - */ - public static jalview.schemabinding.version2.Filter unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.Filter) Unmarshaller - .unmarshal(jalview.schemabinding.version2.Filter.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/Group.java b/src/jalview/schemabinding/version2/Group.java deleted file mode 100644 index ec1af95..0000000 --- a/src/jalview/schemabinding/version2/Group.java +++ /dev/null @@ -1,213 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Group. - * - * @version $Revision$ $Date$ - */ -public class Group implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _name. - */ - private java.lang.String _name; - - /** - * Field _display. - */ - private boolean _display; - - /** - * keeps track of state for field: _display - */ - private boolean _has_display; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Group() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - */ - public void deleteDisplay() - { - this._has_display = false; - } - - /** - * Returns the value of field 'display'. - * - * @return the value of field 'Display'. - */ - public boolean getDisplay() - { - return this._display; - } - - /** - * Returns the value of field 'name'. - * - * @return the value of field 'Name'. - */ - public java.lang.String getName() - { - return this._name; - } - - /** - * Method hasDisplay. - * - * @return true if at least one Display has been added - */ - public boolean hasDisplay() - { - return this._has_display; - } - - /** - * Returns the value of field 'display'. - * - * @return the value of field 'Display'. - */ - public boolean isDisplay() - { - return this._display; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'display'. - * - * @param display - * the value of field 'display'. - */ - public void setDisplay(final boolean display) - { - this._display = display; - this._has_display = true; - } - - /** - * Sets the value of field 'name'. - * - * @param name - * the value of field 'name'. - */ - public void setName(final java.lang.String name) - { - this._name = name; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.Group - */ - public static jalview.schemabinding.version2.Group unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.Group) Unmarshaller.unmarshal( - jalview.schemabinding.version2.Group.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/HiddenColumns.java b/src/jalview/schemabinding/version2/HiddenColumns.java deleted file mode 100644 index beac4e0..0000000 --- a/src/jalview/schemabinding/version2/HiddenColumns.java +++ /dev/null @@ -1,227 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class HiddenColumns. - * - * @version $Revision$ $Date$ - */ -public class HiddenColumns implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _start. - */ - private int _start; - - /** - * keeps track of state for field: _start - */ - private boolean _has_start; - - /** - * Field _end. - */ - private int _end; - - /** - * keeps track of state for field: _end - */ - private boolean _has_end; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public HiddenColumns() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - */ - public void deleteEnd() - { - this._has_end = false; - } - - /** - */ - public void deleteStart() - { - this._has_start = false; - } - - /** - * Returns the value of field 'end'. - * - * @return the value of field 'End'. - */ - public int getEnd() - { - return this._end; - } - - /** - * Returns the value of field 'start'. - * - * @return the value of field 'Start'. - */ - public int getStart() - { - return this._start; - } - - /** - * Method hasEnd. - * - * @return true if at least one End has been added - */ - public boolean hasEnd() - { - return this._has_end; - } - - /** - * Method hasStart. - * - * @return true if at least one Start has been added - */ - public boolean hasStart() - { - return this._has_start; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'end'. - * - * @param end - * the value of field 'end'. - */ - public void setEnd(final int end) - { - this._end = end; - this._has_end = true; - } - - /** - * Sets the value of field 'start'. - * - * @param start - * the value of field 'start'. - */ - public void setStart(final int start) - { - this._start = start; - this._has_start = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.HiddenColumns - */ - public static jalview.schemabinding.version2.HiddenColumns unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.HiddenColumns) Unmarshaller - .unmarshal(jalview.schemabinding.version2.HiddenColumns.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/JGroup.java b/src/jalview/schemabinding/version2/JGroup.java deleted file mode 100644 index 962569f..0000000 --- a/src/jalview/schemabinding/version2/JGroup.java +++ /dev/null @@ -1,1260 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class JGroup. - * - * @version $Revision$ $Date$ - */ -public class JGroup implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _start. - */ - private int _start; - - /** - * keeps track of state for field: _start - */ - private boolean _has_start; - - /** - * Field _end. - */ - private int _end; - - /** - * keeps track of state for field: _end - */ - private boolean _has_end; - - /** - * Field _name. - */ - private java.lang.String _name; - - /** - * Field _colour. - */ - private java.lang.String _colour; - - /** - * Field _consThreshold. - */ - private int _consThreshold; - - /** - * keeps track of state for field: _consThreshold - */ - private boolean _has_consThreshold; - - /** - * Field _pidThreshold. - */ - private int _pidThreshold; - - /** - * keeps track of state for field: _pidThreshold - */ - private boolean _has_pidThreshold; - - /** - * Field _outlineColour. - */ - private int _outlineColour; - - /** - * keeps track of state for field: _outlineColour - */ - private boolean _has_outlineColour; - - /** - * Field _displayBoxes. - */ - private boolean _displayBoxes; - - /** - * keeps track of state for field: _displayBoxes - */ - private boolean _has_displayBoxes; - - /** - * Field _displayText. - */ - private boolean _displayText; - - /** - * keeps track of state for field: _displayText - */ - private boolean _has_displayText; - - /** - * Field _colourText. - */ - private boolean _colourText; - - /** - * keeps track of state for field: _colourText - */ - private boolean _has_colourText; - - /** - * Field _textCol1. - */ - private int _textCol1; - - /** - * keeps track of state for field: _textCol1 - */ - private boolean _has_textCol1; - - /** - * Field _textCol2. - */ - private int _textCol2; - - /** - * keeps track of state for field: _textCol2 - */ - private boolean _has_textCol2; - - /** - * Field _textColThreshold. - */ - private int _textColThreshold; - - /** - * keeps track of state for field: _textColThreshold - */ - private boolean _has_textColThreshold; - - /** - * Field _showUnconserved. - */ - private boolean _showUnconserved; - - /** - * keeps track of state for field: _showUnconserved - */ - private boolean _has_showUnconserved; - - /** - * Field _ignoreGapsinConsensus. - */ - private boolean _ignoreGapsinConsensus = true; - - /** - * keeps track of state for field: _ignoreGapsinConsensus - */ - private boolean _has_ignoreGapsinConsensus; - - /** - * Field _showConsensusHistogram. - */ - private boolean _showConsensusHistogram = true; - - /** - * keeps track of state for field: _showConsensusHistogram - */ - private boolean _has_showConsensusHistogram; - - /** - * Field _showSequenceLogo. - */ - private boolean _showSequenceLogo = false; - - /** - * keeps track of state for field: _showSequenceLogo - */ - private boolean _has_showSequenceLogo; - - /** - * Field _normaliseSequenceLogo. - */ - private boolean _normaliseSequenceLogo = false; - - /** - * keeps track of state for field: _normaliseSequenceLogo - */ - private boolean _has_normaliseSequenceLogo; - - /** - * Optional sequence group ID (only needs to be unique for this alignment) - * - */ - private java.lang.String _id; - - /** - * Field _seqList. - */ - private java.util.Vector _seqList; - - /** - * Field _annotationColours. - */ - private jalview.schemabinding.version2.AnnotationColours _annotationColours; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public JGroup() - { - super(); - this._seqList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vSeq - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSeq(final java.lang.String vSeq) - throws java.lang.IndexOutOfBoundsException - { - this._seqList.addElement(vSeq); - } - - /** - * - * - * @param index - * @param vSeq - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSeq(final int index, final java.lang.String vSeq) - throws java.lang.IndexOutOfBoundsException - { - this._seqList.add(index, vSeq); - } - - /** - */ - public void deleteColourText() - { - this._has_colourText = false; - } - - /** - */ - public void deleteConsThreshold() - { - this._has_consThreshold = false; - } - - /** - */ - public void deleteDisplayBoxes() - { - this._has_displayBoxes = false; - } - - /** - */ - public void deleteDisplayText() - { - this._has_displayText = false; - } - - /** - */ - public void deleteEnd() - { - this._has_end = false; - } - - /** - */ - public void deleteIgnoreGapsinConsensus() - { - this._has_ignoreGapsinConsensus = false; - } - - /** - */ - public void deleteNormaliseSequenceLogo() - { - this._has_normaliseSequenceLogo = false; - } - - /** - */ - public void deleteOutlineColour() - { - this._has_outlineColour = false; - } - - /** - */ - public void deletePidThreshold() - { - this._has_pidThreshold = false; - } - - /** - */ - public void deleteShowConsensusHistogram() - { - this._has_showConsensusHistogram = false; - } - - /** - */ - public void deleteShowSequenceLogo() - { - this._has_showSequenceLogo = false; - } - - /** - */ - public void deleteShowUnconserved() - { - this._has_showUnconserved = false; - } - - /** - */ - public void deleteStart() - { - this._has_start = false; - } - - /** - */ - public void deleteTextCol1() - { - this._has_textCol1 = false; - } - - /** - */ - public void deleteTextCol2() - { - this._has_textCol2 = false; - } - - /** - */ - public void deleteTextColThreshold() - { - this._has_textColThreshold = false; - } - - /** - * Method enumerateSeq. - * - * @return an Enumeration over all java.lang.String elements - */ - public java.util.Enumeration enumerateSeq() - { - return this._seqList.elements(); - } - - /** - * Returns the value of field 'annotationColours'. - * - * @return the value of field 'AnnotationColours'. - */ - public jalview.schemabinding.version2.AnnotationColours getAnnotationColours() - { - return this._annotationColours; - } - - /** - * Returns the value of field 'colour'. - * - * @return the value of field 'Colour'. - */ - public java.lang.String getColour() - { - return this._colour; - } - - /** - * Returns the value of field 'colourText'. - * - * @return the value of field 'ColourText'. - */ - public boolean getColourText() - { - return this._colourText; - } - - /** - * Returns the value of field 'consThreshold'. - * - * @return the value of field 'ConsThreshold'. - */ - public int getConsThreshold() - { - return this._consThreshold; - } - - /** - * Returns the value of field 'displayBoxes'. - * - * @return the value of field 'DisplayBoxes'. - */ - public boolean getDisplayBoxes() - { - return this._displayBoxes; - } - - /** - * Returns the value of field 'displayText'. - * - * @return the value of field 'DisplayText'. - */ - public boolean getDisplayText() - { - return this._displayText; - } - - /** - * Returns the value of field 'end'. - * - * @return the value of field 'End'. - */ - public int getEnd() - { - return this._end; - } - - /** - * Returns the value of field 'id'. The field 'id' has the following - * description: Optional sequence group ID (only needs to be unique for this - * alignment) - * - * - * @return the value of field 'Id'. - */ - public java.lang.String getId() - { - return this._id; - } - - /** - * Returns the value of field 'ignoreGapsinConsensus'. - * - * @return the value of field 'IgnoreGapsinConsensus'. - */ - public boolean getIgnoreGapsinConsensus() - { - return this._ignoreGapsinConsensus; - } - - /** - * Returns the value of field 'name'. - * - * @return the value of field 'Name'. - */ - public java.lang.String getName() - { - return this._name; - } - - /** - * Returns the value of field 'normaliseSequenceLogo'. - * - * @return the value of field 'NormaliseSequenceLogo'. - */ - public boolean getNormaliseSequenceLogo() - { - return this._normaliseSequenceLogo; - } - - /** - * Returns the value of field 'outlineColour'. - * - * @return the value of field 'OutlineColour'. - */ - public int getOutlineColour() - { - return this._outlineColour; - } - - /** - * Returns the value of field 'pidThreshold'. - * - * @return the value of field 'PidThreshold'. - */ - public int getPidThreshold() - { - return this._pidThreshold; - } - - /** - * Method getSeq. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the java.lang.String at the given index - */ - public java.lang.String getSeq(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._seqList.size()) - { - throw new IndexOutOfBoundsException("getSeq: Index value '" + index - + "' not in range [0.." + (this._seqList.size() - 1) + "]"); - } - - return (java.lang.String) _seqList.get(index); - } - - /** - * Method getSeq.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.String[] getSeq() - { - java.lang.String[] array = new java.lang.String[0]; - return (java.lang.String[]) this._seqList.toArray(array); - } - - /** - * Method getSeqCount. - * - * @return the size of this collection - */ - public int getSeqCount() - { - return this._seqList.size(); - } - - /** - * Returns the value of field 'showConsensusHistogram'. - * - * @return the value of field 'ShowConsensusHistogram'. - */ - public boolean getShowConsensusHistogram() - { - return this._showConsensusHistogram; - } - - /** - * Returns the value of field 'showSequenceLogo'. - * - * @return the value of field 'ShowSequenceLogo'. - */ - public boolean getShowSequenceLogo() - { - return this._showSequenceLogo; - } - - /** - * Returns the value of field 'showUnconserved'. - * - * @return the value of field 'ShowUnconserved'. - */ - public boolean getShowUnconserved() - { - return this._showUnconserved; - } - - /** - * Returns the value of field 'start'. - * - * @return the value of field 'Start'. - */ - public int getStart() - { - return this._start; - } - - /** - * Returns the value of field 'textCol1'. - * - * @return the value of field 'TextCol1'. - */ - public int getTextCol1() - { - return this._textCol1; - } - - /** - * Returns the value of field 'textCol2'. - * - * @return the value of field 'TextCol2'. - */ - public int getTextCol2() - { - return this._textCol2; - } - - /** - * Returns the value of field 'textColThreshold'. - * - * @return the value of field 'TextColThreshold'. - */ - public int getTextColThreshold() - { - return this._textColThreshold; - } - - /** - * Method hasColourText. - * - * @return true if at least one ColourText has been added - */ - public boolean hasColourText() - { - return this._has_colourText; - } - - /** - * Method hasConsThreshold. - * - * @return true if at least one ConsThreshold has been added - */ - public boolean hasConsThreshold() - { - return this._has_consThreshold; - } - - /** - * Method hasDisplayBoxes. - * - * @return true if at least one DisplayBoxes has been added - */ - public boolean hasDisplayBoxes() - { - return this._has_displayBoxes; - } - - /** - * Method hasDisplayText. - * - * @return true if at least one DisplayText has been added - */ - public boolean hasDisplayText() - { - return this._has_displayText; - } - - /** - * Method hasEnd. - * - * @return true if at least one End has been added - */ - public boolean hasEnd() - { - return this._has_end; - } - - /** - * Method hasIgnoreGapsinConsensus. - * - * @return true if at least one IgnoreGapsinConsensus has been added - */ - public boolean hasIgnoreGapsinConsensus() - { - return this._has_ignoreGapsinConsensus; - } - - /** - * Method hasNormaliseSequenceLogo. - * - * @return true if at least one NormaliseSequenceLogo has been added - */ - public boolean hasNormaliseSequenceLogo() - { - return this._has_normaliseSequenceLogo; - } - - /** - * Method hasOutlineColour. - * - * @return true if at least one OutlineColour has been added - */ - public boolean hasOutlineColour() - { - return this._has_outlineColour; - } - - /** - * Method hasPidThreshold. - * - * @return true if at least one PidThreshold has been added - */ - public boolean hasPidThreshold() - { - return this._has_pidThreshold; - } - - /** - * Method hasShowConsensusHistogram. - * - * @return true if at least one ShowConsensusHistogram has been added - */ - public boolean hasShowConsensusHistogram() - { - return this._has_showConsensusHistogram; - } - - /** - * Method hasShowSequenceLogo. - * - * @return true if at least one ShowSequenceLogo has been added - */ - public boolean hasShowSequenceLogo() - { - return this._has_showSequenceLogo; - } - - /** - * Method hasShowUnconserved. - * - * @return true if at least one ShowUnconserved has been added - */ - public boolean hasShowUnconserved() - { - return this._has_showUnconserved; - } - - /** - * Method hasStart. - * - * @return true if at least one Start has been added - */ - public boolean hasStart() - { - return this._has_start; - } - - /** - * Method hasTextCol1. - * - * @return true if at least one TextCol1 has been added - */ - public boolean hasTextCol1() - { - return this._has_textCol1; - } - - /** - * Method hasTextCol2. - * - * @return true if at least one TextCol2 has been added - */ - public boolean hasTextCol2() - { - return this._has_textCol2; - } - - /** - * Method hasTextColThreshold. - * - * @return true if at least one TextColThreshold has been added - */ - public boolean hasTextColThreshold() - { - return this._has_textColThreshold; - } - - /** - * Returns the value of field 'colourText'. - * - * @return the value of field 'ColourText'. - */ - public boolean isColourText() - { - return this._colourText; - } - - /** - * Returns the value of field 'displayBoxes'. - * - * @return the value of field 'DisplayBoxes'. - */ - public boolean isDisplayBoxes() - { - return this._displayBoxes; - } - - /** - * Returns the value of field 'displayText'. - * - * @return the value of field 'DisplayText'. - */ - public boolean isDisplayText() - { - return this._displayText; - } - - /** - * Returns the value of field 'ignoreGapsinConsensus'. - * - * @return the value of field 'IgnoreGapsinConsensus'. - */ - public boolean isIgnoreGapsinConsensus() - { - return this._ignoreGapsinConsensus; - } - - /** - * Returns the value of field 'normaliseSequenceLogo'. - * - * @return the value of field 'NormaliseSequenceLogo'. - */ - public boolean isNormaliseSequenceLogo() - { - return this._normaliseSequenceLogo; - } - - /** - * Returns the value of field 'showConsensusHistogram'. - * - * @return the value of field 'ShowConsensusHistogram'. - */ - public boolean isShowConsensusHistogram() - { - return this._showConsensusHistogram; - } - - /** - * Returns the value of field 'showSequenceLogo'. - * - * @return the value of field 'ShowSequenceLogo'. - */ - public boolean isShowSequenceLogo() - { - return this._showSequenceLogo; - } - - /** - * Returns the value of field 'showUnconserved'. - * - * @return the value of field 'ShowUnconserved'. - */ - public boolean isShowUnconserved() - { - return this._showUnconserved; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllSeq() - { - this._seqList.clear(); - } - - /** - * Method removeSeq. - * - * @param vSeq - * @return true if the object was removed from the collection. - */ - public boolean removeSeq(final java.lang.String vSeq) - { - boolean removed = _seqList.remove(vSeq); - return removed; - } - - /** - * Method removeSeqAt. - * - * @param index - * @return the element removed from the collection - */ - public java.lang.String removeSeqAt(final int index) - { - java.lang.Object obj = this._seqList.remove(index); - return (java.lang.String) obj; - } - - /** - * Sets the value of field 'annotationColours'. - * - * @param annotationColours - * the value of field 'annotationColours'. - */ - public void setAnnotationColours( - final jalview.schemabinding.version2.AnnotationColours annotationColours) - { - this._annotationColours = annotationColours; - } - - /** - * Sets the value of field 'colour'. - * - * @param colour - * the value of field 'colour'. - */ - public void setColour(final java.lang.String colour) - { - this._colour = colour; - } - - /** - * Sets the value of field 'colourText'. - * - * @param colourText - * the value of field 'colourText'. - */ - public void setColourText(final boolean colourText) - { - this._colourText = colourText; - this._has_colourText = true; - } - - /** - * Sets the value of field 'consThreshold'. - * - * @param consThreshold - * the value of field 'consThreshold'. - */ - public void setConsThreshold(final int consThreshold) - { - this._consThreshold = consThreshold; - this._has_consThreshold = true; - } - - /** - * Sets the value of field 'displayBoxes'. - * - * @param displayBoxes - * the value of field 'displayBoxes'. - */ - public void setDisplayBoxes(final boolean displayBoxes) - { - this._displayBoxes = displayBoxes; - this._has_displayBoxes = true; - } - - /** - * Sets the value of field 'displayText'. - * - * @param displayText - * the value of field 'displayText'. - */ - public void setDisplayText(final boolean displayText) - { - this._displayText = displayText; - this._has_displayText = true; - } - - /** - * Sets the value of field 'end'. - * - * @param end - * the value of field 'end'. - */ - public void setEnd(final int end) - { - this._end = end; - this._has_end = true; - } - - /** - * Sets the value of field 'id'. The field 'id' has the following description: - * Optional sequence group ID (only needs to be unique for this alignment) - * - * - * @param id - * the value of field 'id'. - */ - public void setId(final java.lang.String id) - { - this._id = id; - } - - /** - * Sets the value of field 'ignoreGapsinConsensus'. - * - * @param ignoreGapsinConsensus - * the value of field 'ignoreGapsinConsensus'. - */ - public void setIgnoreGapsinConsensus(final boolean ignoreGapsinConsensus) - { - this._ignoreGapsinConsensus = ignoreGapsinConsensus; - this._has_ignoreGapsinConsensus = true; - } - - /** - * Sets the value of field 'name'. - * - * @param name - * the value of field 'name'. - */ - public void setName(final java.lang.String name) - { - this._name = name; - } - - /** - * Sets the value of field 'normaliseSequenceLogo'. - * - * @param normaliseSequenceLogo - * the value of field 'normaliseSequenceLogo'. - */ - public void setNormaliseSequenceLogo(final boolean normaliseSequenceLogo) - { - this._normaliseSequenceLogo = normaliseSequenceLogo; - this._has_normaliseSequenceLogo = true; - } - - /** - * Sets the value of field 'outlineColour'. - * - * @param outlineColour - * the value of field 'outlineColour'. - */ - public void setOutlineColour(final int outlineColour) - { - this._outlineColour = outlineColour; - this._has_outlineColour = true; - } - - /** - * Sets the value of field 'pidThreshold'. - * - * @param pidThreshold - * the value of field 'pidThreshold'. - */ - public void setPidThreshold(final int pidThreshold) - { - this._pidThreshold = pidThreshold; - this._has_pidThreshold = true; - } - - /** - * - * - * @param index - * @param vSeq - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setSeq(final int index, final java.lang.String vSeq) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._seqList.size()) - { - throw new IndexOutOfBoundsException("setSeq: Index value '" + index - + "' not in range [0.." + (this._seqList.size() - 1) + "]"); - } - - this._seqList.set(index, vSeq); - } - - /** - * - * - * @param vSeqArray - */ - public void setSeq(final java.lang.String[] vSeqArray) - { - // -- copy array - _seqList.clear(); - - for (int i = 0; i < vSeqArray.length; i++) - { - this._seqList.add(vSeqArray[i]); - } - } - - /** - * Sets the value of field 'showConsensusHistogram'. - * - * @param showConsensusHistogram - * the value of field 'showConsensusHistogram'. - */ - public void setShowConsensusHistogram(final boolean showConsensusHistogram) - { - this._showConsensusHistogram = showConsensusHistogram; - this._has_showConsensusHistogram = true; - } - - /** - * Sets the value of field 'showSequenceLogo'. - * - * @param showSequenceLogo - * the value of field 'showSequenceLogo' - */ - public void setShowSequenceLogo(final boolean showSequenceLogo) - { - this._showSequenceLogo = showSequenceLogo; - this._has_showSequenceLogo = true; - } - - /** - * Sets the value of field 'showUnconserved'. - * - * @param showUnconserved - * the value of field 'showUnconserved'. - */ - public void setShowUnconserved(final boolean showUnconserved) - { - this._showUnconserved = showUnconserved; - this._has_showUnconserved = true; - } - - /** - * Sets the value of field 'start'. - * - * @param start - * the value of field 'start'. - */ - public void setStart(final int start) - { - this._start = start; - this._has_start = true; - } - - /** - * Sets the value of field 'textCol1'. - * - * @param textCol1 - * the value of field 'textCol1'. - */ - public void setTextCol1(final int textCol1) - { - this._textCol1 = textCol1; - this._has_textCol1 = true; - } - - /** - * Sets the value of field 'textCol2'. - * - * @param textCol2 - * the value of field 'textCol2'. - */ - public void setTextCol2(final int textCol2) - { - this._textCol2 = textCol2; - this._has_textCol2 = true; - } - - /** - * Sets the value of field 'textColThreshold'. - * - * @param textColThreshold - * the value of field 'textColThreshold' - */ - public void setTextColThreshold(final int textColThreshold) - { - this._textColThreshold = textColThreshold; - this._has_textColThreshold = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.JGroup - */ - public static jalview.schemabinding.version2.JGroup unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.JGroup) Unmarshaller.unmarshal( - jalview.schemabinding.version2.JGroup.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/JSeq.java b/src/jalview/schemabinding/version2/JSeq.java deleted file mode 100644 index 7c6308e..0000000 --- a/src/jalview/schemabinding/version2/JSeq.java +++ /dev/null @@ -1,1097 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class JSeq. - * - * @version $Revision$ $Date$ - */ -public class JSeq implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _colour. - */ - private int _colour; - - /** - * keeps track of state for field: _colour - */ - private boolean _has_colour; - - /** - * Field _start. - */ - private int _start; - - /** - * keeps track of state for field: _start - */ - private boolean _has_start; - - /** - * Field _end. - */ - private int _end; - - /** - * keeps track of state for field: _end - */ - private boolean _has_end; - - /** - * Field _id. - */ - private java.lang.String _id; - - /** - * Field _hidden. - */ - private boolean _hidden; - - /** - * keeps track of state for field: _hidden - */ - private boolean _has_hidden; - - /** - * Field _viewreference. - */ - private boolean _viewreference; - - /** - * keeps track of state for field: _viewreference - */ - private boolean _has_viewreference; - - /** - * Field _featuresList. - */ - private java.util.Vector _featuresList; - - /** - * Field _pdbidsList. - */ - private java.util.Vector _pdbidsList; - - /** - * Field _hiddenSequencesList. - */ - private java.util.Vector _hiddenSequencesList; - - /** - * Reference to a viewer showing RNA structure for this sequence. Schema - * supports one viewer showing multiple annotations for multiple sequences, - * though currently only one annotation for one sequence (gapped or trimmed) - * is used - * - */ - private java.util.Vector _rnaViewerList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public JSeq() - { - super(); - this._featuresList = new java.util.Vector(); - this._pdbidsList = new java.util.Vector(); - this._hiddenSequencesList = new java.util.Vector(); - this._rnaViewerList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vFeatures - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addFeatures( - final jalview.schemabinding.version2.Features vFeatures) - throws java.lang.IndexOutOfBoundsException - { - this._featuresList.addElement(vFeatures); - } - - /** - * - * - * @param index - * @param vFeatures - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addFeatures(final int index, - final jalview.schemabinding.version2.Features vFeatures) - throws java.lang.IndexOutOfBoundsException - { - this._featuresList.add(index, vFeatures); - } - - /** - * - * - * @param vHiddenSequences - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addHiddenSequences(final int vHiddenSequences) - throws java.lang.IndexOutOfBoundsException - { - this._hiddenSequencesList.addElement(new java.lang.Integer( - vHiddenSequences)); - } - - /** - * - * - * @param index - * @param vHiddenSequences - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addHiddenSequences(final int index, final int vHiddenSequences) - throws java.lang.IndexOutOfBoundsException - { - this._hiddenSequencesList.add(index, new java.lang.Integer( - vHiddenSequences)); - } - - /** - * - * - * @param vPdbids - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addPdbids(final jalview.schemabinding.version2.Pdbids vPdbids) - throws java.lang.IndexOutOfBoundsException - { - this._pdbidsList.addElement(vPdbids); - } - - /** - * - * - * @param index - * @param vPdbids - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addPdbids(final int index, - final jalview.schemabinding.version2.Pdbids vPdbids) - throws java.lang.IndexOutOfBoundsException - { - this._pdbidsList.add(index, vPdbids); - } - - /** - * - * - * @param vRnaViewer - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addRnaViewer( - final jalview.schemabinding.version2.RnaViewer vRnaViewer) - throws java.lang.IndexOutOfBoundsException - { - this._rnaViewerList.addElement(vRnaViewer); - } - - /** - * - * - * @param index - * @param vRnaViewer - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addRnaViewer(final int index, - final jalview.schemabinding.version2.RnaViewer vRnaViewer) - throws java.lang.IndexOutOfBoundsException - { - this._rnaViewerList.add(index, vRnaViewer); - } - - /** - */ - public void deleteColour() - { - this._has_colour = false; - } - - /** - */ - public void deleteEnd() - { - this._has_end = false; - } - - /** - */ - public void deleteHidden() - { - this._has_hidden = false; - } - - /** - */ - public void deleteStart() - { - this._has_start = false; - } - - /** - */ - public void deleteViewreference() - { - this._has_viewreference = false; - } - - /** - * Method enumerateFeatures. - * - * @return an Enumeration over all jalview.schemabinding.version2.Features - * elements - */ - public java.util.Enumeration enumerateFeatures() - { - return this._featuresList.elements(); - } - - /** - * Method enumerateHiddenSequences. - * - * @return an Enumeration over all int elements - */ - public java.util.Enumeration enumerateHiddenSequences() - { - return this._hiddenSequencesList.elements(); - } - - /** - * Method enumeratePdbids. - * - * @return an Enumeration over all jalview.schemabinding.version2.Pdbids - * elements - */ - public java.util.Enumeration enumeratePdbids() - { - return this._pdbidsList.elements(); - } - - /** - * Method enumerateRnaViewer. - * - * @return an Enumeration over all jalview.schemabinding.version2.RnaViewer - * elements - */ - public java.util.Enumeration enumerateRnaViewer() - { - return this._rnaViewerList.elements(); - } - - /** - * Returns the value of field 'colour'. - * - * @return the value of field 'Colour'. - */ - public int getColour() - { - return this._colour; - } - - /** - * Returns the value of field 'end'. - * - * @return the value of field 'End'. - */ - public int getEnd() - { - return this._end; - } - - /** - * Method getFeatures. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.Features at the - * given index - */ - public jalview.schemabinding.version2.Features getFeatures(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._featuresList.size()) - { - throw new IndexOutOfBoundsException("getFeatures: Index value '" - + index + "' not in range [0.." - + (this._featuresList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.Features) _featuresList - .get(index); - } - - /** - * Method getFeatures.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 jalview.schemabinding.version2.Features[] getFeatures() - { - jalview.schemabinding.version2.Features[] array = new jalview.schemabinding.version2.Features[0]; - return (jalview.schemabinding.version2.Features[]) this._featuresList - .toArray(array); - } - - /** - * Method getFeaturesCount. - * - * @return the size of this collection - */ - public int getFeaturesCount() - { - return this._featuresList.size(); - } - - /** - * Returns the value of field 'hidden'. - * - * @return the value of field 'Hidden'. - */ - public boolean getHidden() - { - return this._hidden; - } - - /** - * Method getHiddenSequences. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the int at the given index - */ - public int getHiddenSequences(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._hiddenSequencesList.size()) - { - throw new IndexOutOfBoundsException( - "getHiddenSequences: Index value '" + index - + "' not in range [0.." - + (this._hiddenSequencesList.size() - 1) + "]"); - } - - return ((java.lang.Integer) _hiddenSequencesList.get(index)).intValue(); - } - - /** - * Method getHiddenSequences.Returns the contents of the collection in an - * Array. - * - * @return this collection as an Array - */ - public int[] getHiddenSequences() - { - int size = this._hiddenSequencesList.size(); - int[] array = new int[size]; - java.util.Iterator iter = _hiddenSequencesList.iterator(); - for (int index = 0; index < size; index++) - { - array[index] = ((java.lang.Integer) iter.next()).intValue(); - } - return array; - } - - /** - * Method getHiddenSequencesCount. - * - * @return the size of this collection - */ - public int getHiddenSequencesCount() - { - return this._hiddenSequencesList.size(); - } - - /** - * Returns the value of field 'id'. - * - * @return the value of field 'Id'. - */ - public java.lang.String getId() - { - return this._id; - } - - /** - * Method getPdbids. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.Pdbids at the given - * index - */ - public jalview.schemabinding.version2.Pdbids getPdbids(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._pdbidsList.size()) - { - throw new IndexOutOfBoundsException("getPdbids: Index value '" - + index + "' not in range [0.." - + (this._pdbidsList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.Pdbids) _pdbidsList.get(index); - } - - /** - * Method getPdbids.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 jalview.schemabinding.version2.Pdbids[] getPdbids() - { - jalview.schemabinding.version2.Pdbids[] array = new jalview.schemabinding.version2.Pdbids[0]; - return (jalview.schemabinding.version2.Pdbids[]) this._pdbidsList - .toArray(array); - } - - /** - * Method getPdbidsCount. - * - * @return the size of this collection - */ - public int getPdbidsCount() - { - return this._pdbidsList.size(); - } - - /** - * Method getRnaViewer. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.RnaViewer at the - * given index - */ - public jalview.schemabinding.version2.RnaViewer getRnaViewer( - final int index) throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._rnaViewerList.size()) - { - throw new IndexOutOfBoundsException("getRnaViewer: Index value '" - + index + "' not in range [0.." - + (this._rnaViewerList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.RnaViewer) _rnaViewerList - .get(index); - } - - /** - * Method getRnaViewer.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 jalview.schemabinding.version2.RnaViewer[] getRnaViewer() - { - jalview.schemabinding.version2.RnaViewer[] array = new jalview.schemabinding.version2.RnaViewer[0]; - return (jalview.schemabinding.version2.RnaViewer[]) this._rnaViewerList - .toArray(array); - } - - /** - * Method getRnaViewerCount. - * - * @return the size of this collection - */ - public int getRnaViewerCount() - { - return this._rnaViewerList.size(); - } - - /** - * Returns the value of field 'start'. - * - * @return the value of field 'Start'. - */ - public int getStart() - { - return this._start; - } - - /** - * Returns the value of field 'viewreference'. - * - * @return the value of field 'Viewreference'. - */ - public boolean getViewreference() - { - return this._viewreference; - } - - /** - * Method hasColour. - * - * @return true if at least one Colour has been added - */ - public boolean hasColour() - { - return this._has_colour; - } - - /** - * Method hasEnd. - * - * @return true if at least one End has been added - */ - public boolean hasEnd() - { - return this._has_end; - } - - /** - * Method hasHidden. - * - * @return true if at least one Hidden has been added - */ - public boolean hasHidden() - { - return this._has_hidden; - } - - /** - * Method hasStart. - * - * @return true if at least one Start has been added - */ - public boolean hasStart() - { - return this._has_start; - } - - /** - * Method hasViewreference. - * - * @return true if at least one Viewreference has been added - */ - public boolean hasViewreference() - { - return this._has_viewreference; - } - - /** - * Returns the value of field 'hidden'. - * - * @return the value of field 'Hidden'. - */ - public boolean isHidden() - { - return this._hidden; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * Returns the value of field 'viewreference'. - * - * @return the value of field 'Viewreference'. - */ - public boolean isViewreference() - { - return this._viewreference; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllFeatures() - { - this._featuresList.clear(); - } - - /** - */ - public void removeAllHiddenSequences() - { - this._hiddenSequencesList.clear(); - } - - /** - */ - public void removeAllPdbids() - { - this._pdbidsList.clear(); - } - - /** - */ - public void removeAllRnaViewer() - { - this._rnaViewerList.clear(); - } - - /** - * Method removeFeatures. - * - * @param vFeatures - * @return true if the object was removed from the collection. - */ - public boolean removeFeatures( - final jalview.schemabinding.version2.Features vFeatures) - { - boolean removed = _featuresList.remove(vFeatures); - return removed; - } - - /** - * Method removeFeaturesAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.Features removeFeaturesAt( - final int index) - { - java.lang.Object obj = this._featuresList.remove(index); - return (jalview.schemabinding.version2.Features) obj; - } - - /** - * Method removeHiddenSequences. - * - * @param vHiddenSequences - * @return true if the object was removed from the collection. - */ - public boolean removeHiddenSequences(final int vHiddenSequences) - { - boolean removed = _hiddenSequencesList.remove(new java.lang.Integer( - vHiddenSequences)); - return removed; - } - - /** - * Method removeHiddenSequencesAt. - * - * @param index - * @return the element removed from the collection - */ - public int removeHiddenSequencesAt(final int index) - { - java.lang.Object obj = this._hiddenSequencesList.remove(index); - return ((java.lang.Integer) obj).intValue(); - } - - /** - * Method removePdbids. - * - * @param vPdbids - * @return true if the object was removed from the collection. - */ - public boolean removePdbids( - final jalview.schemabinding.version2.Pdbids vPdbids) - { - boolean removed = _pdbidsList.remove(vPdbids); - return removed; - } - - /** - * Method removePdbidsAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.Pdbids removePdbidsAt( - final int index) - { - java.lang.Object obj = this._pdbidsList.remove(index); - return (jalview.schemabinding.version2.Pdbids) obj; - } - - /** - * Method removeRnaViewer. - * - * @param vRnaViewer - * @return true if the object was removed from the collection. - */ - public boolean removeRnaViewer( - final jalview.schemabinding.version2.RnaViewer vRnaViewer) - { - boolean removed = _rnaViewerList.remove(vRnaViewer); - return removed; - } - - /** - * Method removeRnaViewerAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.RnaViewer removeRnaViewerAt( - final int index) - { - java.lang.Object obj = this._rnaViewerList.remove(index); - return (jalview.schemabinding.version2.RnaViewer) obj; - } - - /** - * Sets the value of field 'colour'. - * - * @param colour - * the value of field 'colour'. - */ - public void setColour(final int colour) - { - this._colour = colour; - this._has_colour = true; - } - - /** - * Sets the value of field 'end'. - * - * @param end - * the value of field 'end'. - */ - public void setEnd(final int end) - { - this._end = end; - this._has_end = true; - } - - /** - * - * - * @param index - * @param vFeatures - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setFeatures(final int index, - final jalview.schemabinding.version2.Features vFeatures) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._featuresList.size()) - { - throw new IndexOutOfBoundsException("setFeatures: Index value '" - + index + "' not in range [0.." - + (this._featuresList.size() - 1) + "]"); - } - - this._featuresList.set(index, vFeatures); - } - - /** - * - * - * @param vFeaturesArray - */ - public void setFeatures( - final jalview.schemabinding.version2.Features[] vFeaturesArray) - { - // -- copy array - _featuresList.clear(); - - for (int i = 0; i < vFeaturesArray.length; i++) - { - this._featuresList.add(vFeaturesArray[i]); - } - } - - /** - * Sets the value of field 'hidden'. - * - * @param hidden - * the value of field 'hidden'. - */ - public void setHidden(final boolean hidden) - { - this._hidden = hidden; - this._has_hidden = true; - } - - /** - * - * - * @param index - * @param vHiddenSequences - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setHiddenSequences(final int index, final int vHiddenSequences) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._hiddenSequencesList.size()) - { - throw new IndexOutOfBoundsException( - "setHiddenSequences: Index value '" + index - + "' not in range [0.." - + (this._hiddenSequencesList.size() - 1) + "]"); - } - - this._hiddenSequencesList.set(index, new java.lang.Integer( - vHiddenSequences)); - } - - /** - * - * - * @param vHiddenSequencesArray - */ - public void setHiddenSequences(final int[] vHiddenSequencesArray) - { - // -- copy array - _hiddenSequencesList.clear(); - - for (int i = 0; i < vHiddenSequencesArray.length; i++) - { - this._hiddenSequencesList.add(new java.lang.Integer( - vHiddenSequencesArray[i])); - } - } - - /** - * Sets the value of field 'id'. - * - * @param id - * the value of field 'id'. - */ - public void setId(final java.lang.String id) - { - this._id = id; - } - - /** - * - * - * @param index - * @param vPdbids - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setPdbids(final int index, - final jalview.schemabinding.version2.Pdbids vPdbids) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._pdbidsList.size()) - { - throw new IndexOutOfBoundsException("setPdbids: Index value '" - + index + "' not in range [0.." - + (this._pdbidsList.size() - 1) + "]"); - } - - this._pdbidsList.set(index, vPdbids); - } - - /** - * - * - * @param vPdbidsArray - */ - public void setPdbids( - final jalview.schemabinding.version2.Pdbids[] vPdbidsArray) - { - // -- copy array - _pdbidsList.clear(); - - for (int i = 0; i < vPdbidsArray.length; i++) - { - this._pdbidsList.add(vPdbidsArray[i]); - } - } - - /** - * - * - * @param index - * @param vRnaViewer - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setRnaViewer(final int index, - final jalview.schemabinding.version2.RnaViewer vRnaViewer) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._rnaViewerList.size()) - { - throw new IndexOutOfBoundsException("setRnaViewer: Index value '" - + index + "' not in range [0.." - + (this._rnaViewerList.size() - 1) + "]"); - } - - this._rnaViewerList.set(index, vRnaViewer); - } - - /** - * - * - * @param vRnaViewerArray - */ - public void setRnaViewer( - final jalview.schemabinding.version2.RnaViewer[] vRnaViewerArray) - { - // -- copy array - _rnaViewerList.clear(); - - for (int i = 0; i < vRnaViewerArray.length; i++) - { - this._rnaViewerList.add(vRnaViewerArray[i]); - } - } - - /** - * Sets the value of field 'start'. - * - * @param start - * the value of field 'start'. - */ - public void setStart(final int start) - { - this._start = start; - this._has_start = true; - } - - /** - * Sets the value of field 'viewreference'. - * - * @param viewreference - * the value of field 'viewreference'. - */ - public void setViewreference(final boolean viewreference) - { - this._viewreference = viewreference; - this._has_viewreference = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.JSeq - */ - public static jalview.schemabinding.version2.JSeq unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.JSeq) Unmarshaller.unmarshal( - jalview.schemabinding.version2.JSeq.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/JalviewModel.java b/src/jalview/schemabinding/version2/JalviewModel.java deleted file mode 100644 index c13ef64..0000000 --- a/src/jalview/schemabinding/version2/JalviewModel.java +++ /dev/null @@ -1,235 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class JalviewModel. - * - * @version $Revision$ $Date$ - */ -public class JalviewModel implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _creationDate. - */ - private java.util.Date _creationDate; - - /** - * Field _version. - */ - private java.lang.String _version; - - /** - * Field _vamsasModel. - */ - private jalview.schemabinding.version2.VamsasModel _vamsasModel; - - /** - * Field _jalviewModelSequence. - */ - private jalview.schemabinding.version2.JalviewModelSequence _jalviewModelSequence; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public JalviewModel() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'creationDate'. - * - * @return the value of field 'CreationDate'. - */ - public java.util.Date getCreationDate() - { - return this._creationDate; - } - - /** - * Returns the value of field 'jalviewModelSequence'. - * - * @return the value of field 'JalviewModelSequence'. - */ - public jalview.schemabinding.version2.JalviewModelSequence getJalviewModelSequence() - { - return this._jalviewModelSequence; - } - - /** - * Returns the value of field 'vamsasModel'. - * - * @return the value of field 'VamsasModel'. - */ - public jalview.schemabinding.version2.VamsasModel getVamsasModel() - { - return this._vamsasModel; - } - - /** - * Returns the value of field 'version'. - * - * @return the value of field 'Version'. - */ - public java.lang.String getVersion() - { - return this._version; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'creationDate'. - * - * @param creationDate - * the value of field 'creationDate'. - */ - public void setCreationDate(final java.util.Date creationDate) - { - this._creationDate = creationDate; - } - - /** - * Sets the value of field 'jalviewModelSequence'. - * - * @param jalviewModelSequence - * the value of field 'jalviewModelSequence'. - */ - public void setJalviewModelSequence( - final jalview.schemabinding.version2.JalviewModelSequence jalviewModelSequence) - { - this._jalviewModelSequence = jalviewModelSequence; - } - - /** - * Sets the value of field 'vamsasModel'. - * - * @param vamsasModel - * the value of field 'vamsasModel'. - */ - public void setVamsasModel( - final jalview.schemabinding.version2.VamsasModel vamsasModel) - { - this._vamsasModel = vamsasModel; - } - - /** - * Sets the value of field 'version'. - * - * @param version - * the value of field 'version'. - */ - public void setVersion(final java.lang.String version) - { - this._version = version; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.JalviewModel - */ - public static jalview.schemabinding.version2.JalviewModel unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.JalviewModel) Unmarshaller - .unmarshal(jalview.schemabinding.version2.JalviewModel.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/JalviewModelSequence.java b/src/jalview/schemabinding/version2/JalviewModelSequence.java deleted file mode 100644 index c7c02c5..0000000 --- a/src/jalview/schemabinding/version2/JalviewModelSequence.java +++ /dev/null @@ -1,986 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class JalviewModelSequence. - * - * @version $Revision$ $Date$ - */ -public class JalviewModelSequence implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _JSeqList. - */ - private java.util.Vector _JSeqList; - - /** - * Field _JGroupList. - */ - private java.util.Vector _JGroupList; - - /** - * Field _viewportList. - */ - private java.util.Vector _viewportList; - - /** - * Field _userColoursList. - */ - private java.util.Vector _userColoursList; - - /** - * Field _treeList. - */ - private java.util.Vector _treeList; - - /** - * Field _featureSettings. - */ - private jalview.schemabinding.version2.FeatureSettings _featureSettings; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public JalviewModelSequence() - { - super(); - this._JSeqList = new java.util.Vector(); - this._JGroupList = new java.util.Vector(); - this._viewportList = new java.util.Vector(); - this._userColoursList = new java.util.Vector(); - this._treeList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vJGroup - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addJGroup(final jalview.schemabinding.version2.JGroup vJGroup) - throws java.lang.IndexOutOfBoundsException - { - this._JGroupList.addElement(vJGroup); - } - - /** - * - * - * @param index - * @param vJGroup - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addJGroup(final int index, - final jalview.schemabinding.version2.JGroup vJGroup) - throws java.lang.IndexOutOfBoundsException - { - this._JGroupList.add(index, vJGroup); - } - - /** - * - * - * @param vJSeq - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addJSeq(final jalview.schemabinding.version2.JSeq vJSeq) - throws java.lang.IndexOutOfBoundsException - { - this._JSeqList.addElement(vJSeq); - } - - /** - * - * - * @param index - * @param vJSeq - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addJSeq(final int index, - final jalview.schemabinding.version2.JSeq vJSeq) - throws java.lang.IndexOutOfBoundsException - { - this._JSeqList.add(index, vJSeq); - } - - /** - * - * - * @param vTree - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addTree(final jalview.schemabinding.version2.Tree vTree) - throws java.lang.IndexOutOfBoundsException - { - this._treeList.addElement(vTree); - } - - /** - * - * - * @param index - * @param vTree - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addTree(final int index, - final jalview.schemabinding.version2.Tree vTree) - throws java.lang.IndexOutOfBoundsException - { - this._treeList.add(index, vTree); - } - - /** - * - * - * @param vUserColours - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addUserColours( - final jalview.schemabinding.version2.UserColours vUserColours) - throws java.lang.IndexOutOfBoundsException - { - this._userColoursList.addElement(vUserColours); - } - - /** - * - * - * @param index - * @param vUserColours - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addUserColours(final int index, - final jalview.schemabinding.version2.UserColours vUserColours) - throws java.lang.IndexOutOfBoundsException - { - this._userColoursList.add(index, vUserColours); - } - - /** - * - * - * @param vViewport - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addViewport( - final jalview.schemabinding.version2.Viewport vViewport) - throws java.lang.IndexOutOfBoundsException - { - this._viewportList.addElement(vViewport); - } - - /** - * - * - * @param index - * @param vViewport - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addViewport(final int index, - final jalview.schemabinding.version2.Viewport vViewport) - throws java.lang.IndexOutOfBoundsException - { - this._viewportList.add(index, vViewport); - } - - /** - * Method enumerateJGroup. - * - * @return an Enumeration over all jalview.schemabinding.version2.JGroup - * elements - */ - public java.util.Enumeration enumerateJGroup() - { - return this._JGroupList.elements(); - } - - /** - * Method enumerateJSeq. - * - * @return an Enumeration over all jalview.schemabinding.version2.JSeq - * elements - */ - public java.util.Enumeration enumerateJSeq() - { - return this._JSeqList.elements(); - } - - /** - * Method enumerateTree. - * - * @return an Enumeration over all jalview.schemabinding.version2.Tree - * elements - */ - public java.util.Enumeration enumerateTree() - { - return this._treeList.elements(); - } - - /** - * Method enumerateUserColours. - * - * @return an Enumeration over all jalview.schemabinding.version2.UserColours - * elements - */ - public java.util.Enumeration enumerateUserColours() - { - return this._userColoursList.elements(); - } - - /** - * Method enumerateViewport. - * - * @return an Enumeration over all jalview.schemabinding.version2.Viewport - * elements - */ - public java.util.Enumeration enumerateViewport() - { - return this._viewportList.elements(); - } - - /** - * Returns the value of field 'featureSettings'. - * - * @return the value of field 'FeatureSettings'. - */ - public jalview.schemabinding.version2.FeatureSettings getFeatureSettings() - { - return this._featureSettings; - } - - /** - * Method getJGroup. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.JGroup at the given - * index - */ - public jalview.schemabinding.version2.JGroup getJGroup(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._JGroupList.size()) - { - throw new IndexOutOfBoundsException("getJGroup: Index value '" - + index + "' not in range [0.." - + (this._JGroupList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.JGroup) _JGroupList.get(index); - } - - /** - * Method getJGroup.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 jalview.schemabinding.version2.JGroup[] getJGroup() - { - jalview.schemabinding.version2.JGroup[] array = new jalview.schemabinding.version2.JGroup[0]; - return (jalview.schemabinding.version2.JGroup[]) this._JGroupList - .toArray(array); - } - - /** - * Method getJGroupCount. - * - * @return the size of this collection - */ - public int getJGroupCount() - { - return this._JGroupList.size(); - } - - /** - * Method getJSeq. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.JSeq at the given - * index - */ - public jalview.schemabinding.version2.JSeq getJSeq(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._JSeqList.size()) - { - throw new IndexOutOfBoundsException("getJSeq: Index value '" + index - + "' not in range [0.." + (this._JSeqList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.JSeq) _JSeqList.get(index); - } - - /** - * Method getJSeq.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 jalview.schemabinding.version2.JSeq[] getJSeq() - { - jalview.schemabinding.version2.JSeq[] array = new jalview.schemabinding.version2.JSeq[0]; - return (jalview.schemabinding.version2.JSeq[]) this._JSeqList - .toArray(array); - } - - /** - * Method getJSeqCount. - * - * @return the size of this collection - */ - public int getJSeqCount() - { - return this._JSeqList.size(); - } - - /** - * Method getTree. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.Tree at the given - * index - */ - public jalview.schemabinding.version2.Tree getTree(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._treeList.size()) - { - throw new IndexOutOfBoundsException("getTree: Index value '" + index - + "' not in range [0.." + (this._treeList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.Tree) _treeList.get(index); - } - - /** - * Method getTree.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 jalview.schemabinding.version2.Tree[] getTree() - { - jalview.schemabinding.version2.Tree[] array = new jalview.schemabinding.version2.Tree[0]; - return (jalview.schemabinding.version2.Tree[]) this._treeList - .toArray(array); - } - - /** - * Method getTreeCount. - * - * @return the size of this collection - */ - public int getTreeCount() - { - return this._treeList.size(); - } - - /** - * Method getUserColours. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.UserColours at the - * given index - */ - public jalview.schemabinding.version2.UserColours getUserColours( - final int index) throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._userColoursList.size()) - { - throw new IndexOutOfBoundsException("getUserColours: Index value '" - + index + "' not in range [0.." - + (this._userColoursList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.UserColours) _userColoursList - .get(index); - } - - /** - * Method getUserColours.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 jalview.schemabinding.version2.UserColours[] getUserColours() - { - jalview.schemabinding.version2.UserColours[] array = new jalview.schemabinding.version2.UserColours[0]; - return (jalview.schemabinding.version2.UserColours[]) this._userColoursList - .toArray(array); - } - - /** - * Method getUserColoursCount. - * - * @return the size of this collection - */ - public int getUserColoursCount() - { - return this._userColoursList.size(); - } - - /** - * Method getViewport. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.Viewport at the - * given index - */ - public jalview.schemabinding.version2.Viewport getViewport(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._viewportList.size()) - { - throw new IndexOutOfBoundsException("getViewport: Index value '" - + index + "' not in range [0.." - + (this._viewportList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.Viewport) _viewportList - .get(index); - } - - /** - * Method getViewport.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 jalview.schemabinding.version2.Viewport[] getViewport() - { - jalview.schemabinding.version2.Viewport[] array = new jalview.schemabinding.version2.Viewport[0]; - return (jalview.schemabinding.version2.Viewport[]) this._viewportList - .toArray(array); - } - - /** - * Method getViewportCount. - * - * @return the size of this collection - */ - public int getViewportCount() - { - return this._viewportList.size(); - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllJGroup() - { - this._JGroupList.clear(); - } - - /** - */ - public void removeAllJSeq() - { - this._JSeqList.clear(); - } - - /** - */ - public void removeAllTree() - { - this._treeList.clear(); - } - - /** - */ - public void removeAllUserColours() - { - this._userColoursList.clear(); - } - - /** - */ - public void removeAllViewport() - { - this._viewportList.clear(); - } - - /** - * Method removeJGroup. - * - * @param vJGroup - * @return true if the object was removed from the collection. - */ - public boolean removeJGroup( - final jalview.schemabinding.version2.JGroup vJGroup) - { - boolean removed = _JGroupList.remove(vJGroup); - return removed; - } - - /** - * Method removeJGroupAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.JGroup removeJGroupAt( - final int index) - { - java.lang.Object obj = this._JGroupList.remove(index); - return (jalview.schemabinding.version2.JGroup) obj; - } - - /** - * Method removeJSeq. - * - * @param vJSeq - * @return true if the object was removed from the collection. - */ - public boolean removeJSeq(final jalview.schemabinding.version2.JSeq vJSeq) - { - boolean removed = _JSeqList.remove(vJSeq); - return removed; - } - - /** - * Method removeJSeqAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.JSeq removeJSeqAt(final int index) - { - java.lang.Object obj = this._JSeqList.remove(index); - return (jalview.schemabinding.version2.JSeq) obj; - } - - /** - * Method removeTree. - * - * @param vTree - * @return true if the object was removed from the collection. - */ - public boolean removeTree(final jalview.schemabinding.version2.Tree vTree) - { - boolean removed = _treeList.remove(vTree); - return removed; - } - - /** - * Method removeTreeAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.Tree removeTreeAt(final int index) - { - java.lang.Object obj = this._treeList.remove(index); - return (jalview.schemabinding.version2.Tree) obj; - } - - /** - * Method removeUserColours. - * - * @param vUserColours - * @return true if the object was removed from the collection. - */ - public boolean removeUserColours( - final jalview.schemabinding.version2.UserColours vUserColours) - { - boolean removed = _userColoursList.remove(vUserColours); - return removed; - } - - /** - * Method removeUserColoursAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.UserColours removeUserColoursAt( - final int index) - { - java.lang.Object obj = this._userColoursList.remove(index); - return (jalview.schemabinding.version2.UserColours) obj; - } - - /** - * Method removeViewport. - * - * @param vViewport - * @return true if the object was removed from the collection. - */ - public boolean removeViewport( - final jalview.schemabinding.version2.Viewport vViewport) - { - boolean removed = _viewportList.remove(vViewport); - return removed; - } - - /** - * Method removeViewportAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.Viewport removeViewportAt( - final int index) - { - java.lang.Object obj = this._viewportList.remove(index); - return (jalview.schemabinding.version2.Viewport) obj; - } - - /** - * Sets the value of field 'featureSettings'. - * - * @param featureSettings - * the value of field 'featureSettings'. - */ - public void setFeatureSettings( - final jalview.schemabinding.version2.FeatureSettings featureSettings) - { - this._featureSettings = featureSettings; - } - - /** - * - * - * @param index - * @param vJGroup - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setJGroup(final int index, - final jalview.schemabinding.version2.JGroup vJGroup) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._JGroupList.size()) - { - throw new IndexOutOfBoundsException("setJGroup: Index value '" - + index + "' not in range [0.." - + (this._JGroupList.size() - 1) + "]"); - } - - this._JGroupList.set(index, vJGroup); - } - - /** - * - * - * @param vJGroupArray - */ - public void setJGroup( - final jalview.schemabinding.version2.JGroup[] vJGroupArray) - { - // -- copy array - _JGroupList.clear(); - - for (int i = 0; i < vJGroupArray.length; i++) - { - this._JGroupList.add(vJGroupArray[i]); - } - } - - /** - * - * - * @param index - * @param vJSeq - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setJSeq(final int index, - final jalview.schemabinding.version2.JSeq vJSeq) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._JSeqList.size()) - { - throw new IndexOutOfBoundsException("setJSeq: Index value '" + index - + "' not in range [0.." + (this._JSeqList.size() - 1) + "]"); - } - - this._JSeqList.set(index, vJSeq); - } - - /** - * - * - * @param vJSeqArray - */ - public void setJSeq(final jalview.schemabinding.version2.JSeq[] vJSeqArray) - { - // -- copy array - _JSeqList.clear(); - - for (int i = 0; i < vJSeqArray.length; i++) - { - this._JSeqList.add(vJSeqArray[i]); - } - } - - /** - * - * - * @param index - * @param vTree - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setTree(final int index, - final jalview.schemabinding.version2.Tree vTree) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._treeList.size()) - { - throw new IndexOutOfBoundsException("setTree: Index value '" + index - + "' not in range [0.." + (this._treeList.size() - 1) + "]"); - } - - this._treeList.set(index, vTree); - } - - /** - * - * - * @param vTreeArray - */ - public void setTree(final jalview.schemabinding.version2.Tree[] vTreeArray) - { - // -- copy array - _treeList.clear(); - - for (int i = 0; i < vTreeArray.length; i++) - { - this._treeList.add(vTreeArray[i]); - } - } - - /** - * - * - * @param index - * @param vUserColours - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setUserColours(final int index, - final jalview.schemabinding.version2.UserColours vUserColours) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._userColoursList.size()) - { - throw new IndexOutOfBoundsException("setUserColours: Index value '" - + index + "' not in range [0.." - + (this._userColoursList.size() - 1) + "]"); - } - - this._userColoursList.set(index, vUserColours); - } - - /** - * - * - * @param vUserColoursArray - */ - public void setUserColours( - final jalview.schemabinding.version2.UserColours[] vUserColoursArray) - { - // -- copy array - _userColoursList.clear(); - - for (int i = 0; i < vUserColoursArray.length; i++) - { - this._userColoursList.add(vUserColoursArray[i]); - } - } - - /** - * - * - * @param index - * @param vViewport - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setViewport(final int index, - final jalview.schemabinding.version2.Viewport vViewport) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._viewportList.size()) - { - throw new IndexOutOfBoundsException("setViewport: Index value '" - + index + "' not in range [0.." - + (this._viewportList.size() - 1) + "]"); - } - - this._viewportList.set(index, vViewport); - } - - /** - * - * - * @param vViewportArray - */ - public void setViewport( - final jalview.schemabinding.version2.Viewport[] vViewportArray) - { - // -- copy array - _viewportList.clear(); - - for (int i = 0; i < vViewportArray.length; i++) - { - this._viewportList.add(vViewportArray[i]); - } - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.JalviewModelSequence - */ - public static jalview.schemabinding.version2.JalviewModelSequence unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.JalviewModelSequence) Unmarshaller - .unmarshal( - jalview.schemabinding.version2.JalviewModelSequence.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/JalviewUserColours.java b/src/jalview/schemabinding/version2/JalviewUserColours.java deleted file mode 100644 index c8d52ac..0000000 --- a/src/jalview/schemabinding/version2/JalviewUserColours.java +++ /dev/null @@ -1,505 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class JalviewUserColours. - * - * @version $Revision$ $Date$ - */ -public class JalviewUserColours implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _schemeName. - */ - private java.lang.String _schemeName; - - /** - * Jalview colour scheme document version. - * - */ - private java.lang.String _version; - - /** - * Field _colourList. - */ - private java.util.Vector _colourList; - - /** - * Field _filterList. - */ - private java.util.Vector _filterList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public JalviewUserColours() - { - super(); - this._colourList = new java.util.Vector(); - this._filterList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vColour - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addColour(final Colour vColour) - throws java.lang.IndexOutOfBoundsException - { - this._colourList.addElement(vColour); - } - - /** - * - * - * @param index - * @param vColour - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addColour(final int index, final Colour vColour) - throws java.lang.IndexOutOfBoundsException - { - this._colourList.add(index, vColour); - } - - /** - * - * - * @param vFilter - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addFilter(final Filter vFilter) - throws java.lang.IndexOutOfBoundsException - { - this._filterList.addElement(vFilter); - } - - /** - * - * - * @param index - * @param vFilter - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addFilter(final int index, final Filter vFilter) - throws java.lang.IndexOutOfBoundsException - { - this._filterList.add(index, vFilter); - } - - /** - * Method enumerateColour. - * - * @return an Enumeration over all Colour elements - */ - public java.util.Enumeration enumerateColour() - { - return this._colourList.elements(); - } - - /** - * Method enumerateFilter. - * - * @return an Enumeration over all Filter elements - */ - public java.util.Enumeration enumerateFilter() - { - return this._filterList.elements(); - } - - /** - * Method getColour. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the Colour at the given index - */ - public Colour getColour(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._colourList.size()) - { - throw new IndexOutOfBoundsException( - "getColour: Index value '" + index + "' not in range [0.." - + (this._colourList.size() - 1) + "]"); - } - - return (Colour) _colourList.get(index); - } - - /** - * Method getColour.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 Colour[] getColour() - { - Colour[] array = new Colour[0]; - return (Colour[]) this._colourList.toArray(array); - } - - /** - * Method getColourCount. - * - * @return the size of this collection - */ - public int getColourCount() - { - return this._colourList.size(); - } - - /** - * Method getFilter. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the Filter at the given index - */ - public Filter getFilter(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._filterList.size()) - { - throw new IndexOutOfBoundsException( - "getFilter: Index value '" + index + "' not in range [0.." - + (this._filterList.size() - 1) + "]"); - } - - return (Filter) _filterList.get(index); - } - - /** - * Method getFilter.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 Filter[] getFilter() - { - Filter[] array = new Filter[0]; - return (Filter[]) this._filterList.toArray(array); - } - - /** - * Method getFilterCount. - * - * @return the size of this collection - */ - public int getFilterCount() - { - return this._filterList.size(); - } - - /** - * Returns the value of field 'schemeName'. - * - * @return the value of field 'SchemeName'. - */ - public java.lang.String getSchemeName() - { - return this._schemeName; - } - - /** - * Returns the value of field 'version'. The field 'version' has the following - * description: Jalview colour scheme document version. - * - * - * @return the value of field 'Version'. - */ - public java.lang.String getVersion() - { - return this._version; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllColour() - { - this._colourList.clear(); - } - - /** - */ - public void removeAllFilter() - { - this._filterList.clear(); - } - - /** - * Method removeColour. - * - * @param vColour - * @return true if the object was removed from the collection. - */ - public boolean removeColour(final Colour vColour) - { - boolean removed = _colourList.remove(vColour); - return removed; - } - - /** - * Method removeColourAt. - * - * @param index - * @return the element removed from the collection - */ - public Colour removeColourAt(final int index) - { - java.lang.Object obj = this._colourList.remove(index); - return (Colour) obj; - } - - /** - * Method removeFilter. - * - * @param vFilter - * @return true if the object was removed from the collection. - */ - public boolean removeFilter(final Filter vFilter) - { - boolean removed = _filterList.remove(vFilter); - return removed; - } - - /** - * Method removeFilterAt. - * - * @param index - * @return the element removed from the collection - */ - public Filter removeFilterAt(final int index) - { - java.lang.Object obj = this._filterList.remove(index); - return (Filter) obj; - } - - /** - * - * - * @param index - * @param vColour - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setColour(final int index, final Colour vColour) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._colourList.size()) - { - throw new IndexOutOfBoundsException( - "setColour: Index value '" + index + "' not in range [0.." - + (this._colourList.size() - 1) + "]"); - } - - this._colourList.set(index, vColour); - } - - /** - * - * - * @param vColourArray - */ - public void setColour(final Colour[] vColourArray) - { - // -- copy array - _colourList.clear(); - - for (int i = 0; i < vColourArray.length; i++) - { - this._colourList.add(vColourArray[i]); - } - } - - /** - * - * - * @param index - * @param vFilter - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setFilter(final int index, final Filter vFilter) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._filterList.size()) - { - throw new IndexOutOfBoundsException( - "setFilter: Index value '" + index + "' not in range [0.." - + (this._filterList.size() - 1) + "]"); - } - - this._filterList.set(index, vFilter); - } - - /** - * - * - * @param vFilterArray - */ - public void setFilter(final Filter[] vFilterArray) - { - // -- copy array - _filterList.clear(); - - for (int i = 0; i < vFilterArray.length; i++) - { - this._filterList.add(vFilterArray[i]); - } - } - - /** - * Sets the value of field 'schemeName'. - * - * @param schemeName - * the value of field 'schemeName'. - */ - public void setSchemeName(final java.lang.String schemeName) - { - this._schemeName = schemeName; - } - - /** - * Sets the value of field 'version'. The field 'version' has the following - * description: Jalview colour scheme document version. - * - * - * @param version - * the value of field 'version'. - */ - public void setVersion(final java.lang.String version) - { - this._version = version; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.JalviewUserColours - */ - public static jalview.schemabinding.version2.JalviewUserColours unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.JalviewUserColours) Unmarshaller - .unmarshal( - jalview.schemabinding.version2.JalviewUserColours.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/MapListFrom.java b/src/jalview/schemabinding/version2/MapListFrom.java deleted file mode 100644 index 67bf1dc..0000000 --- a/src/jalview/schemabinding/version2/MapListFrom.java +++ /dev/null @@ -1,227 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * a region from start to end inclusive - * - * @version $Revision$ $Date$ - */ -public class MapListFrom implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _start. - */ - private int _start; - - /** - * keeps track of state for field: _start - */ - private boolean _has_start; - - /** - * Field _end. - */ - private int _end; - - /** - * keeps track of state for field: _end - */ - private boolean _has_end; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public MapListFrom() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - */ - public void deleteEnd() - { - this._has_end = false; - } - - /** - */ - public void deleteStart() - { - this._has_start = false; - } - - /** - * Returns the value of field 'end'. - * - * @return the value of field 'End'. - */ - public int getEnd() - { - return this._end; - } - - /** - * Returns the value of field 'start'. - * - * @return the value of field 'Start'. - */ - public int getStart() - { - return this._start; - } - - /** - * Method hasEnd. - * - * @return true if at least one End has been added - */ - public boolean hasEnd() - { - return this._has_end; - } - - /** - * Method hasStart. - * - * @return true if at least one Start has been added - */ - public boolean hasStart() - { - return this._has_start; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'end'. - * - * @param end - * the value of field 'end'. - */ - public void setEnd(final int end) - { - this._end = end; - this._has_end = true; - } - - /** - * Sets the value of field 'start'. - * - * @param start - * the value of field 'start'. - */ - public void setStart(final int start) - { - this._start = start; - this._has_start = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.MapListFrom - */ - public static jalview.schemabinding.version2.MapListFrom unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.MapListFrom) Unmarshaller - .unmarshal(jalview.schemabinding.version2.MapListFrom.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/MapListTo.java b/src/jalview/schemabinding/version2/MapListTo.java deleted file mode 100644 index e59baf8..0000000 --- a/src/jalview/schemabinding/version2/MapListTo.java +++ /dev/null @@ -1,227 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * a region from start to end inclusive - * - * @version $Revision$ $Date$ - */ -public class MapListTo implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _start. - */ - private int _start; - - /** - * keeps track of state for field: _start - */ - private boolean _has_start; - - /** - * Field _end. - */ - private int _end; - - /** - * keeps track of state for field: _end - */ - private boolean _has_end; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public MapListTo() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - */ - public void deleteEnd() - { - this._has_end = false; - } - - /** - */ - public void deleteStart() - { - this._has_start = false; - } - - /** - * Returns the value of field 'end'. - * - * @return the value of field 'End'. - */ - public int getEnd() - { - return this._end; - } - - /** - * Returns the value of field 'start'. - * - * @return the value of field 'Start'. - */ - public int getStart() - { - return this._start; - } - - /** - * Method hasEnd. - * - * @return true if at least one End has been added - */ - public boolean hasEnd() - { - return this._has_end; - } - - /** - * Method hasStart. - * - * @return true if at least one Start has been added - */ - public boolean hasStart() - { - return this._has_start; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'end'. - * - * @param end - * the value of field 'end'. - */ - public void setEnd(final int end) - { - this._end = end; - this._has_end = true; - } - - /** - * Sets the value of field 'start'. - * - * @param start - * the value of field 'start'. - */ - public void setStart(final int start) - { - this._start = start; - this._has_start = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.MapListTo - */ - public static jalview.schemabinding.version2.MapListTo unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.MapListTo) Unmarshaller - .unmarshal(jalview.schemabinding.version2.MapListTo.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/MapListType.java b/src/jalview/schemabinding/version2/MapListType.java deleted file mode 100644 index cfb0752..0000000 --- a/src/jalview/schemabinding/version2/MapListType.java +++ /dev/null @@ -1,597 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * developed after mapRangeType from - * http://www.vamsas.ac.uk/schemas/1.0/vamsasTypes - * - * This effectively represents a java.util.MapList object - * - * - * @version $Revision$ $Date$ - */ -public class MapListType implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * number of dictionary symbol widths involved in each mapped position on this - * sequence (for example, 3 for a dna sequence exon region that is being - * mapped to a protein sequence). This is optional, since the unit can be - * usually be inferred from the dictionary type of each sequence involved in - * the mapping. - */ - private long _mapFromUnit; - - /** - * keeps track of state for field: _mapFromUnit - */ - private boolean _has_mapFromUnit; - - /** - * number of dictionary symbol widths involved in each mapped position on this - * sequence (for example, 3 for a dna sequence exon region that is being - * mapped to a protein sequence). This is optional, since the unit can be - * usually be inferred from the dictionary type of each sequence involved in - * the mapping. - */ - private long _mapToUnit; - - /** - * keeps track of state for field: _mapToUnit - */ - private boolean _has_mapToUnit; - - /** - * a region from start to end inclusive - */ - private java.util.Vector _mapListFromList; - - /** - * a region from start to end inclusive - */ - private java.util.Vector _mapListToList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public MapListType() - { - super(); - this._mapListFromList = new java.util.Vector(); - this._mapListToList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vMapListFrom - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addMapListFrom( - final jalview.schemabinding.version2.MapListFrom vMapListFrom) - throws java.lang.IndexOutOfBoundsException - { - this._mapListFromList.addElement(vMapListFrom); - } - - /** - * - * - * @param index - * @param vMapListFrom - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addMapListFrom(final int index, - final jalview.schemabinding.version2.MapListFrom vMapListFrom) - throws java.lang.IndexOutOfBoundsException - { - this._mapListFromList.add(index, vMapListFrom); - } - - /** - * - * - * @param vMapListTo - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addMapListTo( - final jalview.schemabinding.version2.MapListTo vMapListTo) - throws java.lang.IndexOutOfBoundsException - { - this._mapListToList.addElement(vMapListTo); - } - - /** - * - * - * @param index - * @param vMapListTo - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addMapListTo(final int index, - final jalview.schemabinding.version2.MapListTo vMapListTo) - throws java.lang.IndexOutOfBoundsException - { - this._mapListToList.add(index, vMapListTo); - } - - /** - */ - public void deleteMapFromUnit() - { - this._has_mapFromUnit = false; - } - - /** - */ - public void deleteMapToUnit() - { - this._has_mapToUnit = false; - } - - /** - * Method enumerateMapListFrom. - * - * @return an Enumeration over all jalview.schemabinding.version2.MapListFrom - * elements - */ - public java.util.Enumeration enumerateMapListFrom() - { - return this._mapListFromList.elements(); - } - - /** - * Method enumerateMapListTo. - * - * @return an Enumeration over all jalview.schemabinding.version2.MapListTo - * elements - */ - public java.util.Enumeration enumerateMapListTo() - { - return this._mapListToList.elements(); - } - - /** - * Returns the value of field 'mapFromUnit'. The field 'mapFromUnit' has the - * following description: number of dictionary symbol widths involved in each - * mapped position on this sequence (for example, 3 for a dna sequence exon - * region that is being mapped to a protein sequence). This is optional, since - * the unit can be usually be inferred from the dictionary type of each - * sequence involved in the mapping. - * - * @return the value of field 'MapFromUnit'. - */ - public long getMapFromUnit() - { - return this._mapFromUnit; - } - - /** - * Method getMapListFrom. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.MapListFrom at the - * given index - */ - public jalview.schemabinding.version2.MapListFrom getMapListFrom( - final int index) throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._mapListFromList.size()) - { - throw new IndexOutOfBoundsException("getMapListFrom: Index value '" - + index + "' not in range [0.." - + (this._mapListFromList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.MapListFrom) _mapListFromList - .get(index); - } - - /** - * Method getMapListFrom.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 jalview.schemabinding.version2.MapListFrom[] getMapListFrom() - { - jalview.schemabinding.version2.MapListFrom[] array = new jalview.schemabinding.version2.MapListFrom[0]; - return (jalview.schemabinding.version2.MapListFrom[]) this._mapListFromList - .toArray(array); - } - - /** - * Method getMapListFromCount. - * - * @return the size of this collection - */ - public int getMapListFromCount() - { - return this._mapListFromList.size(); - } - - /** - * Method getMapListTo. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.MapListTo at the - * given index - */ - public jalview.schemabinding.version2.MapListTo getMapListTo( - final int index) throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._mapListToList.size()) - { - throw new IndexOutOfBoundsException("getMapListTo: Index value '" - + index + "' not in range [0.." - + (this._mapListToList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.MapListTo) _mapListToList - .get(index); - } - - /** - * Method getMapListTo.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 jalview.schemabinding.version2.MapListTo[] getMapListTo() - { - jalview.schemabinding.version2.MapListTo[] array = new jalview.schemabinding.version2.MapListTo[0]; - return (jalview.schemabinding.version2.MapListTo[]) this._mapListToList - .toArray(array); - } - - /** - * Method getMapListToCount. - * - * @return the size of this collection - */ - public int getMapListToCount() - { - return this._mapListToList.size(); - } - - /** - * Returns the value of field 'mapToUnit'. The field 'mapToUnit' has the - * following description: number of dictionary symbol widths involved in each - * mapped position on this sequence (for example, 3 for a dna sequence exon - * region that is being mapped to a protein sequence). This is optional, since - * the unit can be usually be inferred from the dictionary type of each - * sequence involved in the mapping. - * - * @return the value of field 'MapToUnit'. - */ - public long getMapToUnit() - { - return this._mapToUnit; - } - - /** - * Method hasMapFromUnit. - * - * @return true if at least one MapFromUnit has been added - */ - public boolean hasMapFromUnit() - { - return this._has_mapFromUnit; - } - - /** - * Method hasMapToUnit. - * - * @return true if at least one MapToUnit has been added - */ - public boolean hasMapToUnit() - { - return this._has_mapToUnit; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllMapListFrom() - { - this._mapListFromList.clear(); - } - - /** - */ - public void removeAllMapListTo() - { - this._mapListToList.clear(); - } - - /** - * Method removeMapListFrom. - * - * @param vMapListFrom - * @return true if the object was removed from the collection. - */ - public boolean removeMapListFrom( - final jalview.schemabinding.version2.MapListFrom vMapListFrom) - { - boolean removed = _mapListFromList.remove(vMapListFrom); - return removed; - } - - /** - * Method removeMapListFromAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.MapListFrom removeMapListFromAt( - final int index) - { - java.lang.Object obj = this._mapListFromList.remove(index); - return (jalview.schemabinding.version2.MapListFrom) obj; - } - - /** - * Method removeMapListTo. - * - * @param vMapListTo - * @return true if the object was removed from the collection. - */ - public boolean removeMapListTo( - final jalview.schemabinding.version2.MapListTo vMapListTo) - { - boolean removed = _mapListToList.remove(vMapListTo); - return removed; - } - - /** - * Method removeMapListToAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.MapListTo removeMapListToAt( - final int index) - { - java.lang.Object obj = this._mapListToList.remove(index); - return (jalview.schemabinding.version2.MapListTo) obj; - } - - /** - * Sets the value of field 'mapFromUnit'. The field 'mapFromUnit' has the - * following description: number of dictionary symbol widths involved in each - * mapped position on this sequence (for example, 3 for a dna sequence exon - * region that is being mapped to a protein sequence). This is optional, since - * the unit can be usually be inferred from the dictionary type of each - * sequence involved in the mapping. - * - * @param mapFromUnit - * the value of field 'mapFromUnit'. - */ - public void setMapFromUnit(final long mapFromUnit) - { - this._mapFromUnit = mapFromUnit; - this._has_mapFromUnit = true; - } - - /** - * - * - * @param index - * @param vMapListFrom - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setMapListFrom(final int index, - final jalview.schemabinding.version2.MapListFrom vMapListFrom) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._mapListFromList.size()) - { - throw new IndexOutOfBoundsException("setMapListFrom: Index value '" - + index + "' not in range [0.." - + (this._mapListFromList.size() - 1) + "]"); - } - - this._mapListFromList.set(index, vMapListFrom); - } - - /** - * - * - * @param vMapListFromArray - */ - public void setMapListFrom( - final jalview.schemabinding.version2.MapListFrom[] vMapListFromArray) - { - // -- copy array - _mapListFromList.clear(); - - for (int i = 0; i < vMapListFromArray.length; i++) - { - this._mapListFromList.add(vMapListFromArray[i]); - } - } - - /** - * - * - * @param index - * @param vMapListTo - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setMapListTo(final int index, - final jalview.schemabinding.version2.MapListTo vMapListTo) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._mapListToList.size()) - { - throw new IndexOutOfBoundsException("setMapListTo: Index value '" - + index + "' not in range [0.." - + (this._mapListToList.size() - 1) + "]"); - } - - this._mapListToList.set(index, vMapListTo); - } - - /** - * - * - * @param vMapListToArray - */ - public void setMapListTo( - final jalview.schemabinding.version2.MapListTo[] vMapListToArray) - { - // -- copy array - _mapListToList.clear(); - - for (int i = 0; i < vMapListToArray.length; i++) - { - this._mapListToList.add(vMapListToArray[i]); - } - } - - /** - * Sets the value of field 'mapToUnit'. The field 'mapToUnit' has the - * following description: number of dictionary symbol widths involved in each - * mapped position on this sequence (for example, 3 for a dna sequence exon - * region that is being mapped to a protein sequence). This is optional, since - * the unit can be usually be inferred from the dictionary type of each - * sequence involved in the mapping. - * - * @param mapToUnit - * the value of field 'mapToUnit'. - */ - public void setMapToUnit(final long mapToUnit) - { - this._mapToUnit = mapToUnit; - this._has_mapToUnit = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.MapListType - */ - public static jalview.schemabinding.version2.MapListType unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.MapListType) Unmarshaller - .unmarshal(jalview.schemabinding.version2.MapListType.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/Mapping.java b/src/jalview/schemabinding/version2/Mapping.java deleted file mode 100644 index 9d71e1d..0000000 --- a/src/jalview/schemabinding/version2/Mapping.java +++ /dev/null @@ -1,173 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Mapping. - * - * @version $Revision$ $Date$ - */ -public class Mapping extends jalview.schemabinding.version2.MapListType - implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Internal choice value storage - */ - private java.lang.Object _choiceValue; - - /** - * Field _mappingChoice. - */ - private jalview.schemabinding.version2.MappingChoice _mappingChoice; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Mapping() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'choiceValue'. The field 'choiceValue' has the - * following description: Internal choice value storage - * - * @return the value of field 'ChoiceValue'. - */ - public java.lang.Object getChoiceValue() - { - return this._choiceValue; - } - - /** - * Returns the value of field 'mappingChoice'. - * - * @return the value of field 'MappingChoice'. - */ - public jalview.schemabinding.version2.MappingChoice getMappingChoice() - { - return this._mappingChoice; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'mappingChoice'. - * - * @param mappingChoice - * the value of field 'mappingChoice'. - */ - public void setMappingChoice( - final jalview.schemabinding.version2.MappingChoice mappingChoice) - { - this._mappingChoice = mappingChoice; - this._choiceValue = mappingChoice; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.MapListType - */ - public static jalview.schemabinding.version2.MapListType unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.MapListType) Unmarshaller - .unmarshal(jalview.schemabinding.version2.Mapping.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/MappingChoice.java b/src/jalview/schemabinding/version2/MappingChoice.java deleted file mode 100644 index e50efa7..0000000 --- a/src/jalview/schemabinding/version2/MappingChoice.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class MappingChoice. - * - * @version $Revision$ $Date$ - */ -public class MappingChoice implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _sequence. - */ - private jalview.schemabinding.version2.Sequence _sequence; - - /** - * Field _dseqFor. - */ - private java.lang.String _dseqFor; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public MappingChoice() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'dseqFor'. - * - * @return the value of field 'DseqFor'. - */ - public java.lang.String getDseqFor() - { - return this._dseqFor; - } - - /** - * Returns the value of field 'sequence'. - * - * @return the value of field 'Sequence'. - */ - public jalview.schemabinding.version2.Sequence getSequence() - { - return this._sequence; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'dseqFor'. - * - * @param dseqFor - * the value of field 'dseqFor'. - */ - public void setDseqFor(final java.lang.String dseqFor) - { - this._dseqFor = dseqFor; - } - - /** - * Sets the value of field 'sequence'. - * - * @param sequence - * the value of field 'sequence'. - */ - public void setSequence( - final jalview.schemabinding.version2.Sequence sequence) - { - this._sequence = sequence; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.MappingChoice - */ - public static jalview.schemabinding.version2.MappingChoice unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.MappingChoice) Unmarshaller - .unmarshal(jalview.schemabinding.version2.MappingChoice.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/MatchCondition.java b/src/jalview/schemabinding/version2/MatchCondition.java deleted file mode 100644 index af2f3f5..0000000 --- a/src/jalview/schemabinding/version2/MatchCondition.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class MatchCondition. - * - * @version $Revision$ $Date$ - */ -public class MatchCondition extends FeatureMatcher - implements java.io.Serializable -{ - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public MatchCondition() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.FeatureMatcher - */ - public static jalview.schemabinding.version2.FeatureMatcher unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.FeatureMatcher) Unmarshaller - .unmarshal(jalview.schemabinding.version2.MatchCondition.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/MatcherSet.java b/src/jalview/schemabinding/version2/MatcherSet.java deleted file mode 100644 index 6fde9e4..0000000 --- a/src/jalview/schemabinding/version2/MatcherSet.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * optional filter(s) applied to the feature type - * - * @version $Revision$ $Date$ - */ -public class MatcherSet extends FeatureMatcherSet - implements java.io.Serializable -{ - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public MatcherSet() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.FeatureMatcherSet - */ - public static jalview.schemabinding.version2.FeatureMatcherSet unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.FeatureMatcherSet) Unmarshaller - .unmarshal(jalview.schemabinding.version2.MatcherSet.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/OtherData.java b/src/jalview/schemabinding/version2/OtherData.java deleted file mode 100644 index 31797fe..0000000 --- a/src/jalview/schemabinding/version2/OtherData.java +++ /dev/null @@ -1,199 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - - //---------------------------------/ - //- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class OtherData. - * - * @version $Revision$ $Date$ - */ -public class OtherData implements java.io.Serializable { - - - //--------------------------/ - //- Class/Member Variables -/ - //--------------------------/ - - /** - * Field _key. - */ - private java.lang.String _key; - - /** - * key2 may be used for a sub-attribute of key - */ - private java.lang.String _key2; - - /** - * Field _value. - */ - private java.lang.String _value; - - - //----------------/ - //- Constructors -/ - //----------------/ - - public OtherData() { - super(); - } - - - //-----------/ - //- Methods -/ - //-----------/ - - /** - * Returns the value of field 'key'. - * - * @return the value of field 'Key'. - */ - public java.lang.String getKey( - ) { - return this._key; - } - - /** - * Returns the value of field 'key2'. The field 'key2' has the - * following description: key2 may be used for a sub-attribute - * of key - * - * @return the value of field 'Key2'. - */ - public java.lang.String getKey2( - ) { - return this._key2; - } - - /** - * Returns the value of field 'value'. - * - * @return the value of field 'Value'. - */ - public java.lang.String getValue( - ) { - return this._value; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid( - ) { - try { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException if object is - * null or if any SAXException is thrown during marshaling - * @throws org.exolab.castor.xml.ValidationException if this - * object is an invalid instance according to the schema - */ - public void marshal( - final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException if an IOException occurs during - * marshaling - * @throws org.exolab.castor.xml.ValidationException if this - * object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException if object is - * null or if any SAXException is thrown during marshaling - */ - public void marshal( - final org.xml.sax.ContentHandler handler) - throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'key'. - * - * @param key the value of field 'key'. - */ - public void setKey( - final java.lang.String key) { - this._key = key; - } - - /** - * Sets the value of field 'key2'. The field 'key2' has the - * following description: key2 may be used for a sub-attribute - * of key - * - * @param key2 the value of field 'key2'. - */ - public void setKey2( - final java.lang.String key2) { - this._key2 = key2; - } - - /** - * Sets the value of field 'value'. - * - * @param value the value of field 'value'. - */ - public void setValue( - final java.lang.String value) { - this._value = value; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException if object is - * null or if any SAXException is thrown during marshaling - * @throws org.exolab.castor.xml.ValidationException if this - * object is an invalid instance according to the schema - * @return the unmarshaled - * jalview.schemabinding.version2.OtherData - */ - public static jalview.schemabinding.version2.OtherData unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException { - return (jalview.schemabinding.version2.OtherData) Unmarshaller.unmarshal(jalview.schemabinding.version2.OtherData.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException if this - * object is an invalid instance according to the schema - */ - public void validate( - ) - throws org.exolab.castor.xml.ValidationException { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/Pdbentry.java b/src/jalview/schemabinding/version2/Pdbentry.java deleted file mode 100644 index 65de364..0000000 --- a/src/jalview/schemabinding/version2/Pdbentry.java +++ /dev/null @@ -1,375 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Pdbentry. - * - * @version $Revision$ $Date$ - */ -public class Pdbentry implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _id. - */ - private java.lang.String _id; - - /** - * Field _type. - */ - private java.lang.String _type; - - /** - * Field _file. - */ - private java.lang.String _file; - - /** - * Field _items. - */ - private java.util.Vector _items; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Pdbentry() - { - super(); - this._items = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vPdbentryItem - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addPdbentryItem( - final jalview.schemabinding.version2.PdbentryItem vPdbentryItem) - throws java.lang.IndexOutOfBoundsException - { - this._items.addElement(vPdbentryItem); - } - - /** - * - * - * @param index - * @param vPdbentryItem - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addPdbentryItem(final int index, - final jalview.schemabinding.version2.PdbentryItem vPdbentryItem) - throws java.lang.IndexOutOfBoundsException - { - this._items.add(index, vPdbentryItem); - } - - /** - * Method enumeratePdbentryItem. - * - * @return an Enumeration over all jalview.schemabinding.version2.PdbentryItem - * elements - */ - public java.util.Enumeration enumeratePdbentryItem() - { - return this._items.elements(); - } - - /** - * Returns the value of field 'file'. - * - * @return the value of field 'File'. - */ - public java.lang.String getFile() - { - return this._file; - } - - /** - * Returns the value of field 'id'. - * - * @return the value of field 'Id'. - */ - public java.lang.String getId() - { - return this._id; - } - - /** - * Method getPdbentryItem. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.PdbentryItem at the - * given inde - */ - public jalview.schemabinding.version2.PdbentryItem getPdbentryItem( - final int index) throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._items.size()) - { - throw new IndexOutOfBoundsException("getPdbentryItem: Index value '" - + index + "' not in range [0.." + (this._items.size() - 1) - + "]"); - } - - return (jalview.schemabinding.version2.PdbentryItem) _items.get(index); - } - - /** - * Method getPdbentryItem.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 jalview.schemabinding.version2.PdbentryItem[] getPdbentryItem() - { - jalview.schemabinding.version2.PdbentryItem[] array = new jalview.schemabinding.version2.PdbentryItem[0]; - return (jalview.schemabinding.version2.PdbentryItem[]) this._items - .toArray(array); - } - - /** - * Method getPdbentryItemCount. - * - * @return the size of this collection - */ - public int getPdbentryItemCount() - { - return this._items.size(); - } - - /** - * Returns the value of field 'type'. - * - * @return the value of field 'Type'. - */ - public java.lang.String getType() - { - return this._type; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllPdbentryItem() - { - this._items.clear(); - } - - /** - * Method removePdbentryItem. - * - * @param vPdbentryItem - * @return true if the object was removed from the collection. - */ - public boolean removePdbentryItem( - final jalview.schemabinding.version2.PdbentryItem vPdbentryItem) - { - boolean removed = _items.remove(vPdbentryItem); - return removed; - } - - /** - * Method removePdbentryItemAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.PdbentryItem removePdbentryItemAt( - final int index) - { - java.lang.Object obj = this._items.remove(index); - return (jalview.schemabinding.version2.PdbentryItem) obj; - } - - /** - * Sets the value of field 'file'. - * - * @param file - * the value of field 'file'. - */ - public void setFile(final java.lang.String file) - { - this._file = file; - } - - /** - * Sets the value of field 'id'. - * - * @param id - * the value of field 'id'. - */ - public void setId(final java.lang.String id) - { - this._id = id; - } - - /** - * - * - * @param index - * @param vPdbentryItem - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setPdbentryItem(final int index, - final jalview.schemabinding.version2.PdbentryItem vPdbentryItem) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._items.size()) - { - throw new IndexOutOfBoundsException("setPdbentryItem: Index value '" - + index + "' not in range [0.." + (this._items.size() - 1) - + "]"); - } - - this._items.set(index, vPdbentryItem); - } - - /** - * - * - * @param vPdbentryItemArray - */ - public void setPdbentryItem( - final jalview.schemabinding.version2.PdbentryItem[] vPdbentryItemArray) - { - // -- copy array - _items.clear(); - - for (int i = 0; i < vPdbentryItemArray.length; i++) - { - this._items.add(vPdbentryItemArray[i]); - } - } - - /** - * Sets the value of field 'type'. - * - * @param type - * the value of field 'type'. - */ - public void setType(final java.lang.String type) - { - this._type = type; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.Pdbentry - */ - public static jalview.schemabinding.version2.Pdbentry unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.Pdbentry) Unmarshaller - .unmarshal(jalview.schemabinding.version2.Pdbentry.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/PdbentryItem.java b/src/jalview/schemabinding/version2/PdbentryItem.java deleted file mode 100644 index 5554b49..0000000 --- a/src/jalview/schemabinding/version2/PdbentryItem.java +++ /dev/null @@ -1,204 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -/** - * Class PdbentryItem. - * - * @version $Revision$ $Date$ - */ -public class PdbentryItem implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _propertyList. - */ - private java.util.Vector _propertyList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public PdbentryItem() - { - super(); - this._propertyList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vProperty - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addProperty( - final jalview.schemabinding.version2.Property vProperty) - throws java.lang.IndexOutOfBoundsException - { - this._propertyList.addElement(vProperty); - } - - /** - * - * - * @param index - * @param vProperty - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addProperty(final int index, - final jalview.schemabinding.version2.Property vProperty) - throws java.lang.IndexOutOfBoundsException - { - this._propertyList.add(index, vProperty); - } - - /** - * Method enumerateProperty. - * - * @return an Enumeration over all jalview.schemabinding.version2.Property - * elements - */ - public java.util.Enumeration enumerateProperty() - { - return this._propertyList.elements(); - } - - /** - * Method getProperty. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.Property at the - * given index - */ - public jalview.schemabinding.version2.Property getProperty(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._propertyList.size()) - { - throw new IndexOutOfBoundsException("getProperty: Index value '" - + index + "' not in range [0.." - + (this._propertyList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.Property) _propertyList - .get(index); - } - - /** - * Method getProperty.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 jalview.schemabinding.version2.Property[] getProperty() - { - jalview.schemabinding.version2.Property[] array = new jalview.schemabinding.version2.Property[0]; - return (jalview.schemabinding.version2.Property[]) this._propertyList - .toArray(array); - } - - /** - * Method getPropertyCount. - * - * @return the size of this collection - */ - public int getPropertyCount() - { - return this._propertyList.size(); - } - - /** - */ - public void removeAllProperty() - { - this._propertyList.clear(); - } - - /** - * Method removeProperty. - * - * @param vProperty - * @return true if the object was removed from the collection. - */ - public boolean removeProperty( - final jalview.schemabinding.version2.Property vProperty) - { - boolean removed = _propertyList.remove(vProperty); - return removed; - } - - /** - * Method removePropertyAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.Property removePropertyAt( - final int index) - { - java.lang.Object obj = this._propertyList.remove(index); - return (jalview.schemabinding.version2.Property) obj; - } - - /** - * - * - * @param index - * @param vProperty - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setProperty(final int index, - final jalview.schemabinding.version2.Property vProperty) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._propertyList.size()) - { - throw new IndexOutOfBoundsException("setProperty: Index value '" - + index + "' not in range [0.." - + (this._propertyList.size() - 1) + "]"); - } - - this._propertyList.set(index, vProperty); - } - - /** - * - * - * @param vPropertyArray - */ - public void setProperty( - final jalview.schemabinding.version2.Property[] vPropertyArray) - { - // -- copy array - _propertyList.clear(); - - for (int i = 0; i < vPropertyArray.length; i++) - { - this._propertyList.add(vPropertyArray[i]); - } - } - -} diff --git a/src/jalview/schemabinding/version2/Pdbids.java b/src/jalview/schemabinding/version2/Pdbids.java deleted file mode 100644 index 978df5b..0000000 --- a/src/jalview/schemabinding/version2/Pdbids.java +++ /dev/null @@ -1,303 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Pdbids. - * - * @version $Revision$ $Date$ - */ -public class Pdbids extends jalview.schemabinding.version2.Pdbentry - implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _structureStateList. - */ - private java.util.Vector _structureStateList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Pdbids() - { - super(); - this._structureStateList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vStructureState - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addStructureState( - final jalview.schemabinding.version2.StructureState vStructureState) - throws java.lang.IndexOutOfBoundsException - { - this._structureStateList.addElement(vStructureState); - } - - /** - * - * - * @param index - * @param vStructureState - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addStructureState( - final int index, - final jalview.schemabinding.version2.StructureState vStructureState) - throws java.lang.IndexOutOfBoundsException - { - this._structureStateList.add(index, vStructureState); - } - - /** - * Method enumerateStructureState. - * - * @return an Enumeration over all - * jalview.schemabinding.version2.StructureState elements - */ - public java.util.Enumeration enumerateStructureState() - { - return this._structureStateList.elements(); - } - - /** - * Method getStructureState. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.StructureState at - * the given index - */ - public jalview.schemabinding.version2.StructureState getStructureState( - final int index) throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._structureStateList.size()) - { - throw new IndexOutOfBoundsException( - "getStructureState: Index value '" + index - + "' not in range [0.." - + (this._structureStateList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.StructureState) _structureStateList - .get(index); - } - - /** - * Method getStructureState.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 jalview.schemabinding.version2.StructureState[] getStructureState() - { - jalview.schemabinding.version2.StructureState[] array = new jalview.schemabinding.version2.StructureState[0]; - return (jalview.schemabinding.version2.StructureState[]) this._structureStateList - .toArray(array); - } - - /** - * Method getStructureStateCount. - * - * @return the size of this collection - */ - public int getStructureStateCount() - { - return this._structureStateList.size(); - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllStructureState() - { - this._structureStateList.clear(); - } - - /** - * Method removeStructureState. - * - * @param vStructureState - * @return true if the object was removed from the collection. - */ - public boolean removeStructureState( - final jalview.schemabinding.version2.StructureState vStructureState) - { - boolean removed = _structureStateList.remove(vStructureState); - return removed; - } - - /** - * Method removeStructureStateAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.StructureState removeStructureStateAt( - final int index) - { - java.lang.Object obj = this._structureStateList.remove(index); - return (jalview.schemabinding.version2.StructureState) obj; - } - - /** - * - * - * @param index - * @param vStructureState - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setStructureState( - final int index, - final jalview.schemabinding.version2.StructureState vStructureState) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._structureStateList.size()) - { - throw new IndexOutOfBoundsException( - "setStructureState: Index value '" + index - + "' not in range [0.." - + (this._structureStateList.size() - 1) + "]"); - } - - this._structureStateList.set(index, vStructureState); - } - - /** - * - * - * @param vStructureStateArray - */ - public void setStructureState( - final jalview.schemabinding.version2.StructureState[] vStructureStateArray) - { - // -- copy array - _structureStateList.clear(); - - for (int i = 0; i < vStructureStateArray.length; i++) - { - this._structureStateList.add(vStructureStateArray[i]); - } - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.Pdbentry - */ - public static jalview.schemabinding.version2.Pdbentry unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.Pdbentry) Unmarshaller - .unmarshal(jalview.schemabinding.version2.Pdbids.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/Property.java b/src/jalview/schemabinding/version2/Property.java deleted file mode 100644 index dbf96bf..0000000 --- a/src/jalview/schemabinding/version2/Property.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Property. - * - * @version $Revision$ $Date$ - */ -public class Property implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _name. - */ - private java.lang.String _name; - - /** - * Field _value. - */ - private java.lang.String _value; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Property() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'name'. - * - * @return the value of field 'Name'. - */ - public java.lang.String getName() - { - return this._name; - } - - /** - * Returns the value of field 'value'. - * - * @return the value of field 'Value'. - */ - public java.lang.String getValue() - { - return this._value; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'name'. - * - * @param name - * the value of field 'name'. - */ - public void setName(final java.lang.String name) - { - this._name = name; - } - - /** - * Sets the value of field 'value'. - * - * @param value - * the value of field 'value'. - */ - public void setValue(final java.lang.String value) - { - this._value = value; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.Property - */ - public static jalview.schemabinding.version2.Property unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.Property) Unmarshaller - .unmarshal(jalview.schemabinding.version2.Property.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/RnaViewer.java b/src/jalview/schemabinding/version2/RnaViewer.java deleted file mode 100644 index 543d053..0000000 --- a/src/jalview/schemabinding/version2/RnaViewer.java +++ /dev/null @@ -1,668 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Reference to a viewer showing RNA structure for this sequence. Schema - * supports one viewer showing multiple annotations for multiple sequences, - * though currently only one annotation for one sequence (gapped or trimmed) is - * used - * - * - * @version $Revision$ $Date$ - */ -public class RnaViewer implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _title. - */ - private java.lang.String _title; - - /** - * An id unique to the RNA viewer panel - * - */ - private java.lang.String _viewId; - - /** - * horizontal position of split pane divider - * - */ - private int _dividerLocation; - - /** - * keeps track of state for field: _dividerLocation - */ - private boolean _has_dividerLocation; - - /** - * Index of the selected structure in the viewer panel - * - */ - private int _selectedRna; - - /** - * keeps track of state for field: _selectedRna - */ - private boolean _has_selectedRna; - - /** - * Field _width. - */ - private int _width; - - /** - * keeps track of state for field: _width - */ - private boolean _has_width; - - /** - * Field _height. - */ - private int _height; - - /** - * keeps track of state for field: _height - */ - private boolean _has_height; - - /** - * Field _xpos. - */ - private int _xpos; - - /** - * keeps track of state for field: _xpos - */ - private boolean _has_xpos; - - /** - * Field _ypos. - */ - private int _ypos; - - /** - * keeps track of state for field: _ypos - */ - private boolean _has_ypos; - - /** - * Field _secondaryStructureList. - */ - private java.util.Vector _secondaryStructureList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public RnaViewer() - { - super(); - this._secondaryStructureList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vSecondaryStructure - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSecondaryStructure( - final jalview.schemabinding.version2.SecondaryStructure vSecondaryStructure) - throws java.lang.IndexOutOfBoundsException - { - this._secondaryStructureList.addElement(vSecondaryStructure); - } - - /** - * - * - * @param index - * @param vSecondaryStructure - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSecondaryStructure( - final int index, - final jalview.schemabinding.version2.SecondaryStructure vSecondaryStructure) - throws java.lang.IndexOutOfBoundsException - { - this._secondaryStructureList.add(index, vSecondaryStructure); - } - - /** - */ - public void deleteDividerLocation() - { - this._has_dividerLocation = false; - } - - /** - */ - public void deleteHeight() - { - this._has_height = false; - } - - /** - */ - public void deleteSelectedRna() - { - this._has_selectedRna = false; - } - - /** - */ - public void deleteWidth() - { - this._has_width = false; - } - - /** - */ - public void deleteXpos() - { - this._has_xpos = false; - } - - /** - */ - public void deleteYpos() - { - this._has_ypos = false; - } - - /** - * Method enumerateSecondaryStructure. - * - * @return an Enumeration over all - * jalview.schemabinding.version2.SecondaryStructure elements - */ - public java.util.Enumeration enumerateSecondaryStructure() - { - return this._secondaryStructureList.elements(); - } - - /** - * Returns the value of field 'dividerLocation'. The field 'dividerLocation' - * has the following description: horizontal position of split pane divider - * - * - * @return the value of field 'DividerLocation'. - */ - public int getDividerLocation() - { - return this._dividerLocation; - } - - /** - * Returns the value of field 'height'. - * - * @return the value of field 'Height'. - */ - public int getHeight() - { - return this._height; - } - - /** - * Method getSecondaryStructure. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.SecondaryStructure - * at the given index - */ - public jalview.schemabinding.version2.SecondaryStructure getSecondaryStructure( - final int index) throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._secondaryStructureList.size()) - { - throw new IndexOutOfBoundsException( - "getSecondaryStructure: Index value '" + index - + "' not in range [0.." - + (this._secondaryStructureList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.SecondaryStructure) _secondaryStructureList - .get(index); - } - - /** - * Method getSecondaryStructure.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 jalview.schemabinding.version2.SecondaryStructure[] getSecondaryStructure() - { - jalview.schemabinding.version2.SecondaryStructure[] array = new jalview.schemabinding.version2.SecondaryStructure[0]; - return (jalview.schemabinding.version2.SecondaryStructure[]) this._secondaryStructureList - .toArray(array); - } - - /** - * Method getSecondaryStructureCount. - * - * @return the size of this collection - */ - public int getSecondaryStructureCount() - { - return this._secondaryStructureList.size(); - } - - /** - * Returns the value of field 'selectedRna'. The field 'selectedRna' has the - * following description: Index of the selected structure in the viewer panel - * - * - * @return the value of field 'SelectedRna'. - */ - public int getSelectedRna() - { - return this._selectedRna; - } - - /** - * Returns the value of field 'title'. - * - * @return the value of field 'Title'. - */ - public java.lang.String getTitle() - { - return this._title; - } - - /** - * Returns the value of field 'viewId'. The field 'viewId' has the following - * description: An id unique to the RNA viewer panel - * - * - * @return the value of field 'ViewId'. - */ - public java.lang.String getViewId() - { - return this._viewId; - } - - /** - * Returns the value of field 'width'. - * - * @return the value of field 'Width'. - */ - public int getWidth() - { - return this._width; - } - - /** - * Returns the value of field 'xpos'. - * - * @return the value of field 'Xpos'. - */ - public int getXpos() - { - return this._xpos; - } - - /** - * Returns the value of field 'ypos'. - * - * @return the value of field 'Ypos'. - */ - public int getYpos() - { - return this._ypos; - } - - /** - * Method hasDividerLocation. - * - * @return true if at least one DividerLocation has been added - */ - public boolean hasDividerLocation() - { - return this._has_dividerLocation; - } - - /** - * Method hasHeight. - * - * @return true if at least one Height has been added - */ - public boolean hasHeight() - { - return this._has_height; - } - - /** - * Method hasSelectedRna. - * - * @return true if at least one SelectedRna has been added - */ - public boolean hasSelectedRna() - { - return this._has_selectedRna; - } - - /** - * Method hasWidth. - * - * @return true if at least one Width has been added - */ - public boolean hasWidth() - { - return this._has_width; - } - - /** - * Method hasXpos. - * - * @return true if at least one Xpos has been added - */ - public boolean hasXpos() - { - return this._has_xpos; - } - - /** - * Method hasYpos. - * - * @return true if at least one Ypos has been added - */ - public boolean hasYpos() - { - return this._has_ypos; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllSecondaryStructure() - { - this._secondaryStructureList.clear(); - } - - /** - * Method removeSecondaryStructure. - * - * @param vSecondaryStructure - * @return true if the object was removed from the collection. - */ - public boolean removeSecondaryStructure( - final jalview.schemabinding.version2.SecondaryStructure vSecondaryStructure) - { - boolean removed = _secondaryStructureList.remove(vSecondaryStructure); - return removed; - } - - /** - * Method removeSecondaryStructureAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.SecondaryStructure removeSecondaryStructureAt( - final int index) - { - java.lang.Object obj = this._secondaryStructureList.remove(index); - return (jalview.schemabinding.version2.SecondaryStructure) obj; - } - - /** - * Sets the value of field 'dividerLocation'. The field 'dividerLocation' has - * the following description: horizontal position of split pane divider - * - * - * @param dividerLocation - * the value of field 'dividerLocation'. - */ - public void setDividerLocation(final int dividerLocation) - { - this._dividerLocation = dividerLocation; - this._has_dividerLocation = true; - } - - /** - * Sets the value of field 'height'. - * - * @param height - * the value of field 'height'. - */ - public void setHeight(final int height) - { - this._height = height; - this._has_height = true; - } - - /** - * - * - * @param index - * @param vSecondaryStructure - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setSecondaryStructure( - final int index, - final jalview.schemabinding.version2.SecondaryStructure vSecondaryStructure) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._secondaryStructureList.size()) - { - throw new IndexOutOfBoundsException( - "setSecondaryStructure: Index value '" + index - + "' not in range [0.." - + (this._secondaryStructureList.size() - 1) + "]"); - } - - this._secondaryStructureList.set(index, vSecondaryStructure); - } - - /** - * - * - * @param vSecondaryStructureArray - */ - public void setSecondaryStructure( - final jalview.schemabinding.version2.SecondaryStructure[] vSecondaryStructureArray) - { - // -- copy array - _secondaryStructureList.clear(); - - for (int i = 0; i < vSecondaryStructureArray.length; i++) - { - this._secondaryStructureList.add(vSecondaryStructureArray[i]); - } - } - - /** - * Sets the value of field 'selectedRna'. The field 'selectedRna' has the - * following description: Index of the selected structure in the viewer panel - * - * - * @param selectedRna - * the value of field 'selectedRna'. - */ - public void setSelectedRna(final int selectedRna) - { - this._selectedRna = selectedRna; - this._has_selectedRna = true; - } - - /** - * Sets the value of field 'title'. - * - * @param title - * the value of field 'title'. - */ - public void setTitle(final java.lang.String title) - { - this._title = title; - } - - /** - * Sets the value of field 'viewId'. The field 'viewId' has the following - * description: An id unique to the RNA viewer panel - * - * - * @param viewId - * the value of field 'viewId'. - */ - public void setViewId(final java.lang.String viewId) - { - this._viewId = viewId; - } - - /** - * Sets the value of field 'width'. - * - * @param width - * the value of field 'width'. - */ - public void setWidth(final int width) - { - this._width = width; - this._has_width = true; - } - - /** - * Sets the value of field 'xpos'. - * - * @param xpos - * the value of field 'xpos'. - */ - public void setXpos(final int xpos) - { - this._xpos = xpos; - this._has_xpos = true; - } - - /** - * Sets the value of field 'ypos'. - * - * @param ypos - * the value of field 'ypos'. - */ - public void setYpos(final int ypos) - { - this._ypos = ypos; - this._has_ypos = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.RnaViewer - */ - public static jalview.schemabinding.version2.RnaViewer unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.RnaViewer) Unmarshaller - .unmarshal(jalview.schemabinding.version2.RnaViewer.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/SecondaryStructure.java b/src/jalview/schemabinding/version2/SecondaryStructure.java deleted file mode 100644 index eb88fc4..0000000 --- a/src/jalview/schemabinding/version2/SecondaryStructure.java +++ /dev/null @@ -1,290 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class SecondaryStructure. - * - * @version $Revision$ $Date$ - */ -public class SecondaryStructure implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _title. - */ - private java.lang.String _title; - - /** - * id attribute of Annotation in vamsasModel for the secondary structure - * annotation shown in the viewer - * - */ - private java.lang.String _annotationId; - - /** - * if true the RNA structure is shown with gaps, if false without - * - */ - private boolean _gapped; - - /** - * keeps track of state for field: _gapped - */ - private boolean _has_gapped; - - /** - * name of the project jar entry that holds the VARNA viewer state for the - * structure - * - */ - private java.lang.String _viewerState; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public SecondaryStructure() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - */ - public void deleteGapped() - { - this._has_gapped = false; - } - - /** - * Returns the value of field 'annotationId'. The field 'annotationId' has the - * following description: id attribute of Annotation in vamsasModel for the - * secondary structure annotation shown in the viewer - * - * - * @return the value of field 'AnnotationId'. - */ - public java.lang.String getAnnotationId() - { - return this._annotationId; - } - - /** - * Returns the value of field 'gapped'. The field 'gapped' has the following - * description: if true the RNA structure is shown with gaps, if false without - * - * - * @return the value of field 'Gapped'. - */ - public boolean getGapped() - { - return this._gapped; - } - - /** - * Returns the value of field 'title'. - * - * @return the value of field 'Title'. - */ - public java.lang.String getTitle() - { - return this._title; - } - - /** - * Returns the value of field 'viewerState'. The field 'viewerState' has the - * following description: name of the project jar entry that holds the VARNA - * viewer state for the structure - * - * - * @return the value of field 'ViewerState'. - */ - public java.lang.String getViewerState() - { - return this._viewerState; - } - - /** - * Method hasGapped. - * - * @return true if at least one Gapped has been added - */ - public boolean hasGapped() - { - return this._has_gapped; - } - - /** - * Returns the value of field 'gapped'. The field 'gapped' has the following - * description: if true the RNA structure is shown with gaps, if false without - * - * - * @return the value of field 'Gapped'. - */ - public boolean isGapped() - { - return this._gapped; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'annotationId'. The field 'annotationId' has the - * following description: id attribute of Annotation in vamsasModel for the - * secondary structure annotation shown in the viewer - * - * - * @param annotationId - * the value of field 'annotationId'. - */ - public void setAnnotationId(final java.lang.String annotationId) - { - this._annotationId = annotationId; - } - - /** - * Sets the value of field 'gapped'. The field 'gapped' has the following - * description: if true the RNA structure is shown with gaps, if false without - * - * - * @param gapped - * the value of field 'gapped'. - */ - public void setGapped(final boolean gapped) - { - this._gapped = gapped; - this._has_gapped = true; - } - - /** - * Sets the value of field 'title'. - * - * @param title - * the value of field 'title'. - */ - public void setTitle(final java.lang.String title) - { - this._title = title; - } - - /** - * Sets the value of field 'viewerState'. The field 'viewerState' has the - * following description: name of the project jar entry that holds the VARNA - * viewer state for the structure - * - * - * @param viewerState - * the value of field 'viewerState'. - */ - public void setViewerState(final java.lang.String viewerState) - { - this._viewerState = viewerState; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.SecondaryStructure - */ - public static jalview.schemabinding.version2.SecondaryStructure unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.SecondaryStructure) Unmarshaller - .unmarshal( - jalview.schemabinding.version2.SecondaryStructure.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/Sequence.java b/src/jalview/schemabinding/version2/Sequence.java deleted file mode 100644 index 531ca66..0000000 --- a/src/jalview/schemabinding/version2/Sequence.java +++ /dev/null @@ -1,328 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Sequence. - * - * @version $Revision$ $Date$ - */ -public class Sequence extends jalview.schemabinding.version2.SequenceType - implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * dataset sequence id for this sequence. Will be created as union of - * sequences. - * - */ - private java.lang.String _dsseqid; - - /** - * Field _DBRefList. - */ - private java.util.Vector _DBRefList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Sequence() - { - super(); - this._DBRefList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vDBRef - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addDBRef(final jalview.schemabinding.version2.DBRef vDBRef) - throws java.lang.IndexOutOfBoundsException - { - this._DBRefList.addElement(vDBRef); - } - - /** - * - * - * @param index - * @param vDBRef - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addDBRef(final int index, - final jalview.schemabinding.version2.DBRef vDBRef) - throws java.lang.IndexOutOfBoundsException - { - this._DBRefList.add(index, vDBRef); - } - - /** - * Method enumerateDBRef. - * - * @return an Enumeration over all jalview.schemabinding.version2.DBRef - * elements - */ - public java.util.Enumeration enumerateDBRef() - { - return this._DBRefList.elements(); - } - - /** - * Method getDBRef. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.DBRef at the given - * index - */ - public jalview.schemabinding.version2.DBRef getDBRef(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._DBRefList.size()) - { - throw new IndexOutOfBoundsException("getDBRef: Index value '" + index - + "' not in range [0.." + (this._DBRefList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.DBRef) _DBRefList.get(index); - } - - /** - * Method getDBRef.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 jalview.schemabinding.version2.DBRef[] getDBRef() - { - jalview.schemabinding.version2.DBRef[] array = new jalview.schemabinding.version2.DBRef[0]; - return (jalview.schemabinding.version2.DBRef[]) this._DBRefList - .toArray(array); - } - - /** - * Method getDBRefCount. - * - * @return the size of this collection - */ - public int getDBRefCount() - { - return this._DBRefList.size(); - } - - /** - * Returns the value of field 'dsseqid'. The field 'dsseqid' has the following - * description: dataset sequence id for this sequence. Will be created as - * union of sequences. - * - * - * @return the value of field 'Dsseqid'. - */ - public java.lang.String getDsseqid() - { - return this._dsseqid; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllDBRef() - { - this._DBRefList.clear(); - } - - /** - * Method removeDBRef. - * - * @param vDBRef - * @return true if the object was removed from the collection. - */ - public boolean removeDBRef( - final jalview.schemabinding.version2.DBRef vDBRef) - { - boolean removed = _DBRefList.remove(vDBRef); - return removed; - } - - /** - * Method removeDBRefAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.DBRef removeDBRefAt(final int index) - { - java.lang.Object obj = this._DBRefList.remove(index); - return (jalview.schemabinding.version2.DBRef) obj; - } - - /** - * - * - * @param index - * @param vDBRef - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setDBRef(final int index, - final jalview.schemabinding.version2.DBRef vDBRef) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._DBRefList.size()) - { - throw new IndexOutOfBoundsException("setDBRef: Index value '" + index - + "' not in range [0.." + (this._DBRefList.size() - 1) + "]"); - } - - this._DBRefList.set(index, vDBRef); - } - - /** - * - * - * @param vDBRefArray - */ - public void setDBRef( - final jalview.schemabinding.version2.DBRef[] vDBRefArray) - { - // -- copy array - _DBRefList.clear(); - - for (int i = 0; i < vDBRefArray.length; i++) - { - this._DBRefList.add(vDBRefArray[i]); - } - } - - /** - * Sets the value of field 'dsseqid'. The field 'dsseqid' has the following - * description: dataset sequence id for this sequence. Will be created as - * union of sequences. - * - * - * @param dsseqid - * the value of field 'dsseqid'. - */ - public void setDsseqid(final java.lang.String dsseqid) - { - this._dsseqid = dsseqid; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.SequenceType - */ - public static jalview.schemabinding.version2.SequenceType unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.SequenceType) Unmarshaller - .unmarshal(jalview.schemabinding.version2.Sequence.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/SequenceSet.java b/src/jalview/schemabinding/version2/SequenceSet.java deleted file mode 100644 index 8be8022..0000000 --- a/src/jalview/schemabinding/version2/SequenceSet.java +++ /dev/null @@ -1,872 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class SequenceSet. - * - * @version $Revision$ $Date$ - */ -public class SequenceSet implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _gapChar. - */ - private java.lang.String _gapChar; - - /** - * reference to set where jalview will gather the dataset sequences for all - * sequences in the set. - * - */ - private java.lang.String _datasetId; - - /** - * Field _sequenceList. - */ - private java.util.Vector _sequenceList; - - /** - * Field _annotationList. - */ - private java.util.Vector _annotationList; - - /** - * Field _sequenceSetPropertiesList. - */ - private java.util.Vector _sequenceSetPropertiesList; - - /** - * Field _alcodonFrameList. - */ - private java.util.Vector _alcodonFrameList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public SequenceSet() - { - super(); - this._sequenceList = new java.util.Vector(); - this._annotationList = new java.util.Vector(); - this._sequenceSetPropertiesList = new java.util.Vector(); - this._alcodonFrameList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vAlcodonFrame - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAlcodonFrame( - final jalview.schemabinding.version2.AlcodonFrame vAlcodonFrame) - throws java.lang.IndexOutOfBoundsException - { - this._alcodonFrameList.addElement(vAlcodonFrame); - } - - /** - * - * - * @param index - * @param vAlcodonFrame - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAlcodonFrame(final int index, - final jalview.schemabinding.version2.AlcodonFrame vAlcodonFrame) - throws java.lang.IndexOutOfBoundsException - { - this._alcodonFrameList.add(index, vAlcodonFrame); - } - - /** - * - * - * @param vAnnotation - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAnnotation( - final jalview.schemabinding.version2.Annotation vAnnotation) - throws java.lang.IndexOutOfBoundsException - { - this._annotationList.addElement(vAnnotation); - } - - /** - * - * - * @param index - * @param vAnnotation - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAnnotation(final int index, - final jalview.schemabinding.version2.Annotation vAnnotation) - throws java.lang.IndexOutOfBoundsException - { - this._annotationList.add(index, vAnnotation); - } - - /** - * - * - * @param vSequence - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSequence( - final jalview.schemabinding.version2.Sequence vSequence) - throws java.lang.IndexOutOfBoundsException - { - this._sequenceList.addElement(vSequence); - } - - /** - * - * - * @param index - * @param vSequence - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSequence(final int index, - final jalview.schemabinding.version2.Sequence vSequence) - throws java.lang.IndexOutOfBoundsException - { - this._sequenceList.add(index, vSequence); - } - - /** - * - * - * @param vSequenceSetProperties - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSequenceSetProperties( - final jalview.schemabinding.version2.SequenceSetProperties vSequenceSetProperties) - throws java.lang.IndexOutOfBoundsException - { - this._sequenceSetPropertiesList.addElement(vSequenceSetProperties); - } - - /** - * - * - * @param index - * @param vSequenceSetProperties - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSequenceSetProperties( - final int index, - final jalview.schemabinding.version2.SequenceSetProperties vSequenceSetProperties) - throws java.lang.IndexOutOfBoundsException - { - this._sequenceSetPropertiesList.add(index, vSequenceSetProperties); - } - - /** - * Method enumerateAlcodonFrame. - * - * @return an Enumeration over all jalview.schemabinding.version2.AlcodonFrame - * elements - */ - public java.util.Enumeration enumerateAlcodonFrame() - { - return this._alcodonFrameList.elements(); - } - - /** - * Method enumerateAnnotation. - * - * @return an Enumeration over all jalview.schemabinding.version2.Annotation - * elements - */ - public java.util.Enumeration enumerateAnnotation() - { - return this._annotationList.elements(); - } - - /** - * Method enumerateSequence. - * - * @return an Enumeration over all jalview.schemabinding.version2.Sequence - * elements - */ - public java.util.Enumeration enumerateSequence() - { - return this._sequenceList.elements(); - } - - /** - * Method enumerateSequenceSetProperties. - * - * @return an Enumeration over all - * jalview.schemabinding.version2.SequenceSetProperties elements - */ - public java.util.Enumeration enumerateSequenceSetProperties() - { - return this._sequenceSetPropertiesList.elements(); - } - - /** - * Method getAlcodonFrame. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.AlcodonFrame at the - * given inde - */ - public jalview.schemabinding.version2.AlcodonFrame getAlcodonFrame( - final int index) throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._alcodonFrameList.size()) - { - throw new IndexOutOfBoundsException("getAlcodonFrame: Index value '" - + index + "' not in range [0.." - + (this._alcodonFrameList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.AlcodonFrame) _alcodonFrameList - .get(index); - } - - /** - * Method getAlcodonFrame.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 jalview.schemabinding.version2.AlcodonFrame[] getAlcodonFrame() - { - jalview.schemabinding.version2.AlcodonFrame[] array = new jalview.schemabinding.version2.AlcodonFrame[0]; - return (jalview.schemabinding.version2.AlcodonFrame[]) this._alcodonFrameList - .toArray(array); - } - - /** - * Method getAlcodonFrameCount. - * - * @return the size of this collection - */ - public int getAlcodonFrameCount() - { - return this._alcodonFrameList.size(); - } - - /** - * Method getAnnotation. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.Annotation at the - * given index - */ - public jalview.schemabinding.version2.Annotation getAnnotation( - final int index) throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._annotationList.size()) - { - throw new IndexOutOfBoundsException("getAnnotation: Index value '" - + index + "' not in range [0.." - + (this._annotationList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.Annotation) _annotationList - .get(index); - } - - /** - * Method getAnnotation.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 jalview.schemabinding.version2.Annotation[] getAnnotation() - { - jalview.schemabinding.version2.Annotation[] array = new jalview.schemabinding.version2.Annotation[0]; - return (jalview.schemabinding.version2.Annotation[]) this._annotationList - .toArray(array); - } - - /** - * Method getAnnotationCount. - * - * @return the size of this collection - */ - public int getAnnotationCount() - { - return this._annotationList.size(); - } - - /** - * Returns the value of field 'datasetId'. The field 'datasetId' has the - * following description: reference to set where jalview will gather the - * dataset sequences for all sequences in the set. - * - * - * @return the value of field 'DatasetId'. - */ - public java.lang.String getDatasetId() - { - return this._datasetId; - } - - /** - * Returns the value of field 'gapChar'. - * - * @return the value of field 'GapChar'. - */ - public java.lang.String getGapChar() - { - return this._gapChar; - } - - /** - * Method getSequence. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.Sequence at the - * given index - */ - public jalview.schemabinding.version2.Sequence getSequence(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._sequenceList.size()) - { - throw new IndexOutOfBoundsException("getSequence: Index value '" - + index + "' not in range [0.." - + (this._sequenceList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.Sequence) _sequenceList - .get(index); - } - - /** - * Method getSequence.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 jalview.schemabinding.version2.Sequence[] getSequence() - { - jalview.schemabinding.version2.Sequence[] array = new jalview.schemabinding.version2.Sequence[0]; - return (jalview.schemabinding.version2.Sequence[]) this._sequenceList - .toArray(array); - } - - /** - * Method getSequenceCount. - * - * @return the size of this collection - */ - public int getSequenceCount() - { - return this._sequenceList.size(); - } - - /** - * Method getSequenceSetProperties. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the - * jalview.schemabinding.version2.SequenceSetProperties at the given - * index - */ - public jalview.schemabinding.version2.SequenceSetProperties getSequenceSetProperties( - final int index) throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._sequenceSetPropertiesList.size()) - { - throw new IndexOutOfBoundsException( - "getSequenceSetProperties: Index value '" + index - + "' not in range [0.." - + (this._sequenceSetPropertiesList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.SequenceSetProperties) _sequenceSetPropertiesList - .get(index); - } - - /** - * Method getSequenceSetProperties.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 jalview.schemabinding.version2.SequenceSetProperties[] getSequenceSetProperties() - { - jalview.schemabinding.version2.SequenceSetProperties[] array = new jalview.schemabinding.version2.SequenceSetProperties[0]; - return (jalview.schemabinding.version2.SequenceSetProperties[]) this._sequenceSetPropertiesList - .toArray(array); - } - - /** - * Method getSequenceSetPropertiesCount. - * - * @return the size of this collection - */ - public int getSequenceSetPropertiesCount() - { - return this._sequenceSetPropertiesList.size(); - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Method removeAlcodonFrame. - * - * @param vAlcodonFrame - * @return true if the object was removed from the collection. - */ - public boolean removeAlcodonFrame( - final jalview.schemabinding.version2.AlcodonFrame vAlcodonFrame) - { - boolean removed = _alcodonFrameList.remove(vAlcodonFrame); - return removed; - } - - /** - * Method removeAlcodonFrameAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.AlcodonFrame removeAlcodonFrameAt( - final int index) - { - java.lang.Object obj = this._alcodonFrameList.remove(index); - return (jalview.schemabinding.version2.AlcodonFrame) obj; - } - - /** - */ - public void removeAllAlcodonFrame() - { - this._alcodonFrameList.clear(); - } - - /** - */ - public void removeAllAnnotation() - { - this._annotationList.clear(); - } - - /** - */ - public void removeAllSequence() - { - this._sequenceList.clear(); - } - - /** - */ - public void removeAllSequenceSetProperties() - { - this._sequenceSetPropertiesList.clear(); - } - - /** - * Method removeAnnotation. - * - * @param vAnnotation - * @return true if the object was removed from the collection. - */ - public boolean removeAnnotation( - final jalview.schemabinding.version2.Annotation vAnnotation) - { - boolean removed = _annotationList.remove(vAnnotation); - return removed; - } - - /** - * Method removeAnnotationAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.Annotation removeAnnotationAt( - final int index) - { - java.lang.Object obj = this._annotationList.remove(index); - return (jalview.schemabinding.version2.Annotation) obj; - } - - /** - * Method removeSequence. - * - * @param vSequence - * @return true if the object was removed from the collection. - */ - public boolean removeSequence( - final jalview.schemabinding.version2.Sequence vSequence) - { - boolean removed = _sequenceList.remove(vSequence); - return removed; - } - - /** - * Method removeSequenceAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.Sequence removeSequenceAt( - final int index) - { - java.lang.Object obj = this._sequenceList.remove(index); - return (jalview.schemabinding.version2.Sequence) obj; - } - - /** - * Method removeSequenceSetProperties. - * - * @param vSequenceSetProperties - * @return true if the object was removed from the collection. - */ - public boolean removeSequenceSetProperties( - final jalview.schemabinding.version2.SequenceSetProperties vSequenceSetProperties) - { - boolean removed = _sequenceSetPropertiesList - .remove(vSequenceSetProperties); - return removed; - } - - /** - * Method removeSequenceSetPropertiesAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.SequenceSetProperties removeSequenceSetPropertiesAt( - final int index) - { - java.lang.Object obj = this._sequenceSetPropertiesList.remove(index); - return (jalview.schemabinding.version2.SequenceSetProperties) obj; - } - - /** - * - * - * @param index - * @param vAlcodonFrame - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setAlcodonFrame(final int index, - final jalview.schemabinding.version2.AlcodonFrame vAlcodonFrame) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._alcodonFrameList.size()) - { - throw new IndexOutOfBoundsException("setAlcodonFrame: Index value '" - + index + "' not in range [0.." - + (this._alcodonFrameList.size() - 1) + "]"); - } - - this._alcodonFrameList.set(index, vAlcodonFrame); - } - - /** - * - * - * @param vAlcodonFrameArray - */ - public void setAlcodonFrame( - final jalview.schemabinding.version2.AlcodonFrame[] vAlcodonFrameArray) - { - // -- copy array - _alcodonFrameList.clear(); - - for (int i = 0; i < vAlcodonFrameArray.length; i++) - { - this._alcodonFrameList.add(vAlcodonFrameArray[i]); - } - } - - /** - * - * - * @param index - * @param vAnnotation - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setAnnotation(final int index, - final jalview.schemabinding.version2.Annotation vAnnotation) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._annotationList.size()) - { - throw new IndexOutOfBoundsException("setAnnotation: Index value '" - + index + "' not in range [0.." - + (this._annotationList.size() - 1) + "]"); - } - - this._annotationList.set(index, vAnnotation); - } - - /** - * - * - * @param vAnnotationArray - */ - public void setAnnotation( - final jalview.schemabinding.version2.Annotation[] vAnnotationArray) - { - // -- copy array - _annotationList.clear(); - - for (int i = 0; i < vAnnotationArray.length; i++) - { - this._annotationList.add(vAnnotationArray[i]); - } - } - - /** - * Sets the value of field 'datasetId'. The field 'datasetId' has the - * following description: reference to set where jalview will gather the - * dataset sequences for all sequences in the set. - * - * - * @param datasetId - * the value of field 'datasetId'. - */ - public void setDatasetId(final java.lang.String datasetId) - { - this._datasetId = datasetId; - } - - /** - * Sets the value of field 'gapChar'. - * - * @param gapChar - * the value of field 'gapChar'. - */ - public void setGapChar(final java.lang.String gapChar) - { - this._gapChar = gapChar; - } - - /** - * - * - * @param index - * @param vSequence - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setSequence(final int index, - final jalview.schemabinding.version2.Sequence vSequence) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._sequenceList.size()) - { - throw new IndexOutOfBoundsException("setSequence: Index value '" - + index + "' not in range [0.." - + (this._sequenceList.size() - 1) + "]"); - } - - this._sequenceList.set(index, vSequence); - } - - /** - * - * - * @param vSequenceArray - */ - public void setSequence( - final jalview.schemabinding.version2.Sequence[] vSequenceArray) - { - // -- copy array - _sequenceList.clear(); - - for (int i = 0; i < vSequenceArray.length; i++) - { - this._sequenceList.add(vSequenceArray[i]); - } - } - - /** - * - * - * @param index - * @param vSequenceSetProperties - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setSequenceSetProperties( - final int index, - final jalview.schemabinding.version2.SequenceSetProperties vSequenceSetProperties) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._sequenceSetPropertiesList.size()) - { - throw new IndexOutOfBoundsException( - "setSequenceSetProperties: Index value '" + index - + "' not in range [0.." - + (this._sequenceSetPropertiesList.size() - 1) + "]"); - } - - this._sequenceSetPropertiesList.set(index, vSequenceSetProperties); - } - - /** - * - * - * @param vSequenceSetPropertiesArray - */ - public void setSequenceSetProperties( - final jalview.schemabinding.version2.SequenceSetProperties[] vSequenceSetPropertiesArray) - { - // -- copy array - _sequenceSetPropertiesList.clear(); - - for (int i = 0; i < vSequenceSetPropertiesArray.length; i++) - { - this._sequenceSetPropertiesList.add(vSequenceSetPropertiesArray[i]); - } - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.SequenceSet - */ - public static jalview.schemabinding.version2.SequenceSet unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.SequenceSet) Unmarshaller - .unmarshal(jalview.schemabinding.version2.SequenceSet.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/SequenceSetProperties.java b/src/jalview/schemabinding/version2/SequenceSetProperties.java deleted file mode 100644 index 3a7d172..0000000 --- a/src/jalview/schemabinding/version2/SequenceSetProperties.java +++ /dev/null @@ -1,183 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class SequenceSetProperties. - * - * @version $Revision$ $Date$ - */ -public class SequenceSetProperties implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _key. - */ - private java.lang.String _key; - - /** - * Field _value. - */ - private java.lang.String _value; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public SequenceSetProperties() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'key'. - * - * @return the value of field 'Key'. - */ - public java.lang.String getKey() - { - return this._key; - } - - /** - * Returns the value of field 'value'. - * - * @return the value of field 'Value'. - */ - public java.lang.String getValue() - { - return this._value; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'key'. - * - * @param key - * the value of field 'key'. - */ - public void setKey(final java.lang.String key) - { - this._key = key; - } - - /** - * Sets the value of field 'value'. - * - * @param value - * the value of field 'value'. - */ - public void setValue(final java.lang.String value) - { - this._value = value; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled - * jalview.schemabinding.version2.SequenceSetProperties - */ - public static jalview.schemabinding.version2.SequenceSetProperties unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.SequenceSetProperties) Unmarshaller - .unmarshal( - jalview.schemabinding.version2.SequenceSetProperties.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/SequenceType.java b/src/jalview/schemabinding/version2/SequenceType.java deleted file mode 100644 index f213ebb..0000000 --- a/src/jalview/schemabinding/version2/SequenceType.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class SequenceType. - * - * @version $Revision$ $Date$ - */ -public class SequenceType implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _id. - */ - private java.lang.String _id; - - /** - * Field _description. - */ - private java.lang.String _description; - - /** - * Field _sequence. - */ - private java.lang.String _sequence; - - /** - * Field _name. - */ - private java.lang.String _name; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public SequenceType() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'description'. - * - * @return the value of field 'Description'. - */ - public java.lang.String getDescription() - { - return this._description; - } - - /** - * Returns the value of field 'id'. - * - * @return the value of field 'Id'. - */ - public java.lang.String getId() - { - return this._id; - } - - /** - * Returns the value of field 'name'. - * - * @return the value of field 'Name'. - */ - public java.lang.String getName() - { - return this._name; - } - - /** - * Returns the value of field 'sequence'. - * - * @return the value of field 'Sequence'. - */ - public java.lang.String getSequence() - { - return this._sequence; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'description'. - * - * @param description - * the value of field 'description'. - */ - public void setDescription(final java.lang.String description) - { - this._description = description; - } - - /** - * Sets the value of field 'id'. - * - * @param id - * the value of field 'id'. - */ - public void setId(final java.lang.String id) - { - this._id = id; - } - - /** - * Sets the value of field 'name'. - * - * @param name - * the value of field 'name'. - */ - public void setName(final java.lang.String name) - { - this._name = name; - } - - /** - * Sets the value of field 'sequence'. - * - * @param sequence - * the value of field 'sequence'. - */ - public void setSequence(final java.lang.String sequence) - { - this._sequence = sequence; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.SequenceType - */ - public static jalview.schemabinding.version2.SequenceType unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.SequenceType) Unmarshaller - .unmarshal(jalview.schemabinding.version2.SequenceType.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/Setting.java b/src/jalview/schemabinding/version2/Setting.java deleted file mode 100644 index 59e9522..0000000 --- a/src/jalview/schemabinding/version2/Setting.java +++ /dev/null @@ -1,923 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Setting. - * - * @version $Revision$ $Date$ - */ -public class Setting implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _type. - */ - private java.lang.String _type; - - /** - * Field _colour. - */ - private int _colour; - - /** - * keeps track of state for field: _colour - */ - private boolean _has_colour; - - /** - * Field _display. - */ - private boolean _display; - - /** - * keeps track of state for field: _display - */ - private boolean _has_display; - - /** - * Field _order. - */ - private float _order; - - /** - * keeps track of state for field: _order - */ - private boolean _has_order; - - /** - * Optional minimum colour for graduated feature colour - * - */ - private int _mincolour; - - /** - * keeps track of state for field: _mincolour - */ - private boolean _has_mincolour; - - /** - * Field _noValueColour. - */ - private jalview.schemabinding.version2.types.NoValueColour _noValueColour = jalview.schemabinding.version2.types.NoValueColour - .valueOf("Min"); - - /** - * threshold value for graduated feature colour - * - */ - private float _threshold; - - /** - * keeps track of state for field: _threshold - */ - private boolean _has_threshold; - - /** - * threshold type for graduated feature colour - * - */ - private int _threshstate; - - /** - * keeps track of state for field: _threshstate - */ - private boolean _has_threshstate; - - /** - * Field _max. - */ - private float _max; - - /** - * keeps track of state for field: _max - */ - private boolean _has_max; - - /** - * Field _min. - */ - private float _min; - - /** - * keeps track of state for field: _min - */ - private boolean _has_min; - - /** - * Field _colourByLabel. - */ - private boolean _colourByLabel; - - /** - * keeps track of state for field: _colourByLabel - */ - private boolean _has_colourByLabel; - - /** - * Field _autoScale. - */ - private boolean _autoScale; - - /** - * keeps track of state for field: _autoScale - */ - private boolean _has_autoScale; - - /** - * name of feature attribute to colour by, or attribute and sub-attribute - */ - private java.util.Vector _attributeNameList; - - /** - * optional filter(s) applied to the feature type - */ - private jalview.schemabinding.version2.MatcherSet _matcherSet; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Setting() - { - super(); - setNoValueColour(jalview.schemabinding.version2.types.NoValueColour - .valueOf("Min")); - this._attributeNameList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vAttributeName - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAttributeName(final java.lang.String vAttributeName) - throws java.lang.IndexOutOfBoundsException - { - // check for the maximum size - if (this._attributeNameList.size() >= 2) - { - throw new IndexOutOfBoundsException( - "addAttributeName has a maximum of 2"); - } - - this._attributeNameList.addElement(vAttributeName); - } - - /** - * - * - * @param index - * @param vAttributeName - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addAttributeName(final int index, - final java.lang.String vAttributeName) - throws java.lang.IndexOutOfBoundsException - { - // check for the maximum size - if (this._attributeNameList.size() >= 2) - { - throw new IndexOutOfBoundsException( - "addAttributeName has a maximum of 2"); - } - - this._attributeNameList.add(index, vAttributeName); - } - - /** - */ - public void deleteAutoScale() - { - this._has_autoScale = false; - } - - /** - */ - public void deleteColour() - { - this._has_colour = false; - } - - /** - */ - public void deleteColourByLabel() - { - this._has_colourByLabel = false; - } - - /** - */ - public void deleteDisplay() - { - this._has_display = false; - } - - /** - */ - public void deleteMax() - { - this._has_max = false; - } - - /** - */ - public void deleteMin() - { - this._has_min = false; - } - - /** - */ - public void deleteMincolour() - { - this._has_mincolour = false; - } - - /** - */ - public void deleteOrder() - { - this._has_order = false; - } - - /** - */ - public void deleteThreshold() - { - this._has_threshold = false; - } - - /** - */ - public void deleteThreshstate() - { - this._has_threshstate = false; - } - - /** - * Method enumerateAttributeName. - * - * @return an Enumeration over all java.lang.String elements - */ - public java.util.Enumeration enumerateAttributeName() - { - return this._attributeNameList.elements(); - } - - /** - * Method getAttributeName. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the java.lang.String at the given index - */ - public java.lang.String getAttributeName(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._attributeNameList.size()) - { - throw new IndexOutOfBoundsException("getAttributeName: Index value '" - + index + "' not in range [0.." - + (this._attributeNameList.size() - 1) + "]"); - } - - return (java.lang.String) _attributeNameList.get(index); - } - - /** - * Method getAttributeName.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.String[] getAttributeName() - { - java.lang.String[] array = new java.lang.String[0]; - return (java.lang.String[]) this._attributeNameList.toArray(array); - } - - /** - * Method getAttributeNameCount. - * - * @return the size of this collection - */ - public int getAttributeNameCount() - { - return this._attributeNameList.size(); - } - - /** - * Returns the value of field 'autoScale'. - * - * @return the value of field 'AutoScale'. - */ - public boolean getAutoScale() - { - return this._autoScale; - } - - /** - * Returns the value of field 'colour'. - * - * @return the value of field 'Colour'. - */ - public int getColour() - { - return this._colour; - } - - /** - * Returns the value of field 'colourByLabel'. - * - * @return the value of field 'ColourByLabel'. - */ - public boolean getColourByLabel() - { - return this._colourByLabel; - } - - /** - * Returns the value of field 'display'. - * - * @return the value of field 'Display'. - */ - public boolean getDisplay() - { - return this._display; - } - - /** - * Returns the value of field 'matcherSet'. The field 'matcherSet' has the - * following description: optional filter(s) applied to the feature type - * - * @return the value of field 'MatcherSet'. - */ - public jalview.schemabinding.version2.MatcherSet getMatcherSet() - { - return this._matcherSet; - } - - /** - * Returns the value of field 'max'. - * - * @return the value of field 'Max'. - */ - public float getMax() - { - return this._max; - } - - /** - * Returns the value of field 'min'. - * - * @return the value of field 'Min'. - */ - public float getMin() - { - return this._min; - } - - /** - * Returns the value of field 'mincolour'. The field 'mincolour' has the - * following description: Optional minimum colour for graduated feature colour - * - * - * @return the value of field 'Mincolour'. - */ - public int getMincolour() - { - return this._mincolour; - } - - /** - * Returns the value of field 'noValueColour'. - * - * @return the value of field 'NoValueColour'. - */ - public jalview.schemabinding.version2.types.NoValueColour getNoValueColour() - { - return this._noValueColour; - } - - /** - * Returns the value of field 'order'. - * - * @return the value of field 'Order'. - */ - public float getOrder() - { - return this._order; - } - - /** - * Returns the value of field 'threshold'. The field 'threshold' has the - * following description: threshold value for graduated feature colour - * - * - * @return the value of field 'Threshold'. - */ - public float getThreshold() - { - return this._threshold; - } - - /** - * Returns the value of field 'threshstate'. The field 'threshstate' has the - * following description: threshold type for graduated feature colour - * - * - * @return the value of field 'Threshstate'. - */ - public int getThreshstate() - { - return this._threshstate; - } - - /** - * Returns the value of field 'type'. - * - * @return the value of field 'Type'. - */ - public java.lang.String getType() - { - return this._type; - } - - /** - * Method hasAutoScale. - * - * @return true if at least one AutoScale has been added - */ - public boolean hasAutoScale() - { - return this._has_autoScale; - } - - /** - * Method hasColour. - * - * @return true if at least one Colour has been added - */ - public boolean hasColour() - { - return this._has_colour; - } - - /** - * Method hasColourByLabel. - * - * @return true if at least one ColourByLabel has been added - */ - public boolean hasColourByLabel() - { - return this._has_colourByLabel; - } - - /** - * Method hasDisplay. - * - * @return true if at least one Display has been added - */ - public boolean hasDisplay() - { - return this._has_display; - } - - /** - * Method hasMax. - * - * @return true if at least one Max has been added - */ - public boolean hasMax() - { - return this._has_max; - } - - /** - * Method hasMin. - * - * @return true if at least one Min has been added - */ - public boolean hasMin() - { - return this._has_min; - } - - /** - * Method hasMincolour. - * - * @return true if at least one Mincolour has been added - */ - public boolean hasMincolour() - { - return this._has_mincolour; - } - - /** - * Method hasOrder. - * - * @return true if at least one Order has been added - */ - public boolean hasOrder() - { - return this._has_order; - } - - /** - * Method hasThreshold. - * - * @return true if at least one Threshold has been added - */ - public boolean hasThreshold() - { - return this._has_threshold; - } - - /** - * Method hasThreshstate. - * - * @return true if at least one Threshstate has been added - */ - public boolean hasThreshstate() - { - return this._has_threshstate; - } - - /** - * Returns the value of field 'autoScale'. - * - * @return the value of field 'AutoScale'. - */ - public boolean isAutoScale() - { - return this._autoScale; - } - - /** - * Returns the value of field 'colourByLabel'. - * - * @return the value of field 'ColourByLabel'. - */ - public boolean isColourByLabel() - { - return this._colourByLabel; - } - - /** - * Returns the value of field 'display'. - * - * @return the value of field 'Display'. - */ - public boolean isDisplay() - { - return this._display; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllAttributeName() - { - this._attributeNameList.clear(); - } - - /** - * Method removeAttributeName. - * - * @param vAttributeName - * @return true if the object was removed from the collection. - */ - public boolean removeAttributeName(final java.lang.String vAttributeName) - { - boolean removed = _attributeNameList.remove(vAttributeName); - return removed; - } - - /** - * Method removeAttributeNameAt. - * - * @param index - * @return the element removed from the collection - */ - public java.lang.String removeAttributeNameAt(final int index) - { - java.lang.Object obj = this._attributeNameList.remove(index); - return (java.lang.String) obj; - } - - /** - * - * - * @param index - * @param vAttributeName - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setAttributeName(final int index, - final java.lang.String vAttributeName) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._attributeNameList.size()) - { - throw new IndexOutOfBoundsException("setAttributeName: Index value '" - + index + "' not in range [0.." - + (this._attributeNameList.size() - 1) + "]"); - } - - this._attributeNameList.set(index, vAttributeName); - } - - /** - * - * - * @param vAttributeNameArray - */ - public void setAttributeName(final java.lang.String[] vAttributeNameArray) - { - // -- copy array - _attributeNameList.clear(); - - for (int i = 0; i < vAttributeNameArray.length; i++) - { - this._attributeNameList.add(vAttributeNameArray[i]); - } - } - - /** - * Sets the value of field 'autoScale'. - * - * @param autoScale - * the value of field 'autoScale'. - */ - public void setAutoScale(final boolean autoScale) - { - this._autoScale = autoScale; - this._has_autoScale = true; - } - - /** - * Sets the value of field 'colour'. - * - * @param colour - * the value of field 'colour'. - */ - public void setColour(final int colour) - { - this._colour = colour; - this._has_colour = true; - } - - /** - * Sets the value of field 'colourByLabel'. - * - * @param colourByLabel - * the value of field 'colourByLabel'. - */ - public void setColourByLabel(final boolean colourByLabel) - { - this._colourByLabel = colourByLabel; - this._has_colourByLabel = true; - } - - /** - * Sets the value of field 'display'. - * - * @param display - * the value of field 'display'. - */ - public void setDisplay(final boolean display) - { - this._display = display; - this._has_display = true; - } - - /** - * Sets the value of field 'matcherSet'. The field 'matcherSet' has the - * following description: optional filter(s) applied to the feature type - * - * @param matcherSet - * the value of field 'matcherSet'. - */ - public void setMatcherSet( - final jalview.schemabinding.version2.MatcherSet matcherSet) - { - this._matcherSet = matcherSet; - } - - /** - * Sets the value of field 'max'. - * - * @param max - * the value of field 'max'. - */ - public void setMax(final float max) - { - this._max = max; - this._has_max = true; - } - - /** - * Sets the value of field 'min'. - * - * @param min - * the value of field 'min'. - */ - public void setMin(final float min) - { - this._min = min; - this._has_min = true; - } - - /** - * Sets the value of field 'mincolour'. The field 'mincolour' has the - * following description: Optional minimum colour for graduated feature colour - * - * - * @param mincolour - * the value of field 'mincolour'. - */ - public void setMincolour(final int mincolour) - { - this._mincolour = mincolour; - this._has_mincolour = true; - } - - /** - * Sets the value of field 'noValueColour'. - * - * @param noValueColour - * the value of field 'noValueColour'. - */ - public void setNoValueColour( - final jalview.schemabinding.version2.types.NoValueColour noValueColour) - { - this._noValueColour = noValueColour; - } - - /** - * Sets the value of field 'order'. - * - * @param order - * the value of field 'order'. - */ - public void setOrder(final float order) - { - this._order = order; - this._has_order = true; - } - - /** - * Sets the value of field 'threshold'. The field 'threshold' has the - * following description: threshold value for graduated feature colour - * - * - * @param threshold - * the value of field 'threshold'. - */ - public void setThreshold(final float threshold) - { - this._threshold = threshold; - this._has_threshold = true; - } - - /** - * Sets the value of field 'threshstate'. The field 'threshstate' has the - * following description: threshold type for graduated feature colour - * - * - * @param threshstate - * the value of field 'threshstate'. - */ - public void setThreshstate(final int threshstate) - { - this._threshstate = threshstate; - this._has_threshstate = true; - } - - /** - * Sets the value of field 'type'. - * - * @param type - * the value of field 'type'. - */ - public void setType(final java.lang.String type) - { - this._type = type; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.Settin - */ - public static jalview.schemabinding.version2.Setting unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.Setting) Unmarshaller.unmarshal( - jalview.schemabinding.version2.Setting.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/StructureState.java b/src/jalview/schemabinding/version2/StructureState.java deleted file mode 100644 index 186e4e6..0000000 --- a/src/jalview/schemabinding/version2/StructureState.java +++ /dev/null @@ -1,706 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class StructureState. - * - * @version $Revision$ $Date$ - */ -public class StructureState implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * internal content storage - */ - private java.lang.String _content = ""; - - /** - * Field _visible. - */ - private boolean _visible; - - /** - * keeps track of state for field: _visible - */ - private boolean _has_visible; - - /** - * additional identifier which properly disambiguates the structure view from - * any other view with the same attributes. This is not an ID, because it is - * possible to have many references to the same physical structure view from - * different sequences in an alignment. A structureState element citing the - * same viewId will appear for each instance. - * - */ - private java.lang.String _viewId; - - /** - * Flag set if the alignment panel containing this JSeq should be included in - * those used to perform a structure superposition (since Jalview 2.7). - * - */ - private boolean _alignwithAlignPanel = true; - - /** - * keeps track of state for field: _alignwithAlignPanel - */ - private boolean _has_alignwithAlignPanel; - - /** - * Flag set if the alignment panel containing this JSeq should be included in - * those used to colour its associated sequences in this structureState(since - * Jalview 2.7). - * - */ - private boolean _colourwithAlignPanel = false; - - /** - * keeps track of state for field: _colourwithAlignPanel - */ - private boolean _has_colourwithAlignPanel; - - /** - * Flag set if the structure display is coloured by the Jmol state, rather - * than by one or more linked alignment views. - * - */ - private boolean _colourByJmol = true; - - /** - * keeps track of state for field: _colourByJmol - */ - private boolean _has_colourByJmol; - - /** - * An identifier for the viewer type, currently either JMOL or CHIMERA - * - */ - private java.lang.String _type; - - /** - * Field _width. - */ - private int _width; - - /** - * keeps track of state for field: _width - */ - private boolean _has_width; - - /** - * Field _height. - */ - private int _height; - - /** - * keeps track of state for field: _height - */ - private boolean _has_height; - - /** - * Field _xpos. - */ - private int _xpos; - - /** - * keeps track of state for field: _xpos - */ - private boolean _has_xpos; - - /** - * Field _ypos. - */ - private int _ypos; - - /** - * keeps track of state for field: _ypos - */ - private boolean _has_ypos; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public StructureState() - { - super(); - setContent(""); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - */ - public void deleteAlignwithAlignPanel() - { - this._has_alignwithAlignPanel = false; - } - - /** - */ - public void deleteColourByJmol() - { - this._has_colourByJmol = false; - } - - /** - */ - public void deleteColourwithAlignPanel() - { - this._has_colourwithAlignPanel = false; - } - - /** - */ - public void deleteHeight() - { - this._has_height = false; - } - - /** - */ - public void deleteVisible() - { - this._has_visible = false; - } - - /** - */ - public void deleteWidth() - { - this._has_width = false; - } - - /** - */ - public void deleteXpos() - { - this._has_xpos = false; - } - - /** - */ - public void deleteYpos() - { - this._has_ypos = false; - } - - /** - * Returns the value of field 'alignwithAlignPanel'. The field - * 'alignwithAlignPanel' has the following description: Flag set if the - * alignment panel containing this JSeq should be included in those used to - * perform a structure superposition (since Jalview 2.7). - * - * - * @return the value of field 'AlignwithAlignPanel'. - */ - public boolean getAlignwithAlignPanel() - { - return this._alignwithAlignPanel; - } - - /** - * Returns the value of field 'colourByJmol'. The field 'colourByJmol' has the - * following description: Flag set if the structure display is coloured by the - * Jmol state, rather than by one or more linked alignment views. - * - * - * @return the value of field 'ColourByJmol'. - */ - public boolean getColourByJmol() - { - return this._colourByJmol; - } - - /** - * Returns the value of field 'colourwithAlignPanel'. The field - * 'colourwithAlignPanel' has the following description: Flag set if the - * alignment panel containing this JSeq should be included in those used to - * colour its associated sequences in this structureState(since Jalview 2.7). - * - * - * @return the value of field 'ColourwithAlignPanel'. - */ - public boolean getColourwithAlignPanel() - { - return this._colourwithAlignPanel; - } - - /** - * Returns the value of field 'content'. The field 'content' has the following - * description: internal content storage - * - * @return the value of field 'Content'. - */ - public java.lang.String getContent() - { - return this._content; - } - - /** - * Returns the value of field 'height'. - * - * @return the value of field 'Height'. - */ - public int getHeight() - { - return this._height; - } - - /** - * Returns the value of field 'type'. The field 'type' has the following - * description: An identifier for the viewer type, currently either JMOL or - * CHIMERA - * - * - * @return the value of field 'Type'. - */ - public java.lang.String getType() - { - return this._type; - } - - /** - * Returns the value of field 'viewId'. The field 'viewId' has the following - * description: additional identifier which properly disambiguates the - * structure view from any other view with the same attributes. This is not an - * ID, because it is possible to have many references to the same physical - * structure view from different sequences in an alignment. A structureState - * element citing the same viewId will appear for each instance. - * - * - * @return the value of field 'ViewId'. - */ - public java.lang.String getViewId() - { - return this._viewId; - } - - /** - * Returns the value of field 'visible'. - * - * @return the value of field 'Visible'. - */ - public boolean getVisible() - { - return this._visible; - } - - /** - * Returns the value of field 'width'. - * - * @return the value of field 'Width'. - */ - public int getWidth() - { - return this._width; - } - - /** - * Returns the value of field 'xpos'. - * - * @return the value of field 'Xpos'. - */ - public int getXpos() - { - return this._xpos; - } - - /** - * Returns the value of field 'ypos'. - * - * @return the value of field 'Ypos'. - */ - public int getYpos() - { - return this._ypos; - } - - /** - * Method hasAlignwithAlignPanel. - * - * @return true if at least one AlignwithAlignPanel has been added - */ - public boolean hasAlignwithAlignPanel() - { - return this._has_alignwithAlignPanel; - } - - /** - * Method hasColourByJmol. - * - * @return true if at least one ColourByJmol has been added - */ - public boolean hasColourByJmol() - { - return this._has_colourByJmol; - } - - /** - * Method hasColourwithAlignPanel. - * - * @return true if at least one ColourwithAlignPanel has been added - */ - public boolean hasColourwithAlignPanel() - { - return this._has_colourwithAlignPanel; - } - - /** - * Method hasHeight. - * - * @return true if at least one Height has been added - */ - public boolean hasHeight() - { - return this._has_height; - } - - /** - * Method hasVisible. - * - * @return true if at least one Visible has been added - */ - public boolean hasVisible() - { - return this._has_visible; - } - - /** - * Method hasWidth. - * - * @return true if at least one Width has been added - */ - public boolean hasWidth() - { - return this._has_width; - } - - /** - * Method hasXpos. - * - * @return true if at least one Xpos has been added - */ - public boolean hasXpos() - { - return this._has_xpos; - } - - /** - * Method hasYpos. - * - * @return true if at least one Ypos has been added - */ - public boolean hasYpos() - { - return this._has_ypos; - } - - /** - * Returns the value of field 'alignwithAlignPanel'. The field - * 'alignwithAlignPanel' has the following description: Flag set if the - * alignment panel containing this JSeq should be included in those used to - * perform a structure superposition (since Jalview 2.7). - * - * - * @return the value of field 'AlignwithAlignPanel'. - */ - public boolean isAlignwithAlignPanel() - { - return this._alignwithAlignPanel; - } - - /** - * Returns the value of field 'colourByJmol'. The field 'colourByJmol' has the - * following description: Flag set if the structure display is coloured by the - * Jmol state, rather than by one or more linked alignment views. - * - * - * @return the value of field 'ColourByJmol'. - */ - public boolean isColourByJmol() - { - return this._colourByJmol; - } - - /** - * Returns the value of field 'colourwithAlignPanel'. The field - * 'colourwithAlignPanel' has the following description: Flag set if the - * alignment panel containing this JSeq should be included in those used to - * colour its associated sequences in this structureState(since Jalview 2.7). - * - * - * @return the value of field 'ColourwithAlignPanel'. - */ - public boolean isColourwithAlignPanel() - { - return this._colourwithAlignPanel; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * Returns the value of field 'visible'. - * - * @return the value of field 'Visible'. - */ - public boolean isVisible() - { - return this._visible; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'alignwithAlignPanel'. The field - * 'alignwithAlignPanel' has the following description: Flag set if the - * alignment panel containing this JSeq should be included in those used to - * perform a structure superposition (since Jalview 2.7). - * - * - * @param alignwithAlignPanel - * the value of field 'alignwithAlignPanel'. - */ - public void setAlignwithAlignPanel(final boolean alignwithAlignPanel) - { - this._alignwithAlignPanel = alignwithAlignPanel; - this._has_alignwithAlignPanel = true; - } - - /** - * Sets the value of field 'colourByJmol'. The field 'colourByJmol' has the - * following description: Flag set if the structure display is coloured by the - * Jmol state, rather than by one or more linked alignment views. - * - * - * @param colourByJmol - * the value of field 'colourByJmol'. - */ - public void setColourByJmol(final boolean colourByJmol) - { - this._colourByJmol = colourByJmol; - this._has_colourByJmol = true; - } - - /** - * Sets the value of field 'colourwithAlignPanel'. The field - * 'colourwithAlignPanel' has the following description: Flag set if the - * alignment panel containing this JSeq should be included in those used to - * colour its associated sequences in this structureState(since Jalview 2.7). - * - * - * @param colourwithAlignPanel - * the value of field 'colourwithAlignPanel'. - */ - public void setColourwithAlignPanel(final boolean colourwithAlignPanel) - { - this._colourwithAlignPanel = colourwithAlignPanel; - this._has_colourwithAlignPanel = true; - } - - /** - * Sets the value of field 'content'. The field 'content' has the following - * description: internal content storage - * - * @param content - * the value of field 'content'. - */ - public void setContent(final java.lang.String content) - { - this._content = content; - } - - /** - * Sets the value of field 'height'. - * - * @param height - * the value of field 'height'. - */ - public void setHeight(final int height) - { - this._height = height; - this._has_height = true; - } - - /** - * Sets the value of field 'type'. The field 'type' has the following - * description: An identifier for the viewer type, currently either JMOL or - * CHIMERA - * - * - * @param type - * the value of field 'type'. - */ - public void setType(final java.lang.String type) - { - this._type = type; - } - - /** - * Sets the value of field 'viewId'. The field 'viewId' has the following - * description: additional identifier which properly disambiguates the - * structure view from any other view with the same attributes. This is not an - * ID, because it is possible to have many references to the same physical - * structure view from different sequences in an alignment. A structureState - * element citing the same viewId will appear for each instance. - * - * - * @param viewId - * the value of field 'viewId'. - */ - public void setViewId(final java.lang.String viewId) - { - this._viewId = viewId; - } - - /** - * Sets the value of field 'visible'. - * - * @param visible - * the value of field 'visible'. - */ - public void setVisible(final boolean visible) - { - this._visible = visible; - this._has_visible = true; - } - - /** - * Sets the value of field 'width'. - * - * @param width - * the value of field 'width'. - */ - public void setWidth(final int width) - { - this._width = width; - this._has_width = true; - } - - /** - * Sets the value of field 'xpos'. - * - * @param xpos - * the value of field 'xpos'. - */ - public void setXpos(final int xpos) - { - this._xpos = xpos; - this._has_xpos = true; - } - - /** - * Sets the value of field 'ypos'. - * - * @param ypos - * the value of field 'ypos'. - */ - public void setYpos(final int ypos) - { - this._ypos = ypos; - this._has_ypos = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.StructureState - */ - public static jalview.schemabinding.version2.StructureState unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.StructureState) Unmarshaller - .unmarshal(jalview.schemabinding.version2.StructureState.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/ThresholdLine.java b/src/jalview/schemabinding/version2/ThresholdLine.java deleted file mode 100644 index d70d855..0000000 --- a/src/jalview/schemabinding/version2/ThresholdLine.java +++ /dev/null @@ -1,253 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class ThresholdLine. - * - * @version $Revision$ $Date$ - */ -public class ThresholdLine implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _label. - */ - private java.lang.String _label; - - /** - * Field _value. - */ - private float _value; - - /** - * keeps track of state for field: _value - */ - private boolean _has_value; - - /** - * Field _colour. - */ - private int _colour; - - /** - * keeps track of state for field: _colour - */ - private boolean _has_colour; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public ThresholdLine() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - */ - public void deleteColour() - { - this._has_colour = false; - } - - /** - */ - public void deleteValue() - { - this._has_value = false; - } - - /** - * Returns the value of field 'colour'. - * - * @return the value of field 'Colour'. - */ - public int getColour() - { - return this._colour; - } - - /** - * Returns the value of field 'label'. - * - * @return the value of field 'Label'. - */ - public java.lang.String getLabel() - { - return this._label; - } - - /** - * Returns the value of field 'value'. - * - * @return the value of field 'Value'. - */ - public float getValue() - { - return this._value; - } - - /** - * Method hasColour. - * - * @return true if at least one Colour has been added - */ - public boolean hasColour() - { - return this._has_colour; - } - - /** - * Method hasValue. - * - * @return true if at least one Value has been added - */ - public boolean hasValue() - { - return this._has_value; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'colour'. - * - * @param colour - * the value of field 'colour'. - */ - public void setColour(final int colour) - { - this._colour = colour; - this._has_colour = true; - } - - /** - * Sets the value of field 'label'. - * - * @param label - * the value of field 'label'. - */ - public void setLabel(final java.lang.String label) - { - this._label = label; - } - - /** - * Sets the value of field 'value'. - * - * @param value - * the value of field 'value'. - */ - public void setValue(final float value) - { - this._value = value; - this._has_value = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.ThresholdLine - */ - public static jalview.schemabinding.version2.ThresholdLine unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.ThresholdLine) Unmarshaller - .unmarshal(jalview.schemabinding.version2.ThresholdLine.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/Tree.java b/src/jalview/schemabinding/version2/Tree.java deleted file mode 100644 index 19b3eb1..0000000 --- a/src/jalview/schemabinding/version2/Tree.java +++ /dev/null @@ -1,878 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Tree. - * - * @version $Revision$ $Date$ - */ -public class Tree implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _fontName. - */ - private java.lang.String _fontName; - - /** - * Field _fontSize. - */ - private int _fontSize; - - /** - * keeps track of state for field: _fontSize - */ - private boolean _has_fontSize; - - /** - * Field _fontStyle. - */ - private int _fontStyle; - - /** - * keeps track of state for field: _fontStyle - */ - private boolean _has_fontStyle; - - /** - * Field _threshold. - */ - private float _threshold; - - /** - * keeps track of state for field: _threshold - */ - private boolean _has_threshold; - - /** - * Field _showBootstrap. - */ - private boolean _showBootstrap; - - /** - * keeps track of state for field: _showBootstrap - */ - private boolean _has_showBootstrap; - - /** - * Field _showDistances. - */ - private boolean _showDistances; - - /** - * keeps track of state for field: _showDistances - */ - private boolean _has_showDistances; - - /** - * Field _markUnlinked. - */ - private boolean _markUnlinked; - - /** - * keeps track of state for field: _markUnlinked - */ - private boolean _has_markUnlinked; - - /** - * Field _fitToWindow. - */ - private boolean _fitToWindow; - - /** - * keeps track of state for field: _fitToWindow - */ - private boolean _has_fitToWindow; - - /** - * Field _currentTree. - */ - private boolean _currentTree; - - /** - * keeps track of state for field: _currentTree - */ - private boolean _has_currentTree; - - /** - * Tree ID added for binding tree visualization settings to vamsas document - * trees in jalview 2.4.1 - * - */ - private java.lang.String _id; - - /** - * Field _width. - */ - private int _width; - - /** - * keeps track of state for field: _width - */ - private boolean _has_width; - - /** - * Field _height. - */ - private int _height; - - /** - * keeps track of state for field: _height - */ - private boolean _has_height; - - /** - * Field _xpos. - */ - private int _xpos; - - /** - * keeps track of state for field: _xpos - */ - private boolean _has_xpos; - - /** - * Field _ypos. - */ - private int _ypos; - - /** - * keeps track of state for field: _ypos - */ - private boolean _has_ypos; - - /** - * Field _title. - */ - private java.lang.String _title; - - /** - * Field _newick. - */ - private java.lang.String _newick; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Tree() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - */ - public void deleteCurrentTree() - { - this._has_currentTree = false; - } - - /** - */ - public void deleteFitToWindow() - { - this._has_fitToWindow = false; - } - - /** - */ - public void deleteFontSize() - { - this._has_fontSize = false; - } - - /** - */ - public void deleteFontStyle() - { - this._has_fontStyle = false; - } - - /** - */ - public void deleteHeight() - { - this._has_height = false; - } - - /** - */ - public void deleteMarkUnlinked() - { - this._has_markUnlinked = false; - } - - /** - */ - public void deleteShowBootstrap() - { - this._has_showBootstrap = false; - } - - /** - */ - public void deleteShowDistances() - { - this._has_showDistances = false; - } - - /** - */ - public void deleteThreshold() - { - this._has_threshold = false; - } - - /** - */ - public void deleteWidth() - { - this._has_width = false; - } - - /** - */ - public void deleteXpos() - { - this._has_xpos = false; - } - - /** - */ - public void deleteYpos() - { - this._has_ypos = false; - } - - /** - * Returns the value of field 'currentTree'. - * - * @return the value of field 'CurrentTree'. - */ - public boolean getCurrentTree() - { - return this._currentTree; - } - - /** - * Returns the value of field 'fitToWindow'. - * - * @return the value of field 'FitToWindow'. - */ - public boolean getFitToWindow() - { - return this._fitToWindow; - } - - /** - * Returns the value of field 'fontName'. - * - * @return the value of field 'FontName'. - */ - public java.lang.String getFontName() - { - return this._fontName; - } - - /** - * Returns the value of field 'fontSize'. - * - * @return the value of field 'FontSize'. - */ - public int getFontSize() - { - return this._fontSize; - } - - /** - * Returns the value of field 'fontStyle'. - * - * @return the value of field 'FontStyle'. - */ - public int getFontStyle() - { - return this._fontStyle; - } - - /** - * Returns the value of field 'height'. - * - * @return the value of field 'Height'. - */ - public int getHeight() - { - return this._height; - } - - /** - * Returns the value of field 'id'. The field 'id' has the following - * description: Tree ID added for binding tree visualization settings to - * vamsas document trees in jalview 2.4.1 - * - * - * @return the value of field 'Id'. - */ - public java.lang.String getId() - { - return this._id; - } - - /** - * Returns the value of field 'markUnlinked'. - * - * @return the value of field 'MarkUnlinked'. - */ - public boolean getMarkUnlinked() - { - return this._markUnlinked; - } - - /** - * Returns the value of field 'newick'. - * - * @return the value of field 'Newick'. - */ - public java.lang.String getNewick() - { - return this._newick; - } - - /** - * Returns the value of field 'showBootstrap'. - * - * @return the value of field 'ShowBootstrap'. - */ - public boolean getShowBootstrap() - { - return this._showBootstrap; - } - - /** - * Returns the value of field 'showDistances'. - * - * @return the value of field 'ShowDistances'. - */ - public boolean getShowDistances() - { - return this._showDistances; - } - - /** - * Returns the value of field 'threshold'. - * - * @return the value of field 'Threshold'. - */ - public float getThreshold() - { - return this._threshold; - } - - /** - * Returns the value of field 'title'. - * - * @return the value of field 'Title'. - */ - public java.lang.String getTitle() - { - return this._title; - } - - /** - * Returns the value of field 'width'. - * - * @return the value of field 'Width'. - */ - public int getWidth() - { - return this._width; - } - - /** - * Returns the value of field 'xpos'. - * - * @return the value of field 'Xpos'. - */ - public int getXpos() - { - return this._xpos; - } - - /** - * Returns the value of field 'ypos'. - * - * @return the value of field 'Ypos'. - */ - public int getYpos() - { - return this._ypos; - } - - /** - * Method hasCurrentTree. - * - * @return true if at least one CurrentTree has been added - */ - public boolean hasCurrentTree() - { - return this._has_currentTree; - } - - /** - * Method hasFitToWindow. - * - * @return true if at least one FitToWindow has been added - */ - public boolean hasFitToWindow() - { - return this._has_fitToWindow; - } - - /** - * Method hasFontSize. - * - * @return true if at least one FontSize has been added - */ - public boolean hasFontSize() - { - return this._has_fontSize; - } - - /** - * Method hasFontStyle. - * - * @return true if at least one FontStyle has been added - */ - public boolean hasFontStyle() - { - return this._has_fontStyle; - } - - /** - * Method hasHeight. - * - * @return true if at least one Height has been added - */ - public boolean hasHeight() - { - return this._has_height; - } - - /** - * Method hasMarkUnlinked. - * - * @return true if at least one MarkUnlinked has been added - */ - public boolean hasMarkUnlinked() - { - return this._has_markUnlinked; - } - - /** - * Method hasShowBootstrap. - * - * @return true if at least one ShowBootstrap has been added - */ - public boolean hasShowBootstrap() - { - return this._has_showBootstrap; - } - - /** - * Method hasShowDistances. - * - * @return true if at least one ShowDistances has been added - */ - public boolean hasShowDistances() - { - return this._has_showDistances; - } - - /** - * Method hasThreshold. - * - * @return true if at least one Threshold has been added - */ - public boolean hasThreshold() - { - return this._has_threshold; - } - - /** - * Method hasWidth. - * - * @return true if at least one Width has been added - */ - public boolean hasWidth() - { - return this._has_width; - } - - /** - * Method hasXpos. - * - * @return true if at least one Xpos has been added - */ - public boolean hasXpos() - { - return this._has_xpos; - } - - /** - * Method hasYpos. - * - * @return true if at least one Ypos has been added - */ - public boolean hasYpos() - { - return this._has_ypos; - } - - /** - * Returns the value of field 'currentTree'. - * - * @return the value of field 'CurrentTree'. - */ - public boolean isCurrentTree() - { - return this._currentTree; - } - - /** - * Returns the value of field 'fitToWindow'. - * - * @return the value of field 'FitToWindow'. - */ - public boolean isFitToWindow() - { - return this._fitToWindow; - } - - /** - * Returns the value of field 'markUnlinked'. - * - * @return the value of field 'MarkUnlinked'. - */ - public boolean isMarkUnlinked() - { - return this._markUnlinked; - } - - /** - * Returns the value of field 'showBootstrap'. - * - * @return the value of field 'ShowBootstrap'. - */ - public boolean isShowBootstrap() - { - return this._showBootstrap; - } - - /** - * Returns the value of field 'showDistances'. - * - * @return the value of field 'ShowDistances'. - */ - public boolean isShowDistances() - { - return this._showDistances; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'currentTree'. - * - * @param currentTree - * the value of field 'currentTree'. - */ - public void setCurrentTree(final boolean currentTree) - { - this._currentTree = currentTree; - this._has_currentTree = true; - } - - /** - * Sets the value of field 'fitToWindow'. - * - * @param fitToWindow - * the value of field 'fitToWindow'. - */ - public void setFitToWindow(final boolean fitToWindow) - { - this._fitToWindow = fitToWindow; - this._has_fitToWindow = true; - } - - /** - * Sets the value of field 'fontName'. - * - * @param fontName - * the value of field 'fontName'. - */ - public void setFontName(final java.lang.String fontName) - { - this._fontName = fontName; - } - - /** - * Sets the value of field 'fontSize'. - * - * @param fontSize - * the value of field 'fontSize'. - */ - public void setFontSize(final int fontSize) - { - this._fontSize = fontSize; - this._has_fontSize = true; - } - - /** - * Sets the value of field 'fontStyle'. - * - * @param fontStyle - * the value of field 'fontStyle'. - */ - public void setFontStyle(final int fontStyle) - { - this._fontStyle = fontStyle; - this._has_fontStyle = true; - } - - /** - * Sets the value of field 'height'. - * - * @param height - * the value of field 'height'. - */ - public void setHeight(final int height) - { - this._height = height; - this._has_height = true; - } - - /** - * Sets the value of field 'id'. The field 'id' has the following description: - * Tree ID added for binding tree visualization settings to vamsas document - * trees in jalview 2.4.1 - * - * - * @param id - * the value of field 'id'. - */ - public void setId(final java.lang.String id) - { - this._id = id; - } - - /** - * Sets the value of field 'markUnlinked'. - * - * @param markUnlinked - * the value of field 'markUnlinked'. - */ - public void setMarkUnlinked(final boolean markUnlinked) - { - this._markUnlinked = markUnlinked; - this._has_markUnlinked = true; - } - - /** - * Sets the value of field 'newick'. - * - * @param newick - * the value of field 'newick'. - */ - public void setNewick(final java.lang.String newick) - { - this._newick = newick; - } - - /** - * Sets the value of field 'showBootstrap'. - * - * @param showBootstrap - * the value of field 'showBootstrap'. - */ - public void setShowBootstrap(final boolean showBootstrap) - { - this._showBootstrap = showBootstrap; - this._has_showBootstrap = true; - } - - /** - * Sets the value of field 'showDistances'. - * - * @param showDistances - * the value of field 'showDistances'. - */ - public void setShowDistances(final boolean showDistances) - { - this._showDistances = showDistances; - this._has_showDistances = true; - } - - /** - * Sets the value of field 'threshold'. - * - * @param threshold - * the value of field 'threshold'. - */ - public void setThreshold(final float threshold) - { - this._threshold = threshold; - this._has_threshold = true; - } - - /** - * Sets the value of field 'title'. - * - * @param title - * the value of field 'title'. - */ - public void setTitle(final java.lang.String title) - { - this._title = title; - } - - /** - * Sets the value of field 'width'. - * - * @param width - * the value of field 'width'. - */ - public void setWidth(final int width) - { - this._width = width; - this._has_width = true; - } - - /** - * Sets the value of field 'xpos'. - * - * @param xpos - * the value of field 'xpos'. - */ - public void setXpos(final int xpos) - { - this._xpos = xpos; - this._has_xpos = true; - } - - /** - * Sets the value of field 'ypos'. - * - * @param ypos - * the value of field 'ypos'. - */ - public void setYpos(final int ypos) - { - this._ypos = ypos; - this._has_ypos = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.Tree - */ - public static jalview.schemabinding.version2.Tree unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.Tree) Unmarshaller.unmarshal( - jalview.schemabinding.version2.Tree.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/UserColourScheme.java b/src/jalview/schemabinding/version2/UserColourScheme.java deleted file mode 100644 index e4983bd..0000000 --- a/src/jalview/schemabinding/version2/UserColourScheme.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class UserColourScheme. - * - * @version $Revision$ $Date$ - */ -public class UserColourScheme extends JalviewUserColours implements - java.io.Serializable -{ - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public UserColourScheme() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.JalviewUserColours - */ - public static jalview.schemabinding.version2.JalviewUserColours unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.JalviewUserColours) Unmarshaller - .unmarshal( - jalview.schemabinding.version2.UserColourScheme.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/UserColours.java b/src/jalview/schemabinding/version2/UserColours.java deleted file mode 100644 index b02d0cd..0000000 --- a/src/jalview/schemabinding/version2/UserColours.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class UserColours. - * - * @version $Revision$ $Date$ - */ -public class UserColours implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _id. - */ - private java.lang.String _id; - - /** - * Field _userColourScheme. - */ - private jalview.schemabinding.version2.UserColourScheme _userColourScheme; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public UserColours() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Returns the value of field 'id'. - * - * @return the value of field 'Id'. - */ - public java.lang.String getId() - { - return this._id; - } - - /** - * Returns the value of field 'userColourScheme'. - * - * @return the value of field 'UserColourScheme'. - */ - public jalview.schemabinding.version2.UserColourScheme getUserColourScheme() - { - return this._userColourScheme; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Sets the value of field 'id'. - * - * @param id - * the value of field 'id'. - */ - public void setId(final java.lang.String id) - { - this._id = id; - } - - /** - * Sets the value of field 'userColourScheme'. - * - * @param userColourScheme - * the value of field 'userColourScheme' - */ - public void setUserColourScheme( - final jalview.schemabinding.version2.UserColourScheme userColourScheme) - { - this._userColourScheme = userColourScheme; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.UserColours - */ - public static jalview.schemabinding.version2.UserColours unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.UserColours) Unmarshaller - .unmarshal(jalview.schemabinding.version2.UserColours.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/VAMSAS.java b/src/jalview/schemabinding/version2/VAMSAS.java deleted file mode 100644 index d025824..0000000 --- a/src/jalview/schemabinding/version2/VAMSAS.java +++ /dev/null @@ -1,454 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class VAMSAS. - * - * @version $Revision$ $Date$ - */ -public class VAMSAS implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _treeList. - */ - private java.util.Vector _treeList; - - /** - * Field _sequenceSetList. - */ - private java.util.Vector _sequenceSetList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public VAMSAS() - { - super(); - this._treeList = new java.util.Vector(); - this._sequenceSetList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vSequenceSet - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSequenceSet( - final jalview.schemabinding.version2.SequenceSet vSequenceSet) - throws java.lang.IndexOutOfBoundsException - { - this._sequenceSetList.addElement(vSequenceSet); - } - - /** - * - * - * @param index - * @param vSequenceSet - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addSequenceSet(final int index, - final jalview.schemabinding.version2.SequenceSet vSequenceSet) - throws java.lang.IndexOutOfBoundsException - { - this._sequenceSetList.add(index, vSequenceSet); - } - - /** - * - * - * @param vTree - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addTree(final java.lang.String vTree) - throws java.lang.IndexOutOfBoundsException - { - this._treeList.addElement(vTree); - } - - /** - * - * - * @param index - * @param vTree - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addTree(final int index, final java.lang.String vTree) - throws java.lang.IndexOutOfBoundsException - { - this._treeList.add(index, vTree); - } - - /** - * Method enumerateSequenceSet. - * - * @return an Enumeration over all jalview.schemabinding.version2.SequenceSet - * elements - */ - public java.util.Enumeration enumerateSequenceSet() - { - return this._sequenceSetList.elements(); - } - - /** - * Method enumerateTree. - * - * @return an Enumeration over all java.lang.String elements - */ - public java.util.Enumeration enumerateTree() - { - return this._treeList.elements(); - } - - /** - * Method getSequenceSet. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.SequenceSet at the - * given index - */ - public jalview.schemabinding.version2.SequenceSet getSequenceSet( - final int index) throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._sequenceSetList.size()) - { - throw new IndexOutOfBoundsException("getSequenceSet: Index value '" - + index + "' not in range [0.." - + (this._sequenceSetList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.SequenceSet) _sequenceSetList - .get(index); - } - - /** - * Method getSequenceSet.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 jalview.schemabinding.version2.SequenceSet[] getSequenceSet() - { - jalview.schemabinding.version2.SequenceSet[] array = new jalview.schemabinding.version2.SequenceSet[0]; - return (jalview.schemabinding.version2.SequenceSet[]) this._sequenceSetList - .toArray(array); - } - - /** - * Method getSequenceSetCount. - * - * @return the size of this collection - */ - public int getSequenceSetCount() - { - return this._sequenceSetList.size(); - } - - /** - * Method getTree. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the java.lang.String at the given index - */ - public java.lang.String getTree(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._treeList.size()) - { - throw new IndexOutOfBoundsException("getTree: Index value '" + index - + "' not in range [0.." + (this._treeList.size() - 1) + "]"); - } - - return (java.lang.String) _treeList.get(index); - } - - /** - * Method getTree.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.String[] getTree() - { - java.lang.String[] array = new java.lang.String[0]; - return (java.lang.String[]) this._treeList.toArray(array); - } - - /** - * Method getTreeCount. - * - * @return the size of this collection - */ - public int getTreeCount() - { - return this._treeList.size(); - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllSequenceSet() - { - this._sequenceSetList.clear(); - } - - /** - */ - public void removeAllTree() - { - this._treeList.clear(); - } - - /** - * Method removeSequenceSet. - * - * @param vSequenceSet - * @return true if the object was removed from the collection. - */ - public boolean removeSequenceSet( - final jalview.schemabinding.version2.SequenceSet vSequenceSet) - { - boolean removed = _sequenceSetList.remove(vSequenceSet); - return removed; - } - - /** - * Method removeSequenceSetAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.SequenceSet removeSequenceSetAt( - final int index) - { - java.lang.Object obj = this._sequenceSetList.remove(index); - return (jalview.schemabinding.version2.SequenceSet) obj; - } - - /** - * Method removeTree. - * - * @param vTree - * @return true if the object was removed from the collection. - */ - public boolean removeTree(final java.lang.String vTree) - { - boolean removed = _treeList.remove(vTree); - return removed; - } - - /** - * Method removeTreeAt. - * - * @param index - * @return the element removed from the collection - */ - public java.lang.String removeTreeAt(final int index) - { - java.lang.Object obj = this._treeList.remove(index); - return (java.lang.String) obj; - } - - /** - * - * - * @param index - * @param vSequenceSet - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setSequenceSet(final int index, - final jalview.schemabinding.version2.SequenceSet vSequenceSet) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._sequenceSetList.size()) - { - throw new IndexOutOfBoundsException("setSequenceSet: Index value '" - + index + "' not in range [0.." - + (this._sequenceSetList.size() - 1) + "]"); - } - - this._sequenceSetList.set(index, vSequenceSet); - } - - /** - * - * - * @param vSequenceSetArray - */ - public void setSequenceSet( - final jalview.schemabinding.version2.SequenceSet[] vSequenceSetArray) - { - // -- copy array - _sequenceSetList.clear(); - - for (int i = 0; i < vSequenceSetArray.length; i++) - { - this._sequenceSetList.add(vSequenceSetArray[i]); - } - } - - /** - * - * - * @param index - * @param vTree - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setTree(final int index, final java.lang.String vTree) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._treeList.size()) - { - throw new IndexOutOfBoundsException("setTree: Index value '" + index - + "' not in range [0.." + (this._treeList.size() - 1) + "]"); - } - - this._treeList.set(index, vTree); - } - - /** - * - * - * @param vTreeArray - */ - public void setTree(final java.lang.String[] vTreeArray) - { - // -- copy array - _treeList.clear(); - - for (int i = 0; i < vTreeArray.length; i++) - { - this._treeList.add(vTreeArray[i]); - } - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.VAMSAS - */ - public static jalview.schemabinding.version2.VAMSAS unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.VAMSAS) Unmarshaller.unmarshal( - jalview.schemabinding.version2.VAMSAS.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/VamsasModel.java b/src/jalview/schemabinding/version2/VamsasModel.java deleted file mode 100644 index d3fe796..0000000 --- a/src/jalview/schemabinding/version2/VamsasModel.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class VamsasModel. - * - * @version $Revision$ $Date$ - */ -public class VamsasModel extends VAMSAS implements java.io.Serializable -{ - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public VamsasModel() - { - super(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.VAMSAS - */ - public static jalview.schemabinding.version2.VAMSAS unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.VAMSAS) Unmarshaller.unmarshal( - jalview.schemabinding.version2.VamsasModel.class, reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/Viewport.java b/src/jalview/schemabinding/version2/Viewport.java deleted file mode 100644 index 159f7ae..0000000 --- a/src/jalview/schemabinding/version2/Viewport.java +++ /dev/null @@ -1,2803 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class Viewport. - * - * @version $Revision$ $Date$ - */ -public class Viewport implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _conservationSelected. - */ - private boolean _conservationSelected; - - /** - * keeps track of state for field: _conservationSelected - */ - private boolean _has_conservationSelected; - - /** - * Field _pidSelected. - */ - private boolean _pidSelected; - - /** - * keeps track of state for field: _pidSelected - */ - private boolean _has_pidSelected; - - /** - * Field _bgColour. - */ - private java.lang.String _bgColour; - - /** - * Field _consThreshold. - */ - private int _consThreshold; - - /** - * keeps track of state for field: _consThreshold - */ - private boolean _has_consThreshold; - - /** - * Field _pidThreshold. - */ - private int _pidThreshold; - - /** - * keeps track of state for field: _pidThreshold - */ - private boolean _has_pidThreshold; - - /** - * Field _title. - */ - private java.lang.String _title; - - /** - * Field _showFullId. - */ - private boolean _showFullId; - - /** - * keeps track of state for field: _showFullId - */ - private boolean _has_showFullId; - - /** - * Field _rightAlignIds. - */ - private boolean _rightAlignIds; - - /** - * keeps track of state for field: _rightAlignIds - */ - private boolean _has_rightAlignIds; - - /** - * Field _showText. - */ - private boolean _showText; - - /** - * keeps track of state for field: _showText - */ - private boolean _has_showText; - - /** - * Field _showColourText. - */ - private boolean _showColourText; - - /** - * keeps track of state for field: _showColourText - */ - private boolean _has_showColourText; - - /** - * Field _showUnconserved. - */ - private boolean _showUnconserved = false; - - /** - * keeps track of state for field: _showUnconserved - */ - private boolean _has_showUnconserved; - - /** - * Field _showBoxes. - */ - private boolean _showBoxes; - - /** - * keeps track of state for field: _showBoxes - */ - private boolean _has_showBoxes; - - /** - * Field _wrapAlignment. - */ - private boolean _wrapAlignment; - - /** - * keeps track of state for field: _wrapAlignment - */ - private boolean _has_wrapAlignment; - - /** - * Field _renderGaps. - */ - private boolean _renderGaps; - - /** - * keeps track of state for field: _renderGaps - */ - private boolean _has_renderGaps; - - /** - * Field _showSequenceFeatures. - */ - private boolean _showSequenceFeatures; - - /** - * keeps track of state for field: _showSequenceFeatures - */ - private boolean _has_showSequenceFeatures; - - /** - * Field _showNPfeatureTooltip. - */ - private boolean _showNPfeatureTooltip; - - /** - * keeps track of state for field: _showNPfeatureTooltip - */ - private boolean _has_showNPfeatureTooltip; - - /** - * Field _showDbRefTooltip. - */ - private boolean _showDbRefTooltip; - - /** - * keeps track of state for field: _showDbRefTooltip - */ - private boolean _has_showDbRefTooltip; - - /** - * Field _followHighlight. - */ - private boolean _followHighlight = true; - - /** - * keeps track of state for field: _followHighlight - */ - private boolean _has_followHighlight; - - /** - * Field _followSelection. - */ - private boolean _followSelection = true; - - /** - * keeps track of state for field: _followSelection - */ - private boolean _has_followSelection; - - /** - * Field _showAnnotation. - */ - private boolean _showAnnotation; - - /** - * keeps track of state for field: _showAnnotation - */ - private boolean _has_showAnnotation; - - /** - * Field _centreColumnLabels. - */ - private boolean _centreColumnLabels = false; - - /** - * keeps track of state for field: _centreColumnLabels - */ - private boolean _has_centreColumnLabels; - - /** - * Field _showGroupConservation. - */ - private boolean _showGroupConservation = false; - - /** - * keeps track of state for field: _showGroupConservation - */ - private boolean _has_showGroupConservation; - - /** - * Field _showGroupConsensus. - */ - private boolean _showGroupConsensus = false; - - /** - * keeps track of state for field: _showGroupConsensus - */ - private boolean _has_showGroupConsensus; - - /** - * Field _showConsensusHistogram. - */ - private boolean _showConsensusHistogram = true; - - /** - * keeps track of state for field: _showConsensusHistogram - */ - private boolean _has_showConsensusHistogram; - - /** - * Field _showSequenceLogo. - */ - private boolean _showSequenceLogo = false; - - /** - * keeps track of state for field: _showSequenceLogo - */ - private boolean _has_showSequenceLogo; - - /** - * Field _normaliseSequenceLogo. - */ - private boolean _normaliseSequenceLogo = false; - - /** - * keeps track of state for field: _normaliseSequenceLogo - */ - private boolean _has_normaliseSequenceLogo; - - /** - * Field _ignoreGapsinConsensus. - */ - private boolean _ignoreGapsinConsensus = true; - - /** - * keeps track of state for field: _ignoreGapsinConsensus - */ - private boolean _has_ignoreGapsinConsensus; - - /** - * Field _startRes. - */ - private int _startRes; - - /** - * keeps track of state for field: _startRes - */ - private boolean _has_startRes; - - /** - * Field _startSeq. - */ - private int _startSeq; - - /** - * keeps track of state for field: _startSeq - */ - private boolean _has_startSeq; - - /** - * Field _fontName. - */ - private java.lang.String _fontName; - - /** - * Field _fontSize. - */ - private int _fontSize; - - /** - * keeps track of state for field: _fontSize - */ - private boolean _has_fontSize; - - /** - * Field _fontStyle. - */ - private int _fontStyle; - - /** - * keeps track of state for field: _fontStyle - */ - private boolean _has_fontStyle; - - /** - * Field _scaleProteinAsCdna. - */ - private boolean _scaleProteinAsCdna = true; - - /** - * keeps track of state for field: _scaleProteinAsCdna - */ - private boolean _has_scaleProteinAsCdna; - - /** - * Field _viewName. - */ - private java.lang.String _viewName; - - /** - * Field _sequenceSetId. - */ - private java.lang.String _sequenceSetId; - - /** - * Field _gatheredViews. - */ - private boolean _gatheredViews; - - /** - * keeps track of state for field: _gatheredViews - */ - private boolean _has_gatheredViews; - - /** - * Field _textCol1. - */ - private int _textCol1; - - /** - * keeps track of state for field: _textCol1 - */ - private boolean _has_textCol1; - - /** - * Field _textCol2. - */ - private int _textCol2; - - /** - * keeps track of state for field: _textCol2 - */ - private boolean _has_textCol2; - - /** - * Field _textColThreshold. - */ - private int _textColThreshold; - - /** - * keeps track of state for field: _textColThreshold - */ - private boolean _has_textColThreshold; - - /** - * unique id used by jalview to synchronize between stored and instantiated - * views - * - */ - private java.lang.String _id; - - /** - * The viewport id of this viewport's (cdna/protein) coding complement, if any - * - */ - private java.lang.String _complementId; - - /** - * Field _width. - */ - private int _width; - - /** - * keeps track of state for field: _width - */ - private boolean _has_width; - - /** - * Field _height. - */ - private int _height; - - /** - * keeps track of state for field: _height - */ - private boolean _has_height; - - /** - * Field _xpos. - */ - private int _xpos; - - /** - * keeps track of state for field: _xpos - */ - private boolean _has_xpos; - - /** - * Field _ypos. - */ - private int _ypos; - - /** - * keeps track of state for field: _ypos - */ - private boolean _has_ypos; - - /** - * Field _annotationColours. - */ - private jalview.schemabinding.version2.AnnotationColours _annotationColours; - - /** - * Field _hiddenColumnsList. - */ - private java.util.Vector _hiddenColumnsList; - - /** - * Field _calcIdParamList. - */ - private java.util.Vector _calcIdParamList; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public Viewport() - { - super(); - this._hiddenColumnsList = new java.util.Vector(); - this._calcIdParamList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vCalcIdParam - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addCalcIdParam( - final jalview.schemabinding.version2.CalcIdParam vCalcIdParam) - throws java.lang.IndexOutOfBoundsException - { - this._calcIdParamList.addElement(vCalcIdParam); - } - - /** - * - * - * @param index - * @param vCalcIdParam - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addCalcIdParam(final int index, - final jalview.schemabinding.version2.CalcIdParam vCalcIdParam) - throws java.lang.IndexOutOfBoundsException - { - this._calcIdParamList.add(index, vCalcIdParam); - } - - /** - * - * - * @param vHiddenColumns - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addHiddenColumns( - final jalview.schemabinding.version2.HiddenColumns vHiddenColumns) - throws java.lang.IndexOutOfBoundsException - { - this._hiddenColumnsList.addElement(vHiddenColumns); - } - - /** - * - * - * @param index - * @param vHiddenColumns - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addHiddenColumns(final int index, - final jalview.schemabinding.version2.HiddenColumns vHiddenColumns) - throws java.lang.IndexOutOfBoundsException - { - this._hiddenColumnsList.add(index, vHiddenColumns); - } - - /** - */ - public void deleteCentreColumnLabels() - { - this._has_centreColumnLabels = false; - } - - /** - */ - public void deleteConsThreshold() - { - this._has_consThreshold = false; - } - - /** - */ - public void deleteConservationSelected() - { - this._has_conservationSelected = false; - } - - /** - */ - public void deleteFollowHighlight() - { - this._has_followHighlight = false; - } - - /** - */ - public void deleteFollowSelection() - { - this._has_followSelection = false; - } - - /** - */ - public void deleteFontSize() - { - this._has_fontSize = false; - } - - /** - */ - public void deleteFontStyle() - { - this._has_fontStyle = false; - } - - /** - */ - public void deleteGatheredViews() - { - this._has_gatheredViews = false; - } - - /** - */ - public void deleteHeight() - { - this._has_height = false; - } - - /** - */ - public void deleteIgnoreGapsinConsensus() - { - this._has_ignoreGapsinConsensus = false; - } - - /** - */ - public void deleteNormaliseSequenceLogo() - { - this._has_normaliseSequenceLogo = false; - } - - /** - */ - public void deletePidSelected() - { - this._has_pidSelected = false; - } - - /** - */ - public void deletePidThreshold() - { - this._has_pidThreshold = false; - } - - /** - */ - public void deleteRenderGaps() - { - this._has_renderGaps = false; - } - - /** - */ - public void deleteRightAlignIds() - { - this._has_rightAlignIds = false; - } - - /** - */ - public void deleteScaleProteinAsCdna() - { - this._has_scaleProteinAsCdna = false; - } - - /** - */ - public void deleteShowAnnotation() - { - this._has_showAnnotation = false; - } - - /** - */ - public void deleteShowBoxes() - { - this._has_showBoxes = false; - } - - /** - */ - public void deleteShowColourText() - { - this._has_showColourText = false; - } - - /** - */ - public void deleteShowConsensusHistogram() - { - this._has_showConsensusHistogram = false; - } - - /** - */ - public void deleteShowDbRefTooltip() - { - this._has_showDbRefTooltip = false; - } - - /** - */ - public void deleteShowFullId() - { - this._has_showFullId = false; - } - - /** - */ - public void deleteShowGroupConsensus() - { - this._has_showGroupConsensus = false; - } - - /** - */ - public void deleteShowGroupConservation() - { - this._has_showGroupConservation = false; - } - - /** - */ - public void deleteShowNPfeatureTooltip() - { - this._has_showNPfeatureTooltip = false; - } - - /** - */ - public void deleteShowSequenceFeatures() - { - this._has_showSequenceFeatures = false; - } - - /** - */ - public void deleteShowSequenceLogo() - { - this._has_showSequenceLogo = false; - } - - /** - */ - public void deleteShowText() - { - this._has_showText = false; - } - - /** - */ - public void deleteShowUnconserved() - { - this._has_showUnconserved = false; - } - - /** - */ - public void deleteStartRes() - { - this._has_startRes = false; - } - - /** - */ - public void deleteStartSeq() - { - this._has_startSeq = false; - } - - /** - */ - public void deleteTextCol1() - { - this._has_textCol1 = false; - } - - /** - */ - public void deleteTextCol2() - { - this._has_textCol2 = false; - } - - /** - */ - public void deleteTextColThreshold() - { - this._has_textColThreshold = false; - } - - /** - */ - public void deleteWidth() - { - this._has_width = false; - } - - /** - */ - public void deleteWrapAlignment() - { - this._has_wrapAlignment = false; - } - - /** - */ - public void deleteXpos() - { - this._has_xpos = false; - } - - /** - */ - public void deleteYpos() - { - this._has_ypos = false; - } - - /** - * Method enumerateCalcIdParam. - * - * @return an Enumeration over all jalview.schemabinding.version2.CalcIdParam - * elements - */ - public java.util.Enumeration enumerateCalcIdParam() - { - return this._calcIdParamList.elements(); - } - - /** - * Method enumerateHiddenColumns. - * - * @return an Enumeration over all - * jalview.schemabinding.version2.HiddenColumns elements - */ - public java.util.Enumeration enumerateHiddenColumns() - { - return this._hiddenColumnsList.elements(); - } - - /** - * Returns the value of field 'annotationColours'. - * - * @return the value of field 'AnnotationColours'. - */ - public jalview.schemabinding.version2.AnnotationColours getAnnotationColours() - { - return this._annotationColours; - } - - /** - * Returns the value of field 'bgColour'. - * - * @return the value of field 'BgColour'. - */ - public java.lang.String getBgColour() - { - return this._bgColour; - } - - /** - * Method getCalcIdParam. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.CalcIdParam at the - * given index - */ - public jalview.schemabinding.version2.CalcIdParam getCalcIdParam( - final int index) throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._calcIdParamList.size()) - { - throw new IndexOutOfBoundsException("getCalcIdParam: Index value '" - + index + "' not in range [0.." - + (this._calcIdParamList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.CalcIdParam) _calcIdParamList - .get(index); - } - - /** - * Method getCalcIdParam.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 jalview.schemabinding.version2.CalcIdParam[] getCalcIdParam() - { - jalview.schemabinding.version2.CalcIdParam[] array = new jalview.schemabinding.version2.CalcIdParam[0]; - return (jalview.schemabinding.version2.CalcIdParam[]) this._calcIdParamList - .toArray(array); - } - - /** - * Method getCalcIdParamCount. - * - * @return the size of this collection - */ - public int getCalcIdParamCount() - { - return this._calcIdParamList.size(); - } - - /** - * Returns the value of field 'centreColumnLabels'. - * - * @return the value of field 'CentreColumnLabels'. - */ - public boolean getCentreColumnLabels() - { - return this._centreColumnLabels; - } - - /** - * Returns the value of field 'complementId'. The field 'complementId' has the - * following description: The viewport id of this viewport's (cdna/protein) - * coding complement, if any - * - * - * @return the value of field 'ComplementId'. - */ - public java.lang.String getComplementId() - { - return this._complementId; - } - - /** - * Returns the value of field 'consThreshold'. - * - * @return the value of field 'ConsThreshold'. - */ - public int getConsThreshold() - { - return this._consThreshold; - } - - /** - * Returns the value of field 'conservationSelected'. - * - * @return the value of field 'ConservationSelected'. - */ - public boolean getConservationSelected() - { - return this._conservationSelected; - } - - /** - * Returns the value of field 'followHighlight'. - * - * @return the value of field 'FollowHighlight'. - */ - public boolean getFollowHighlight() - { - return this._followHighlight; - } - - /** - * Returns the value of field 'followSelection'. - * - * @return the value of field 'FollowSelection'. - */ - public boolean getFollowSelection() - { - return this._followSelection; - } - - /** - * Returns the value of field 'fontName'. - * - * @return the value of field 'FontName'. - */ - public java.lang.String getFontName() - { - return this._fontName; - } - - /** - * Returns the value of field 'fontSize'. - * - * @return the value of field 'FontSize'. - */ - public int getFontSize() - { - return this._fontSize; - } - - /** - * Returns the value of field 'fontStyle'. - * - * @return the value of field 'FontStyle'. - */ - public int getFontStyle() - { - return this._fontStyle; - } - - /** - * Returns the value of field 'gatheredViews'. - * - * @return the value of field 'GatheredViews'. - */ - public boolean getGatheredViews() - { - return this._gatheredViews; - } - - /** - * Returns the value of field 'height'. - * - * @return the value of field 'Height'. - */ - public int getHeight() - { - return this._height; - } - - /** - * Method getHiddenColumns. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the jalview.schemabinding.version2.HiddenColumns at - * the given index - */ - public jalview.schemabinding.version2.HiddenColumns getHiddenColumns( - final int index) throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._hiddenColumnsList.size()) - { - throw new IndexOutOfBoundsException("getHiddenColumns: Index value '" - + index + "' not in range [0.." - + (this._hiddenColumnsList.size() - 1) + "]"); - } - - return (jalview.schemabinding.version2.HiddenColumns) _hiddenColumnsList - .get(index); - } - - /** - * Method getHiddenColumns.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 jalview.schemabinding.version2.HiddenColumns[] getHiddenColumns() - { - jalview.schemabinding.version2.HiddenColumns[] array = new jalview.schemabinding.version2.HiddenColumns[0]; - return (jalview.schemabinding.version2.HiddenColumns[]) this._hiddenColumnsList - .toArray(array); - } - - /** - * Method getHiddenColumnsCount. - * - * @return the size of this collection - */ - public int getHiddenColumnsCount() - { - return this._hiddenColumnsList.size(); - } - - /** - * Returns the value of field 'id'. The field 'id' has the following - * description: unique id used by jalview to synchronize between stored and - * instantiated views - * - * - * @return the value of field 'Id'. - */ - public java.lang.String getId() - { - return this._id; - } - - /** - * Returns the value of field 'ignoreGapsinConsensus'. - * - * @return the value of field 'IgnoreGapsinConsensus'. - */ - public boolean getIgnoreGapsinConsensus() - { - return this._ignoreGapsinConsensus; - } - - /** - * Returns the value of field 'normaliseSequenceLogo'. - * - * @return the value of field 'NormaliseSequenceLogo'. - */ - public boolean getNormaliseSequenceLogo() - { - return this._normaliseSequenceLogo; - } - - /** - * Returns the value of field 'pidSelected'. - * - * @return the value of field 'PidSelected'. - */ - public boolean getPidSelected() - { - return this._pidSelected; - } - - /** - * Returns the value of field 'pidThreshold'. - * - * @return the value of field 'PidThreshold'. - */ - public int getPidThreshold() - { - return this._pidThreshold; - } - - /** - * Returns the value of field 'renderGaps'. - * - * @return the value of field 'RenderGaps'. - */ - public boolean getRenderGaps() - { - return this._renderGaps; - } - - /** - * Returns the value of field 'rightAlignIds'. - * - * @return the value of field 'RightAlignIds'. - */ - public boolean getRightAlignIds() - { - return this._rightAlignIds; - } - - /** - * Returns the value of field 'scaleProteinAsCdna'. - * - * @return the value of field 'ScaleProteinAsCdna'. - */ - public boolean getScaleProteinAsCdna() - { - return this._scaleProteinAsCdna; - } - - /** - * Returns the value of field 'sequenceSetId'. - * - * @return the value of field 'SequenceSetId'. - */ - public java.lang.String getSequenceSetId() - { - return this._sequenceSetId; - } - - /** - * Returns the value of field 'showAnnotation'. - * - * @return the value of field 'ShowAnnotation'. - */ - public boolean getShowAnnotation() - { - return this._showAnnotation; - } - - /** - * Returns the value of field 'showBoxes'. - * - * @return the value of field 'ShowBoxes'. - */ - public boolean getShowBoxes() - { - return this._showBoxes; - } - - /** - * Returns the value of field 'showColourText'. - * - * @return the value of field 'ShowColourText'. - */ - public boolean getShowColourText() - { - return this._showColourText; - } - - /** - * Returns the value of field 'showConsensusHistogram'. - * - * @return the value of field 'ShowConsensusHistogram'. - */ - public boolean getShowConsensusHistogram() - { - return this._showConsensusHistogram; - } - - /** - * Returns the value of field 'showDbRefTooltip'. - * - * @return the value of field 'ShowDbRefTooltip'. - */ - public boolean getShowDbRefTooltip() - { - return this._showDbRefTooltip; - } - - /** - * Returns the value of field 'showFullId'. - * - * @return the value of field 'ShowFullId'. - */ - public boolean getShowFullId() - { - return this._showFullId; - } - - /** - * Returns the value of field 'showGroupConsensus'. - * - * @return the value of field 'ShowGroupConsensus'. - */ - public boolean getShowGroupConsensus() - { - return this._showGroupConsensus; - } - - /** - * Returns the value of field 'showGroupConservation'. - * - * @return the value of field 'ShowGroupConservation'. - */ - public boolean getShowGroupConservation() - { - return this._showGroupConservation; - } - - /** - * Returns the value of field 'showNPfeatureTooltip'. - * - * @return the value of field 'ShowNPfeatureTooltip'. - */ - public boolean getShowNPfeatureTooltip() - { - return this._showNPfeatureTooltip; - } - - /** - * Returns the value of field 'showSequenceFeatures'. - * - * @return the value of field 'ShowSequenceFeatures'. - */ - public boolean getShowSequenceFeatures() - { - return this._showSequenceFeatures; - } - - /** - * Returns the value of field 'showSequenceLogo'. - * - * @return the value of field 'ShowSequenceLogo'. - */ - public boolean getShowSequenceLogo() - { - return this._showSequenceLogo; - } - - /** - * Returns the value of field 'showText'. - * - * @return the value of field 'ShowText'. - */ - public boolean getShowText() - { - return this._showText; - } - - /** - * Returns the value of field 'showUnconserved'. - * - * @return the value of field 'ShowUnconserved'. - */ - public boolean getShowUnconserved() - { - return this._showUnconserved; - } - - /** - * Returns the value of field 'startRes'. - * - * @return the value of field 'StartRes'. - */ - public int getStartRes() - { - return this._startRes; - } - - /** - * Returns the value of field 'startSeq'. - * - * @return the value of field 'StartSeq'. - */ - public int getStartSeq() - { - return this._startSeq; - } - - /** - * Returns the value of field 'textCol1'. - * - * @return the value of field 'TextCol1'. - */ - public int getTextCol1() - { - return this._textCol1; - } - - /** - * Returns the value of field 'textCol2'. - * - * @return the value of field 'TextCol2'. - */ - public int getTextCol2() - { - return this._textCol2; - } - - /** - * Returns the value of field 'textColThreshold'. - * - * @return the value of field 'TextColThreshold'. - */ - public int getTextColThreshold() - { - return this._textColThreshold; - } - - /** - * Returns the value of field 'title'. - * - * @return the value of field 'Title'. - */ - public java.lang.String getTitle() - { - return this._title; - } - - /** - * Returns the value of field 'viewName'. - * - * @return the value of field 'ViewName'. - */ - public java.lang.String getViewName() - { - return this._viewName; - } - - /** - * Returns the value of field 'width'. - * - * @return the value of field 'Width'. - */ - public int getWidth() - { - return this._width; - } - - /** - * Returns the value of field 'wrapAlignment'. - * - * @return the value of field 'WrapAlignment'. - */ - public boolean getWrapAlignment() - { - return this._wrapAlignment; - } - - /** - * Returns the value of field 'xpos'. - * - * @return the value of field 'Xpos'. - */ - public int getXpos() - { - return this._xpos; - } - - /** - * Returns the value of field 'ypos'. - * - * @return the value of field 'Ypos'. - */ - public int getYpos() - { - return this._ypos; - } - - /** - * Method hasCentreColumnLabels. - * - * @return true if at least one CentreColumnLabels has been adde - */ - public boolean hasCentreColumnLabels() - { - return this._has_centreColumnLabels; - } - - /** - * Method hasConsThreshold. - * - * @return true if at least one ConsThreshold has been added - */ - public boolean hasConsThreshold() - { - return this._has_consThreshold; - } - - /** - * Method hasConservationSelected. - * - * @return true if at least one ConservationSelected has been added - */ - public boolean hasConservationSelected() - { - return this._has_conservationSelected; - } - - /** - * Method hasFollowHighlight. - * - * @return true if at least one FollowHighlight has been added - */ - public boolean hasFollowHighlight() - { - return this._has_followHighlight; - } - - /** - * Method hasFollowSelection. - * - * @return true if at least one FollowSelection has been added - */ - public boolean hasFollowSelection() - { - return this._has_followSelection; - } - - /** - * Method hasFontSize. - * - * @return true if at least one FontSize has been added - */ - public boolean hasFontSize() - { - return this._has_fontSize; - } - - /** - * Method hasFontStyle. - * - * @return true if at least one FontStyle has been added - */ - public boolean hasFontStyle() - { - return this._has_fontStyle; - } - - /** - * Method hasGatheredViews. - * - * @return true if at least one GatheredViews has been added - */ - public boolean hasGatheredViews() - { - return this._has_gatheredViews; - } - - /** - * Method hasHeight. - * - * @return true if at least one Height has been added - */ - public boolean hasHeight() - { - return this._has_height; - } - - /** - * Method hasIgnoreGapsinConsensus. - * - * @return true if at least one IgnoreGapsinConsensus has been added - */ - public boolean hasIgnoreGapsinConsensus() - { - return this._has_ignoreGapsinConsensus; - } - - /** - * Method hasNormaliseSequenceLogo. - * - * @return true if at least one NormaliseSequenceLogo has been added - */ - public boolean hasNormaliseSequenceLogo() - { - return this._has_normaliseSequenceLogo; - } - - /** - * Method hasPidSelected. - * - * @return true if at least one PidSelected has been added - */ - public boolean hasPidSelected() - { - return this._has_pidSelected; - } - - /** - * Method hasPidThreshold. - * - * @return true if at least one PidThreshold has been added - */ - public boolean hasPidThreshold() - { - return this._has_pidThreshold; - } - - /** - * Method hasRenderGaps. - * - * @return true if at least one RenderGaps has been added - */ - public boolean hasRenderGaps() - { - return this._has_renderGaps; - } - - /** - * Method hasRightAlignIds. - * - * @return true if at least one RightAlignIds has been added - */ - public boolean hasRightAlignIds() - { - return this._has_rightAlignIds; - } - - /** - * Method hasScaleProteinAsCdna. - * - * @return true if at least one ScaleProteinAsCdna has been adde - */ - public boolean hasScaleProteinAsCdna() - { - return this._has_scaleProteinAsCdna; - } - - /** - * Method hasShowAnnotation. - * - * @return true if at least one ShowAnnotation has been added - */ - public boolean hasShowAnnotation() - { - return this._has_showAnnotation; - } - - /** - * Method hasShowBoxes. - * - * @return true if at least one ShowBoxes has been added - */ - public boolean hasShowBoxes() - { - return this._has_showBoxes; - } - - /** - * Method hasShowColourText. - * - * @return true if at least one ShowColourText has been added - */ - public boolean hasShowColourText() - { - return this._has_showColourText; - } - - /** - * Method hasShowConsensusHistogram. - * - * @return true if at least one ShowConsensusHistogram has been added - */ - public boolean hasShowConsensusHistogram() - { - return this._has_showConsensusHistogram; - } - - /** - * Method hasShowDbRefTooltip. - * - * @return true if at least one ShowDbRefTooltip has been added - */ - public boolean hasShowDbRefTooltip() - { - return this._has_showDbRefTooltip; - } - - /** - * Method hasShowFullId. - * - * @return true if at least one ShowFullId has been added - */ - public boolean hasShowFullId() - { - return this._has_showFullId; - } - - /** - * Method hasShowGroupConsensus. - * - * @return true if at least one ShowGroupConsensus has been adde - */ - public boolean hasShowGroupConsensus() - { - return this._has_showGroupConsensus; - } - - /** - * Method hasShowGroupConservation. - * - * @return true if at least one ShowGroupConservation has been added - */ - public boolean hasShowGroupConservation() - { - return this._has_showGroupConservation; - } - - /** - * Method hasShowNPfeatureTooltip. - * - * @return true if at least one ShowNPfeatureTooltip has been added - */ - public boolean hasShowNPfeatureTooltip() - { - return this._has_showNPfeatureTooltip; - } - - /** - * Method hasShowSequenceFeatures. - * - * @return true if at least one ShowSequenceFeatures has been added - */ - public boolean hasShowSequenceFeatures() - { - return this._has_showSequenceFeatures; - } - - /** - * Method hasShowSequenceLogo. - * - * @return true if at least one ShowSequenceLogo has been added - */ - public boolean hasShowSequenceLogo() - { - return this._has_showSequenceLogo; - } - - /** - * Method hasShowText. - * - * @return true if at least one ShowText has been added - */ - public boolean hasShowText() - { - return this._has_showText; - } - - /** - * Method hasShowUnconserved. - * - * @return true if at least one ShowUnconserved has been added - */ - public boolean hasShowUnconserved() - { - return this._has_showUnconserved; - } - - /** - * Method hasStartRes. - * - * @return true if at least one StartRes has been added - */ - public boolean hasStartRes() - { - return this._has_startRes; - } - - /** - * Method hasStartSeq. - * - * @return true if at least one StartSeq has been added - */ - public boolean hasStartSeq() - { - return this._has_startSeq; - } - - /** - * Method hasTextCol1. - * - * @return true if at least one TextCol1 has been added - */ - public boolean hasTextCol1() - { - return this._has_textCol1; - } - - /** - * Method hasTextCol2. - * - * @return true if at least one TextCol2 has been added - */ - public boolean hasTextCol2() - { - return this._has_textCol2; - } - - /** - * Method hasTextColThreshold. - * - * @return true if at least one TextColThreshold has been added - */ - public boolean hasTextColThreshold() - { - return this._has_textColThreshold; - } - - /** - * Method hasWidth. - * - * @return true if at least one Width has been added - */ - public boolean hasWidth() - { - return this._has_width; - } - - /** - * Method hasWrapAlignment. - * - * @return true if at least one WrapAlignment has been added - */ - public boolean hasWrapAlignment() - { - return this._has_wrapAlignment; - } - - /** - * Method hasXpos. - * - * @return true if at least one Xpos has been added - */ - public boolean hasXpos() - { - return this._has_xpos; - } - - /** - * Method hasYpos. - * - * @return true if at least one Ypos has been added - */ - public boolean hasYpos() - { - return this._has_ypos; - } - - /** - * Returns the value of field 'centreColumnLabels'. - * - * @return the value of field 'CentreColumnLabels'. - */ - public boolean isCentreColumnLabels() - { - return this._centreColumnLabels; - } - - /** - * Returns the value of field 'conservationSelected'. - * - * @return the value of field 'ConservationSelected'. - */ - public boolean isConservationSelected() - { - return this._conservationSelected; - } - - /** - * Returns the value of field 'followHighlight'. - * - * @return the value of field 'FollowHighlight'. - */ - public boolean isFollowHighlight() - { - return this._followHighlight; - } - - /** - * Returns the value of field 'followSelection'. - * - * @return the value of field 'FollowSelection'. - */ - public boolean isFollowSelection() - { - return this._followSelection; - } - - /** - * Returns the value of field 'gatheredViews'. - * - * @return the value of field 'GatheredViews'. - */ - public boolean isGatheredViews() - { - return this._gatheredViews; - } - - /** - * Returns the value of field 'ignoreGapsinConsensus'. - * - * @return the value of field 'IgnoreGapsinConsensus'. - */ - public boolean isIgnoreGapsinConsensus() - { - return this._ignoreGapsinConsensus; - } - - /** - * Returns the value of field 'normaliseSequenceLogo'. - * - * @return the value of field 'NormaliseSequenceLogo'. - */ - public boolean isNormaliseSequenceLogo() - { - return this._normaliseSequenceLogo; - } - - /** - * Returns the value of field 'pidSelected'. - * - * @return the value of field 'PidSelected'. - */ - public boolean isPidSelected() - { - return this._pidSelected; - } - - /** - * Returns the value of field 'renderGaps'. - * - * @return the value of field 'RenderGaps'. - */ - public boolean isRenderGaps() - { - return this._renderGaps; - } - - /** - * Returns the value of field 'rightAlignIds'. - * - * @return the value of field 'RightAlignIds'. - */ - public boolean isRightAlignIds() - { - return this._rightAlignIds; - } - - /** - * Returns the value of field 'scaleProteinAsCdna'. - * - * @return the value of field 'ScaleProteinAsCdna'. - */ - public boolean isScaleProteinAsCdna() - { - return this._scaleProteinAsCdna; - } - - /** - * Returns the value of field 'showAnnotation'. - * - * @return the value of field 'ShowAnnotation'. - */ - public boolean isShowAnnotation() - { - return this._showAnnotation; - } - - /** - * Returns the value of field 'showBoxes'. - * - * @return the value of field 'ShowBoxes'. - */ - public boolean isShowBoxes() - { - return this._showBoxes; - } - - /** - * Returns the value of field 'showColourText'. - * - * @return the value of field 'ShowColourText'. - */ - public boolean isShowColourText() - { - return this._showColourText; - } - - /** - * Returns the value of field 'showConsensusHistogram'. - * - * @return the value of field 'ShowConsensusHistogram'. - */ - public boolean isShowConsensusHistogram() - { - return this._showConsensusHistogram; - } - - /** - * Returns the value of field 'showDbRefTooltip'. - * - * @return the value of field 'ShowDbRefTooltip'. - */ - public boolean isShowDbRefTooltip() - { - return this._showDbRefTooltip; - } - - /** - * Returns the value of field 'showFullId'. - * - * @return the value of field 'ShowFullId'. - */ - public boolean isShowFullId() - { - return this._showFullId; - } - - /** - * Returns the value of field 'showGroupConsensus'. - * - * @return the value of field 'ShowGroupConsensus'. - */ - public boolean isShowGroupConsensus() - { - return this._showGroupConsensus; - } - - /** - * Returns the value of field 'showGroupConservation'. - * - * @return the value of field 'ShowGroupConservation'. - */ - public boolean isShowGroupConservation() - { - return this._showGroupConservation; - } - - /** - * Returns the value of field 'showNPfeatureTooltip'. - * - * @return the value of field 'ShowNPfeatureTooltip'. - */ - public boolean isShowNPfeatureTooltip() - { - return this._showNPfeatureTooltip; - } - - /** - * Returns the value of field 'showSequenceFeatures'. - * - * @return the value of field 'ShowSequenceFeatures'. - */ - public boolean isShowSequenceFeatures() - { - return this._showSequenceFeatures; - } - - /** - * Returns the value of field 'showSequenceLogo'. - * - * @return the value of field 'ShowSequenceLogo'. - */ - public boolean isShowSequenceLogo() - { - return this._showSequenceLogo; - } - - /** - * Returns the value of field 'showText'. - * - * @return the value of field 'ShowText'. - */ - public boolean isShowText() - { - return this._showText; - } - - /** - * Returns the value of field 'showUnconserved'. - * - * @return the value of field 'ShowUnconserved'. - */ - public boolean isShowUnconserved() - { - return this._showUnconserved; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * Returns the value of field 'wrapAlignment'. - * - * @return the value of field 'WrapAlignment'. - */ - public boolean isWrapAlignment() - { - return this._wrapAlignment; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllCalcIdParam() - { - this._calcIdParamList.clear(); - } - - /** - */ - public void removeAllHiddenColumns() - { - this._hiddenColumnsList.clear(); - } - - /** - * Method removeCalcIdParam. - * - * @param vCalcIdParam - * @return true if the object was removed from the collection. - */ - public boolean removeCalcIdParam( - final jalview.schemabinding.version2.CalcIdParam vCalcIdParam) - { - boolean removed = _calcIdParamList.remove(vCalcIdParam); - return removed; - } - - /** - * Method removeCalcIdParamAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.CalcIdParam removeCalcIdParamAt( - final int index) - { - java.lang.Object obj = this._calcIdParamList.remove(index); - return (jalview.schemabinding.version2.CalcIdParam) obj; - } - - /** - * Method removeHiddenColumns. - * - * @param vHiddenColumns - * @return true if the object was removed from the collection. - */ - public boolean removeHiddenColumns( - final jalview.schemabinding.version2.HiddenColumns vHiddenColumns) - { - boolean removed = _hiddenColumnsList.remove(vHiddenColumns); - return removed; - } - - /** - * Method removeHiddenColumnsAt. - * - * @param index - * @return the element removed from the collection - */ - public jalview.schemabinding.version2.HiddenColumns removeHiddenColumnsAt( - final int index) - { - java.lang.Object obj = this._hiddenColumnsList.remove(index); - return (jalview.schemabinding.version2.HiddenColumns) obj; - } - - /** - * Sets the value of field 'annotationColours'. - * - * @param annotationColours - * the value of field 'annotationColours'. - */ - public void setAnnotationColours( - final jalview.schemabinding.version2.AnnotationColours annotationColours) - { - this._annotationColours = annotationColours; - } - - /** - * Sets the value of field 'bgColour'. - * - * @param bgColour - * the value of field 'bgColour'. - */ - public void setBgColour(final java.lang.String bgColour) - { - this._bgColour = bgColour; - } - - /** - * - * - * @param index - * @param vCalcIdParam - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setCalcIdParam(final int index, - final jalview.schemabinding.version2.CalcIdParam vCalcIdParam) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._calcIdParamList.size()) - { - throw new IndexOutOfBoundsException("setCalcIdParam: Index value '" - + index + "' not in range [0.." - + (this._calcIdParamList.size() - 1) + "]"); - } - - this._calcIdParamList.set(index, vCalcIdParam); - } - - /** - * - * - * @param vCalcIdParamArray - */ - public void setCalcIdParam( - final jalview.schemabinding.version2.CalcIdParam[] vCalcIdParamArray) - { - // -- copy array - _calcIdParamList.clear(); - - for (int i = 0; i < vCalcIdParamArray.length; i++) - { - this._calcIdParamList.add(vCalcIdParamArray[i]); - } - } - - /** - * Sets the value of field 'centreColumnLabels'. - * - * @param centreColumnLabels - * the value of field 'centreColumnLabels'. - */ - public void setCentreColumnLabels(final boolean centreColumnLabels) - { - this._centreColumnLabels = centreColumnLabels; - this._has_centreColumnLabels = true; - } - - /** - * Sets the value of field 'complementId'. The field 'complementId' has the - * following description: The viewport id of this viewport's (cdna/protein) - * coding complement, if any - * - * - * @param complementId - * the value of field 'complementId'. - */ - public void setComplementId(final java.lang.String complementId) - { - this._complementId = complementId; - } - - /** - * Sets the value of field 'consThreshold'. - * - * @param consThreshold - * the value of field 'consThreshold'. - */ - public void setConsThreshold(final int consThreshold) - { - this._consThreshold = consThreshold; - this._has_consThreshold = true; - } - - /** - * Sets the value of field 'conservationSelected'. - * - * @param conservationSelected - * the value of field 'conservationSelected'. - */ - public void setConservationSelected(final boolean conservationSelected) - { - this._conservationSelected = conservationSelected; - this._has_conservationSelected = true; - } - - /** - * Sets the value of field 'followHighlight'. - * - * @param followHighlight - * the value of field 'followHighlight'. - */ - public void setFollowHighlight(final boolean followHighlight) - { - this._followHighlight = followHighlight; - this._has_followHighlight = true; - } - - /** - * Sets the value of field 'followSelection'. - * - * @param followSelection - * the value of field 'followSelection'. - */ - public void setFollowSelection(final boolean followSelection) - { - this._followSelection = followSelection; - this._has_followSelection = true; - } - - /** - * Sets the value of field 'fontName'. - * - * @param fontName - * the value of field 'fontName'. - */ - public void setFontName(final java.lang.String fontName) - { - this._fontName = fontName; - } - - /** - * Sets the value of field 'fontSize'. - * - * @param fontSize - * the value of field 'fontSize'. - */ - public void setFontSize(final int fontSize) - { - this._fontSize = fontSize; - this._has_fontSize = true; - } - - /** - * Sets the value of field 'fontStyle'. - * - * @param fontStyle - * the value of field 'fontStyle'. - */ - public void setFontStyle(final int fontStyle) - { - this._fontStyle = fontStyle; - this._has_fontStyle = true; - } - - /** - * Sets the value of field 'gatheredViews'. - * - * @param gatheredViews - * the value of field 'gatheredViews'. - */ - public void setGatheredViews(final boolean gatheredViews) - { - this._gatheredViews = gatheredViews; - this._has_gatheredViews = true; - } - - /** - * Sets the value of field 'height'. - * - * @param height - * the value of field 'height'. - */ - public void setHeight(final int height) - { - this._height = height; - this._has_height = true; - } - - /** - * - * - * @param index - * @param vHiddenColumns - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setHiddenColumns(final int index, - final jalview.schemabinding.version2.HiddenColumns vHiddenColumns) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._hiddenColumnsList.size()) - { - throw new IndexOutOfBoundsException("setHiddenColumns: Index value '" - + index + "' not in range [0.." - + (this._hiddenColumnsList.size() - 1) + "]"); - } - - this._hiddenColumnsList.set(index, vHiddenColumns); - } - - /** - * - * - * @param vHiddenColumnsArray - */ - public void setHiddenColumns( - final jalview.schemabinding.version2.HiddenColumns[] vHiddenColumnsArray) - { - // -- copy array - _hiddenColumnsList.clear(); - - for (int i = 0; i < vHiddenColumnsArray.length; i++) - { - this._hiddenColumnsList.add(vHiddenColumnsArray[i]); - } - } - - /** - * Sets the value of field 'id'. The field 'id' has the following description: - * unique id used by jalview to synchronize between stored and instantiated - * views - * - * - * @param id - * the value of field 'id'. - */ - public void setId(final java.lang.String id) - { - this._id = id; - } - - /** - * Sets the value of field 'ignoreGapsinConsensus'. - * - * @param ignoreGapsinConsensus - * the value of field 'ignoreGapsinConsensus'. - */ - public void setIgnoreGapsinConsensus(final boolean ignoreGapsinConsensus) - { - this._ignoreGapsinConsensus = ignoreGapsinConsensus; - this._has_ignoreGapsinConsensus = true; - } - - /** - * Sets the value of field 'normaliseSequenceLogo'. - * - * @param normaliseSequenceLogo - * the value of field 'normaliseSequenceLogo'. - */ - public void setNormaliseSequenceLogo(final boolean normaliseSequenceLogo) - { - this._normaliseSequenceLogo = normaliseSequenceLogo; - this._has_normaliseSequenceLogo = true; - } - - /** - * Sets the value of field 'pidSelected'. - * - * @param pidSelected - * the value of field 'pidSelected'. - */ - public void setPidSelected(final boolean pidSelected) - { - this._pidSelected = pidSelected; - this._has_pidSelected = true; - } - - /** - * Sets the value of field 'pidThreshold'. - * - * @param pidThreshold - * the value of field 'pidThreshold'. - */ - public void setPidThreshold(final int pidThreshold) - { - this._pidThreshold = pidThreshold; - this._has_pidThreshold = true; - } - - /** - * Sets the value of field 'renderGaps'. - * - * @param renderGaps - * the value of field 'renderGaps'. - */ - public void setRenderGaps(final boolean renderGaps) - { - this._renderGaps = renderGaps; - this._has_renderGaps = true; - } - - /** - * Sets the value of field 'rightAlignIds'. - * - * @param rightAlignIds - * the value of field 'rightAlignIds'. - */ - public void setRightAlignIds(final boolean rightAlignIds) - { - this._rightAlignIds = rightAlignIds; - this._has_rightAlignIds = true; - } - - /** - * Sets the value of field 'scaleProteinAsCdna'. - * - * @param scaleProteinAsCdna - * the value of field 'scaleProteinAsCdna'. - */ - public void setScaleProteinAsCdna(final boolean scaleProteinAsCdna) - { - this._scaleProteinAsCdna = scaleProteinAsCdna; - this._has_scaleProteinAsCdna = true; - } - - /** - * Sets the value of field 'sequenceSetId'. - * - * @param sequenceSetId - * the value of field 'sequenceSetId'. - */ - public void setSequenceSetId(final java.lang.String sequenceSetId) - { - this._sequenceSetId = sequenceSetId; - } - - /** - * Sets the value of field 'showAnnotation'. - * - * @param showAnnotation - * the value of field 'showAnnotation'. - */ - public void setShowAnnotation(final boolean showAnnotation) - { - this._showAnnotation = showAnnotation; - this._has_showAnnotation = true; - } - - /** - * Sets the value of field 'showBoxes'. - * - * @param showBoxes - * the value of field 'showBoxes'. - */ - public void setShowBoxes(final boolean showBoxes) - { - this._showBoxes = showBoxes; - this._has_showBoxes = true; - } - - /** - * Sets the value of field 'showColourText'. - * - * @param showColourText - * the value of field 'showColourText'. - */ - public void setShowColourText(final boolean showColourText) - { - this._showColourText = showColourText; - this._has_showColourText = true; - } - - /** - * Sets the value of field 'showConsensusHistogram'. - * - * @param showConsensusHistogram - * the value of field 'showConsensusHistogram'. - */ - public void setShowConsensusHistogram(final boolean showConsensusHistogram) - { - this._showConsensusHistogram = showConsensusHistogram; - this._has_showConsensusHistogram = true; - } - - /** - * Sets the value of field 'showDbRefTooltip'. - * - * @param showDbRefTooltip - * the value of field 'showDbRefTooltip' - */ - public void setShowDbRefTooltip(final boolean showDbRefTooltip) - { - this._showDbRefTooltip = showDbRefTooltip; - this._has_showDbRefTooltip = true; - } - - /** - * Sets the value of field 'showFullId'. - * - * @param showFullId - * the value of field 'showFullId'. - */ - public void setShowFullId(final boolean showFullId) - { - this._showFullId = showFullId; - this._has_showFullId = true; - } - - /** - * Sets the value of field 'showGroupConsensus'. - * - * @param showGroupConsensus - * the value of field 'showGroupConsensus'. - */ - public void setShowGroupConsensus(final boolean showGroupConsensus) - { - this._showGroupConsensus = showGroupConsensus; - this._has_showGroupConsensus = true; - } - - /** - * Sets the value of field 'showGroupConservation'. - * - * @param showGroupConservation - * the value of field 'showGroupConservation'. - */ - public void setShowGroupConservation(final boolean showGroupConservation) - { - this._showGroupConservation = showGroupConservation; - this._has_showGroupConservation = true; - } - - /** - * Sets the value of field 'showNPfeatureTooltip'. - * - * @param showNPfeatureTooltip - * the value of field 'showNPfeatureTooltip'. - */ - public void setShowNPfeatureTooltip(final boolean showNPfeatureTooltip) - { - this._showNPfeatureTooltip = showNPfeatureTooltip; - this._has_showNPfeatureTooltip = true; - } - - /** - * Sets the value of field 'showSequenceFeatures'. - * - * @param showSequenceFeatures - * the value of field 'showSequenceFeatures'. - */ - public void setShowSequenceFeatures(final boolean showSequenceFeatures) - { - this._showSequenceFeatures = showSequenceFeatures; - this._has_showSequenceFeatures = true; - } - - /** - * Sets the value of field 'showSequenceLogo'. - * - * @param showSequenceLogo - * the value of field 'showSequenceLogo' - */ - public void setShowSequenceLogo(final boolean showSequenceLogo) - { - this._showSequenceLogo = showSequenceLogo; - this._has_showSequenceLogo = true; - } - - /** - * Sets the value of field 'showText'. - * - * @param showText - * the value of field 'showText'. - */ - public void setShowText(final boolean showText) - { - this._showText = showText; - this._has_showText = true; - } - - /** - * Sets the value of field 'showUnconserved'. - * - * @param showUnconserved - * the value of field 'showUnconserved'. - */ - public void setShowUnconserved(final boolean showUnconserved) - { - this._showUnconserved = showUnconserved; - this._has_showUnconserved = true; - } - - /** - * Sets the value of field 'startRes'. - * - * @param startRes - * the value of field 'startRes'. - */ - public void setStartRes(final int startRes) - { - this._startRes = startRes; - this._has_startRes = true; - } - - /** - * Sets the value of field 'startSeq'. - * - * @param startSeq - * the value of field 'startSeq'. - */ - public void setStartSeq(final int startSeq) - { - this._startSeq = startSeq; - this._has_startSeq = true; - } - - /** - * Sets the value of field 'textCol1'. - * - * @param textCol1 - * the value of field 'textCol1'. - */ - public void setTextCol1(final int textCol1) - { - this._textCol1 = textCol1; - this._has_textCol1 = true; - } - - /** - * Sets the value of field 'textCol2'. - * - * @param textCol2 - * the value of field 'textCol2'. - */ - public void setTextCol2(final int textCol2) - { - this._textCol2 = textCol2; - this._has_textCol2 = true; - } - - /** - * Sets the value of field 'textColThreshold'. - * - * @param textColThreshold - * the value of field 'textColThreshold' - */ - public void setTextColThreshold(final int textColThreshold) - { - this._textColThreshold = textColThreshold; - this._has_textColThreshold = true; - } - - /** - * Sets the value of field 'title'. - * - * @param title - * the value of field 'title'. - */ - public void setTitle(final java.lang.String title) - { - this._title = title; - } - - /** - * Sets the value of field 'viewName'. - * - * @param viewName - * the value of field 'viewName'. - */ - public void setViewName(final java.lang.String viewName) - { - this._viewName = viewName; - } - - /** - * Sets the value of field 'width'. - * - * @param width - * the value of field 'width'. - */ - public void setWidth(final int width) - { - this._width = width; - this._has_width = true; - } - - /** - * Sets the value of field 'wrapAlignment'. - * - * @param wrapAlignment - * the value of field 'wrapAlignment'. - */ - public void setWrapAlignment(final boolean wrapAlignment) - { - this._wrapAlignment = wrapAlignment; - this._has_wrapAlignment = true; - } - - /** - * Sets the value of field 'xpos'. - * - * @param xpos - * the value of field 'xpos'. - */ - public void setXpos(final int xpos) - { - this._xpos = xpos; - this._has_xpos = true; - } - - /** - * Sets the value of field 'ypos'. - * - * @param ypos - * the value of field 'ypos'. - */ - public void setYpos(final int ypos) - { - this._ypos = ypos; - this._has_ypos = true; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled jalview.schemabinding.version2.Viewport - */ - public static jalview.schemabinding.version2.Viewport unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.Viewport) Unmarshaller - .unmarshal(jalview.schemabinding.version2.Viewport.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/WebServiceParameterSet.java b/src/jalview/schemabinding/version2/WebServiceParameterSet.java deleted file mode 100644 index 72d2f82..0000000 --- a/src/jalview/schemabinding/version2/WebServiceParameterSet.java +++ /dev/null @@ -1,436 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import org.exolab.castor.xml.Marshaller; -import org.exolab.castor.xml.Unmarshaller; - -/** - * Class WebServiceParameterSet. - * - * @version $Revision$ $Date$ - */ -public class WebServiceParameterSet implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * The short name for the parameter set. This will be shown amongst the other - * presets for the web service. - * - */ - private java.lang.String _name; - - /** - * A Jalview Web Service Parameter Set container version number. Version 1 - * created for storing Jaba user presets. - * - */ - private java.lang.String _version; - - /** - * Short description - as utf8 encoded text. This is usually displayed in the - * body of an HTML capable tooltip, so HTML tags may be embedded using - * standard UTF8 encoding. - * - */ - private java.lang.String _description; - - /** - * URL for which the parameter set is valid. Jalview will use it to match up - * parameter sets to service instances that can parse the parameter set - * payload. - * - */ - private java.util.Vector _serviceURLList; - - /** - * UTF8 encoded string to be processed into a specific web services' parameter - * set. Note - newlines may be important to the structure of this file. - * - */ - private java.lang.String _parameters; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public WebServiceParameterSet() - { - super(); - this._serviceURLList = new java.util.Vector(); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * - * - * @param vServiceURL - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addServiceURL(final java.lang.String vServiceURL) - throws java.lang.IndexOutOfBoundsException - { - this._serviceURLList.addElement(vServiceURL); - } - - /** - * - * - * @param index - * @param vServiceURL - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void addServiceURL(final int index, - final java.lang.String vServiceURL) - throws java.lang.IndexOutOfBoundsException - { - this._serviceURLList.add(index, vServiceURL); - } - - /** - * Method enumerateServiceURL. - * - * @return an Enumeration over all java.lang.String elements - */ - public java.util.Enumeration enumerateServiceURL() - { - return this._serviceURLList.elements(); - } - - /** - * Returns the value of field 'description'. The field 'description' has the - * following description: Short description - as utf8 encoded text. This is - * usually displayed in the body of an HTML capable tooltip, so HTML tags may - * be embedded using standard UTF8 encoding. - * - * - * @return the value of field 'Description'. - */ - public java.lang.String getDescription() - { - return this._description; - } - - /** - * Returns the value of field 'name'. The field 'name' has the following - * description: The short name for the parameter set. This will be shown - * amongst the other presets for the web service. - * - * - * @return the value of field 'Name'. - */ - public java.lang.String getName() - { - return this._name; - } - - /** - * Returns the value of field 'parameters'. The field 'parameters' has the - * following description: UTF8 encoded string to be processed into a specific - * web services' parameter set. Note - newlines may be important to the - * structure of this file. - * - * - * @return the value of field 'Parameters'. - */ - public java.lang.String getParameters() - { - return this._parameters; - } - - /** - * Method getServiceURL. - * - * @param index - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - * @return the value of the java.lang.String at the given index - */ - public java.lang.String getServiceURL(final int index) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._serviceURLList.size()) - { - throw new IndexOutOfBoundsException("getServiceURL: Index value '" - + index + "' not in range [0.." - + (this._serviceURLList.size() - 1) + "]"); - } - - return (java.lang.String) _serviceURLList.get(index); - } - - /** - * Method getServiceURL.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.String[] getServiceURL() - { - java.lang.String[] array = new java.lang.String[0]; - return (java.lang.String[]) this._serviceURLList.toArray(array); - } - - /** - * Method getServiceURLCount. - * - * @return the size of this collection - */ - public int getServiceURLCount() - { - return this._serviceURLList.size(); - } - - /** - * Returns the value of field 'version'. The field 'version' has the following - * description: A Jalview Web Service Parameter Set container version number. - * Version 1 created for storing Jaba user presets. - * - * - * @return the value of field 'Version'. - */ - public java.lang.String getVersion() - { - return this._version; - } - - /** - * Method isValid. - * - * @return true if this object is valid according to the schema - */ - public boolean isValid() - { - try - { - validate(); - } catch (org.exolab.castor.xml.ValidationException vex) - { - return false; - } - return true; - } - - /** - * - * - * @param out - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void marshal(final java.io.Writer out) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, out); - } - - /** - * - * - * @param handler - * @throws java.io.IOException - * if an IOException occurs during marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - */ - public void marshal(final org.xml.sax.ContentHandler handler) - throws java.io.IOException, - org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - Marshaller.marshal(this, handler); - } - - /** - */ - public void removeAllServiceURL() - { - this._serviceURLList.clear(); - } - - /** - * Method removeServiceURL. - * - * @param vServiceURL - * @return true if the object was removed from the collection. - */ - public boolean removeServiceURL(final java.lang.String vServiceURL) - { - boolean removed = _serviceURLList.remove(vServiceURL); - return removed; - } - - /** - * Method removeServiceURLAt. - * - * @param index - * @return the element removed from the collection - */ - public java.lang.String removeServiceURLAt(final int index) - { - java.lang.Object obj = this._serviceURLList.remove(index); - return (java.lang.String) obj; - } - - /** - * Sets the value of field 'description'. The field 'description' has the - * following description: Short description - as utf8 encoded text. This is - * usually displayed in the body of an HTML capable tooltip, so HTML tags may - * be embedded using standard UTF8 encoding. - * - * - * @param description - * the value of field 'description'. - */ - public void setDescription(final java.lang.String description) - { - this._description = description; - } - - /** - * Sets the value of field 'name'. The field 'name' has the following - * description: The short name for the parameter set. This will be shown - * amongst the other presets for the web service. - * - * - * @param name - * the value of field 'name'. - */ - public void setName(final java.lang.String name) - { - this._name = name; - } - - /** - * Sets the value of field 'parameters'. The field 'parameters' has the - * following description: UTF8 encoded string to be processed into a specific - * web services' parameter set. Note - newlines may be important to the - * structure of this file. - * - * - * @param parameters - * the value of field 'parameters'. - */ - public void setParameters(final java.lang.String parameters) - { - this._parameters = parameters; - } - - /** - * - * - * @param index - * @param vServiceURL - * @throws java.lang.IndexOutOfBoundsException - * if the index given is outside the bounds of the collection - */ - public void setServiceURL(final int index, - final java.lang.String vServiceURL) - throws java.lang.IndexOutOfBoundsException - { - // check bounds for index - if (index < 0 || index >= this._serviceURLList.size()) - { - throw new IndexOutOfBoundsException("setServiceURL: Index value '" - + index + "' not in range [0.." - + (this._serviceURLList.size() - 1) + "]"); - } - - this._serviceURLList.set(index, vServiceURL); - } - - /** - * - * - * @param vServiceURLArray - */ - public void setServiceURL(final java.lang.String[] vServiceURLArray) - { - // -- copy array - _serviceURLList.clear(); - - for (int i = 0; i < vServiceURLArray.length; i++) - { - this._serviceURLList.add(vServiceURLArray[i]); - } - } - - /** - * Sets the value of field 'version'. The field 'version' has the following - * description: A Jalview Web Service Parameter Set container version number. - * Version 1 created for storing Jaba user presets. - * - * - * @param version - * the value of field 'version'. - */ - public void setVersion(final java.lang.String version) - { - this._version = version; - } - - /** - * Method unmarshal. - * - * @param reader - * @throws org.exolab.castor.xml.MarshalException - * if object is null or if any SAXException is thrown during - * marshaling - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - * @return the unmarshaled - * jalview.schemabinding.version2.WebServiceParameterSet - */ - public static jalview.schemabinding.version2.WebServiceParameterSet unmarshal( - final java.io.Reader reader) - throws org.exolab.castor.xml.MarshalException, - org.exolab.castor.xml.ValidationException - { - return (jalview.schemabinding.version2.WebServiceParameterSet) Unmarshaller - .unmarshal( - jalview.schemabinding.version2.WebServiceParameterSet.class, - reader); - } - - /** - * - * - * @throws org.exolab.castor.xml.ValidationException - * if this object is an invalid instance according to the schema - */ - public void validate() throws org.exolab.castor.xml.ValidationException - { - org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator(); - validator.validate(this); - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/AlcodMapDescriptor.java b/src/jalview/schemabinding/version2/descriptors/AlcodMapDescriptor.java deleted file mode 100644 index 1447978..0000000 --- a/src/jalview/schemabinding/version2/descriptors/AlcodMapDescriptor.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.AlcodMap; - -/** - * Class AlcodMapDescriptor. - * - * @version $Revision$ $Date$ - */ -public class AlcodMapDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public AlcodMapDescriptor() - { - super(); - _nsURI = "www.vamsas.ac.uk/jalview/version2"; - _xmlName = "alcodMap"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _dnasq - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_dnasq", "dnasq", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AlcodMap target = (AlcodMap) object; - return target.getDnasq(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AlcodMap target = (AlcodMap) object; - target.setDnasq((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _dnasq - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _mapping - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.Mapping.class, "_mapping", - "Mapping", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AlcodMap target = (AlcodMap) object; - return target.getMapping(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AlcodMap target = (AlcodMap) object; - target.setMapping((jalview.schemabinding.version2.Mapping) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.Mapping(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _mapping - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.AlcodMap.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/AlcodonDescriptor.java b/src/jalview/schemabinding/version2/descriptors/AlcodonDescriptor.java deleted file mode 100644 index c1a0eab..0000000 --- a/src/jalview/schemabinding/version2/descriptors/AlcodonDescriptor.java +++ /dev/null @@ -1,313 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.Alcodon; - -/** - * Class AlcodonDescriptor. - * - * @version $Revision$ $Date$ - */ -public class AlcodonDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public AlcodonDescriptor() - { - super(); - _nsURI = "www.vamsas.ac.uk/jalview/version2"; - _xmlName = "alcodon"; - _elementDefinition = true; - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _pos1 - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Long.TYPE, "_pos1", "pos1", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Alcodon target = (Alcodon) object; - if (!target.hasPos1()) - { - return null; - } - return new java.lang.Long(target.getPos1()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Alcodon target = (Alcodon) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deletePos1(); - return; - } - target.setPos1(((java.lang.Long) value).longValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _pos1 - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.LongValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.LongValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _pos2 - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Long.TYPE, "_pos2", "pos2", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Alcodon target = (Alcodon) object; - if (!target.hasPos2()) - { - return null; - } - return new java.lang.Long(target.getPos2()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Alcodon target = (Alcodon) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deletePos2(); - return; - } - target.setPos2(((java.lang.Long) value).longValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _pos2 - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.LongValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.LongValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _pos3 - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Long.TYPE, "_pos3", "pos3", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Alcodon target = (Alcodon) object; - if (!target.hasPos3()) - { - return null; - } - return new java.lang.Long(target.getPos3()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Alcodon target = (Alcodon) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deletePos3(); - return; - } - target.setPos3(((java.lang.Long) value).longValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _pos3 - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.LongValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.LongValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.Alcodon.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/AlcodonFrameDescriptor.java b/src/jalview/schemabinding/version2/descriptors/AlcodonFrameDescriptor.java deleted file mode 100644 index 919941e..0000000 --- a/src/jalview/schemabinding/version2/descriptors/AlcodonFrameDescriptor.java +++ /dev/null @@ -1,267 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.AlcodonFrame; - -/** - * Class AlcodonFrameDescriptor. - * - * @version $Revision$ $Date$ - */ -public class AlcodonFrameDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public AlcodonFrameDescriptor() - { - super(); - _nsURI = "www.vamsas.ac.uk/jalview/version2"; - _xmlName = "AlcodonFrame"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- initialize element descriptors - - // -- _alcodonList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.Alcodon.class, "_alcodonList", - "alcodon", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AlcodonFrame target = (AlcodonFrame) object; - return target.getAlcodon(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AlcodonFrame target = (AlcodonFrame) object; - target.addAlcodon((jalview.schemabinding.version2.Alcodon) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - AlcodonFrame target = (AlcodonFrame) object; - target.removeAllAlcodon(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.Alcodon(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _alcodonList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _alcodMapList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.AlcodMap.class, "_alcodMapList", - "alcodMap", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AlcodonFrame target = (AlcodonFrame) object; - return target.getAlcodMap(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AlcodonFrame target = (AlcodonFrame) object; - target.addAlcodMap((jalview.schemabinding.version2.AlcodMap) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - AlcodonFrame target = (AlcodonFrame) object; - target.removeAllAlcodMap(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.AlcodMap(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _alcodMapList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.AlcodonFrame.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/AnnotationColourSchemeDescriptor.java b/src/jalview/schemabinding/version2/descriptors/AnnotationColourSchemeDescriptor.java deleted file mode 100644 index 804b49e..0000000 --- a/src/jalview/schemabinding/version2/descriptors/AnnotationColourSchemeDescriptor.java +++ /dev/null @@ -1,573 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.AnnotationColourScheme; - -/** - * Class AnnotationColourSchemeDescriptor. - * - * @version $Revision$ $Date$ - */ -public class AnnotationColourSchemeDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public AnnotationColourSchemeDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "AnnotationColourScheme"; - _elementDefinition = false; - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _aboveThreshold - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_aboveThreshold", "aboveThreshold", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AnnotationColourScheme target = (AnnotationColourScheme) object; - if (!target.hasAboveThreshold()) - { - return null; - } - return new java.lang.Integer(target.getAboveThreshold()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AnnotationColourScheme target = (AnnotationColourScheme) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteAboveThreshold(); - return; - } - target.setAboveThreshold(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _aboveThreshold - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _annotation - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_annotation", "annotation", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AnnotationColourScheme target = (AnnotationColourScheme) object; - return target.getAnnotation(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AnnotationColourScheme target = (AnnotationColourScheme) object; - target.setAnnotation((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _annotation - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _minColour - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_minColour", "minColour", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AnnotationColourScheme target = (AnnotationColourScheme) object; - if (!target.hasMinColour()) - { - return null; - } - return new java.lang.Integer(target.getMinColour()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AnnotationColourScheme target = (AnnotationColourScheme) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteMinColour(); - return; - } - target.setMinColour(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _minColour - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _maxColour - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_maxColour", "maxColour", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AnnotationColourScheme target = (AnnotationColourScheme) object; - if (!target.hasMaxColour()) - { - return null; - } - return new java.lang.Integer(target.getMaxColour()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AnnotationColourScheme target = (AnnotationColourScheme) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteMaxColour(); - return; - } - target.setMaxColour(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _maxColour - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _colourScheme - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_colourScheme", "colourScheme", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AnnotationColourScheme target = (AnnotationColourScheme) object; - return target.getColourScheme(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AnnotationColourScheme target = (AnnotationColourScheme) object; - target.setColourScheme((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _colourScheme - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _threshold - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Float.TYPE, "_threshold", "threshold", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AnnotationColourScheme target = (AnnotationColourScheme) object; - if (!target.hasThreshold()) - { - return null; - } - return new java.lang.Float(target.getThreshold()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AnnotationColourScheme target = (AnnotationColourScheme) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteThreshold(); - return; - } - target.setThreshold(((java.lang.Float) value).floatValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _threshold - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.FloatValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.FloatValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive((float) -3.4028235E38); - typeValidator.setMaxInclusive((float) 3.4028235E38); - } - desc.setValidator(fieldValidator); - // -- _perSequence - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_perSequence", "perSequence", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AnnotationColourScheme target = (AnnotationColourScheme) object; - if (!target.hasPerSequence()) - { - return null; - } - return (target.getPerSequence() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AnnotationColourScheme target = (AnnotationColourScheme) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deletePerSequence(); - return; - } - target.setPerSequence(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _perSequence - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _predefinedColours - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_predefinedColours", - "predefinedColours", org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AnnotationColourScheme target = (AnnotationColourScheme) object; - if (!target.hasPredefinedColours()) - { - return null; - } - return (target.getPredefinedColours() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AnnotationColourScheme target = (AnnotationColourScheme) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deletePredefinedColours(); - return; - } - target.setPredefinedColours(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _predefinedColours - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.AnnotationColourScheme.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/AnnotationColoursDescriptor.java b/src/jalview/schemabinding/version2/descriptors/AnnotationColoursDescriptor.java deleted file mode 100644 index 5739d90..0000000 --- a/src/jalview/schemabinding/version2/descriptors/AnnotationColoursDescriptor.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.AnnotationColours; - -/** - * Class AnnotationColoursDescriptor. - * - * @version $Revision$ $Date$ - */ -public class AnnotationColoursDescriptor - extends - jalview.schemabinding.version2.descriptors.AnnotationColourSchemeDescriptor -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public AnnotationColoursDescriptor() - { - super(); - setExtendsWithoutFlatten(new jalview.schemabinding.version2.descriptors.AnnotationColourSchemeDescriptor()); - _nsURI = "www.jalview.org"; - _xmlName = "AnnotationColours"; - _elementDefinition = true; - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.AnnotationColours.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/AnnotationDescriptor.java b/src/jalview/schemabinding/version2/descriptors/AnnotationDescriptor.java deleted file mode 100644 index e2331f4..0000000 --- a/src/jalview/schemabinding/version2/descriptors/AnnotationDescriptor.java +++ /dev/null @@ -1,1298 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.Annotation; - -/** - * Class AnnotationDescriptor. - * - * @version $Revision$ $Date$ - */ -public class AnnotationDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public AnnotationDescriptor() - { - super(); - _nsURI = "www.vamsas.ac.uk/jalview/version2"; - _xmlName = "Annotation"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _graph - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_graph", "graph", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - if (!target.hasGraph()) - { - return null; - } - return (target.getGraph() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.setGraph(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _graph - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _graphType - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_graphType", "graphType", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - if (!target.hasGraphType()) - { - return null; - } - return new java.lang.Integer(target.getGraphType()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteGraphType(); - return; - } - target.setGraphType(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _graphType - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _sequenceRef - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_sequenceRef", "sequenceRef", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - return target.getSequenceRef(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - target.setSequenceRef((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _sequenceRef - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _groupRef - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_groupRef", "groupRef", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - return target.getGroupRef(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - target.setGroupRef((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _groupRef - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _graphColour - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_graphColour", "graphColour", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - if (!target.hasGraphColour()) - { - return null; - } - return new java.lang.Integer(target.getGraphColour()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteGraphColour(); - return; - } - target.setGraphColour(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _graphColour - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _graphGroup - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_graphGroup", "graphGroup", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - if (!target.hasGraphGroup()) - { - return null; - } - return new java.lang.Integer(target.getGraphGroup()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteGraphGroup(); - return; - } - target.setGraphGroup(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _graphGroup - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _graphHeight - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_graphHeight", "graphHeight", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - if (!target.hasGraphHeight()) - { - return null; - } - return new java.lang.Integer(target.getGraphHeight()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteGraphHeight(); - return; - } - target.setGraphHeight(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _graphHeight - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _id - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_id", "id", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - return target.getId(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - target.setId((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _id - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _scoreOnly - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_scoreOnly", "scoreOnly", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - if (!target.hasScoreOnly()) - { - return null; - } - return (target.getScoreOnly() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteScoreOnly(); - return; - } - target.setScoreOnly(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _scoreOnly - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _score - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Double.TYPE, "_score", "score", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - if (!target.hasScore()) - { - return null; - } - return new java.lang.Double(target.getScore()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteScore(); - return; - } - target.setScore(((java.lang.Double) value).doubleValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _score - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.DoubleValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.DoubleValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-1.7976931348623157E308); - typeValidator.setMaxInclusive(1.7976931348623157E308); - } - desc.setValidator(fieldValidator); - // -- _visible - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_visible", "visible", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - if (!target.hasVisible()) - { - return null; - } - return (target.getVisible() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteVisible(); - return; - } - target.setVisible(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _visible - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _centreColLabels - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_centreColLabels", "centreColLabels", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - if (!target.hasCentreColLabels()) - { - return null; - } - return (target.getCentreColLabels() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteCentreColLabels(); - return; - } - target.setCentreColLabels(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _centreColLabels - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _scaleColLabels - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_scaleColLabels", "scaleColLabels", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - if (!target.hasScaleColLabels()) - { - return null; - } - return (target.getScaleColLabels() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteScaleColLabels(); - return; - } - target.setScaleColLabels(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _scaleColLabels - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _showAllColLabels - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showAllColLabels", - "showAllColLabels", org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - if (!target.hasShowAllColLabels()) - { - return null; - } - return (target.getShowAllColLabels() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowAllColLabels(); - return; - } - target.setShowAllColLabels(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showAllColLabels - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _autoCalculated - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_autoCalculated", "autoCalculated", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - if (!target.hasAutoCalculated()) - { - return null; - } - return (target.getAutoCalculated() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteAutoCalculated(); - return; - } - target.setAutoCalculated(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _autoCalculated - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _belowAlignment - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_belowAlignment", "belowAlignment", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - if (!target.hasBelowAlignment()) - { - return null; - } - return (target.getBelowAlignment() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteBelowAlignment(); - return; - } - target.setBelowAlignment(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _belowAlignment - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _calcId - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_calcId", "calcId", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - return target.getCalcId(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - target.setCalcId((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _calcId - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _annotationElementList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.AnnotationElement.class, - "_annotationElementList", "annotationElement", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - return target.getAnnotationElement(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - target.addAnnotationElement((jalview.schemabinding.version2.AnnotationElement) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - target.removeAllAnnotationElement(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.AnnotationElement(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _annotationElementList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _label - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_label", "label", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - return target.getLabel(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - target.setLabel((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _label - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _description - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_description", "description", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - return target.getDescription(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - target.setDescription((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _description - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _thresholdLine - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.ThresholdLine.class, - "_thresholdLine", "thresholdLine", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - return target.getThresholdLine(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - target.setThresholdLine((jalview.schemabinding.version2.ThresholdLine) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.ThresholdLine(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _thresholdLine - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _propertyList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.Property.class, "_propertyList", - "property", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Annotation target = (Annotation) object; - return target.getProperty(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - target.addProperty((jalview.schemabinding.version2.Property) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - Annotation target = (Annotation) object; - target.removeAllProperty(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.Property(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _propertyList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.Annotation.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/AnnotationElementDescriptor.java b/src/jalview/schemabinding/version2/descriptors/AnnotationElementDescriptor.java deleted file mode 100644 index 4416bbf..0000000 --- a/src/jalview/schemabinding/version2/descriptors/AnnotationElementDescriptor.java +++ /dev/null @@ -1,464 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.AnnotationElement; - -/** - * Class AnnotationElementDescriptor. - * - * @version $Revision$ $Date$ - */ -public class AnnotationElementDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public AnnotationElementDescriptor() - { - super(); - _nsURI = "www.vamsas.ac.uk/jalview/version2"; - _xmlName = "annotationElement"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _position - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_position", "position", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AnnotationElement target = (AnnotationElement) object; - if (!target.hasPosition()) - { - return null; - } - return new java.lang.Integer(target.getPosition()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AnnotationElement target = (AnnotationElement) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.setPosition(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _position - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _colour - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_colour", "colour", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AnnotationElement target = (AnnotationElement) object; - if (!target.hasColour()) - { - return null; - } - return new java.lang.Integer(target.getColour()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AnnotationElement target = (AnnotationElement) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteColour(); - return; - } - target.setColour(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _colour - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _displayCharacter - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_displayCharacter", - "displayCharacter", org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AnnotationElement target = (AnnotationElement) object; - return target.getDisplayCharacter(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AnnotationElement target = (AnnotationElement) object; - target.setDisplayCharacter((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _displayCharacter - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _description - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_description", "description", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AnnotationElement target = (AnnotationElement) object; - return target.getDescription(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AnnotationElement target = (AnnotationElement) object; - target.setDescription((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _description - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _secondaryStructure - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_secondaryStructure", - "secondaryStructure", org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AnnotationElement target = (AnnotationElement) object; - return target.getSecondaryStructure(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AnnotationElement target = (AnnotationElement) object; - target.setSecondaryStructure((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _secondaryStructure - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - typeValidator.setLength(1); - } - desc.setValidator(fieldValidator); - // -- _value - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Float.TYPE, "_value", "value", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - AnnotationElement target = (AnnotationElement) object; - if (!target.hasValue()) - { - return null; - } - return new java.lang.Float(target.getValue()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - AnnotationElement target = (AnnotationElement) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteValue(); - return; - } - target.setValue(((java.lang.Float) value).floatValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _value - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.FloatValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.FloatValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive((float) -3.4028235E38); - typeValidator.setMaxInclusive((float) 3.4028235E38); - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.AnnotationElement.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/CalcIdParamDescriptor.java b/src/jalview/schemabinding/version2/descriptors/CalcIdParamDescriptor.java deleted file mode 100644 index 6dbea24..0000000 --- a/src/jalview/schemabinding/version2/descriptors/CalcIdParamDescriptor.java +++ /dev/null @@ -1,313 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.CalcIdParam; - -/** - * Class CalcIdParamDescriptor. - * - * @version $Revision$ $Date$ - */ -public class CalcIdParamDescriptor - extends - jalview.schemabinding.version2.descriptors.WebServiceParameterSetDescriptor -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public CalcIdParamDescriptor() - { - super(); - setExtendsWithoutFlatten(new jalview.schemabinding.version2.descriptors.WebServiceParameterSetDescriptor()); - _nsURI = "www.jalview.org"; - _xmlName = "calcIdParam"; - _elementDefinition = true; - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _calcId - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_calcId", "calcId", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - CalcIdParam target = (CalcIdParam) object; - return target.getCalcId(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - CalcIdParam target = (CalcIdParam) object; - target.setCalcId((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _calcId - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _needsUpdate - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_needsUpdate", "needsUpdate", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - CalcIdParam target = (CalcIdParam) object; - if (!target.hasNeedsUpdate()) - { - return null; - } - return (target.getNeedsUpdate() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - CalcIdParam target = (CalcIdParam) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteNeedsUpdate(); - return; - } - target.setNeedsUpdate(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _needsUpdate - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _autoUpdate - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_autoUpdate", "autoUpdate", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - CalcIdParam target = (CalcIdParam) object; - if (!target.hasAutoUpdate()) - { - return null; - } - return (target.getAutoUpdate() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - CalcIdParam target = (CalcIdParam) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.setAutoUpdate(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _autoUpdate - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.CalcIdParam.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/ColourDescriptor.java b/src/jalview/schemabinding/version2/descriptors/ColourDescriptor.java deleted file mode 100644 index cca4ef1..0000000 --- a/src/jalview/schemabinding/version2/descriptors/ColourDescriptor.java +++ /dev/null @@ -1,719 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.Colour; - -/** - * Class ColourDescriptor. - * - * @version $Revision$ $Date$ - */ -public class ColourDescriptor - extends org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public ColourDescriptor() - { - super(); - _xmlName = "colour"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _name - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_name", "Name", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Colour target = (Colour) object; - return target.getName(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Colour target = (Colour) object; - target.setName((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _name - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _RGB - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_RGB", "RGB", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Colour target = (Colour) object; - return target.getRGB(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Colour target = (Colour) object; - target.setRGB((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _RGB - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _minRGB - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_minRGB", "minRGB", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Colour target = (Colour) object; - return target.getMinRGB(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Colour target = (Colour) object; - target.setMinRGB((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _minRGB - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _noValueColour - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.types.NoValueColour.class, - "_noValueColour", "noValueColour", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Colour target = (Colour) object; - return target.getNoValueColour(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Colour target = (Colour) object; - target.setNoValueColour( - (jalview.schemabinding.version2.types.NoValueColour) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - handler = new org.exolab.castor.xml.handlers.EnumFieldHandler( - jalview.schemabinding.version2.types.NoValueColour.class, - handler); - desc.setImmutable(true); - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _noValueColour - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _threshType - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.types.ColourThreshTypeType.class, - "_threshType", "threshType", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Colour target = (Colour) object; - return target.getThreshType(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Colour target = (Colour) object; - target.setThreshType( - (jalview.schemabinding.version2.types.ColourThreshTypeType) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - handler = new org.exolab.castor.xml.handlers.EnumFieldHandler( - jalview.schemabinding.version2.types.ColourThreshTypeType.class, - handler); - desc.setImmutable(true); - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _threshType - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _threshold - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Float.TYPE, "_threshold", "threshold", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Colour target = (Colour) object; - if (!target.hasThreshold()) - { - return null; - } - return new java.lang.Float(target.getThreshold()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Colour target = (Colour) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteThreshold(); - return; - } - target.setThreshold(((java.lang.Float) value).floatValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _threshold - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.FloatValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.FloatValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive((float) -3.4028235E38); - typeValidator.setMaxInclusive((float) 3.4028235E38); - } - desc.setValidator(fieldValidator); - // -- _max - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Float.TYPE, "_max", "max", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Colour target = (Colour) object; - if (!target.hasMax()) - { - return null; - } - return new java.lang.Float(target.getMax()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Colour target = (Colour) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteMax(); - return; - } - target.setMax(((java.lang.Float) value).floatValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _max - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.FloatValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.FloatValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive((float) -3.4028235E38); - typeValidator.setMaxInclusive((float) 3.4028235E38); - } - desc.setValidator(fieldValidator); - // -- _min - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Float.TYPE, "_min", "min", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Colour target = (Colour) object; - if (!target.hasMin()) - { - return null; - } - return new java.lang.Float(target.getMin()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Colour target = (Colour) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteMin(); - return; - } - target.setMin(((java.lang.Float) value).floatValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _min - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.FloatValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.FloatValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive((float) -3.4028235E38); - typeValidator.setMaxInclusive((float) 3.4028235E38); - } - desc.setValidator(fieldValidator); - // -- _colourByLabel - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_colourByLabel", "colourByLabel", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Colour target = (Colour) object; - if (!target.hasColourByLabel()) - { - return null; - } - return (target.getColourByLabel() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Colour target = (Colour) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteColourByLabel(); - return; - } - target.setColourByLabel( - ((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _colourByLabel - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _autoScale - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_autoScale", "autoScale", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Colour target = (Colour) object; - if (!target.hasAutoScale()) - { - return null; - } - return (target.getAutoScale() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Colour target = (Colour) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteAutoScale(); - return; - } - target.setAutoScale(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _autoScale - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _attributeNameList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_attributeNameList", "attributeName", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Colour target = (Colour) object; - return target.getAttributeName(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Colour target = (Colour) object; - target.addAttributeName((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) - throws IllegalStateException, IllegalArgumentException - { - try - { - Colour target = (Colour) object; - target.removeAllAttributeName(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _attributeNameList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - fieldValidator.setMaxOccurs(2); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.Colour.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/CompoundMatcherDescriptor.java b/src/jalview/schemabinding/version2/descriptors/CompoundMatcherDescriptor.java deleted file mode 100644 index 2402d68..0000000 --- a/src/jalview/schemabinding/version2/descriptors/CompoundMatcherDescriptor.java +++ /dev/null @@ -1,270 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.CompoundMatcher; - -/** - * Class CompoundMatcherDescriptor. - * - * @version $Revision$ $Date$ - */ -public class CompoundMatcherDescriptor - extends org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public CompoundMatcherDescriptor() - { - super(); - _xmlName = "compoundMatcher"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _and - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_and", "and", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - CompoundMatcher target = (CompoundMatcher) object; - if (!target.hasAnd()) - { - return null; - } - return (target.getAnd() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - CompoundMatcher target = (CompoundMatcher) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.setAnd(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _and - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _matcherSetList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.MatcherSet.class, - "_matcherSetList", "matcherSet", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - CompoundMatcher target = (CompoundMatcher) object; - return target.getMatcherSet(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - CompoundMatcher target = (CompoundMatcher) object; - target.addMatcherSet( - (jalview.schemabinding.version2.MatcherSet) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) - throws IllegalStateException, IllegalArgumentException - { - try - { - CompoundMatcher target = (CompoundMatcher) object; - target.removeAllMatcherSet(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.MatcherSet(); - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _matcherSetList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(2); - fieldValidator.setMaxOccurs(2); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.CompoundMatcher.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/DBRefDescriptor.java b/src/jalview/schemabinding/version2/descriptors/DBRefDescriptor.java deleted file mode 100644 index e896d7a..0000000 --- a/src/jalview/schemabinding/version2/descriptors/DBRefDescriptor.java +++ /dev/null @@ -1,333 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.DBRef; - -/** - * Class DBRefDescriptor. - * - * @version $Revision$ $Date$ - */ -public class DBRefDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public DBRefDescriptor() - { - super(); - _nsURI = "www.vamsas.ac.uk/jalview/version2"; - _xmlName = "DBRef"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _source - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_source", "source", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - DBRef target = (DBRef) object; - return target.getSource(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - DBRef target = (DBRef) object; - target.setSource((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _source - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _version - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_version", "version", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - DBRef target = (DBRef) object; - return target.getVersion(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - DBRef target = (DBRef) object; - target.setVersion((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _version - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _accessionId - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_accessionId", "accessionId", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - DBRef target = (DBRef) object; - return target.getAccessionId(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - DBRef target = (DBRef) object; - target.setAccessionId((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _accessionId - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _mapping - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.Mapping.class, "_mapping", - "Mapping", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - DBRef target = (DBRef) object; - return target.getMapping(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - DBRef target = (DBRef) object; - target.setMapping((jalview.schemabinding.version2.Mapping) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.Mapping(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _mapping - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.DBRef.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/FeatureDescriptor.java b/src/jalview/schemabinding/version2/descriptors/FeatureDescriptor.java deleted file mode 100644 index 64ed3a5..0000000 --- a/src/jalview/schemabinding/version2/descriptors/FeatureDescriptor.java +++ /dev/null @@ -1,564 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.Feature; - -/** - * Class FeatureDescriptor. - * - * @version $Revision$ $Date$ - */ -public class FeatureDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public FeatureDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "feature"; - _elementDefinition = false; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _begin - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_begin", "begin", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Feature target = (Feature) object; - if (!target.hasBegin()) - { - return null; - } - return new java.lang.Integer(target.getBegin()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Feature target = (Feature) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.setBegin(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _begin - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _end - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_end", "end", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Feature target = (Feature) object; - if (!target.hasEnd()) - { - return null; - } - return new java.lang.Integer(target.getEnd()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Feature target = (Feature) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.setEnd(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _end - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _type - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_type", "type", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Feature target = (Feature) object; - return target.getType(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Feature target = (Feature) object; - target.setType((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _type - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _description - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_description", "description", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Feature target = (Feature) object; - return target.getDescription(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Feature target = (Feature) object; - target.setDescription((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _description - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _status - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_status", "status", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Feature target = (Feature) object; - return target.getStatus(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Feature target = (Feature) object; - target.setStatus((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _status - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _featureGroup - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_featureGroup", "featureGroup", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Feature target = (Feature) object; - return target.getFeatureGroup(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Feature target = (Feature) object; - target.setFeatureGroup((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _featureGroup - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _score - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Float.TYPE, "_score", "score", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Feature target = (Feature) object; - if (!target.hasScore()) - { - return null; - } - return new java.lang.Float(target.getScore()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Feature target = (Feature) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteScore(); - return; - } - target.setScore(((java.lang.Float) value).floatValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _score - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.FloatValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.FloatValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive((float) -3.4028235E38); - typeValidator.setMaxInclusive((float) 3.4028235E38); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _otherDataList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.OtherData.class, - "_otherDataList", "otherData", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Feature target = (Feature) object; - return target.getOtherData(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Feature target = (Feature) object; - target.addOtherData((jalview.schemabinding.version2.OtherData) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - Feature target = (Feature) object; - target.removeAllOtherData(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.OtherData(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _otherDataList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.Feature.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/FeatureMatcherDescriptor.java b/src/jalview/schemabinding/version2/descriptors/FeatureMatcherDescriptor.java deleted file mode 100644 index 2df2f5b..0000000 --- a/src/jalview/schemabinding/version2/descriptors/FeatureMatcherDescriptor.java +++ /dev/null @@ -1,356 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.FeatureMatcher; - -/** - * Class FeatureMatcherDescriptor. - * - * @version $Revision$ $Date$ - */ -public class FeatureMatcherDescriptor - extends org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public FeatureMatcherDescriptor() - { - super(); - _nsURI = "www.jalview.org/colours"; - _xmlName = "FeatureMatcher"; - _elementDefinition = false; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _by - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.types.FeatureMatcherByType.class, - "_by", "by", org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - FeatureMatcher target = (FeatureMatcher) object; - return target.getBy(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - FeatureMatcher target = (FeatureMatcher) object; - target.setBy( - (jalview.schemabinding.version2.types.FeatureMatcherByType) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - handler = new org.exolab.castor.xml.handlers.EnumFieldHandler( - jalview.schemabinding.version2.types.FeatureMatcherByType.class, - handler); - desc.setImmutable(true); - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _by - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _attributeNameList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_attributeNameList", "attributeName", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - FeatureMatcher target = (FeatureMatcher) object; - return target.getAttributeName(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - FeatureMatcher target = (FeatureMatcher) object; - target.addAttributeName((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) - throws IllegalStateException, IllegalArgumentException - { - try - { - FeatureMatcher target = (FeatureMatcher) object; - target.removeAllAttributeName(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _attributeNameList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - fieldValidator.setMaxOccurs(2); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _condition - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_condition", "condition", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - FeatureMatcher target = (FeatureMatcher) object; - return target.getCondition(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - FeatureMatcher target = (FeatureMatcher) object; - target.setCondition((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _condition - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _value - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_value", "value", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - FeatureMatcher target = (FeatureMatcher) object; - return target.getValue(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - FeatureMatcher target = (FeatureMatcher) object; - target.setValue((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _value - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.FeatureMatcher.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/FeatureMatcherSetDescriptor.java b/src/jalview/schemabinding/version2/descriptors/FeatureMatcherSetDescriptor.java deleted file mode 100644 index b3d19bb..0000000 --- a/src/jalview/schemabinding/version2/descriptors/FeatureMatcherSetDescriptor.java +++ /dev/null @@ -1,258 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -import jalview.schemabinding.version2.CompoundMatcher; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.FeatureMatcherSet; -import jalview.schemabinding.version2.MatchCondition; - -/** - * Class FeatureMatcherSetDescriptor. - * - * @version $Revision$ $Date$ - */ -public class FeatureMatcherSetDescriptor - extends org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public FeatureMatcherSetDescriptor() - { - super(); - _nsURI = "www.jalview.org/colours"; - _xmlName = "FeatureMatcherSet"; - _elementDefinition = false; - - // -- set grouping compositor - setCompositorAsChoice(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- initialize element descriptors - - // -- _matchCondition - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - MatchCondition.class, "_matchCondition", "matchCondition", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - @Override - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - FeatureMatcherSet target = (FeatureMatcherSet) object; - return target.getMatchCondition(); - } - - @Override - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - FeatureMatcherSet target = (FeatureMatcherSet) object; - target.setMatchCondition((MatchCondition) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - @Override - public java.lang.Object newInstance(java.lang.Object parent) - { - return new MatchCondition(); - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _matchCondition - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _compoundMatcher - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - CompoundMatcher.class, "_compoundMatcher", "compoundMatcher", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - @Override - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - FeatureMatcherSet target = (FeatureMatcherSet) object; - return target.getCompoundMatcher(); - } - - @Override - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - FeatureMatcherSet target = (FeatureMatcherSet) object; - target.setCompoundMatcher((CompoundMatcher) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - @Override - public java.lang.Object newInstance(java.lang.Object parent) - { - return new CompoundMatcher(); - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _compoundMatcher - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - @Override - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - @Override - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - @Override - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.FeatureMatcherSet.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - @Override - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - @Override - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - @Override - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - @Override - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - @Override - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/FeatureSettingsDescriptor.java b/src/jalview/schemabinding/version2/descriptors/FeatureSettingsDescriptor.java deleted file mode 100644 index 44bc256..0000000 --- a/src/jalview/schemabinding/version2/descriptors/FeatureSettingsDescriptor.java +++ /dev/null @@ -1,267 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.FeatureSettings; - -/** - * Class FeatureSettingsDescriptor. - * - * @version $Revision$ $Date$ - */ -public class FeatureSettingsDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public FeatureSettingsDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "FeatureSettings"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- initialize element descriptors - - // -- _settingList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.Setting.class, "_settingList", - "setting", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - FeatureSettings target = (FeatureSettings) object; - return target.getSetting(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - FeatureSettings target = (FeatureSettings) object; - target.addSetting((jalview.schemabinding.version2.Setting) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - FeatureSettings target = (FeatureSettings) object; - target.removeAllSetting(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.Setting(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _settingList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _groupList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.Group.class, "_groupList", - "group", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - FeatureSettings target = (FeatureSettings) object; - return target.getGroup(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - FeatureSettings target = (FeatureSettings) object; - target.addGroup((jalview.schemabinding.version2.Group) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - FeatureSettings target = (FeatureSettings) object; - target.removeAllGroup(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.Group(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _groupList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.FeatureSettings.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/FeaturesDescriptor.java b/src/jalview/schemabinding/version2/descriptors/FeaturesDescriptor.java deleted file mode 100644 index 107c06d..0000000 --- a/src/jalview/schemabinding/version2/descriptors/FeaturesDescriptor.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.Features; - -/** - * Class FeaturesDescriptor. - * - * @version $Revision$ $Date$ - */ -public class FeaturesDescriptor extends - jalview.schemabinding.version2.descriptors.FeatureDescriptor -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public FeaturesDescriptor() - { - super(); - setExtendsWithoutFlatten(new jalview.schemabinding.version2.descriptors.FeatureDescriptor()); - _nsURI = "www.jalview.org"; - _xmlName = "features"; - _elementDefinition = true; - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.Features.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/FilterDescriptor.java b/src/jalview/schemabinding/version2/descriptors/FilterDescriptor.java deleted file mode 100644 index f58f9ae..0000000 --- a/src/jalview/schemabinding/version2/descriptors/FilterDescriptor.java +++ /dev/null @@ -1,246 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.Filter; - -/** - * Class FilterDescriptor. - * - * @version $Revision$ $Date$ - */ -public class FilterDescriptor - extends org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public FilterDescriptor() - { - super(); - _xmlName = "filter"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _featureType - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_featureType", "featureType", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Filter target = (Filter) object; - return target.getFeatureType(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Filter target = (Filter) object; - target.setFeatureType((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _featureType - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _matcherSet - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.MatcherSet.class, "_matcherSet", - "matcherSet", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Filter target = (Filter) object; - return target.getMatcherSet(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Filter target = (Filter) object; - target.setMatcherSet( - (jalview.schemabinding.version2.MatcherSet) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.MatcherSet(); - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _matcherSet - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.Filter.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/GroupDescriptor.java b/src/jalview/schemabinding/version2/descriptors/GroupDescriptor.java deleted file mode 100644 index 7aa6203..0000000 --- a/src/jalview/schemabinding/version2/descriptors/GroupDescriptor.java +++ /dev/null @@ -1,257 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.Group; - -/** - * Class GroupDescriptor. - * - * @version $Revision$ $Date$ - */ -public class GroupDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public GroupDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "group"; - _elementDefinition = true; - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _name - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_name", "name", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Group target = (Group) object; - return target.getName(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Group target = (Group) object; - target.setName((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _name - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _display - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_display", "display", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Group target = (Group) object; - if (!target.hasDisplay()) - { - return null; - } - return (target.getDisplay() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Group target = (Group) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.setDisplay(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _display - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.Group.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/HiddenColumnsDescriptor.java b/src/jalview/schemabinding/version2/descriptors/HiddenColumnsDescriptor.java deleted file mode 100644 index a5607b7..0000000 --- a/src/jalview/schemabinding/version2/descriptors/HiddenColumnsDescriptor.java +++ /dev/null @@ -1,264 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.HiddenColumns; - -/** - * Class HiddenColumnsDescriptor. - * - * @version $Revision$ $Date$ - */ -public class HiddenColumnsDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public HiddenColumnsDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "hiddenColumns"; - _elementDefinition = true; - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _start - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_start", "start", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - HiddenColumns target = (HiddenColumns) object; - if (!target.hasStart()) - { - return null; - } - return new java.lang.Integer(target.getStart()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - HiddenColumns target = (HiddenColumns) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteStart(); - return; - } - target.setStart(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _start - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _end - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_end", "end", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - HiddenColumns target = (HiddenColumns) object; - if (!target.hasEnd()) - { - return null; - } - return new java.lang.Integer(target.getEnd()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - HiddenColumns target = (HiddenColumns) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteEnd(); - return; - } - target.setEnd(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _end - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.HiddenColumns.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/JGroupDescriptor.java b/src/jalview/schemabinding/version2/descriptors/JGroupDescriptor.java deleted file mode 100644 index 620432f..0000000 --- a/src/jalview/schemabinding/version2/descriptors/JGroupDescriptor.java +++ /dev/null @@ -1,1275 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.JGroup; - -/** - * Class JGroupDescriptor. - * - * @version $Revision$ $Date$ - */ -public class JGroupDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public JGroupDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "JGroup"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _start - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_start", "start", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - if (!target.hasStart()) - { - return null; - } - return new java.lang.Integer(target.getStart()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteStart(); - return; - } - target.setStart(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _start - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _end - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_end", "end", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - if (!target.hasEnd()) - { - return null; - } - return new java.lang.Integer(target.getEnd()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteEnd(); - return; - } - target.setEnd(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _end - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _name - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_name", "name", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - return target.getName(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - target.setName((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _name - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _colour - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_colour", "colour", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - return target.getColour(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - target.setColour((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _colour - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _consThreshold - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_consThreshold", "consThreshold", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - if (!target.hasConsThreshold()) - { - return null; - } - return new java.lang.Integer(target.getConsThreshold()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteConsThreshold(); - return; - } - target.setConsThreshold(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _consThreshold - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _pidThreshold - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_pidThreshold", "pidThreshold", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - if (!target.hasPidThreshold()) - { - return null; - } - return new java.lang.Integer(target.getPidThreshold()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deletePidThreshold(); - return; - } - target.setPidThreshold(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _pidThreshold - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _outlineColour - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_outlineColour", "outlineColour", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - if (!target.hasOutlineColour()) - { - return null; - } - return new java.lang.Integer(target.getOutlineColour()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteOutlineColour(); - return; - } - target.setOutlineColour(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _outlineColour - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _displayBoxes - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_displayBoxes", "displayBoxes", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - if (!target.hasDisplayBoxes()) - { - return null; - } - return (target.getDisplayBoxes() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteDisplayBoxes(); - return; - } - target.setDisplayBoxes(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _displayBoxes - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _displayText - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_displayText", "displayText", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - if (!target.hasDisplayText()) - { - return null; - } - return (target.getDisplayText() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteDisplayText(); - return; - } - target.setDisplayText(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _displayText - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _colourText - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_colourText", "colourText", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - if (!target.hasColourText()) - { - return null; - } - return (target.getColourText() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteColourText(); - return; - } - target.setColourText(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _colourText - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _textCol1 - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_textCol1", "textCol1", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - if (!target.hasTextCol1()) - { - return null; - } - return new java.lang.Integer(target.getTextCol1()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteTextCol1(); - return; - } - target.setTextCol1(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _textCol1 - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _textCol2 - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_textCol2", "textCol2", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - if (!target.hasTextCol2()) - { - return null; - } - return new java.lang.Integer(target.getTextCol2()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteTextCol2(); - return; - } - target.setTextCol2(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _textCol2 - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _textColThreshold - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_textColThreshold", - "textColThreshold", org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - if (!target.hasTextColThreshold()) - { - return null; - } - return new java.lang.Integer(target.getTextColThreshold()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteTextColThreshold(); - return; - } - target.setTextColThreshold(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _textColThreshold - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _showUnconserved - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showUnconserved", "showUnconserved", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - if (!target.hasShowUnconserved()) - { - return null; - } - return (target.getShowUnconserved() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowUnconserved(); - return; - } - target.setShowUnconserved(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showUnconserved - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _ignoreGapsinConsensus - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_ignoreGapsinConsensus", - "ignoreGapsinConsensus", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - if (!target.hasIgnoreGapsinConsensus()) - { - return null; - } - return (target.getIgnoreGapsinConsensus() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteIgnoreGapsinConsensus(); - return; - } - target.setIgnoreGapsinConsensus(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _ignoreGapsinConsensus - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _showConsensusHistogram - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showConsensusHistogram", - "showConsensusHistogram", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - if (!target.hasShowConsensusHistogram()) - { - return null; - } - return (target.getShowConsensusHistogram() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowConsensusHistogram(); - return; - } - target.setShowConsensusHistogram(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showConsensusHistogram - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _showSequenceLogo - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showSequenceLogo", - "showSequenceLogo", org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - if (!target.hasShowSequenceLogo()) - { - return null; - } - return (target.getShowSequenceLogo() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowSequenceLogo(); - return; - } - target.setShowSequenceLogo(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showSequenceLogo - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _normaliseSequenceLogo - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_normaliseSequenceLogo", - "normaliseSequenceLogo", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - if (!target.hasNormaliseSequenceLogo()) - { - return null; - } - return (target.getNormaliseSequenceLogo() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteNormaliseSequenceLogo(); - return; - } - target.setNormaliseSequenceLogo(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _normaliseSequenceLogo - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _id - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_id", "id", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - return target.getId(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - target.setId((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _id - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _seqList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_seqList", "seq", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - return target.getSeq(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - target.addSeq((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - target.removeAllSeq(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setRequired(true); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _seqList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _annotationColours - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.AnnotationColours.class, - "_annotationColours", "annotationColours", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JGroup target = (JGroup) object; - return target.getAnnotationColours(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JGroup target = (JGroup) object; - target.setAnnotationColours((jalview.schemabinding.version2.AnnotationColours) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.AnnotationColours(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _annotationColours - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.JGroup.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/JSeqDescriptor.java b/src/jalview/schemabinding/version2/descriptors/JSeqDescriptor.java deleted file mode 100644 index 28f23b26..0000000 --- a/src/jalview/schemabinding/version2/descriptors/JSeqDescriptor.java +++ /dev/null @@ -1,714 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.JSeq; - -/** - * Class JSeqDescriptor. - * - * @version $Revision$ $Date$ - */ -public class JSeqDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public JSeqDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "JSeq"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _colour - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_colour", "colour", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JSeq target = (JSeq) object; - if (!target.hasColour()) - { - return null; - } - return new java.lang.Integer(target.getColour()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JSeq target = (JSeq) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteColour(); - return; - } - target.setColour(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _colour - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _start - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_start", "start", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JSeq target = (JSeq) object; - if (!target.hasStart()) - { - return null; - } - return new java.lang.Integer(target.getStart()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JSeq target = (JSeq) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.setStart(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _start - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _end - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_end", "end", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JSeq target = (JSeq) object; - if (!target.hasEnd()) - { - return null; - } - return new java.lang.Integer(target.getEnd()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JSeq target = (JSeq) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.setEnd(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _end - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _id - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_id", "id", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JSeq target = (JSeq) object; - return target.getId(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JSeq target = (JSeq) object; - target.setId((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _id - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _hidden - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_hidden", "hidden", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JSeq target = (JSeq) object; - if (!target.hasHidden()) - { - return null; - } - return (target.getHidden() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JSeq target = (JSeq) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteHidden(); - return; - } - target.setHidden(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _hidden - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _viewreference - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_viewreference", "viewreference", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JSeq target = (JSeq) object; - if (!target.hasViewreference()) - { - return null; - } - return (target.getViewreference() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JSeq target = (JSeq) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteViewreference(); - return; - } - target.setViewreference(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _viewreference - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _featuresList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.Features.class, "_featuresList", - "features", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JSeq target = (JSeq) object; - return target.getFeatures(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JSeq target = (JSeq) object; - target.addFeatures((jalview.schemabinding.version2.Features) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - JSeq target = (JSeq) object; - target.removeAllFeatures(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.Features(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _featuresList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _pdbidsList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.Pdbids.class, "_pdbidsList", - "pdbids", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JSeq target = (JSeq) object; - return target.getPdbids(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JSeq target = (JSeq) object; - target.addPdbids((jalview.schemabinding.version2.Pdbids) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - JSeq target = (JSeq) object; - target.removeAllPdbids(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.Pdbids(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _pdbidsList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _hiddenSequencesList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_hiddenSequencesList", - "hiddenSequences", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JSeq target = (JSeq) object; - return target.getHiddenSequences(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JSeq target = (JSeq) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.addHiddenSequences(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - JSeq target = (JSeq) object; - target.removeAllHiddenSequences(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _hiddenSequencesList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _rnaViewerList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.RnaViewer.class, - "_rnaViewerList", "rnaViewer", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JSeq target = (JSeq) object; - return target.getRnaViewer(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JSeq target = (JSeq) object; - target.addRnaViewer((jalview.schemabinding.version2.RnaViewer) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - JSeq target = (JSeq) object; - target.removeAllRnaViewer(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.RnaViewer(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _rnaViewerList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.JSeq.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/JalviewModelDescriptor.java b/src/jalview/schemabinding/version2/descriptors/JalviewModelDescriptor.java deleted file mode 100644 index f400c2c..0000000 --- a/src/jalview/schemabinding/version2/descriptors/JalviewModelDescriptor.java +++ /dev/null @@ -1,341 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.JalviewModel; - -/** - * Class JalviewModelDescriptor. - * - * @version $Revision$ $Date$ - */ -public class JalviewModelDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public JalviewModelDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "JalviewModel"; - _elementDefinition = false; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- initialize element descriptors - - // -- _creationDate - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.util.Date.class, "_creationDate", "creationDate", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JalviewModel target = (JalviewModel) object; - return target.getCreationDate(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JalviewModel target = (JalviewModel) object; - target.setCreationDate((java.util.Date) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new java.util.Date(); - } - }; - handler = new org.exolab.castor.xml.handlers.DateFieldHandler(handler); - desc.setImmutable(true); - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _creationDate - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.DateTimeValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.DateTimeValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _version - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_version", "version", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JalviewModel target = (JalviewModel) object; - return target.getVersion(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JalviewModel target = (JalviewModel) object; - target.setVersion((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _version - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _vamsasModel - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.VamsasModel.class, - "_vamsasModel", "vamsasModel", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JalviewModel target = (JalviewModel) object; - return target.getVamsasModel(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JalviewModel target = (JalviewModel) object; - target.setVamsasModel((jalview.schemabinding.version2.VamsasModel) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.VamsasModel(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _vamsasModel - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _jalviewModelSequence - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.JalviewModelSequence.class, - "_jalviewModelSequence", "-error-if-this-is-used-", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JalviewModel target = (JalviewModel) object; - return target.getJalviewModelSequence(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JalviewModel target = (JalviewModel) object; - target.setJalviewModelSequence((jalview.schemabinding.version2.JalviewModelSequence) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.JalviewModelSequence(); - } - }; - desc.setHandler(handler); - desc.setContainer(true); - desc.setClassDescriptor(new jalview.schemabinding.version2.descriptors.JalviewModelSequenceDescriptor()); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _jalviewModelSequence - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.JalviewModel.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/JalviewModelSequenceDescriptor.java b/src/jalview/schemabinding/version2/descriptors/JalviewModelSequenceDescriptor.java deleted file mode 100644 index e8c4ef4..0000000 --- a/src/jalview/schemabinding/version2/descriptors/JalviewModelSequenceDescriptor.java +++ /dev/null @@ -1,474 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.JalviewModelSequence; - -/** - * Class JalviewModelSequenceDescriptor. - * - * @version $Revision$ $Date$ - */ -public class JalviewModelSequenceDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public JalviewModelSequenceDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _elementDefinition = false; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- initialize element descriptors - - // -- _JSeqList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.JSeq.class, "_JSeqList", "JSeq", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JalviewModelSequence target = (JalviewModelSequence) object; - return target.getJSeq(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JalviewModelSequence target = (JalviewModelSequence) object; - target.addJSeq((jalview.schemabinding.version2.JSeq) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - JalviewModelSequence target = (JalviewModelSequence) object; - target.removeAllJSeq(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.JSeq(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _JSeqList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _JGroupList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.JGroup.class, "_JGroupList", - "JGroup", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JalviewModelSequence target = (JalviewModelSequence) object; - return target.getJGroup(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JalviewModelSequence target = (JalviewModelSequence) object; - target.addJGroup((jalview.schemabinding.version2.JGroup) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - JalviewModelSequence target = (JalviewModelSequence) object; - target.removeAllJGroup(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.JGroup(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _JGroupList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _viewportList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.Viewport.class, "_viewportList", - "Viewport", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JalviewModelSequence target = (JalviewModelSequence) object; - return target.getViewport(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JalviewModelSequence target = (JalviewModelSequence) object; - target.addViewport((jalview.schemabinding.version2.Viewport) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - JalviewModelSequence target = (JalviewModelSequence) object; - target.removeAllViewport(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.Viewport(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _viewportList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _userColoursList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.UserColours.class, - "_userColoursList", "UserColours", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JalviewModelSequence target = (JalviewModelSequence) object; - return target.getUserColours(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JalviewModelSequence target = (JalviewModelSequence) object; - target.addUserColours((jalview.schemabinding.version2.UserColours) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - JalviewModelSequence target = (JalviewModelSequence) object; - target.removeAllUserColours(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.UserColours(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _userColoursList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _treeList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.Tree.class, "_treeList", "tree", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JalviewModelSequence target = (JalviewModelSequence) object; - return target.getTree(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JalviewModelSequence target = (JalviewModelSequence) object; - target.addTree((jalview.schemabinding.version2.Tree) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - JalviewModelSequence target = (JalviewModelSequence) object; - target.removeAllTree(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.Tree(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _treeList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _featureSettings - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.FeatureSettings.class, - "_featureSettings", "FeatureSettings", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JalviewModelSequence target = (JalviewModelSequence) object; - return target.getFeatureSettings(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JalviewModelSequence target = (JalviewModelSequence) object; - target.setFeatureSettings((jalview.schemabinding.version2.FeatureSettings) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.FeatureSettings(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _featureSettings - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.JalviewModelSequence.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/JalviewUserColoursDescriptor.java b/src/jalview/schemabinding/version2/descriptors/JalviewUserColoursDescriptor.java deleted file mode 100644 index 459d645..0000000 --- a/src/jalview/schemabinding/version2/descriptors/JalviewUserColoursDescriptor.java +++ /dev/null @@ -1,380 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -import jalview.schemabinding.version2.Colour; -import jalview.schemabinding.version2.Filter; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.JalviewUserColours; - -/** - * Class JalviewUserColoursDescriptor. - * - * @version $Revision$ $Date$ - */ -public class JalviewUserColoursDescriptor - extends org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public JalviewUserColoursDescriptor() - { - super(); - _nsURI = "www.jalview.org/colours"; - _xmlName = "JalviewUserColours"; - _elementDefinition = false; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _schemeName - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_schemeName", "schemeName", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - @Override - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JalviewUserColours target = (JalviewUserColours) object; - return target.getSchemeName(); - } - - @Override - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JalviewUserColours target = (JalviewUserColours) object; - target.setSchemeName((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - @Override - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _schemeName - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _version - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_version", "Version", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - @Override - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JalviewUserColours target = (JalviewUserColours) object; - return target.getVersion(); - } - - @Override - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JalviewUserColours target = (JalviewUserColours) object; - target.setVersion((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - @Override - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _version - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _colourList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - Colour.class, "_colourList", "colour", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - @Override - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JalviewUserColours target = (JalviewUserColours) object; - return target.getColour(); - } - - @Override - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JalviewUserColours target = (JalviewUserColours) object; - target.addColour((Colour) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - @Override - public void resetValue(Object object) - throws IllegalStateException, IllegalArgumentException - { - try - { - JalviewUserColours target = (JalviewUserColours) object; - target.removeAllColour(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - @Override - public java.lang.Object newInstance(java.lang.Object parent) - { - return new Colour(); - } - }; - desc.setHandler(handler); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _colourList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _filterList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - Filter.class, "_filterList", "filter", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - @Override - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - JalviewUserColours target = (JalviewUserColours) object; - return target.getFilter(); - } - - @Override - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - JalviewUserColours target = (JalviewUserColours) object; - target.addFilter((Filter) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - @Override - public void resetValue(Object object) - throws IllegalStateException, IllegalArgumentException - { - try - { - JalviewUserColours target = (JalviewUserColours) object; - target.removeAllFilter(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - @Override - public java.lang.Object newInstance(java.lang.Object parent) - { - return new Filter(); - } - }; - desc.setHandler(handler); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _filterList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - @Override - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - @Override - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - @Override - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.JalviewUserColours.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - @Override - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - @Override - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - @Override - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - @Override - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - @Override - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/MapListFromDescriptor.java b/src/jalview/schemabinding/version2/descriptors/MapListFromDescriptor.java deleted file mode 100644 index 529f477..0000000 --- a/src/jalview/schemabinding/version2/descriptors/MapListFromDescriptor.java +++ /dev/null @@ -1,268 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.MapListFrom; - -/** - * Class MapListFromDescriptor. - * - * @version $Revision$ $Date$ - */ -public class MapListFromDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public MapListFromDescriptor() - { - super(); - _nsURI = "www.vamsas.ac.uk/jalview/version2"; - _xmlName = "mapListFrom"; - _elementDefinition = true; - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _start - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_start", "start", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - MapListFrom target = (MapListFrom) object; - if (!target.hasStart()) - { - return null; - } - return new java.lang.Integer(target.getStart()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - MapListFrom target = (MapListFrom) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.setStart(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _start - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _end - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_end", "end", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - MapListFrom target = (MapListFrom) object; - if (!target.hasEnd()) - { - return null; - } - return new java.lang.Integer(target.getEnd()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - MapListFrom target = (MapListFrom) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.setEnd(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _end - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.MapListFrom.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/MapListToDescriptor.java b/src/jalview/schemabinding/version2/descriptors/MapListToDescriptor.java deleted file mode 100644 index bed082a..0000000 --- a/src/jalview/schemabinding/version2/descriptors/MapListToDescriptor.java +++ /dev/null @@ -1,268 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.MapListTo; - -/** - * Class MapListToDescriptor. - * - * @version $Revision$ $Date$ - */ -public class MapListToDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public MapListToDescriptor() - { - super(); - _nsURI = "www.vamsas.ac.uk/jalview/version2"; - _xmlName = "mapListTo"; - _elementDefinition = true; - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _start - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_start", "start", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - MapListTo target = (MapListTo) object; - if (!target.hasStart()) - { - return null; - } - return new java.lang.Integer(target.getStart()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - MapListTo target = (MapListTo) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.setStart(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _start - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _end - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_end", "end", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - MapListTo target = (MapListTo) object; - if (!target.hasEnd()) - { - return null; - } - return new java.lang.Integer(target.getEnd()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - MapListTo target = (MapListTo) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.setEnd(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _end - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.MapListTo.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/MapListTypeDescriptor.java b/src/jalview/schemabinding/version2/descriptors/MapListTypeDescriptor.java deleted file mode 100644 index fc24a78..0000000 --- a/src/jalview/schemabinding/version2/descriptors/MapListTypeDescriptor.java +++ /dev/null @@ -1,381 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.MapListType; - -/** - * Class MapListTypeDescriptor. - * - * @version $Revision$ $Date$ - */ -public class MapListTypeDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public MapListTypeDescriptor() - { - super(); - _nsURI = "www.vamsas.ac.uk/jalview/version2"; - _xmlName = "mapListType"; - _elementDefinition = false; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _mapFromUnit - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Long.TYPE, "_mapFromUnit", "mapFromUnit", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - MapListType target = (MapListType) object; - if (!target.hasMapFromUnit()) - { - return null; - } - return new java.lang.Long(target.getMapFromUnit()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - MapListType target = (MapListType) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.setMapFromUnit(((java.lang.Long) value).longValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _mapFromUnit - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.LongValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.LongValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(1L); - } - desc.setValidator(fieldValidator); - // -- _mapToUnit - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Long.TYPE, "_mapToUnit", "mapToUnit", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - MapListType target = (MapListType) object; - if (!target.hasMapToUnit()) - { - return null; - } - return new java.lang.Long(target.getMapToUnit()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - MapListType target = (MapListType) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.setMapToUnit(((java.lang.Long) value).longValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _mapToUnit - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.LongValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.LongValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(1L); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _mapListFromList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.MapListFrom.class, - "_mapListFromList", "mapListFrom", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - MapListType target = (MapListType) object; - return target.getMapListFrom(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - MapListType target = (MapListType) object; - target.addMapListFrom((jalview.schemabinding.version2.MapListFrom) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - MapListType target = (MapListType) object; - target.removeAllMapListFrom(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.MapListFrom(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _mapListFromList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _mapListToList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.MapListTo.class, - "_mapListToList", "mapListTo", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - MapListType target = (MapListType) object; - return target.getMapListTo(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - MapListType target = (MapListType) object; - target.addMapListTo((jalview.schemabinding.version2.MapListTo) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - MapListType target = (MapListType) object; - target.removeAllMapListTo(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.MapListTo(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _mapListToList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.MapListType.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/MappingChoiceDescriptor.java b/src/jalview/schemabinding/version2/descriptors/MappingChoiceDescriptor.java deleted file mode 100644 index ae460af..0000000 --- a/src/jalview/schemabinding/version2/descriptors/MappingChoiceDescriptor.java +++ /dev/null @@ -1,243 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.MappingChoice; - -/** - * Class MappingChoiceDescriptor. - * - * @version $Revision$ $Date$ - */ -public class MappingChoiceDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public MappingChoiceDescriptor() - { - super(); - _nsURI = "www.vamsas.ac.uk/jalview/version2"; - _elementDefinition = false; - - // -- set grouping compositor - setCompositorAsChoice(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- initialize element descriptors - - // -- _sequence - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.Sequence.class, "_sequence", - "Sequence", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - MappingChoice target = (MappingChoice) object; - return target.getSequence(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - MappingChoice target = (MappingChoice) object; - target.setSequence((jalview.schemabinding.version2.Sequence) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.Sequence(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _sequence - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _dseqFor - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_dseqFor", "dseqFor", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - MappingChoice target = (MappingChoice) object; - return target.getDseqFor(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - MappingChoice target = (MappingChoice) object; - target.setDseqFor((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _dseqFor - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.MappingChoice.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/MappingDescriptor.java b/src/jalview/schemabinding/version2/descriptors/MappingDescriptor.java deleted file mode 100644 index fab0d2e..0000000 --- a/src/jalview/schemabinding/version2/descriptors/MappingDescriptor.java +++ /dev/null @@ -1,202 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.Mapping; - -/** - * Class MappingDescriptor. - * - * @version $Revision$ $Date$ - */ -public class MappingDescriptor extends - jalview.schemabinding.version2.descriptors.MapListTypeDescriptor -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public MappingDescriptor() - { - super(); - setExtendsWithoutFlatten(new jalview.schemabinding.version2.descriptors.MapListTypeDescriptor()); - _nsURI = "www.vamsas.ac.uk/jalview/version2"; - _xmlName = "Mapping"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsChoice(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- initialize element descriptors - - // -- _mappingChoice - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.MappingChoice.class, - "_mappingChoice", "-error-if-this-is-used-", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Mapping target = (Mapping) object; - return target.getMappingChoice(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Mapping target = (Mapping) object; - target.setMappingChoice((jalview.schemabinding.version2.MappingChoice) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.MappingChoice(); - } - }; - desc.setHandler(handler); - desc.setContainer(true); - desc.setClassDescriptor(new jalview.schemabinding.version2.descriptors.MappingChoiceDescriptor()); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _mappingChoice - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.Mapping.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/MatchConditionDescriptor.java b/src/jalview/schemabinding/version2/descriptors/MatchConditionDescriptor.java deleted file mode 100644 index 8373421..0000000 --- a/src/jalview/schemabinding/version2/descriptors/MatchConditionDescriptor.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.MatchCondition; - -/** - * Class MatchConditionDescriptor. - * - * @version $Revision$ $Date$ - */ -public class MatchConditionDescriptor extends - jalview.schemabinding.version2.descriptors.FeatureMatcherDescriptor -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public MatchConditionDescriptor() - { - super(); - setExtendsWithoutFlatten( - new jalview.schemabinding.version2.descriptors.FeatureMatcherDescriptor()); - _xmlName = "matchCondition"; - _elementDefinition = true; - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.MatchCondition.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/MatcherSetDescriptor.java b/src/jalview/schemabinding/version2/descriptors/MatcherSetDescriptor.java deleted file mode 100644 index 2807f92..0000000 --- a/src/jalview/schemabinding/version2/descriptors/MatcherSetDescriptor.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.MatcherSet; - -/** - * Class MatcherSetDescriptor. - * - * @version $Revision$ $Date$ - */ -public class MatcherSetDescriptor extends - jalview.schemabinding.version2.descriptors.FeatureMatcherSetDescriptor -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public MatcherSetDescriptor() - { - super(); - setExtendsWithoutFlatten( - new jalview.schemabinding.version2.descriptors.FeatureMatcherSetDescriptor()); - _xmlName = "matcherSet"; - _elementDefinition = true; - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.MatcherSet.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/OtherDataDescriptor.java b/src/jalview/schemabinding/version2/descriptors/OtherDataDescriptor.java deleted file mode 100644 index ab7a626..0000000 --- a/src/jalview/schemabinding/version2/descriptors/OtherDataDescriptor.java +++ /dev/null @@ -1,272 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - - //---------------------------------/ - //- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.OtherData; - -/** - * Class OtherDataDescriptor. - * - * @version $Revision$ $Date$ - */ -public class OtherDataDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl { - - - //--------------------------/ - //- Class/Member Variables -/ - //--------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - - //----------------/ - //- Constructors -/ - //----------------/ - - public OtherDataDescriptor() { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "otherData"; - _elementDefinition = true; - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - //-- initialize attribute descriptors - - //-- _key - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_key", "key", org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() { - public java.lang.Object getValue( java.lang.Object object ) - throws IllegalStateException - { - OtherData target = (OtherData) object; - return target.getKey(); - } - public void setValue( java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try { - OtherData target = (OtherData) object; - target.setKey( (java.lang.String) value); - } catch (java.lang.Exception ex) { - throw new IllegalStateException(ex.toString()); - } - } - public java.lang.Object newInstance(java.lang.Object parent) { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - //-- validation code for: _key - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { //-- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - //-- _key2 - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_key2", "key2", org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() { - public java.lang.Object getValue( java.lang.Object object ) - throws IllegalStateException - { - OtherData target = (OtherData) object; - return target.getKey2(); - } - public void setValue( java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try { - OtherData target = (OtherData) object; - target.setKey2( (java.lang.String) value); - } catch (java.lang.Exception ex) { - throw new IllegalStateException(ex.toString()); - } - } - public java.lang.Object newInstance(java.lang.Object parent) { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - //-- validation code for: _key2 - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { //-- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - //-- _value - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_value", "value", org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() { - public java.lang.Object getValue( java.lang.Object object ) - throws IllegalStateException - { - OtherData target = (OtherData) object; - return target.getValue(); - } - public void setValue( java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try { - OtherData target = (OtherData) object; - target.setValue( (java.lang.String) value); - } catch (java.lang.Exception ex) { - throw new IllegalStateException(ex.toString()); - } - } - public java.lang.Object newInstance(java.lang.Object parent) { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - //-- validation code for: _value - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { //-- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - //-- initialize element descriptors - - } - - - //-----------/ - //- Methods -/ - //-----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode( - ) { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no - * identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity( - ) { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass( - ) { - return jalview.schemabinding.version2.OtherData.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix( - ) { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and - * unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI( - ) { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator( - ) { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName( - ) { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that - * of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition( - ) { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/PdbentryDescriptor.java b/src/jalview/schemabinding/version2/descriptors/PdbentryDescriptor.java deleted file mode 100644 index f19703a..0000000 --- a/src/jalview/schemabinding/version2/descriptors/PdbentryDescriptor.java +++ /dev/null @@ -1,346 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.Pdbentry; - -/** - * Class PdbentryDescriptor. - * - * @version $Revision$ $Date$ - */ -public class PdbentryDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public PdbentryDescriptor() - { - super(); - _xmlName = "pdbentry"; - _elementDefinition = false; - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _id - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_id", "id", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Pdbentry target = (Pdbentry) object; - return target.getId(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Pdbentry target = (Pdbentry) object; - target.setId((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _id - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _type - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_type", "type", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Pdbentry target = (Pdbentry) object; - return target.getType(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Pdbentry target = (Pdbentry) object; - target.setType((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _type - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _file - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_file", "file", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Pdbentry target = (Pdbentry) object; - return target.getFile(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Pdbentry target = (Pdbentry) object; - target.setFile((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _file - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _items - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.PdbentryItem.class, "_items", - (java.lang.String) null, org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Pdbentry target = (Pdbentry) object; - return target.getPdbentryItem(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Pdbentry target = (Pdbentry) object; - target.addPdbentryItem((jalview.schemabinding.version2.PdbentryItem) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - Pdbentry target = (Pdbentry) object; - target.removeAllPdbentryItem(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.PdbentryItem(); - } - }; - desc.setHandler(handler); - desc.setContainer(true); - desc.setClassDescriptor(new jalview.schemabinding.version2.descriptors.PdbentryItemDescriptor()); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _items - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.Pdbentry.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/PdbentryItemDescriptor.java b/src/jalview/schemabinding/version2/descriptors/PdbentryItemDescriptor.java deleted file mode 100644 index 4e2fc87..0000000 --- a/src/jalview/schemabinding/version2/descriptors/PdbentryItemDescriptor.java +++ /dev/null @@ -1,212 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.PdbentryItem; - -/** - * Class PdbentryItemDescriptor. - * - * @version $Revision$ $Date$ - */ -public class PdbentryItemDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public PdbentryItemDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "pdbentry"; - _elementDefinition = false; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- initialize element descriptors - - // -- _propertyList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.Property.class, "_propertyList", - "property", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - PdbentryItem target = (PdbentryItem) object; - return target.getProperty(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - PdbentryItem target = (PdbentryItem) object; - target.addProperty((jalview.schemabinding.version2.Property) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - PdbentryItem target = (PdbentryItem) object; - target.removeAllProperty(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.Property(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _propertyList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.PdbentryItem.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/PdbidsDescriptor.java b/src/jalview/schemabinding/version2/descriptors/PdbidsDescriptor.java deleted file mode 100644 index 584607d..0000000 --- a/src/jalview/schemabinding/version2/descriptors/PdbidsDescriptor.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.Pdbids; - -/** - * Class PdbidsDescriptor. - * - * @version $Revision$ $Date$ - */ -public class PdbidsDescriptor extends - jalview.schemabinding.version2.descriptors.PdbentryDescriptor -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public PdbidsDescriptor() - { - super(); - setExtendsWithoutFlatten(new jalview.schemabinding.version2.descriptors.PdbentryDescriptor()); - _nsURI = "www.jalview.org"; - _xmlName = "pdbids"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- initialize element descriptors - - // -- _structureStateList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.StructureState.class, - "_structureStateList", "structureState", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Pdbids target = (Pdbids) object; - return target.getStructureState(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Pdbids target = (Pdbids) object; - target.addStructureState((jalview.schemabinding.version2.StructureState) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - Pdbids target = (Pdbids) object; - target.removeAllStructureState(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.StructureState(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _structureStateList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.Pdbids.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/PropertyDescriptor.java b/src/jalview/schemabinding/version2/descriptors/PropertyDescriptor.java deleted file mode 100644 index 60d09b4..0000000 --- a/src/jalview/schemabinding/version2/descriptors/PropertyDescriptor.java +++ /dev/null @@ -1,248 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.Property; - -/** - * Class PropertyDescriptor. - * - * @version $Revision$ $Date$ - */ -public class PropertyDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public PropertyDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "property"; - _elementDefinition = true; - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _name - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_name", "name", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Property target = (Property) object; - return target.getName(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Property target = (Property) object; - target.setName((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _name - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _value - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_value", "value", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Property target = (Property) object; - return target.getValue(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Property target = (Property) object; - target.setValue((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _value - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.Property.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/RnaViewerDescriptor.java b/src/jalview/schemabinding/version2/descriptors/RnaViewerDescriptor.java deleted file mode 100644 index 3344050..0000000 --- a/src/jalview/schemabinding/version2/descriptors/RnaViewerDescriptor.java +++ /dev/null @@ -1,634 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.RnaViewer; - -/** - * Class RnaViewerDescriptor. - * - * @version $Revision$ $Date$ - */ -public class RnaViewerDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public RnaViewerDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "rnaViewer"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _title - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_title", "title", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - RnaViewer target = (RnaViewer) object; - return target.getTitle(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - RnaViewer target = (RnaViewer) object; - target.setTitle((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _title - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _viewId - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_viewId", "viewId", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - RnaViewer target = (RnaViewer) object; - return target.getViewId(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - RnaViewer target = (RnaViewer) object; - target.setViewId((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _viewId - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _dividerLocation - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_dividerLocation", "dividerLocation", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - RnaViewer target = (RnaViewer) object; - if (!target.hasDividerLocation()) - { - return null; - } - return new java.lang.Integer(target.getDividerLocation()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - RnaViewer target = (RnaViewer) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteDividerLocation(); - return; - } - target.setDividerLocation(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _dividerLocation - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _selectedRna - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_selectedRna", "selectedRna", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - RnaViewer target = (RnaViewer) object; - if (!target.hasSelectedRna()) - { - return null; - } - return new java.lang.Integer(target.getSelectedRna()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - RnaViewer target = (RnaViewer) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteSelectedRna(); - return; - } - target.setSelectedRna(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _selectedRna - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _width - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_width", "width", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - RnaViewer target = (RnaViewer) object; - if (!target.hasWidth()) - { - return null; - } - return new java.lang.Integer(target.getWidth()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - RnaViewer target = (RnaViewer) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteWidth(); - return; - } - target.setWidth(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _width - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _height - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_height", "height", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - RnaViewer target = (RnaViewer) object; - if (!target.hasHeight()) - { - return null; - } - return new java.lang.Integer(target.getHeight()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - RnaViewer target = (RnaViewer) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteHeight(); - return; - } - target.setHeight(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _height - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _xpos - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_xpos", "xpos", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - RnaViewer target = (RnaViewer) object; - if (!target.hasXpos()) - { - return null; - } - return new java.lang.Integer(target.getXpos()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - RnaViewer target = (RnaViewer) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteXpos(); - return; - } - target.setXpos(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _xpos - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _ypos - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_ypos", "ypos", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - RnaViewer target = (RnaViewer) object; - if (!target.hasYpos()) - { - return null; - } - return new java.lang.Integer(target.getYpos()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - RnaViewer target = (RnaViewer) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteYpos(); - return; - } - target.setYpos(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _ypos - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _secondaryStructureList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.SecondaryStructure.class, - "_secondaryStructureList", "secondaryStructure", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - RnaViewer target = (RnaViewer) object; - return target.getSecondaryStructure(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - RnaViewer target = (RnaViewer) object; - target.addSecondaryStructure((jalview.schemabinding.version2.SecondaryStructure) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - RnaViewer target = (RnaViewer) object; - target.removeAllSecondaryStructure(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.SecondaryStructure(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setRequired(true); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _secondaryStructureList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.RnaViewer.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/SecondaryStructureDescriptor.java b/src/jalview/schemabinding/version2/descriptors/SecondaryStructureDescriptor.java deleted file mode 100644 index c1e46b8..0000000 --- a/src/jalview/schemabinding/version2/descriptors/SecondaryStructureDescriptor.java +++ /dev/null @@ -1,345 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.SecondaryStructure; - -/** - * Class SecondaryStructureDescriptor. - * - * @version $Revision$ $Date$ - */ -public class SecondaryStructureDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public SecondaryStructureDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "secondaryStructure"; - _elementDefinition = true; - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _title - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_title", "title", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - SecondaryStructure target = (SecondaryStructure) object; - return target.getTitle(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - SecondaryStructure target = (SecondaryStructure) object; - target.setTitle((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _title - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _annotationId - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_annotationId", "annotationId", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - SecondaryStructure target = (SecondaryStructure) object; - return target.getAnnotationId(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - SecondaryStructure target = (SecondaryStructure) object; - target.setAnnotationId((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _annotationId - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _gapped - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_gapped", "gapped", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - SecondaryStructure target = (SecondaryStructure) object; - if (!target.hasGapped()) - { - return null; - } - return (target.getGapped() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - SecondaryStructure target = (SecondaryStructure) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteGapped(); - return; - } - target.setGapped(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _gapped - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _viewerState - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_viewerState", "viewerState", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - SecondaryStructure target = (SecondaryStructure) object; - return target.getViewerState(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - SecondaryStructure target = (SecondaryStructure) object; - target.setViewerState((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _viewerState - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.SecondaryStructure.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/SequenceDescriptor.java b/src/jalview/schemabinding/version2/descriptors/SequenceDescriptor.java deleted file mode 100644 index 2303e1b..0000000 --- a/src/jalview/schemabinding/version2/descriptors/SequenceDescriptor.java +++ /dev/null @@ -1,258 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.Sequence; - -/** - * Class SequenceDescriptor. - * - * @version $Revision$ $Date$ - */ -public class SequenceDescriptor extends - jalview.schemabinding.version2.descriptors.SequenceTypeDescriptor -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public SequenceDescriptor() - { - super(); - setExtendsWithoutFlatten(new jalview.schemabinding.version2.descriptors.SequenceTypeDescriptor()); - _nsURI = "www.vamsas.ac.uk/jalview/version2"; - _xmlName = "Sequence"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _dsseqid - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_dsseqid", "dsseqid", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Sequence target = (Sequence) object; - return target.getDsseqid(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Sequence target = (Sequence) object; - target.setDsseqid((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _dsseqid - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _DBRefList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.DBRef.class, "_DBRefList", - "DBRef", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Sequence target = (Sequence) object; - return target.getDBRef(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Sequence target = (Sequence) object; - target.addDBRef((jalview.schemabinding.version2.DBRef) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - Sequence target = (Sequence) object; - target.removeAllDBRef(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.DBRef(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _DBRefList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.Sequence.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/SequenceSetDescriptor.java b/src/jalview/schemabinding/version2/descriptors/SequenceSetDescriptor.java deleted file mode 100644 index cd74c6e..0000000 --- a/src/jalview/schemabinding/version2/descriptors/SequenceSetDescriptor.java +++ /dev/null @@ -1,472 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.SequenceSet; - -/** - * Class SequenceSetDescriptor. - * - * @version $Revision$ $Date$ - */ -public class SequenceSetDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public SequenceSetDescriptor() - { - super(); - _nsURI = "www.vamsas.ac.uk/jalview/version2"; - _xmlName = "SequenceSet"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _gapChar - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_gapChar", "gapChar", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - SequenceSet target = (SequenceSet) object; - return target.getGapChar(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - SequenceSet target = (SequenceSet) object; - target.setGapChar((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _gapChar - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _datasetId - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_datasetId", "datasetId", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - SequenceSet target = (SequenceSet) object; - return target.getDatasetId(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - SequenceSet target = (SequenceSet) object; - target.setDatasetId((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _datasetId - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _sequenceList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.Sequence.class, "_sequenceList", - "Sequence", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - SequenceSet target = (SequenceSet) object; - return target.getSequence(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - SequenceSet target = (SequenceSet) object; - target.addSequence((jalview.schemabinding.version2.Sequence) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - SequenceSet target = (SequenceSet) object; - target.removeAllSequence(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.Sequence(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _sequenceList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _annotationList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.Annotation.class, - "_annotationList", "Annotation", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - SequenceSet target = (SequenceSet) object; - return target.getAnnotation(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - SequenceSet target = (SequenceSet) object; - target.addAnnotation((jalview.schemabinding.version2.Annotation) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - SequenceSet target = (SequenceSet) object; - target.removeAllAnnotation(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.Annotation(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _annotationList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _sequenceSetPropertiesList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.SequenceSetProperties.class, - "_sequenceSetPropertiesList", "sequenceSetProperties", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - SequenceSet target = (SequenceSet) object; - return target.getSequenceSetProperties(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - SequenceSet target = (SequenceSet) object; - target.addSequenceSetProperties((jalview.schemabinding.version2.SequenceSetProperties) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - SequenceSet target = (SequenceSet) object; - target.removeAllSequenceSetProperties(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.SequenceSetProperties(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _sequenceSetPropertiesList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _alcodonFrameList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.AlcodonFrame.class, - "_alcodonFrameList", "AlcodonFrame", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - SequenceSet target = (SequenceSet) object; - return target.getAlcodonFrame(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - SequenceSet target = (SequenceSet) object; - target.addAlcodonFrame((jalview.schemabinding.version2.AlcodonFrame) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - SequenceSet target = (SequenceSet) object; - target.removeAllAlcodonFrame(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.AlcodonFrame(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _alcodonFrameList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.SequenceSet.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/SequenceSetPropertiesDescriptor.java b/src/jalview/schemabinding/version2/descriptors/SequenceSetPropertiesDescriptor.java deleted file mode 100644 index 409abdd..0000000 --- a/src/jalview/schemabinding/version2/descriptors/SequenceSetPropertiesDescriptor.java +++ /dev/null @@ -1,244 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.SequenceSetProperties; - -/** - * Class SequenceSetPropertiesDescriptor. - * - * @version $Revision$ $Date$ - */ -public class SequenceSetPropertiesDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public SequenceSetPropertiesDescriptor() - { - super(); - _nsURI = "www.vamsas.ac.uk/jalview/version2"; - _xmlName = "sequenceSetProperties"; - _elementDefinition = true; - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _key - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_key", "key", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - SequenceSetProperties target = (SequenceSetProperties) object; - return target.getKey(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - SequenceSetProperties target = (SequenceSetProperties) object; - target.setKey((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _key - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _value - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_value", "value", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - SequenceSetProperties target = (SequenceSetProperties) object; - return target.getValue(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - SequenceSetProperties target = (SequenceSetProperties) object; - target.setValue((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _value - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.SequenceSetProperties.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/SequenceTypeDescriptor.java b/src/jalview/schemabinding/version2/descriptors/SequenceTypeDescriptor.java deleted file mode 100644 index 3ee3fa9..0000000 --- a/src/jalview/schemabinding/version2/descriptors/SequenceTypeDescriptor.java +++ /dev/null @@ -1,339 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.SequenceType; - -/** - * Class SequenceTypeDescriptor. - * - * @version $Revision$ $Date$ - */ -public class SequenceTypeDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public SequenceTypeDescriptor() - { - super(); - _nsURI = "www.vamsas.ac.uk/jalview/version2"; - _xmlName = "SequenceType"; - _elementDefinition = false; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _id - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_id", "id", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - SequenceType target = (SequenceType) object; - return target.getId(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - SequenceType target = (SequenceType) object; - target.setId((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _id - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _description - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_description", "description", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - SequenceType target = (SequenceType) object; - return target.getDescription(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - SequenceType target = (SequenceType) object; - target.setDescription((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _description - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _sequence - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_sequence", "sequence", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - SequenceType target = (SequenceType) object; - return target.getSequence(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - SequenceType target = (SequenceType) object; - target.setSequence((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _sequence - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _name - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_name", "name", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - SequenceType target = (SequenceType) object; - return target.getName(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - SequenceType target = (SequenceType) object; - target.setName((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _name - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.SequenceType.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/SettingDescriptor.java b/src/jalview/schemabinding/version2/descriptors/SettingDescriptor.java deleted file mode 100644 index c816e43..0000000 --- a/src/jalview/schemabinding/version2/descriptors/SettingDescriptor.java +++ /dev/null @@ -1,905 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.Setting; - -/** - * Class SettingDescriptor. - * - * @version $Revision$ $Date$ - */ -public class SettingDescriptor - extends org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public SettingDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "setting"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _type - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_type", "type", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Setting target = (Setting) object; - return target.getType(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Setting target = (Setting) object; - target.setType((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _type - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _colour - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_colour", "colour", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Setting target = (Setting) object; - if (!target.hasColour()) - { - return null; - } - return new java.lang.Integer(target.getColour()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Setting target = (Setting) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.setColour(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _colour - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _display - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_display", "display", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Setting target = (Setting) object; - if (!target.hasDisplay()) - { - return null; - } - return (target.getDisplay() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Setting target = (Setting) object; - // ignore null values for non optional primitives - if (value == null) - { - return; - } - - target.setDisplay(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _display - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _order - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Float.TYPE, "_order", "order", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Setting target = (Setting) object; - if (!target.hasOrder()) - { - return null; - } - return new java.lang.Float(target.getOrder()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Setting target = (Setting) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteOrder(); - return; - } - target.setOrder(((java.lang.Float) value).floatValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _order - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.FloatValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.FloatValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive((float) -3.4028235E38); - typeValidator.setMaxInclusive((float) 3.4028235E38); - } - desc.setValidator(fieldValidator); - // -- _mincolour - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_mincolour", "mincolour", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Setting target = (Setting) object; - if (!target.hasMincolour()) - { - return null; - } - return new java.lang.Integer(target.getMincolour()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Setting target = (Setting) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteMincolour(); - return; - } - target.setMincolour(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _mincolour - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _noValueColour - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.types.NoValueColour.class, - "_noValueColour", "noValueColour", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Setting target = (Setting) object; - return target.getNoValueColour(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Setting target = (Setting) object; - target.setNoValueColour( - (jalview.schemabinding.version2.types.NoValueColour) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - handler = new org.exolab.castor.xml.handlers.EnumFieldHandler( - jalview.schemabinding.version2.types.NoValueColour.class, - handler); - desc.setImmutable(true); - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _noValueColour - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _threshold - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Float.TYPE, "_threshold", "threshold", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Setting target = (Setting) object; - if (!target.hasThreshold()) - { - return null; - } - return new java.lang.Float(target.getThreshold()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Setting target = (Setting) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteThreshold(); - return; - } - target.setThreshold(((java.lang.Float) value).floatValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _threshold - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.FloatValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.FloatValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive((float) -3.4028235E38); - typeValidator.setMaxInclusive((float) 3.4028235E38); - } - desc.setValidator(fieldValidator); - // -- _threshstate - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_threshstate", "threshstate", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Setting target = (Setting) object; - if (!target.hasThreshstate()) - { - return null; - } - return new java.lang.Integer(target.getThreshstate()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Setting target = (Setting) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteThreshstate(); - return; - } - target.setThreshstate(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _threshstate - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _max - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Float.TYPE, "_max", "max", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Setting target = (Setting) object; - if (!target.hasMax()) - { - return null; - } - return new java.lang.Float(target.getMax()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Setting target = (Setting) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteMax(); - return; - } - target.setMax(((java.lang.Float) value).floatValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _max - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.FloatValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.FloatValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive((float) -3.4028235E38); - typeValidator.setMaxInclusive((float) 3.4028235E38); - } - desc.setValidator(fieldValidator); - // -- _min - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Float.TYPE, "_min", "min", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Setting target = (Setting) object; - if (!target.hasMin()) - { - return null; - } - return new java.lang.Float(target.getMin()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Setting target = (Setting) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteMin(); - return; - } - target.setMin(((java.lang.Float) value).floatValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _min - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.FloatValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.FloatValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive((float) -3.4028235E38); - typeValidator.setMaxInclusive((float) 3.4028235E38); - } - desc.setValidator(fieldValidator); - // -- _colourByLabel - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_colourByLabel", "colourByLabel", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Setting target = (Setting) object; - if (!target.hasColourByLabel()) - { - return null; - } - return (target.getColourByLabel() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Setting target = (Setting) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteColourByLabel(); - return; - } - target.setColourByLabel( - ((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _colourByLabel - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _autoScale - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_autoScale", "autoScale", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Setting target = (Setting) object; - if (!target.hasAutoScale()) - { - return null; - } - return (target.getAutoScale() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Setting target = (Setting) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteAutoScale(); - return; - } - target.setAutoScale(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _autoScale - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _attributeNameList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_attributeNameList", "attributeName", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Setting target = (Setting) object; - return target.getAttributeName(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Setting target = (Setting) object; - target.addAttributeName((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) - throws IllegalStateException, IllegalArgumentException - { - try - { - Setting target = (Setting) object; - target.removeAllAttributeName(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _attributeNameList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - fieldValidator.setMaxOccurs(2); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _matcherSet - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.MatcherSet.class, "_matcherSet", - "matcherSet", org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Setting target = (Setting) object; - return target.getMatcherSet(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Setting target = (Setting) object; - target.setMatcherSet( - (jalview.schemabinding.version2.MatcherSet) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.MatcherSet(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _matcherSet - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.Setting.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/StructureStateDescriptor.java b/src/jalview/schemabinding/version2/descriptors/StructureStateDescriptor.java deleted file mode 100644 index 16d091b..0000000 --- a/src/jalview/schemabinding/version2/descriptors/StructureStateDescriptor.java +++ /dev/null @@ -1,727 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.StructureState; - -/** - * Class StructureStateDescriptor. - * - * @version $Revision$ $Date$ - */ -public class StructureStateDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public StructureStateDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "structureState"; - _elementDefinition = true; - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- _content - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_content", "PCDATA", - org.exolab.castor.xml.NodeType.Text); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - StructureState target = (StructureState) object; - return target.getContent(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - StructureState target = (StructureState) object; - target.setContent((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - addFieldDescriptor(desc); - - // -- validation code for: _content - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- initialize attribute descriptors - - // -- _visible - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_visible", "visible", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - StructureState target = (StructureState) object; - if (!target.hasVisible()) - { - return null; - } - return (target.getVisible() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - StructureState target = (StructureState) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteVisible(); - return; - } - target.setVisible(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _visible - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _viewId - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_viewId", "viewId", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - StructureState target = (StructureState) object; - return target.getViewId(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - StructureState target = (StructureState) object; - target.setViewId((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _viewId - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _alignwithAlignPanel - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_alignwithAlignPanel", - "alignwithAlignPanel", org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - StructureState target = (StructureState) object; - if (!target.hasAlignwithAlignPanel()) - { - return null; - } - return (target.getAlignwithAlignPanel() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - StructureState target = (StructureState) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteAlignwithAlignPanel(); - return; - } - target.setAlignwithAlignPanel(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _alignwithAlignPanel - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _colourwithAlignPanel - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_colourwithAlignPanel", - "colourwithAlignPanel", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - StructureState target = (StructureState) object; - if (!target.hasColourwithAlignPanel()) - { - return null; - } - return (target.getColourwithAlignPanel() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - StructureState target = (StructureState) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteColourwithAlignPanel(); - return; - } - target.setColourwithAlignPanel(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _colourwithAlignPanel - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _colourByJmol - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_colourByJmol", "colourByJmol", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - StructureState target = (StructureState) object; - if (!target.hasColourByJmol()) - { - return null; - } - return (target.getColourByJmol() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - StructureState target = (StructureState) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteColourByJmol(); - return; - } - target.setColourByJmol(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _colourByJmol - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _type - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_type", "type", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - StructureState target = (StructureState) object; - return target.getType(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - StructureState target = (StructureState) object; - target.setType((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _type - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _width - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_width", "width", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - StructureState target = (StructureState) object; - if (!target.hasWidth()) - { - return null; - } - return new java.lang.Integer(target.getWidth()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - StructureState target = (StructureState) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteWidth(); - return; - } - target.setWidth(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _width - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _height - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_height", "height", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - StructureState target = (StructureState) object; - if (!target.hasHeight()) - { - return null; - } - return new java.lang.Integer(target.getHeight()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - StructureState target = (StructureState) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteHeight(); - return; - } - target.setHeight(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _height - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _xpos - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_xpos", "xpos", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - StructureState target = (StructureState) object; - if (!target.hasXpos()) - { - return null; - } - return new java.lang.Integer(target.getXpos()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - StructureState target = (StructureState) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteXpos(); - return; - } - target.setXpos(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _xpos - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _ypos - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_ypos", "ypos", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - StructureState target = (StructureState) object; - if (!target.hasYpos()) - { - return null; - } - return new java.lang.Integer(target.getYpos()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - StructureState target = (StructureState) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteYpos(); - return; - } - target.setYpos(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _ypos - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.StructureState.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/ThresholdLineDescriptor.java b/src/jalview/schemabinding/version2/descriptors/ThresholdLineDescriptor.java deleted file mode 100644 index 8a863d8..0000000 --- a/src/jalview/schemabinding/version2/descriptors/ThresholdLineDescriptor.java +++ /dev/null @@ -1,309 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.ThresholdLine; - -/** - * Class ThresholdLineDescriptor. - * - * @version $Revision$ $Date$ - */ -public class ThresholdLineDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public ThresholdLineDescriptor() - { - super(); - _nsURI = "www.vamsas.ac.uk/jalview/version2"; - _xmlName = "thresholdLine"; - _elementDefinition = true; - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _label - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_label", "label", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - ThresholdLine target = (ThresholdLine) object; - return target.getLabel(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - ThresholdLine target = (ThresholdLine) object; - target.setLabel((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _label - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _value - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Float.TYPE, "_value", "value", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - ThresholdLine target = (ThresholdLine) object; - if (!target.hasValue()) - { - return null; - } - return new java.lang.Float(target.getValue()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - ThresholdLine target = (ThresholdLine) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteValue(); - return; - } - target.setValue(((java.lang.Float) value).floatValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _value - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.FloatValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.FloatValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive((float) -3.4028235E38); - typeValidator.setMaxInclusive((float) 3.4028235E38); - } - desc.setValidator(fieldValidator); - // -- _colour - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_colour", "colour", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - ThresholdLine target = (ThresholdLine) object; - if (!target.hasColour()) - { - return null; - } - return new java.lang.Integer(target.getColour()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - ThresholdLine target = (ThresholdLine) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteColour(); - return; - } - target.setColour(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _colour - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.ThresholdLine.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/TreeDescriptor.java b/src/jalview/schemabinding/version2/descriptors/TreeDescriptor.java deleted file mode 100644 index 8e675f3..0000000 --- a/src/jalview/schemabinding/version2/descriptors/TreeDescriptor.java +++ /dev/null @@ -1,995 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.Tree; - -/** - * Class TreeDescriptor. - * - * @version $Revision$ $Date$ - */ -public class TreeDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public TreeDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "tree"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _fontName - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_fontName", "fontName", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Tree target = (Tree) object; - return target.getFontName(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Tree target = (Tree) object; - target.setFontName((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _fontName - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _fontSize - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_fontSize", "fontSize", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Tree target = (Tree) object; - if (!target.hasFontSize()) - { - return null; - } - return new java.lang.Integer(target.getFontSize()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Tree target = (Tree) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteFontSize(); - return; - } - target.setFontSize(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _fontSize - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _fontStyle - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_fontStyle", "fontStyle", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Tree target = (Tree) object; - if (!target.hasFontStyle()) - { - return null; - } - return new java.lang.Integer(target.getFontStyle()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Tree target = (Tree) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteFontStyle(); - return; - } - target.setFontStyle(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _fontStyle - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _threshold - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Float.TYPE, "_threshold", "threshold", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Tree target = (Tree) object; - if (!target.hasThreshold()) - { - return null; - } - return new java.lang.Float(target.getThreshold()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Tree target = (Tree) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteThreshold(); - return; - } - target.setThreshold(((java.lang.Float) value).floatValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _threshold - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.FloatValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.FloatValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive((float) -3.4028235E38); - typeValidator.setMaxInclusive((float) 3.4028235E38); - } - desc.setValidator(fieldValidator); - // -- _showBootstrap - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showBootstrap", "showBootstrap", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Tree target = (Tree) object; - if (!target.hasShowBootstrap()) - { - return null; - } - return (target.getShowBootstrap() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Tree target = (Tree) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowBootstrap(); - return; - } - target.setShowBootstrap(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showBootstrap - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _showDistances - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showDistances", "showDistances", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Tree target = (Tree) object; - if (!target.hasShowDistances()) - { - return null; - } - return (target.getShowDistances() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Tree target = (Tree) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowDistances(); - return; - } - target.setShowDistances(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showDistances - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _markUnlinked - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_markUnlinked", "markUnlinked", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Tree target = (Tree) object; - if (!target.hasMarkUnlinked()) - { - return null; - } - return (target.getMarkUnlinked() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Tree target = (Tree) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteMarkUnlinked(); - return; - } - target.setMarkUnlinked(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _markUnlinked - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _fitToWindow - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_fitToWindow", "fitToWindow", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Tree target = (Tree) object; - if (!target.hasFitToWindow()) - { - return null; - } - return (target.getFitToWindow() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Tree target = (Tree) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteFitToWindow(); - return; - } - target.setFitToWindow(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _fitToWindow - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _currentTree - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_currentTree", "currentTree", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Tree target = (Tree) object; - if (!target.hasCurrentTree()) - { - return null; - } - return (target.getCurrentTree() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Tree target = (Tree) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteCurrentTree(); - return; - } - target.setCurrentTree(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _currentTree - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _id - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_id", "id", - org.exolab.castor.xml.NodeType.Attribute); - super.setIdentity(desc); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Tree target = (Tree) object; - return target.getId(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Tree target = (Tree) object; - target.setId((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new java.lang.String(); - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _id - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IdValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IdValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _width - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_width", "width", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Tree target = (Tree) object; - if (!target.hasWidth()) - { - return null; - } - return new java.lang.Integer(target.getWidth()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Tree target = (Tree) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteWidth(); - return; - } - target.setWidth(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _width - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _height - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_height", "height", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Tree target = (Tree) object; - if (!target.hasHeight()) - { - return null; - } - return new java.lang.Integer(target.getHeight()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Tree target = (Tree) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteHeight(); - return; - } - target.setHeight(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _height - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _xpos - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_xpos", "xpos", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Tree target = (Tree) object; - if (!target.hasXpos()) - { - return null; - } - return new java.lang.Integer(target.getXpos()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Tree target = (Tree) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteXpos(); - return; - } - target.setXpos(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _xpos - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _ypos - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_ypos", "ypos", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Tree target = (Tree) object; - if (!target.hasYpos()) - { - return null; - } - return new java.lang.Integer(target.getYpos()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Tree target = (Tree) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteYpos(); - return; - } - target.setYpos(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _ypos - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _title - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_title", "title", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Tree target = (Tree) object; - return target.getTitle(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Tree target = (Tree) object; - target.setTitle((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _title - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _newick - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_newick", "newick", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Tree target = (Tree) object; - return target.getNewick(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Tree target = (Tree) object; - target.setNewick((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _newick - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.Tree.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/UserColourSchemeDescriptor.java b/src/jalview/schemabinding/version2/descriptors/UserColourSchemeDescriptor.java deleted file mode 100644 index df9ab07..0000000 --- a/src/jalview/schemabinding/version2/descriptors/UserColourSchemeDescriptor.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.UserColourScheme; - -/** - * Class UserColourSchemeDescriptor. - * - * @version $Revision$ $Date$ - */ -public class UserColourSchemeDescriptor - extends - jalview.schemabinding.version2.descriptors.JalviewUserColoursDescriptor -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public UserColourSchemeDescriptor() - { - super(); - setExtendsWithoutFlatten(new jalview.schemabinding.version2.descriptors.JalviewUserColoursDescriptor()); - _nsURI = "www.jalview.org"; - _xmlName = "UserColourScheme"; - _elementDefinition = true; - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.UserColourScheme.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/UserColoursDescriptor.java b/src/jalview/schemabinding/version2/descriptors/UserColoursDescriptor.java deleted file mode 100644 index 53dfde4..0000000 --- a/src/jalview/schemabinding/version2/descriptors/UserColoursDescriptor.java +++ /dev/null @@ -1,246 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.UserColours; - -/** - * Class UserColoursDescriptor. - * - * @version $Revision$ $Date$ - */ -public class UserColoursDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public UserColoursDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "UserColours"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _id - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_id", "id", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - UserColours target = (UserColours) object; - return target.getId(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - UserColours target = (UserColours) object; - target.setId((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _id - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _userColourScheme - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.UserColourScheme.class, - "_userColourScheme", "UserColourScheme", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - UserColours target = (UserColours) object; - return target.getUserColourScheme(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - UserColours target = (UserColours) object; - target.setUserColourScheme((jalview.schemabinding.version2.UserColourScheme) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.UserColourScheme(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _userColourScheme - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.UserColours.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/VAMSASDescriptor.java b/src/jalview/schemabinding/version2/descriptors/VAMSASDescriptor.java deleted file mode 100644 index e3470ee..0000000 --- a/src/jalview/schemabinding/version2/descriptors/VAMSASDescriptor.java +++ /dev/null @@ -1,273 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.VAMSAS; - -/** - * Class VAMSASDescriptor. - * - * @version $Revision$ $Date$ - */ -public class VAMSASDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public VAMSASDescriptor() - { - super(); - _nsURI = "www.vamsas.ac.uk/jalview/version2"; - _xmlName = "VAMSAS"; - _elementDefinition = false; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- initialize element descriptors - - // -- _treeList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_treeList", "Tree", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - VAMSAS target = (VAMSAS) object; - return target.getTree(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - VAMSAS target = (VAMSAS) object; - target.addTree((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - VAMSAS target = (VAMSAS) object; - target.removeAllTree(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _treeList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _sequenceSetList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.SequenceSet.class, - "_sequenceSetList", "SequenceSet", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - VAMSAS target = (VAMSAS) object; - return target.getSequenceSet(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - VAMSAS target = (VAMSAS) object; - target.addSequenceSet((jalview.schemabinding.version2.SequenceSet) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - VAMSAS target = (VAMSAS) object; - target.removeAllSequenceSet(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.SequenceSet(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.vamsas.ac.uk/jalview/version2"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _sequenceSetList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.VAMSAS.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/VamsasModelDescriptor.java b/src/jalview/schemabinding/version2/descriptors/VamsasModelDescriptor.java deleted file mode 100644 index 3e26611..0000000 --- a/src/jalview/schemabinding/version2/descriptors/VamsasModelDescriptor.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.VamsasModel; - -/** - * Class VamsasModelDescriptor. - * - * @version $Revision$ $Date$ - */ -public class VamsasModelDescriptor extends - jalview.schemabinding.version2.descriptors.VAMSASDescriptor -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public VamsasModelDescriptor() - { - super(); - setExtendsWithoutFlatten(new jalview.schemabinding.version2.descriptors.VAMSASDescriptor()); - _nsURI = "www.jalview.org"; - _xmlName = "vamsasModel"; - _elementDefinition = true; - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.VamsasModel.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/ViewportDescriptor.java b/src/jalview/schemabinding/version2/descriptors/ViewportDescriptor.java deleted file mode 100644 index 1df3988..0000000 --- a/src/jalview/schemabinding/version2/descriptors/ViewportDescriptor.java +++ /dev/null @@ -1,2717 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.Viewport; - -/** - * Class ViewportDescriptor. - * - * @version $Revision$ $Date$ - */ -public class ViewportDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public ViewportDescriptor() - { - super(); - _nsURI = "www.jalview.org"; - _xmlName = "Viewport"; - _elementDefinition = true; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _conservationSelected - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_conservationSelected", - "conservationSelected", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasConservationSelected()) - { - return null; - } - return (target.getConservationSelected() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteConservationSelected(); - return; - } - target.setConservationSelected(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _conservationSelected - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _pidSelected - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_pidSelected", "pidSelected", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasPidSelected()) - { - return null; - } - return (target.getPidSelected() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deletePidSelected(); - return; - } - target.setPidSelected(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _pidSelected - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _bgColour - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_bgColour", "bgColour", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - return target.getBgColour(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - target.setBgColour((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _bgColour - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _consThreshold - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_consThreshold", "consThreshold", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasConsThreshold()) - { - return null; - } - return new java.lang.Integer(target.getConsThreshold()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteConsThreshold(); - return; - } - target.setConsThreshold(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _consThreshold - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _pidThreshold - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_pidThreshold", "pidThreshold", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasPidThreshold()) - { - return null; - } - return new java.lang.Integer(target.getPidThreshold()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deletePidThreshold(); - return; - } - target.setPidThreshold(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _pidThreshold - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _title - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_title", "title", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - return target.getTitle(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - target.setTitle((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _title - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _showFullId - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showFullId", "showFullId", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasShowFullId()) - { - return null; - } - return (target.getShowFullId() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowFullId(); - return; - } - target.setShowFullId(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showFullId - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _rightAlignIds - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_rightAlignIds", "rightAlignIds", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasRightAlignIds()) - { - return null; - } - return (target.getRightAlignIds() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteRightAlignIds(); - return; - } - target.setRightAlignIds(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _rightAlignIds - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _showText - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showText", "showText", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasShowText()) - { - return null; - } - return (target.getShowText() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowText(); - return; - } - target.setShowText(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showText - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _showColourText - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showColourText", "showColourText", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasShowColourText()) - { - return null; - } - return (target.getShowColourText() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowColourText(); - return; - } - target.setShowColourText(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showColourText - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _showUnconserved - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showUnconserved", "showUnconserved", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasShowUnconserved()) - { - return null; - } - return (target.getShowUnconserved() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowUnconserved(); - return; - } - target.setShowUnconserved(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showUnconserved - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _showBoxes - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showBoxes", "showBoxes", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasShowBoxes()) - { - return null; - } - return (target.getShowBoxes() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowBoxes(); - return; - } - target.setShowBoxes(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showBoxes - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _wrapAlignment - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_wrapAlignment", "wrapAlignment", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasWrapAlignment()) - { - return null; - } - return (target.getWrapAlignment() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteWrapAlignment(); - return; - } - target.setWrapAlignment(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _wrapAlignment - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _renderGaps - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_renderGaps", "renderGaps", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasRenderGaps()) - { - return null; - } - return (target.getRenderGaps() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteRenderGaps(); - return; - } - target.setRenderGaps(((java.lang.Boolean) value).booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _renderGaps - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _showSequenceFeatures - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showSequenceFeatures", - "showSequenceFeatures", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasShowSequenceFeatures()) - { - return null; - } - return (target.getShowSequenceFeatures() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowSequenceFeatures(); - return; - } - target.setShowSequenceFeatures(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showSequenceFeatures - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _showNPfeatureTooltip - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showNPfeatureTooltip", - "showNPfeatureTooltip", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasShowNPfeatureTooltip()) - { - return null; - } - return (target.getShowNPfeatureTooltip() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowNPfeatureTooltip(); - return; - } - target.setShowNPfeatureTooltip(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showNPfeatureTooltip - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _showDbRefTooltip - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showDbRefTooltip", - "showDbRefTooltip", org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasShowDbRefTooltip()) - { - return null; - } - return (target.getShowDbRefTooltip() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowDbRefTooltip(); - return; - } - target.setShowDbRefTooltip(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showDbRefTooltip - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _followHighlight - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_followHighlight", "followHighlight", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasFollowHighlight()) - { - return null; - } - return (target.getFollowHighlight() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteFollowHighlight(); - return; - } - target.setFollowHighlight(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _followHighlight - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _followSelection - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_followSelection", "followSelection", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasFollowSelection()) - { - return null; - } - return (target.getFollowSelection() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteFollowSelection(); - return; - } - target.setFollowSelection(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _followSelection - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _showAnnotation - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showAnnotation", "showAnnotation", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasShowAnnotation()) - { - return null; - } - return (target.getShowAnnotation() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowAnnotation(); - return; - } - target.setShowAnnotation(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showAnnotation - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _centreColumnLabels - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_centreColumnLabels", - "centreColumnLabels", org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasCentreColumnLabels()) - { - return null; - } - return (target.getCentreColumnLabels() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteCentreColumnLabels(); - return; - } - target.setCentreColumnLabels(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _centreColumnLabels - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _showGroupConservation - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showGroupConservation", - "showGroupConservation", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasShowGroupConservation()) - { - return null; - } - return (target.getShowGroupConservation() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowGroupConservation(); - return; - } - target.setShowGroupConservation(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showGroupConservation - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _showGroupConsensus - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showGroupConsensus", - "showGroupConsensus", org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasShowGroupConsensus()) - { - return null; - } - return (target.getShowGroupConsensus() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowGroupConsensus(); - return; - } - target.setShowGroupConsensus(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showGroupConsensus - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _showConsensusHistogram - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showConsensusHistogram", - "showConsensusHistogram", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasShowConsensusHistogram()) - { - return null; - } - return (target.getShowConsensusHistogram() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowConsensusHistogram(); - return; - } - target.setShowConsensusHistogram(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showConsensusHistogram - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _showSequenceLogo - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_showSequenceLogo", - "showSequenceLogo", org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasShowSequenceLogo()) - { - return null; - } - return (target.getShowSequenceLogo() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteShowSequenceLogo(); - return; - } - target.setShowSequenceLogo(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _showSequenceLogo - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _normaliseSequenceLogo - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_normaliseSequenceLogo", - "normaliseSequenceLogo", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasNormaliseSequenceLogo()) - { - return null; - } - return (target.getNormaliseSequenceLogo() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteNormaliseSequenceLogo(); - return; - } - target.setNormaliseSequenceLogo(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _normaliseSequenceLogo - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _ignoreGapsinConsensus - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_ignoreGapsinConsensus", - "ignoreGapsinConsensus", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasIgnoreGapsinConsensus()) - { - return null; - } - return (target.getIgnoreGapsinConsensus() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteIgnoreGapsinConsensus(); - return; - } - target.setIgnoreGapsinConsensus(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _ignoreGapsinConsensus - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _startRes - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_startRes", "startRes", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasStartRes()) - { - return null; - } - return new java.lang.Integer(target.getStartRes()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteStartRes(); - return; - } - target.setStartRes(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _startRes - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _startSeq - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_startSeq", "startSeq", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasStartSeq()) - { - return null; - } - return new java.lang.Integer(target.getStartSeq()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteStartSeq(); - return; - } - target.setStartSeq(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _startSeq - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _fontName - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_fontName", "fontName", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - return target.getFontName(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - target.setFontName((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _fontName - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _fontSize - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_fontSize", "fontSize", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasFontSize()) - { - return null; - } - return new java.lang.Integer(target.getFontSize()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteFontSize(); - return; - } - target.setFontSize(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _fontSize - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _fontStyle - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_fontStyle", "fontStyle", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasFontStyle()) - { - return null; - } - return new java.lang.Integer(target.getFontStyle()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteFontStyle(); - return; - } - target.setFontStyle(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _fontStyle - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _scaleProteinAsCdna - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_scaleProteinAsCdna", - "scaleProteinAsCdna", org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasScaleProteinAsCdna()) - { - return null; - } - return (target.getScaleProteinAsCdna() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteScaleProteinAsCdna(); - return; - } - target.setScaleProteinAsCdna(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _scaleProteinAsCdna - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _viewName - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_viewName", "viewName", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - return target.getViewName(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - target.setViewName((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _viewName - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _sequenceSetId - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_sequenceSetId", "sequenceSetId", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - return target.getSequenceSetId(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - target.setSequenceSetId((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _sequenceSetId - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _gatheredViews - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Boolean.TYPE, "_gatheredViews", "gatheredViews", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasGatheredViews()) - { - return null; - } - return (target.getGatheredViews() ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteGatheredViews(); - return; - } - target.setGatheredViews(((java.lang.Boolean) value) - .booleanValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _gatheredViews - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.BooleanValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.BooleanValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _textCol1 - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_textCol1", "textCol1", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasTextCol1()) - { - return null; - } - return new java.lang.Integer(target.getTextCol1()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteTextCol1(); - return; - } - target.setTextCol1(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _textCol1 - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _textCol2 - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_textCol2", "textCol2", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasTextCol2()) - { - return null; - } - return new java.lang.Integer(target.getTextCol2()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteTextCol2(); - return; - } - target.setTextCol2(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _textCol2 - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _textColThreshold - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_textColThreshold", - "textColThreshold", org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasTextColThreshold()) - { - return null; - } - return new java.lang.Integer(target.getTextColThreshold()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteTextColThreshold(); - return; - } - target.setTextColThreshold(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _textColThreshold - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _id - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_id", "id", - org.exolab.castor.xml.NodeType.Attribute); - super.setIdentity(desc); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - return target.getId(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - target.setId((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new java.lang.String(); - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _id - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IdValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IdValidator(); - fieldValidator.setValidator(typeValidator); - } - desc.setValidator(fieldValidator); - // -- _complementId - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_complementId", "complementId", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - return target.getComplementId(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - target.setComplementId((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _complementId - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _width - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_width", "width", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasWidth()) - { - return null; - } - return new java.lang.Integer(target.getWidth()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteWidth(); - return; - } - target.setWidth(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _width - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _height - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_height", "height", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasHeight()) - { - return null; - } - return new java.lang.Integer(target.getHeight()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteHeight(); - return; - } - target.setHeight(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _height - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _xpos - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_xpos", "xpos", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasXpos()) - { - return null; - } - return new java.lang.Integer(target.getXpos()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteXpos(); - return; - } - target.setXpos(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _xpos - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- _ypos - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.Integer.TYPE, "_ypos", "ypos", - org.exolab.castor.xml.NodeType.Attribute); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - if (!target.hasYpos()) - { - return null; - } - return new java.lang.Integer(target.getYpos()); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - // if null, use delete method for optional primitives - if (value == null) - { - target.deleteYpos(); - return; - } - target.setYpos(((java.lang.Integer) value).intValue()); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _ypos - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.IntValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.IntValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setMinInclusive(-2147483648); - typeValidator.setMaxInclusive(2147483647); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _annotationColours - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.AnnotationColours.class, - "_annotationColours", "AnnotationColours", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - return target.getAnnotationColours(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - target.setAnnotationColours((jalview.schemabinding.version2.AnnotationColours) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.AnnotationColours(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _annotationColours - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _hiddenColumnsList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.HiddenColumns.class, - "_hiddenColumnsList", "hiddenColumns", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - return target.getHiddenColumns(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - target.addHiddenColumns((jalview.schemabinding.version2.HiddenColumns) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - target.removeAllHiddenColumns(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.HiddenColumns(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _hiddenColumnsList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _calcIdParamList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - jalview.schemabinding.version2.CalcIdParam.class, - "_calcIdParamList", "calcIdParam", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - Viewport target = (Viewport) object; - return target.getCalcIdParam(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - target.addCalcIdParam((jalview.schemabinding.version2.CalcIdParam) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - Viewport target = (Viewport) object; - target.removeAllCalcIdParam(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new jalview.schemabinding.version2.CalcIdParam(); - } - }; - desc.setHandler(handler); - desc.setNameSpaceURI("www.jalview.org"); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _calcIdParamList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(0); - { // -- local scope - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.Viewport.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/descriptors/WebServiceParameterSetDescriptor.java b/src/jalview/schemabinding/version2/descriptors/WebServiceParameterSetDescriptor.java deleted file mode 100644 index beb5b50..0000000 --- a/src/jalview/schemabinding/version2/descriptors/WebServiceParameterSetDescriptor.java +++ /dev/null @@ -1,396 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.WebServiceParameterSet; - -/** - * Class WebServiceParameterSetDescriptor. - * - * @version $Revision$ $Date$ - */ -public class WebServiceParameterSetDescriptor extends - org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public WebServiceParameterSetDescriptor() - { - super(); - _nsURI = "www.jalview.org/xml/wsparamset"; - _xmlName = "WebServiceParameterSet"; - _elementDefinition = false; - - // -- set grouping compositor - setCompositorAsSequence(); - org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null; - org.exolab.castor.mapping.FieldHandler handler = null; - org.exolab.castor.xml.FieldValidator fieldValidator = null; - // -- initialize attribute descriptors - - // -- _name - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_name", "name", - org.exolab.castor.xml.NodeType.Attribute); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - WebServiceParameterSet target = (WebServiceParameterSet) object; - return target.getName(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - WebServiceParameterSet target = (WebServiceParameterSet) object; - target.setName((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _name - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- initialize element descriptors - - // -- _version - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_version", "Version", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - WebServiceParameterSet target = (WebServiceParameterSet) object; - return target.getVersion(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - WebServiceParameterSet target = (WebServiceParameterSet) object; - target.setVersion((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _version - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _description - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_description", "description", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - WebServiceParameterSet target = (WebServiceParameterSet) object; - return target.getDescription(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - WebServiceParameterSet target = (WebServiceParameterSet) object; - target.setDescription((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _description - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - // -- _serviceURLList - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_serviceURLList", "serviceURL", - org.exolab.castor.xml.NodeType.Element); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - WebServiceParameterSet target = (WebServiceParameterSet) object; - return target.getServiceURL(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - WebServiceParameterSet target = (WebServiceParameterSet) object; - target.addServiceURL((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public void resetValue(Object object) throws IllegalStateException, - IllegalArgumentException - { - try - { - WebServiceParameterSet target = (WebServiceParameterSet) object; - target.removeAllServiceURL(); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return new java.lang.String(); - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(true); - addFieldDescriptor(desc); - - // -- validation code for: _serviceURLList - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - } - desc.setValidator(fieldValidator); - // -- _parameters - desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl( - java.lang.String.class, "_parameters", "parameters", - org.exolab.castor.xml.NodeType.Element); - desc.setImmutable(true); - handler = new org.exolab.castor.xml.XMLFieldHandler() - { - public java.lang.Object getValue(java.lang.Object object) - throws IllegalStateException - { - WebServiceParameterSet target = (WebServiceParameterSet) object; - return target.getParameters(); - } - - public void setValue(java.lang.Object object, java.lang.Object value) - throws IllegalStateException, IllegalArgumentException - { - try - { - WebServiceParameterSet target = (WebServiceParameterSet) object; - target.setParameters((java.lang.String) value); - } catch (java.lang.Exception ex) - { - throw new IllegalStateException(ex.toString()); - } - } - - public java.lang.Object newInstance(java.lang.Object parent) - { - return null; - } - }; - desc.setHandler(handler); - desc.setRequired(true); - desc.setMultivalued(false); - addFieldDescriptor(desc); - - // -- validation code for: _parameters - fieldValidator = new org.exolab.castor.xml.FieldValidator(); - fieldValidator.setMinOccurs(1); - { // -- local scope - org.exolab.castor.xml.validators.StringValidator typeValidator; - typeValidator = new org.exolab.castor.xml.validators.StringValidator(); - fieldValidator.setValidator(typeValidator); - typeValidator.setWhiteSpace("preserve"); - } - desc.setValidator(fieldValidator); - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.WebServiceParameterSet.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/types/.castor.cdr b/src/jalview/schemabinding/version2/types/.castor.cdr deleted file mode 100644 index d9874b6..0000000 --- a/src/jalview/schemabinding/version2/types/.castor.cdr +++ /dev/null @@ -1,5 +0,0 @@ -#Thu Dec 14 15:28:22 GMT 2017 -jalview.schemabinding.version2.types.ColourNoValueColourType=jalview.schemabinding.version2.types.descriptors.ColourNoValueColourTypeDescriptor -jalview.schemabinding.version2.types.FeatureMatcherByType=jalview.schemabinding.version2.types.descriptors.FeatureMatcherByTypeDescriptor -jalview.schemabinding.version2.types.NoValueColour=jalview.schemabinding.version2.types.descriptors.NoValueColourDescriptor -jalview.schemabinding.version2.types.ColourThreshTypeType=jalview.schemabinding.version2.types.descriptors.ColourThreshTypeTypeDescriptor diff --git a/src/jalview/schemabinding/version2/types/ColourThreshTypeType.java b/src/jalview/schemabinding/version2/types/ColourThreshTypeType.java deleted file mode 100644 index 0330411..0000000 --- a/src/jalview/schemabinding/version2/types/ColourThreshTypeType.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.types; - - //---------------------------------/ - //- Imported classes and packages -/ -//---------------------------------/ - -import java.util.Hashtable; - -/** - * Class ColourThreshTypeType. - * - * @version $Revision$ $Date$ - */ -public class ColourThreshTypeType implements java.io.Serializable { - - - //--------------------------/ - //- Class/Member Variables -/ - //--------------------------/ - - /** - * The NONE type - */ - public static final int NONE_TYPE = 0; - - /** - * The instance of the NONE type - */ - public static final ColourThreshTypeType NONE = new ColourThreshTypeType(NONE_TYPE, "NONE"); - - /** - * The ABOVE type - */ - public static final int ABOVE_TYPE = 1; - - /** - * The instance of the ABOVE type - */ - public static final ColourThreshTypeType ABOVE = new ColourThreshTypeType(ABOVE_TYPE, "ABOVE"); - - /** - * The BELOW type - */ - public static final int BELOW_TYPE = 2; - - /** - * The instance of the BELOW type - */ - public static final ColourThreshTypeType BELOW = new ColourThreshTypeType(BELOW_TYPE, "BELOW"); - - /** - * Field _memberTable. - */ - private static java.util.Hashtable _memberTable = init(); - - /** - * Field type. - */ - private int type = -1; - - /** - * Field stringValue. - */ - private java.lang.String stringValue = null; - - - //----------------/ - //- Constructors -/ - //----------------/ - - private ColourThreshTypeType(final int type, final java.lang.String value) { - super(); - this.type = type; - this.stringValue = value; - } - - - //-----------/ - //- Methods -/ - //-----------/ - - /** - * Method enumerate.Returns an enumeration of all possible - * instances of ColourThreshTypeType - * - * @return an Enumeration over all possible instances of - * ColourThreshTypeType - */ - public static java.util.Enumeration enumerate( - ) { - return _memberTable.elements(); - } - - /** - * Method getType.Returns the type of this ColourThreshTypeType - * - * @return the type of this ColourThreshTypeType - */ - public int getType( - ) { - return this.type; - } - - /** - * Method init. - * - * @return the initialized Hashtable for the member table - */ - private static java.util.Hashtable init( - ) { - Hashtable members = new Hashtable(); - members.put("NONE", NONE); - members.put("ABOVE", ABOVE); - members.put("BELOW", BELOW); - return members; - } - - /** - * Method readResolve. will be called during deserialization to - * replace the deserialized object with the correct constant - * instance. - * - * @return this deserialized object - */ - private java.lang.Object readResolve( - ) { - return valueOf(this.stringValue); - } - - /** - * Method toString.Returns the String representation of this - * ColourThreshTypeType - * - * @return the String representation of this ColourThreshTypeTyp - */ - public java.lang.String toString( - ) { - return this.stringValue; - } - - /** - * Method valueOf.Returns a new ColourThreshTypeType based on - * the given String value. - * - * @param string - * @return the ColourThreshTypeType value of parameter 'string' - */ - public static jalview.schemabinding.version2.types.ColourThreshTypeType valueOf( - final java.lang.String string) { - java.lang.Object obj = null; - if (string != null) { - obj = _memberTable.get(string); - } - if (obj == null) { - String err = "" + string + " is not a valid ColourThreshTypeType"; - throw new IllegalArgumentException(err); - } - return (ColourThreshTypeType) obj; - } - -} diff --git a/src/jalview/schemabinding/version2/types/FeatureMatcherByType.java b/src/jalview/schemabinding/version2/types/FeatureMatcherByType.java deleted file mode 100644 index 6e97332..0000000 --- a/src/jalview/schemabinding/version2/types/FeatureMatcherByType.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.types; - - //---------------------------------/ - //- Imported classes and packages -/ -//---------------------------------/ - -import java.util.Hashtable; - -/** - * Class FeatureMatcherByType. - * - * @version $Revision$ $Date$ - */ -public class FeatureMatcherByType implements java.io.Serializable { - - - //--------------------------/ - //- Class/Member Variables -/ - //--------------------------/ - - /** - * The byLabel type - */ - public static final int BYLABEL_TYPE = 0; - - /** - * The instance of the byLabel type - */ - public static final FeatureMatcherByType BYLABEL = new FeatureMatcherByType(BYLABEL_TYPE, "byLabel"); - - /** - * The byScore type - */ - public static final int BYSCORE_TYPE = 1; - - /** - * The instance of the byScore type - */ - public static final FeatureMatcherByType BYSCORE = new FeatureMatcherByType(BYSCORE_TYPE, "byScore"); - - /** - * The byAttribute type - */ - public static final int BYATTRIBUTE_TYPE = 2; - - /** - * The instance of the byAttribute type - */ - public static final FeatureMatcherByType BYATTRIBUTE = new FeatureMatcherByType(BYATTRIBUTE_TYPE, "byAttribute"); - - /** - * Field _memberTable. - */ - private static java.util.Hashtable _memberTable = init(); - - /** - * Field type. - */ - private int type = -1; - - /** - * Field stringValue. - */ - private java.lang.String stringValue = null; - - - //----------------/ - //- Constructors -/ - //----------------/ - - private FeatureMatcherByType(final int type, final java.lang.String value) { - super(); - this.type = type; - this.stringValue = value; - } - - - //-----------/ - //- Methods -/ - //-----------/ - - /** - * Method enumerate.Returns an enumeration of all possible - * instances of FeatureMatcherByType - * - * @return an Enumeration over all possible instances of - * FeatureMatcherByType - */ - public static java.util.Enumeration enumerate( - ) { - return _memberTable.elements(); - } - - /** - * Method getType.Returns the type of this FeatureMatcherByType - * - * @return the type of this FeatureMatcherByType - */ - public int getType( - ) { - return this.type; - } - - /** - * Method init. - * - * @return the initialized Hashtable for the member table - */ - private static java.util.Hashtable init( - ) { - Hashtable members = new Hashtable(); - members.put("byLabel", BYLABEL); - members.put("byScore", BYSCORE); - members.put("byAttribute", BYATTRIBUTE); - return members; - } - - /** - * Method readResolve. will be called during deserialization to - * replace the deserialized object with the correct constant - * instance. - * - * @return this deserialized object - */ - private java.lang.Object readResolve( - ) { - return valueOf(this.stringValue); - } - - /** - * Method toString.Returns the String representation of this - * FeatureMatcherByType - * - * @return the String representation of this FeatureMatcherByTyp - */ - public java.lang.String toString( - ) { - return this.stringValue; - } - - /** - * Method valueOf.Returns a new FeatureMatcherByType based on - * the given String value. - * - * @param string - * @return the FeatureMatcherByType value of parameter 'string' - */ - public static jalview.schemabinding.version2.types.FeatureMatcherByType valueOf( - final java.lang.String string) { - java.lang.Object obj = null; - if (string != null) { - obj = _memberTable.get(string); - } - if (obj == null) { - String err = "" + string + " is not a valid FeatureMatcherByType"; - throw new IllegalArgumentException(err); - } - return (FeatureMatcherByType) obj; - } - -} diff --git a/src/jalview/schemabinding/version2/types/NoValueColour.java b/src/jalview/schemabinding/version2/types/NoValueColour.java deleted file mode 100644 index bbef3d7..0000000 --- a/src/jalview/schemabinding/version2/types/NoValueColour.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.types; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import java.util.Hashtable; - -/** - * Graduated feature colour if no score (or attribute) value - * - * @version $Revision$ $Date$ - */ -public class NoValueColour implements java.io.Serializable -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * The None type - */ - public static final int NONE_TYPE = 0; - - /** - * The instance of the None type - */ - public static final NoValueColour NONE = new NoValueColour(NONE_TYPE, - "None"); - - /** - * The Min type - */ - public static final int MIN_TYPE = 1; - - /** - * The instance of the Min type - */ - public static final NoValueColour MIN = new NoValueColour(MIN_TYPE, - "Min"); - - /** - * The Max type - */ - public static final int MAX_TYPE = 2; - - /** - * The instance of the Max type - */ - public static final NoValueColour MAX = new NoValueColour(MAX_TYPE, - "Max"); - - /** - * Field _memberTable. - */ - private static java.util.Hashtable _memberTable = init(); - - /** - * Field type. - */ - private int type = -1; - - /** - * Field stringValue. - */ - private java.lang.String stringValue = null; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - private NoValueColour(final int type, final java.lang.String value) - { - super(); - this.type = type; - this.stringValue = value; - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method enumerate.Returns an enumeration of all possible instances of - * NoValueColour - * - * @return an Enumeration over all possible instances of NoValueColour - */ - public static java.util.Enumeration enumerate() - { - return _memberTable.elements(); - } - - /** - * Method getType.Returns the type of this NoValueColour - * - * @return the type of this NoValueColour - */ - public int getType() - { - return this.type; - } - - /** - * Method init. - * - * @return the initialized Hashtable for the member table - */ - private static java.util.Hashtable init() - { - Hashtable members = new Hashtable(); - members.put("None", NONE); - members.put("Min", MIN); - members.put("Max", MAX); - return members; - } - - /** - * Method readResolve. will be called during deserialization to replace the - * deserialized object with the correct constant instance. - * - * @return this deserialized object - */ - private java.lang.Object readResolve() - { - return valueOf(this.stringValue); - } - - /** - * Method toString.Returns the String representation of this NoValueColour - * - * @return the String representation of this NoValueColour - */ - public java.lang.String toString() - { - return this.stringValue; - } - - /** - * Method valueOf.Returns a new NoValueColour based on the given String value. - * - * @param string - * @return the NoValueColour value of parameter 'string' - */ - public static jalview.schemabinding.version2.types.NoValueColour valueOf( - final java.lang.String string) - { - java.lang.Object obj = null; - if (string != null) - { - obj = _memberTable.get(string); - } - if (obj == null) - { - String err = "" + string + " is not a valid NoValueColour"; - throw new IllegalArgumentException(err); - } - return (NoValueColour) obj; - } - -} diff --git a/src/jalview/schemabinding/version2/types/descriptors/ColourThreshTypeTypeDescriptor.java b/src/jalview/schemabinding/version2/types/descriptors/ColourThreshTypeTypeDescriptor.java deleted file mode 100644 index f978363..0000000 --- a/src/jalview/schemabinding/version2/types/descriptors/ColourThreshTypeTypeDescriptor.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.types.descriptors; - - //---------------------------------/ - //- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.types.ColourThreshTypeType; - -/** - * Class ColourThreshTypeTypeDescriptor. - * - * @version $Revision$ $Date$ - */ -public class ColourThreshTypeTypeDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl { - - - //--------------------------/ - //- Class/Member Variables -/ - //--------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - - //----------------/ - //- Constructors -/ - //----------------/ - - public ColourThreshTypeTypeDescriptor() { - super(); - _nsURI = "www.jalview.org/colours"; - _xmlName = "ColourThreshTypeType"; - _elementDefinition = false; - } - - - //-----------/ - //- Methods -/ - //-----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode( - ) { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no - * identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity( - ) { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass( - ) { - return jalview.schemabinding.version2.types.ColourThreshTypeType.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix( - ) { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and - * unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI( - ) { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator( - ) { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName( - ) { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that - * of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition( - ) { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/types/descriptors/FeatureMatcherByTypeDescriptor.java b/src/jalview/schemabinding/version2/types/descriptors/FeatureMatcherByTypeDescriptor.java deleted file mode 100644 index e392e76..0000000 --- a/src/jalview/schemabinding/version2/types/descriptors/FeatureMatcherByTypeDescriptor.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.types.descriptors; - - //---------------------------------/ - //- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.types.FeatureMatcherByType; - -/** - * Class FeatureMatcherByTypeDescriptor. - * - * @version $Revision$ $Date$ - */ -public class FeatureMatcherByTypeDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl { - - - //--------------------------/ - //- Class/Member Variables -/ - //--------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - - //----------------/ - //- Constructors -/ - //----------------/ - - public FeatureMatcherByTypeDescriptor() { - super(); - _nsURI = "www.jalview.org/colours"; - _xmlName = "FeatureMatcherByType"; - _elementDefinition = false; - } - - - //-----------/ - //- Methods -/ - //-----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode( - ) { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no - * identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity( - ) { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass( - ) { - return jalview.schemabinding.version2.types.FeatureMatcherByType.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix( - ) { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and - * unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI( - ) { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator( - ) { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName( - ) { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that - * of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition( - ) { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemabinding/version2/types/descriptors/NoValueColourDescriptor.java b/src/jalview/schemabinding/version2/types/descriptors/NoValueColourDescriptor.java deleted file mode 100644 index 14c58ed..0000000 --- a/src/jalview/schemabinding/version2/types/descriptors/NoValueColourDescriptor.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * This class was automatically generated with - * Castor 1.1, using an XML - * Schema. - * $Id$ - */ - -package jalview.schemabinding.version2.types.descriptors; - -//---------------------------------/ -//- Imported classes and packages -/ -//---------------------------------/ - -import jalview.schemabinding.version2.types.NoValueColour; - -/** - * Class NoValueColourDescriptor. - * - * @version $Revision$ $Date$ - */ -public class NoValueColourDescriptor - extends org.exolab.castor.xml.util.XMLClassDescriptorImpl -{ - - // --------------------------/ - // - Class/Member Variables -/ - // --------------------------/ - - /** - * Field _elementDefinition. - */ - private boolean _elementDefinition; - - /** - * Field _nsPrefix. - */ - private java.lang.String _nsPrefix; - - /** - * Field _nsURI. - */ - private java.lang.String _nsURI; - - /** - * Field _xmlName. - */ - private java.lang.String _xmlName; - - // ----------------/ - // - Constructors -/ - // ----------------/ - - public NoValueColourDescriptor() - { - super(); - _nsURI = "www.jalview.org/colours"; - _xmlName = "NoValueColour"; - _elementDefinition = false; - } - - // -----------/ - // - Methods -/ - // -----------/ - - /** - * Method getAccessMode. - * - * @return the access mode specified for this class. - */ - public org.exolab.castor.mapping.AccessMode getAccessMode() - { - return null; - } - - /** - * Method getIdentity. - * - * @return the identity field, null if this class has no identity. - */ - public org.exolab.castor.mapping.FieldDescriptor getIdentity() - { - return super.getIdentity(); - } - - /** - * Method getJavaClass. - * - * @return the Java class represented by this descriptor. - */ - public java.lang.Class getJavaClass() - { - return jalview.schemabinding.version2.types.NoValueColour.class; - } - - /** - * Method getNameSpacePrefix. - * - * @return the namespace prefix to use when marshaling as XML. - */ - public java.lang.String getNameSpacePrefix() - { - return _nsPrefix; - } - - /** - * Method getNameSpaceURI. - * - * @return the namespace URI used when marshaling and unmarshaling as XML. - */ - public java.lang.String getNameSpaceURI() - { - return _nsURI; - } - - /** - * Method getValidator. - * - * @return a specific validator for the class described by this - * ClassDescriptor. - */ - public org.exolab.castor.xml.TypeValidator getValidator() - { - return this; - } - - /** - * Method getXMLName. - * - * @return the XML Name for the Class being described. - */ - public java.lang.String getXMLName() - { - return _xmlName; - } - - /** - * Method isElementDefinition. - * - * @return true if XML schema definition of this Class is that of a global - * element or element with anonymous type definition. - */ - public boolean isElementDefinition() - { - return _elementDefinition; - } - -} diff --git a/src/jalview/schemes/ColourSchemeLoader.java b/src/jalview/schemes/ColourSchemeLoader.java index 481f809..141ef10 100644 --- a/src/jalview/schemes/ColourSchemeLoader.java +++ b/src/jalview/schemes/ColourSchemeLoader.java @@ -114,34 +114,9 @@ public class ColourSchemeLoader } } catch (Exception ex) { - // Could be old Jalview Archive format - try - { - InputStreamReader in = new InputStreamReader( - new FileInputStream(file), "UTF-8"); - - jalview.binding.JalviewUserColours jucs = new jalview.binding.JalviewUserColours(); - - jucs = jalview.binding.JalviewUserColours.unmarshal(in); - - newColours = new Color[jucs.getColourCount()]; - - for (int i = 0; i < 24; i++) - { - newColours[i] = new Color( - Integer.parseInt(jucs.getColour(i).getRGB(), 16)); - } - ucs = new UserColourScheme(newColours); - ucs.setName(jucs.getSchemeName()); - } catch (Exception ex2) - { - ex2.printStackTrace(); - } - - if (newColours == null) - { - System.out.println("Error loading User ColourFile\n" + ex); - } + // used to try to parse a V1 Castor generated colours file + System.err.println("Failed to read colour scheme from " + filePath + + " : " + ex.toString()); } return ucs; diff --git a/test/jalview/gui/AlignFrameTest.java b/test/jalview/gui/AlignFrameTest.java index b0aaab9..bdda48d 100644 --- a/test/jalview/gui/AlignFrameTest.java +++ b/test/jalview/gui/AlignFrameTest.java @@ -38,7 +38,7 @@ import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.io.DataSourceType; import jalview.io.FileLoader; -import jalview.io.Jalview2xmlTests; +import jalview.project.Jalview2xmlTests; import jalview.renderer.ResidueShaderI; import jalview.schemes.BuriedColourScheme; import jalview.schemes.FeatureColour; diff --git a/test/jalview/io/CrossRef2xmlTests.java b/test/jalview/io/CrossRef2xmlTests.java index 2b8a62f..53a0acb 100644 --- a/test/jalview/io/CrossRef2xmlTests.java +++ b/test/jalview/io/CrossRef2xmlTests.java @@ -29,8 +29,8 @@ import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; import jalview.gui.CrossRefAction; import jalview.gui.Desktop; -import jalview.gui.Jalview2XML; import jalview.gui.JvOptionPane; +import jalview.project.Jalview2XML; import jalview.util.DBRefUtils; import java.io.File; @@ -41,13 +41,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import junit.extensions.PA; - import org.testng.Assert; import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import junit.extensions.PA; + @Test(singleThreaded = true) public class CrossRef2xmlTests extends Jalview2xmlBase { diff --git a/test/jalview/io/Jalview2xmlTests.java b/test/jalview/io/Jalview2xmlTests.java deleted file mode 100644 index 53bb0e7..0000000 --- a/test/jalview/io/Jalview2xmlTests.java +++ /dev/null @@ -1,1038 +0,0 @@ -/* - * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) - * Copyright (C) $$Year-Rel$$ The Jalview Authors - * - * This file is part of Jalview. - * - * Jalview is free software: you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 - * of the License, or (at your option) any later version. - * - * Jalview is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Jalview. If not, see . - * The Jalview Authors are detailed in the 'AUTHORS' file. - */ -package jalview.io; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertNull; -import static org.testng.Assert.assertSame; -import static org.testng.Assert.assertTrue; - -import jalview.api.AlignViewportI; -import jalview.api.AlignmentViewPanel; -import jalview.api.FeatureColourI; -import jalview.api.ViewStyleI; -import jalview.datamodel.AlignmentAnnotation; -import jalview.datamodel.AlignmentI; -import jalview.datamodel.HiddenSequences; -import jalview.datamodel.PDBEntry; -import jalview.datamodel.PDBEntry.Type; -import jalview.datamodel.SequenceCollectionI; -import jalview.datamodel.SequenceFeature; -import jalview.datamodel.SequenceGroup; -import jalview.datamodel.SequenceI; -import jalview.datamodel.features.FeatureMatcher; -import jalview.datamodel.features.FeatureMatcherSet; -import jalview.datamodel.features.FeatureMatcherSetI; -import jalview.gui.AlignFrame; -import jalview.gui.AlignViewport; -import jalview.gui.AlignmentPanel; -import jalview.gui.Desktop; -import jalview.gui.FeatureRenderer; -import jalview.gui.Jalview2XML; -import jalview.gui.JvOptionPane; -import jalview.gui.PopupMenu; -import jalview.gui.SliderPanel; -import jalview.renderer.ResidueShaderI; -import jalview.schemes.AnnotationColourGradient; -import jalview.schemes.BuriedColourScheme; -import jalview.schemes.ColourSchemeI; -import jalview.schemes.ColourSchemeProperty; -import jalview.schemes.FeatureColour; -import jalview.schemes.JalviewColourScheme; -import jalview.schemes.RNAHelicesColour; -import jalview.schemes.StrandColourScheme; -import jalview.schemes.TCoffeeColourScheme; -import jalview.structure.StructureImportSettings; -import jalview.util.matcher.Condition; -import jalview.viewmodel.AlignmentViewport; - -import java.awt.Color; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.testng.Assert; -import org.testng.AssertJUnit; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -@Test(singleThreaded = true) -public class Jalview2xmlTests extends Jalview2xmlBase -{ - - @Override - @BeforeClass(alwaysRun = true) - public void setUpJvOptionPane() - { - JvOptionPane.setInteractiveMode(false); - JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); - } - - @Test(groups = { "Functional" }) - public void testRNAStructureRecovery() throws Exception - { - String inFile = "examples/RF00031_folded.stk"; - String tfile = File.createTempFile("JalviewTest", ".jvp") - .getAbsolutePath(); - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile, - DataSourceType.FILE); - assertNotNull(af, "Didn't read input file " + inFile); - int olddsann = countDsAnn(af.getViewport()); - assertTrue(olddsann > 0, "Didn't find any dataset annotations"); - af.changeColour_actionPerformed(JalviewColourScheme.RNAHelices - .toString()); - assertTrue( - af.getViewport().getGlobalColourScheme() instanceof RNAHelicesColour, - "Couldn't apply RNA helices colourscheme"); - assertTrue(af.saveAlignment(tfile, FileFormat.Jalview), - "Failed to store as a project."); - af.closeMenuItem_actionPerformed(true); - af = null; - af = new FileLoader() - .LoadFileWaitTillLoaded(tfile, DataSourceType.FILE); - assertNotNull(af, "Failed to import new project"); - int newdsann = countDsAnn(af.getViewport()); - assertEquals(olddsann, newdsann, - "Differing numbers of dataset sequence annotation\nOriginally " - + olddsann + " and now " + newdsann); - System.out - .println("Read in same number of annotations as originally present (" - + olddsann + ")"); - assertTrue( - - af.getViewport().getGlobalColourScheme() instanceof RNAHelicesColour, - "RNA helices colourscheme was not applied on import."); - } - - @Test(groups = { "Functional" }) - public void testTCoffeeScores() throws Exception - { - String inFile = "examples/uniref50.fa", inAnnot = "examples/uniref50.score_ascii"; - String tfile = File.createTempFile("JalviewTest", ".jvp") - .getAbsolutePath(); - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile, - DataSourceType.FILE); - assertNotNull(af, "Didn't read input file " + inFile); - af.loadJalviewDataFile(inAnnot, DataSourceType.FILE, null, null); - assertSame(af.getViewport().getGlobalColourScheme().getClass(), - TCoffeeColourScheme.class, "Didn't set T-coffee colourscheme"); - assertNotNull(ColourSchemeProperty.getColourScheme(af.getViewport() - .getAlignment(), af.getViewport().getGlobalColourScheme() - .getSchemeName()), "Recognise T-Coffee score from string"); - - assertTrue(af.saveAlignment(tfile, FileFormat.Jalview), - "Failed to store as a project."); - af.closeMenuItem_actionPerformed(true); - af = null; - af = new FileLoader() - .LoadFileWaitTillLoaded(tfile, DataSourceType.FILE); - assertNotNull(af, "Failed to import new project"); - assertSame(af.getViewport().getGlobalColourScheme().getClass(), - TCoffeeColourScheme.class, - "Didn't set T-coffee colourscheme for imported project."); - System.out - .println("T-Coffee score shading successfully recovered from project."); - } - - @Test(groups = { "Functional" }) - public void testColourByAnnotScores() throws Exception - { - String inFile = "examples/uniref50.fa", inAnnot = "examples/testdata/uniref50_iupred.jva"; - String tfile = File.createTempFile("JalviewTest", ".jvp") - .getAbsolutePath(); - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile, - DataSourceType.FILE); - assertNotNull(af, "Didn't read input file " + inFile); - af.loadJalviewDataFile(inAnnot, DataSourceType.FILE, null, null); - AlignmentAnnotation[] aa = af.getViewport().getAlignment() - .getSequenceAt(0).getAnnotation("IUPredWS (Short)"); - assertTrue( - - aa != null && aa.length > 0, - "Didn't find any IUPred annotation to use to shade alignment."); - AnnotationColourGradient cs = new AnnotationColourGradient(aa[0], null, - AnnotationColourGradient.ABOVE_THRESHOLD); - AnnotationColourGradient gcs = new AnnotationColourGradient(aa[0], - null, AnnotationColourGradient.BELOW_THRESHOLD); - cs.setSeqAssociated(true); - gcs.setSeqAssociated(true); - af.changeColour(cs); - SequenceGroup sg = new SequenceGroup(); - sg.setStartRes(57); - sg.setEndRes(92); - sg.cs.setColourScheme(gcs); - af.getViewport().getAlignment().addGroup(sg); - sg.addSequence(af.getViewport().getAlignment().getSequenceAt(1), false); - sg.addSequence(af.getViewport().getAlignment().getSequenceAt(2), true); - af.alignPanel.alignmentChanged(); - assertTrue(af.saveAlignment(tfile, FileFormat.Jalview), - "Failed to store as a project."); - af.closeMenuItem_actionPerformed(true); - af = null; - af = new FileLoader() - .LoadFileWaitTillLoaded(tfile, DataSourceType.FILE); - assertNotNull(af, "Failed to import new project"); - - // check for group and alignment colourschemes - - ColourSchemeI _rcs = af.getViewport().getGlobalColourScheme(); - ColourSchemeI _rgcs = af.getViewport().getAlignment().getGroups() - .get(0).getColourScheme(); - assertNotNull(_rcs, "Didn't recover global colourscheme"); - assertTrue(_rcs instanceof AnnotationColourGradient, - "Didn't recover annotation colour global scheme"); - AnnotationColourGradient __rcs = (AnnotationColourGradient) _rcs; - assertTrue(__rcs.isSeqAssociated(), - "Annotation colourscheme wasn't sequence associated"); - - boolean diffseqcols = false, diffgseqcols = false; - SequenceI[] sqs = af.getViewport().getAlignment().getSequencesArray(); - for (int p = 0, pSize = af.getViewport().getAlignment().getWidth(); p < pSize - && (!diffseqcols || !diffgseqcols); p++) - { - if (_rcs.findColour(sqs[0].getCharAt(p), p, sqs[0], null, 0f) != _rcs - .findColour(sqs[5].getCharAt(p), p, sqs[5], null, 0f)) - { - diffseqcols = true; - } - } - assertTrue(diffseqcols, "Got Different sequence colours"); - System.out - .println("Per sequence colourscheme (Background) successfully applied and recovered."); - - assertNotNull(_rgcs, "Didn't recover group colourscheme"); - assertTrue(_rgcs instanceof AnnotationColourGradient, - "Didn't recover annotation colour group colourscheme"); - __rcs = (AnnotationColourGradient) _rgcs; - assertTrue(__rcs.isSeqAssociated(), - "Group Annotation colourscheme wasn't sequence associated"); - - for (int p = 0, pSize = af.getViewport().getAlignment().getWidth(); p < pSize - && (!diffseqcols || !diffgseqcols); p++) - { - if (_rgcs.findColour(sqs[1].getCharAt(p), p, sqs[1], null, 0f) != _rgcs - .findColour(sqs[2].getCharAt(p), p, sqs[2], null, 0f)) - { - diffgseqcols = true; - } - } - assertTrue(diffgseqcols, "Got Different group sequence colours"); - System.out - .println("Per sequence (Group) colourscheme successfully applied and recovered."); - } - - @Test(groups = { "Functional" }) - public void gatherViewsHere() throws Exception - { - int origCount = Desktop.getAlignFrames() == null ? 0 : Desktop - .getAlignFrames().length; - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( - "examples/exampleFile_2_7.jar", DataSourceType.FILE); - assertNotNull(af, "Didn't read in the example file correctly."); - assertTrue(Desktop.getAlignFrames().length == 1 + origCount, - "Didn't gather the views in the example file."); - - } - - /** - * Test for JAL-2223 - multiple mappings in View Mapping report - * - * @throws Exception - */ - @Test(groups = { "Functional" }) - public void noDuplicatePdbMappingsMade() throws Exception - { - StructureImportSettings.setProcessSecondaryStructure(true); - StructureImportSettings.setVisibleChainAnnotation(true); - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( - "examples/exampleFile_2_7.jar", DataSourceType.FILE); - assertNotNull(af, "Didn't read in the example file correctly."); - - // locate Jmol viewer - // count number of PDB mappings the structure selection manager holds - - String pdbFile = af.getCurrentView().getStructureSelectionManager() - .findFileForPDBId("1A70"); - assertEquals( - af.getCurrentView().getStructureSelectionManager() - .getMapping(pdbFile).length, - 2, "Expected only two mappings for 1A70"); - - } - - @Test(groups = { "Functional" }) - public void viewRefPdbAnnotation() throws Exception - { - StructureImportSettings.setProcessSecondaryStructure(true); - StructureImportSettings.setVisibleChainAnnotation(true); - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( - "examples/exampleFile_2_7.jar", DataSourceType.FILE); - assertNotNull(af, "Didn't read in the example file correctly."); - AlignmentViewPanel sps = null; - for (AlignmentViewPanel ap : af.alignPanel.alignFrame.getAlignPanels()) - { - if ("Spinach Feredoxin Structure".equals(ap.getViewName())) - { - sps = ap; - break; - } - } - assertNotNull(sps, "Couldn't find the structure view"); - AlignmentAnnotation refan = null; - for (AlignmentAnnotation ra : sps.getAlignment() - .getAlignmentAnnotation()) - { - if (ra.graph != 0) - { - refan = ra; - break; - } - } - assertNotNull(refan, "Annotation secondary structure not found."); - SequenceI sq = sps.getAlignment().findName("1A70|"); - assertNotNull(sq, "Couldn't find 1a70 null chain"); - // compare the manually added temperature factor annotation - // to the track automatically transferred from the pdb structure on load - assertNotNull(sq.getDatasetSequence().getAnnotation(), - "1a70 has no annotation"); - for (AlignmentAnnotation ala : sq.getDatasetSequence().getAnnotation()) - { - AlignmentAnnotation alaa; - sq.addAlignmentAnnotation(alaa = new AlignmentAnnotation(ala)); - alaa.adjustForAlignment(); - if (ala.graph == refan.graph) - { - for (int p = 0; p < ala.annotations.length; p++) - { - sq.findPosition(p); - try - { - assertTrue( - (alaa.annotations[p] == null && refan.annotations[p] == null) - || alaa.annotations[p].value == refan.annotations[p].value, - "Mismatch at alignment position " + p); - } catch (NullPointerException q) - { - Assert.fail("Mismatch of alignment annotations at position " - + p + " Ref seq ann: " + refan.annotations[p] - + " alignment " + alaa.annotations[p]); - } - } - } - } - - } - - @Test(groups = { "Functional" }) - public void testCopyViewSettings() throws Exception - { - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( - "examples/exampleFile_2_7.jar", DataSourceType.FILE); - assertNotNull(af, "Didn't read in the example file correctly."); - AlignmentViewPanel sps = null, groups = null; - for (AlignmentViewPanel ap : af.alignPanel.alignFrame.getAlignPanels()) - { - if ("Spinach Feredoxin Structure".equals(ap.getViewName())) - { - sps = ap; - } - if (ap.getViewName().contains("MAFFT")) - { - groups = ap; - } - } - assertNotNull(sps, "Couldn't find the structure view"); - assertNotNull(groups, "Couldn't find the MAFFT view"); - - ViewStyleI structureStyle = sps.getAlignViewport().getViewStyle(); - ViewStyleI groupStyle = groups.getAlignViewport().getViewStyle(); - AssertJUnit.assertFalse(structureStyle.sameStyle(groupStyle)); - - groups.getAlignViewport().setViewStyle(structureStyle); - AssertJUnit.assertFalse(groupStyle.sameStyle(groups.getAlignViewport() - .getViewStyle())); - Assert.assertTrue(structureStyle.sameStyle(groups.getAlignViewport() - .getViewStyle())); - - } - - /** - * test store and recovery of expanded views - * - * @throws Exception - */ - @Test(groups = { "Functional" }, enabled = true) - public void testStoreAndRecoverExpandedviews() throws Exception - { - Desktop.instance.closeAll_actionPerformed(null); - - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( - "examples/exampleFile_2_7.jar", DataSourceType.FILE); - Assert.assertEquals(Desktop.getAlignFrames().length, 1); - String afid = af.getViewport().getSequenceSetId(); - - // check FileLoader returned a reference to the one alignFrame that is - // actually on the Desktop - assertSame( - af, - Desktop.getAlignFrameFor(af.getViewport()), - "Jalview2XML.loadAlignFrame() didn't return correct AlignFrame reference for multiple view window"); - - Desktop.explodeViews(af); - - int oldviews = Desktop.getAlignFrames().length; - Assert.assertEquals(Desktop.getAlignFrames().length, - Desktop.getAlignmentPanels(afid).length); - File tfile = File.createTempFile("testStoreAndRecoverExpanded", ".jvp"); - try - { - new Jalview2XML(false).saveState(tfile); - } catch (Error e) - { - Assert.fail("Didn't save the expanded view state", e); - } catch (Exception e) - { - Assert.fail("Didn't save the expanded view state", e); - } - Desktop.instance.closeAll_actionPerformed(null); - if (Desktop.getAlignFrames() != null) - { - Assert.assertEquals(Desktop.getAlignFrames().length, 0); - } - af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(), - DataSourceType.FILE); - Assert.assertNotNull(af); - Assert.assertEquals( - Desktop.getAlignFrames().length, - Desktop.getAlignmentPanels(af.getViewport().getSequenceSetId()).length); - Assert.assertEquals( - Desktop.getAlignmentPanels(af.getViewport().getSequenceSetId()).length, - oldviews); - } - - /** - * Test save and reload of a project with a different representative sequence - * in each view. - * - * @throws Exception - */ - @Test(groups = { "Functional" }) - public void testStoreAndRecoverReferenceSeqSettings() throws Exception - { - Desktop.instance.closeAll_actionPerformed(null); - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( - "examples/exampleFile_2_7.jar", DataSourceType.FILE); - assertNotNull(af, "Didn't read in the example file correctly."); - String afid = af.getViewport().getSequenceSetId(); - - // remember reference sequence for each panel - Map refseqs = new HashMap<>(); - - /* - * mark sequence 2, 3, 4.. in panels 1, 2, 3... - * as reference sequence for itself and the preceding sequence - */ - int n = 1; - for (AlignmentViewPanel ap : Desktop.getAlignmentPanels(afid)) - { - AlignViewportI av = ap.getAlignViewport(); - AlignmentI alignment = ap.getAlignment(); - int repIndex = n % alignment.getHeight(); - SequenceI rep = alignment.getSequenceAt(repIndex); - refseqs.put(ap.getViewName(), rep); - - // code from mark/unmark sequence as reference in jalview.gui.PopupMenu - // todo refactor this to an alignment view controller - av.setDisplayReferenceSeq(true); - av.setColourByReferenceSeq(true); - av.getAlignment().setSeqrep(rep); - - n++; - } - File tfile = File.createTempFile("testStoreAndRecoverReferenceSeq", - ".jvp"); - try - { - new Jalview2XML(false).saveState(tfile); - } catch (Throwable e) - { - Assert.fail("Didn't save the expanded view state", e); - } - Desktop.instance.closeAll_actionPerformed(null); - if (Desktop.getAlignFrames() != null) - { - Assert.assertEquals(Desktop.getAlignFrames().length, 0); - } - - af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(), - DataSourceType.FILE); - afid = af.getViewport().getSequenceSetId(); - - for (AlignmentViewPanel ap : Desktop.getAlignmentPanels(afid)) - { - // check representative - AlignmentI alignment = ap.getAlignment(); - SequenceI rep = alignment.getSeqrep(); - Assert.assertNotNull(rep, - "Couldn't restore sequence representative from project"); - // can't use a strong equals here, because by definition, the sequence IDs - // will be different. - // could set vamsas session save/restore flag to preserve IDs across - // load/saves. - Assert.assertEquals(refseqs.get(ap.getViewName()).toString(), - rep.toString(), - "Representative wasn't the same when recovered."); - Assert.assertTrue(ap.getAlignViewport().isDisplayReferenceSeq(), - "Display reference sequence view setting not set."); - Assert.assertTrue(ap.getAlignViewport().isColourByReferenceSeq(), - "Colour By Reference Seq view setting not set."); - } - } - - @Test(groups = { "Functional" }) - public void testIsVersionStringLaterThan() - { - /* - * No version / development / test / autobuild is leniently assumed to be - * compatible - */ - assertTrue(Jalview2XML.isVersionStringLaterThan(null, null)); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", null)); - assertTrue(Jalview2XML.isVersionStringLaterThan(null, "2.8.3")); - assertTrue(Jalview2XML.isVersionStringLaterThan(null, - "Development Build")); - assertTrue(Jalview2XML.isVersionStringLaterThan(null, - "DEVELOPMENT BUILD")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", - "Development Build")); - assertTrue(Jalview2XML.isVersionStringLaterThan(null, "Test")); - assertTrue(Jalview2XML.isVersionStringLaterThan(null, "TEST")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "Test")); - assertTrue(Jalview2XML - .isVersionStringLaterThan(null, "Automated Build")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", - "Automated Build")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", - "AUTOMATED BUILD")); - - /* - * same version returns true i.e. compatible - */ - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8", "2.8")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.8.3")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3b1", "2.8.3b1")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3B1", "2.8.3b1")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3b1", "2.8.3B1")); - - /* - * later version returns true - */ - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.8.4")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.9")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.9.2")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8", "2.8.3")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.8.3b1")); - - /* - * earlier version returns false - */ - assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.8")); - assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.4", "2.8.3")); - assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.3b1", "2.8.3")); - assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.8.2b1")); - assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.0b2", "2.8.0b1")); - } - - /** - * Test save and reload of a project with a different sequence group (and - * representative sequence) in each view. - * - * @throws Exception - */ - @Test(groups = { "Functional" }) - public void testStoreAndRecoverGroupRepSeqs() throws Exception - { - Desktop.instance.closeAll_actionPerformed(null); - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( - "examples/uniref50.fa", DataSourceType.FILE); - assertNotNull(af, "Didn't read in the example file correctly."); - String afid = af.getViewport().getSequenceSetId(); - // make a second view of the alignment - af.newView_actionPerformed(null); - - /* - * remember representative and hidden sequences marked - * on each panel - */ - Map repSeqs = new HashMap<>(); - Map> hiddenSeqNames = new HashMap<>(); - - /* - * mark sequence 2, 3, 4.. in panels 1, 2, 3... - * as reference sequence for itself and the preceding sequence - */ - int n = 1; - for (AlignmentViewPanel ap : Desktop.getAlignmentPanels(afid)) - { - AlignViewportI av = ap.getAlignViewport(); - AlignmentI alignment = ap.getAlignment(); - int repIndex = n % alignment.getHeight(); - // ensure at least one preceding sequence i.e. index >= 1 - repIndex = Math.max(repIndex, 1); - SequenceI repSeq = alignment.getSequenceAt(repIndex); - repSeqs.put(ap.getViewName(), repSeq); - List hiddenNames = new ArrayList<>(); - hiddenSeqNames.put(ap.getViewName(), hiddenNames); - - /* - * have rep sequence represent itself and the one before it - * this hides the group (except for the rep seq) - */ - SequenceGroup sg = new SequenceGroup(); - sg.addSequence(repSeq, false); - SequenceI precedingSeq = alignment.getSequenceAt(repIndex - 1); - sg.addSequence(precedingSeq, false); - sg.setSeqrep(repSeq); - assertTrue(sg.getSequences().contains(repSeq)); - assertTrue(sg.getSequences().contains(precedingSeq)); - av.setSelectionGroup(sg); - assertSame(repSeq, sg.getSeqrep()); - - /* - * represent group with sequence adds to a map of hidden rep sequences - * (it does not create a group on the alignment) - */ - ((AlignmentViewport) av).hideSequences(repSeq, true); - assertSame(repSeq, sg.getSeqrep()); - assertTrue(sg.getSequences().contains(repSeq)); - assertTrue(sg.getSequences().contains(precedingSeq)); - assertTrue(alignment.getGroups().isEmpty(), "alignment has groups"); - Map hiddenRepSeqsMap = av - .getHiddenRepSequences(); - assertNotNull(hiddenRepSeqsMap); - assertEquals(1, hiddenRepSeqsMap.size()); - assertSame(sg, hiddenRepSeqsMap.get(repSeq)); - assertTrue(alignment.getHiddenSequences().isHidden(precedingSeq)); - assertFalse(alignment.getHiddenSequences().isHidden(repSeq)); - hiddenNames.add(precedingSeq.getName()); - - n++; - } - File tfile = File - .createTempFile("testStoreAndRecoverGroupReps", ".jvp"); - try - { - new Jalview2XML(false).saveState(tfile); - } catch (Throwable e) - { - Assert.fail("Didn't save the expanded view state", e); - } - Desktop.instance.closeAll_actionPerformed(null); - if (Desktop.getAlignFrames() != null) - { - Assert.assertEquals(Desktop.getAlignFrames().length, 0); - } - - af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(), - DataSourceType.FILE); - afid = af.getViewport().getSequenceSetId(); - - for (AlignmentViewPanel ap : Desktop.getAlignmentPanels(afid)) - { - String viewName = ap.getViewName(); - AlignViewportI av = ap.getAlignViewport(); - AlignmentI alignment = ap.getAlignment(); - List groups = alignment.getGroups(); - assertNotNull(groups); - assertTrue(groups.isEmpty(), "Alignment has groups"); - Map hiddenRepSeqsMap = av - .getHiddenRepSequences(); - assertNotNull(hiddenRepSeqsMap, "No hidden represented sequences"); - assertEquals(1, hiddenRepSeqsMap.size()); - assertEquals(repSeqs.get(viewName).getDisplayId(true), - hiddenRepSeqsMap.keySet().iterator().next() - .getDisplayId(true)); - - /* - * verify hidden sequences in restored panel - */ - List hidden = hiddenSeqNames.get(ap.getViewName()); - HiddenSequences hs = alignment.getHiddenSequences(); - assertEquals( - hidden.size(), - hs.getSize(), - "wrong number of restored hidden sequences in " - + ap.getViewName()); - } - } - - /** - * Test save and reload of PDBEntry in Jalview project - * - * @throws Exception - */ - @Test(groups = { "Functional" }) - public void testStoreAndRecoverPDBEntry() throws Exception - { - Desktop.instance.closeAll_actionPerformed(null); - String exampleFile = "examples/3W5V.pdb"; - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(exampleFile, - DataSourceType.FILE); - assertNotNull(af, "Didn't read in the example file correctly."); - String afid = af.getViewport().getSequenceSetId(); - - AlignmentPanel[] alignPanels = Desktop.getAlignmentPanels(afid); - System.out.println(); - AlignmentViewPanel ap = alignPanels[0]; - String tfileBase = new File(".").getAbsolutePath().replace(".", ""); - String testFile = tfileBase + exampleFile; - AlignmentI alignment = ap.getAlignment(); - System.out.println("blah"); - SequenceI[] seqs = alignment.getSequencesArray(); - Assert.assertNotNull(seqs[0]); - Assert.assertNotNull(seqs[1]); - Assert.assertNotNull(seqs[2]); - Assert.assertNotNull(seqs[3]); - Assert.assertNotNull(seqs[0].getDatasetSequence()); - Assert.assertNotNull(seqs[1].getDatasetSequence()); - Assert.assertNotNull(seqs[2].getDatasetSequence()); - Assert.assertNotNull(seqs[3].getDatasetSequence()); - PDBEntry[] pdbEntries = new PDBEntry[4]; - pdbEntries[0] = new PDBEntry("3W5V", "A", Type.PDB, testFile); - pdbEntries[1] = new PDBEntry("3W5V", "B", Type.PDB, testFile); - pdbEntries[2] = new PDBEntry("3W5V", "C", Type.PDB, testFile); - pdbEntries[3] = new PDBEntry("3W5V", "D", Type.PDB, testFile); - Assert.assertEquals(seqs[0].getDatasetSequence().getAllPDBEntries() - .get(0), pdbEntries[0]); - Assert.assertEquals(seqs[1].getDatasetSequence().getAllPDBEntries() - .get(0), pdbEntries[1]); - Assert.assertEquals(seqs[2].getDatasetSequence().getAllPDBEntries() - .get(0), pdbEntries[2]); - Assert.assertEquals(seqs[3].getDatasetSequence().getAllPDBEntries() - .get(0), pdbEntries[3]); - - File tfile = File.createTempFile("testStoreAndRecoverPDBEntry", ".jvp"); - try - { - new Jalview2XML(false).saveState(tfile); - } catch (Throwable e) - { - Assert.fail("Didn't save the state", e); - } - Desktop.instance.closeAll_actionPerformed(null); - if (Desktop.getAlignFrames() != null) - { - Assert.assertEquals(Desktop.getAlignFrames().length, 0); - } - - AlignFrame restoredFrame = new FileLoader().LoadFileWaitTillLoaded( - tfile.getAbsolutePath(), DataSourceType.FILE); - String rfid = restoredFrame.getViewport().getSequenceSetId(); - AlignmentPanel[] rAlignPanels = Desktop.getAlignmentPanels(rfid); - AlignmentViewPanel rap = rAlignPanels[0]; - AlignmentI rAlignment = rap.getAlignment(); - System.out.println("blah"); - SequenceI[] rseqs = rAlignment.getSequencesArray(); - Assert.assertNotNull(rseqs[0]); - Assert.assertNotNull(rseqs[1]); - Assert.assertNotNull(rseqs[2]); - Assert.assertNotNull(rseqs[3]); - Assert.assertNotNull(rseqs[0].getDatasetSequence()); - Assert.assertNotNull(rseqs[1].getDatasetSequence()); - Assert.assertNotNull(rseqs[2].getDatasetSequence()); - Assert.assertNotNull(rseqs[3].getDatasetSequence()); - - // The Asserts below are expected to fail until the PDB chainCode is - // recoverable from a Jalview projects - for (int chain = 0; chain < 4; chain++) - { - PDBEntry recov = rseqs[chain].getDatasetSequence().getAllPDBEntries() - .get(0); - PDBEntry expected = pdbEntries[chain]; - Assert.assertEquals(recov.getId(), expected.getId(), - "Mismatch PDB ID"); - Assert.assertEquals(recov.getChainCode(), expected.getChainCode(), - "Mismatch PDB ID"); - Assert.assertEquals(recov.getType(), expected.getType(), - "Mismatch PDBEntry 'Type'"); - Assert.assertNotNull(recov.getFile(), - "Recovered PDBEntry should have a non-null file entry"); - } - } - - /** - * Configure an alignment and a sub-group each with distinct colour schemes, - * Conservation and PID thresholds, and confirm these are restored from the - * saved project. - * - * @throws IOException - */ - @Test(groups = { "Functional" }) - public void testStoreAndRecoverColourThresholds() throws IOException - { - Desktop.instance.closeAll_actionPerformed(null); - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( - "examples/uniref50.fa", DataSourceType.FILE); - - AlignViewport av = af.getViewport(); - AlignmentI al = av.getAlignment(); - - /* - * Colour alignment by Buried Index, Above 10% PID, By Conservation 20% - */ - af.changeColour_actionPerformed(JalviewColourScheme.Buried.toString()); - assertTrue(av.getGlobalColourScheme() instanceof BuriedColourScheme); - af.abovePIDThreshold_actionPerformed(true); - SliderPanel sp = SliderPanel.getSliderPanel(); - assertFalse(sp.isForConservation()); - sp.valueChanged(10); - af.conservationMenuItem_actionPerformed(true); - sp = SliderPanel.getSliderPanel(); - assertTrue(sp.isForConservation()); - sp.valueChanged(20); - ResidueShaderI rs = av.getResidueShading(); - assertEquals(rs.getThreshold(), 10); - assertTrue(rs.conservationApplied()); - assertEquals(rs.getConservationInc(), 20); - - /* - * create a group with Strand colouring, 30% Conservation - * and 40% PID threshold - */ - SequenceGroup sg = new SequenceGroup(); - sg.addSequence(al.getSequenceAt(0), false); - sg.setStartRes(15); - sg.setEndRes(25); - av.setSelectionGroup(sg); - PopupMenu popupMenu = new PopupMenu(af.alignPanel, null, null); - popupMenu.changeColour_actionPerformed(JalviewColourScheme.Strand - .toString()); - assertTrue(sg.getColourScheme() instanceof StrandColourScheme); - assertEquals(al.getGroups().size(), 1); - assertSame(al.getGroups().get(0), sg); - popupMenu.conservationMenuItem_actionPerformed(true); - sp = SliderPanel.getSliderPanel(); - assertTrue(sp.isForConservation()); - sp.valueChanged(30); - popupMenu.abovePIDColour_actionPerformed(true); - sp = SliderPanel.getSliderPanel(); - assertFalse(sp.isForConservation()); - sp.valueChanged(40); - assertTrue(sg.getGroupColourScheme().conservationApplied()); - assertEquals(sg.getGroupColourScheme().getConservationInc(), 30); - assertEquals(sg.getGroupColourScheme().getThreshold(), 40); - - /* - * save project, close windows, reload project, verify - */ - File tfile = File.createTempFile("testStoreAndRecoverColourThresholds", - ".jvp"); - tfile.deleteOnExit(); - new Jalview2XML(false).saveState(tfile); - Desktop.instance.closeAll_actionPerformed(null); - af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(), - DataSourceType.FILE); - Assert.assertNotNull(af, "Failed to reload project"); - - /* - * verify alignment (background) colouring - */ - rs = af.getViewport().getResidueShading(); - assertTrue(rs.getColourScheme() instanceof BuriedColourScheme); - assertEquals(rs.getThreshold(), 10); - assertTrue(rs.conservationApplied()); - assertEquals(rs.getConservationInc(), 20); - - /* - * verify group colouring - */ - assertEquals(1, af.getViewport().getAlignment().getGroups().size(), 1); - rs = af.getViewport().getAlignment().getGroups().get(0) - .getGroupColourScheme(); - assertTrue(rs.getColourScheme() instanceof StrandColourScheme); - assertEquals(rs.getThreshold(), 40); - assertTrue(rs.conservationApplied()); - assertEquals(rs.getConservationInc(), 30); - } - - /** - * Test save and reload of feature colour schemes and filter settings - * - * @throws IOException - */ - @Test(groups = { "Functional" }) - public void testSaveLoadFeatureColoursAndFilters() throws IOException - { - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( - ">Seq1\nACDEFGHIKLM", DataSourceType.PASTE); - SequenceI seq1 = af.getViewport().getAlignment().getSequenceAt(0); - - /* - * add some features to the sequence - */ - int score = 1; - addFeatures(seq1, "type1", score++); - addFeatures(seq1, "type2", score++); - addFeatures(seq1, "type3", score++); - addFeatures(seq1, "type4", score++); - addFeatures(seq1, "type5", score++); - - /* - * set colour schemes for features - */ - FeatureRenderer fr = af.getFeatureRenderer(); - fr.findAllFeatures(true); - - // type1: red - fr.setColour("type1", new FeatureColour(Color.red)); - - // type2: by label - FeatureColourI byLabel = new FeatureColour(); - byLabel.setColourByLabel(true); - fr.setColour("type2", byLabel); - - // type3: by score above threshold - FeatureColourI byScore = new FeatureColour(Color.BLACK, Color.BLUE, 1, - 10); - byScore.setAboveThreshold(true); - byScore.setThreshold(2f); - fr.setColour("type3", byScore); - - // type4: by attribute AF - FeatureColourI byAF = new FeatureColour(); - byAF.setColourByLabel(true); - byAF.setAttributeName("AF"); - fr.setColour("type4", byAF); - - // type5: by attribute CSQ:PolyPhen below threshold - FeatureColourI byPolyPhen = new FeatureColour(Color.BLACK, Color.BLUE, - 1, 10); - byPolyPhen.setBelowThreshold(true); - byPolyPhen.setThreshold(3f); - byPolyPhen.setAttributeName("CSQ", "PolyPhen"); - fr.setColour("type5", byPolyPhen); - - /* - * set filters for feature types - */ - - // filter type1 features by (label contains "x") - FeatureMatcherSetI filterByX = new FeatureMatcherSet(); - filterByX.and(FeatureMatcher.byLabel(Condition.Contains, "x")); - fr.setFeatureFilter("type1", filterByX); - - // filter type2 features by (score <= 2.4 and score > 1.1) - FeatureMatcherSetI filterByScore = new FeatureMatcherSet(); - filterByScore.and(FeatureMatcher.byScore(Condition.LE, "2.4")); - filterByScore.and(FeatureMatcher.byScore(Condition.GT, "1.1")); - fr.setFeatureFilter("type2", filterByScore); - - // filter type3 features by (AF contains X OR CSQ:PolyPhen != 0) - FeatureMatcherSetI filterByXY = new FeatureMatcherSet(); - filterByXY - .and(FeatureMatcher.byAttribute(Condition.Contains, "X", "AF")); - filterByXY.or(FeatureMatcher.byAttribute(Condition.NE, "0", "CSQ", - "PolyPhen")); - fr.setFeatureFilter("type3", filterByXY); - - /* - * save as Jalview project - */ - File tfile = File.createTempFile("JalviewTest", ".jvp"); - tfile.deleteOnExit(); - String filePath = tfile.getAbsolutePath(); - assertTrue(af.saveAlignment(filePath, FileFormat.Jalview), - "Failed to store as a project."); - - /* - * close current alignment and load the saved project - */ - af.closeMenuItem_actionPerformed(true); - af = null; - af = new FileLoader() - .LoadFileWaitTillLoaded(filePath, DataSourceType.FILE); - assertNotNull(af, "Failed to import new project"); - - /* - * verify restored feature colour schemes and filters - */ - fr = af.getFeatureRenderer(); - FeatureColourI fc = fr.getFeatureStyle("type1"); - assertTrue(fc.isSimpleColour()); - assertEquals(fc.getColour(), Color.red); - fc = fr.getFeatureStyle("type2"); - assertTrue(fc.isColourByLabel()); - fc = fr.getFeatureStyle("type3"); - assertTrue(fc.isGraduatedColour()); - assertNull(fc.getAttributeName()); - assertTrue(fc.isAboveThreshold()); - assertEquals(fc.getThreshold(), 2f); - fc = fr.getFeatureStyle("type4"); - assertTrue(fc.isColourByLabel()); - assertTrue(fc.isColourByAttribute()); - assertEquals(fc.getAttributeName(), new String[] { "AF" }); - fc = fr.getFeatureStyle("type5"); - assertTrue(fc.isGraduatedColour()); - assertTrue(fc.isColourByAttribute()); - assertEquals(fc.getAttributeName(), new String[] { "CSQ", "PolyPhen" }); - assertTrue(fc.isBelowThreshold()); - assertEquals(fc.getThreshold(), 3f); - - assertEquals(fr.getFeatureFilter("type1").toStableString(), - "Label Contains x"); - assertEquals(fr.getFeatureFilter("type2").toStableString(), - "(Score LE 2.4) AND (Score GT 1.1)"); - assertEquals(fr.getFeatureFilter("type3").toStableString(), - "(AF Contains X) OR (CSQ:PolyPhen NE 0.0)"); - } - - private void addFeature(SequenceI seq, String featureType, int score) - { - SequenceFeature sf = new SequenceFeature(featureType, "desc", 1, 2, - score, "grp"); - sf.setValue("AF", score); - sf.setValue("CSQ", new HashMap() - { - { - put("PolyPhen", Integer.toString(score)); - } - }); - seq.addSequenceFeature(sf); - } - - /** - * Adds two features of the given type to the given sequence, also setting the - * score as the value of attribute "AF" and sub-attribute "CSQ:PolyPhen" - * - * @param seq - * @param featureType - * @param score - */ - private void addFeatures(SequenceI seq, String featureType, int score) - { - addFeature(seq, featureType, score++); - addFeature(seq, featureType, score); - } -} diff --git a/test/jalview/ws/jabaws/RNAStructExportImport.java b/test/jalview/ws/jabaws/RNAStructExportImport.java index 089c29f..889c003 100644 --- a/test/jalview/ws/jabaws/RNAStructExportImport.java +++ b/test/jalview/ws/jabaws/RNAStructExportImport.java @@ -26,13 +26,13 @@ import static org.testng.AssertJUnit.assertTrue; import jalview.bin.Cache; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; -import jalview.gui.Jalview2XML; import jalview.gui.JvOptionPane; import jalview.io.AnnotationFile; import jalview.io.DataSourceType; import jalview.io.FileFormat; import jalview.io.FormatAdapter; import jalview.io.StockholmFileTest; +import jalview.project.Jalview2XML; import jalview.ws.jws2.Jws2Discoverer; import jalview.ws.jws2.RNAalifoldClient; import jalview.ws.jws2.SequenceAnnotationWSClient; @@ -118,7 +118,7 @@ public class RNAStructExportImport assertNotNull("Couldn't load test data ('" + testseqs + "')", af); // remove any existing annotation - List aal = new ArrayList(); + List aal = new ArrayList<>(); for (AlignmentAnnotation rna : af.getViewport().getAlignment() .getAlignmentAnnotation()) { @@ -259,7 +259,7 @@ public class RNAStructExportImport @Test(groups = { "Network" }) public void testRnaalifoldSettingsRecovery() { - List opts = new ArrayList(); + List opts = new ArrayList<>(); for (Argument rg : (List) rnaalifoldws.getRunnerConfig() .getArguments()) { diff --git a/utils/castor-1.1-cycle-codegen-anttask.jar b/utils/castor-1.1-cycle-codegen-anttask.jar deleted file mode 100644 index 5c5941624ce00556c0500c7bc96ba63c2cc973bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15495 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 OQh$xQR#<;~`u_m-ISiHn diff --git a/utils/castor-1.1-cycle-codegen.jar b/utils/castor-1.1-cycle-codegen.jar deleted file mode 100644 index 74ad92764491b7e88e048aeafcb9dfece2f67548..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 488832 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%0D8zSHt9>^=$F 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%0AO*XmPt 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

q?7N^~Unm`c_M4rETlw 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

R}jnB$gm71#<-ZZL|p3f!veRQeL( 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 P_@~_r93R31-UazTQA=(j -- 1.7.10.2